From f73a273f61ae6d04f4fe96c4c33596b4798d1f5d Mon Sep 17 00:00:00 2001 From: Alfonso Bribiesca Date: Tue, 16 Jul 2024 07:25:25 -0600 Subject: [PATCH 01/27] refactor: upgrade major dependencies (#120) --- .gitignore | 1 - .php-cs-fixer.cache | 1 + .php-cs-fixer.php | 194 + .php_cs | 145 - composer.json | 18 +- composer.lock | 6573 +++++++++++++++++ src/Binary/Buffer/Reader/Buffer.php | 4 +- src/ByteBuffer/ByteBuffer.php | 47 +- src/ByteBuffer/ByteOrder.php | 6 +- src/ByteBuffer/Concerns/Initialisable.php | 2 +- src/ByteBuffer/Concerns/Readable.php | 10 +- src/ByteBuffer/Concerns/Reads/Strings.php | 4 +- src/ByteBuffer/Concerns/Transformable.php | 2 +- src/ByteBuffer/Concerns/Writeable.php | 10 +- src/ByteBuffer/Concerns/Writes/Strings.php | 6 +- src/ByteBuffer/LengthMap.php | 4 +- src/Configuration/Network.php | 6 +- src/Enums/Fees.php | 22 +- src/Enums/TypeGroup.php | 6 +- src/Enums/Types.php | 22 +- src/Helpers.php | 2 +- src/Identities/Address.php | 4 +- src/Identities/PrivateKey.php | 8 +- src/Identities/PublicKey.php | 6 +- src/Identities/WIF.php | 2 +- .../Builder/AbstractTransactionBuilder.php | 14 +- src/Transactions/Deserializer.php | 32 +- src/Transactions/Serializer.php | 66 +- src/Transactions/Types/HtlcLock.php | 2 +- src/Transactions/Types/IPFS.php | 2 +- src/Transactions/Types/MultiPayment.php | 2 +- src/Transactions/Types/Transaction.php | 6 +- src/Transactions/Types/Transfer.php | 2 +- src/Utils/Message.php | 4 +- tests/Analysis/AnalysisTest.php | 2 + tests/Concerns/Deserialize.php | 24 +- tests/Helpers.php | 2 + tests/Pest.php | 2 + tests/TestCase.php | 6 +- .../Transactions/Builder/HtlcClaimTest.php | 4 +- .../Transactions/Builder/HtlcLockTest.php | 8 +- 41 files changed, 6963 insertions(+), 320 deletions(-) create mode 100644 .php-cs-fixer.cache create mode 100644 .php-cs-fixer.php delete mode 100644 .php_cs create mode 100644 composer.lock diff --git a/.gitignore b/.gitignore index 6447c54c..9e419f28 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -composer.lock phpunit.xml vendor clover.xml diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache new file mode 100644 index 00000000..03e80756 --- /dev/null +++ b/.php-cs-fixer.cache @@ -0,0 +1 @@ +{"php":"8.1.2-1ubuntu2.18","version":"3.59.3:v3.59.3#30ba9ecc2b0e5205e578fe29973c15653d9bfd29","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"hashes":{"tests\/Helpers.php":"ead3b754e9d1064afb42b4ba295f7801","tests\/Analysis\/AnalysisTest.php":"cbbd5c2285fef22e0e0ba587bf532921","tests\/TestCase.php":"88181896499e5de270710fc30e4f5f77","tests\/Concerns\/Deserialize.php":"823cf4ff03b8bf6fbd323403e8518b0d","tests\/Concerns\/Serialize.php":"7e7826db6e18d38f560b2155669a60c6","tests\/Concerns\/Fixtures.php":"c9de325db453e274d1080579d184a62c","tests\/Pest.php":"e94ffd859b54a678b7ea5aa68876c925","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"3f2ccca6307fb3dfb53c592d84195d14","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"64f87f6a19e09d5fc5abe196c1910dff","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"9a32203626cc79e050f42c14fa3e6ba7","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"da21b61dca9950da63270ab8993ae014","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"f3b02a10025b3544d1b825fbd2692b32","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"a5296fa0dc0e72b7e3cdce32b126b84e","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"849b9922e0623d0042dd7c1adedb3da3","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"a62d22fff1ff4e5f350d584f1ddf60cd","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"cbd2994ce7be1ef9c086291483797ab5","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"3670bb0159fa8cd97075fe71489ab1d9","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"8ef867799d158bcbe44b2bee3ce36a83","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"291829435c86a2c093fbb886a56a2b88","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"263c9acf17a9a1bf5fa32ab1eeae0b29","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"bc1ba970efad3acc0f1d57667efa0402","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"327d716d6c6da6da3c490fa293afd49e","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"783a66094d698d93bd00f59236f7a093","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"566eadccee85259d94a620578a542dbf","tests\/Unit\/Utils\/SlotTest.php":"0f9639a94ca904aab58de8e2bee771e7","tests\/Unit\/Utils\/MessageTest.php":"f53f55fb0cc3b34ecba4e36f11ccad3a","tests\/Unit\/Identities\/PrivateKeyTest.php":"03f1961d973ed6b8c692b962da4aa32a","tests\/Unit\/Identities\/PublicKeyTest.php":"191c8e3d703ed822b6023cd79bbada70","tests\/Unit\/Identities\/WIFTest.php":"0d0ecbed55770bfcc522ff72bfcb1706","tests\/Unit\/Identities\/AddressTest.php":"233252a9c2e479394fae57b06ab446cf","tests\/Unit\/Networks\/NetworkTestCase.php":"080da14e3d30370dab0e5c325e883b1e","tests\/Unit\/Networks\/DevnetTest.php":"55731cf7389728d924c87d3bf591318a","tests\/Unit\/Networks\/MainnetTest.php":"ef8ae566506f3d797fa9f6a117acc844","tests\/Unit\/Networks\/TestnetTest.php":"ae92bf475035ad441956192704e33729","tests\/Unit\/Configuration\/NetworkTest.php":"a0c93282667a0db8c7746e105a3a23f5","tests\/Unit\/Configuration\/FeeTest.php":"bcc4844a5eaa86d2423b87d9413e07f3","tests\/Unit\/Transactions\/Serializers\/TransferTest.php":"6138dbf390f1bd3e34f2e1514b2671f4","tests\/Unit\/Transactions\/Serializers\/HtlcRefundTest.php":"96c6006f6d918c66b25796120eee0ce6","tests\/Unit\/Transactions\/Serializers\/HtlcLockTest.php":"a65043f154c5a19be9420835d915039a","tests\/Unit\/Transactions\/Serializers\/MultiSignatureRegistrationTest.php":"5d9d14f33bfe133b8df0f2a6641b7c13","tests\/Unit\/Transactions\/Serializers\/DelegateRegistrationTest.php":"605f60af77ae8daedfea585fff101184","tests\/Unit\/Transactions\/Serializers\/HtlcClaimTest.php":"5b46d1b6e9f5247a91789d9b0a09626e","tests\/Unit\/Transactions\/Serializers\/DelegateResignationTest.php":"528745d73b842e540838527e42b6c542","tests\/Unit\/Transactions\/Serializers\/SecondSignatureRegistrationTest.php":"4e6287eb734f15dc820142d0dedec621","tests\/Unit\/Transactions\/Serializers\/VoteTest.php":"e429e932d64a2792d9c07f841cb46e6b","tests\/Unit\/Transactions\/Serializers\/MultiPaymentTest.php":"46c238787cc1aa18009ced65e2f74912","tests\/Unit\/Transactions\/Serializers\/IPFSTest.php":"ee6595523f02439dd9bcebf92822bd81","tests\/Unit\/Transactions\/Deserializers\/TransferTest.php":"07085f7900cad9ca67b12069c12d2afe","tests\/Unit\/Transactions\/Deserializers\/HtlcRefundTest.php":"43b70a1325c397635dc3d06d4f150308","tests\/Unit\/Transactions\/Deserializers\/HtlcLockTest.php":"533a3a85afba6e66281fe5310a0209d9","tests\/Unit\/Transactions\/Deserializers\/MultiSignatureRegistrationTest.php":"7c92a18198daf05d65d35ab31dda22ec","tests\/Unit\/Transactions\/Deserializers\/DelegateRegistrationTest.php":"fe619e7dcde26dbe370a4eb5c46c5d1a","tests\/Unit\/Transactions\/Deserializers\/HtlcClaimTest.php":"8f0defcd3cefeb7f2ca0cf40d2d58249","tests\/Unit\/Transactions\/Deserializers\/DelegateResignationTest.php":"2f5c500c5d02e0a3bf96344b5b3de8f9","tests\/Unit\/Transactions\/Deserializers\/SecondSignatureRegistrationTest.php":"11412d26d7c4d6a72d1ae62f90488f6d","tests\/Unit\/Transactions\/Deserializers\/VoteTest.php":"d728da8f8982baca8838de08e57afdf6","tests\/Unit\/Transactions\/Deserializers\/MultiPaymentTest.php":"6b8bc6e0b6851312d74b0f9e830787e2","tests\/Unit\/Transactions\/Deserializers\/IPFSTest.php":"ae652d4995ee111ba5860100fd11c917","tests\/Unit\/Transactions\/TransactionTest.php":"02a079f2fbf15075e8f2ae171093b564","tests\/Unit\/Transactions\/Builder\/TransferTest.php":"4ccabea7a853a439e55614923660124b","tests\/Unit\/Transactions\/Builder\/HtlcRefundTest.php":"db3d3de3487d31ff9106e98f48b66ea0","tests\/Unit\/Transactions\/Builder\/HtlcLockTest.php":"fc01afadae19cd931291263e0213ff82","tests\/Unit\/Transactions\/Builder\/MultiSignatureRegistrationTest.php":"c029ffbba305593a889b6121bd7ee606","tests\/Unit\/Transactions\/Builder\/DelegateRegistrationTest.php":"f7e67c16ecec6f451cc2491a2a5d1335","tests\/Unit\/Transactions\/Builder\/HtlcClaimTest.php":"6871991d210dc1367691b2a9193dbaf7","tests\/Unit\/Transactions\/Builder\/DelegateResignationTest.php":"bbb18c485a289b259fb8e583a12697e3","tests\/Unit\/Transactions\/Builder\/SecondSignatureRegistrationTest.php":"4648b25e08c3763f29a34af431031714","tests\/Unit\/Transactions\/Builder\/VoteTest.php":"f98987b7d1e5a07228ab2b1f6fdd17ec","tests\/Unit\/Transactions\/Builder\/MultiPaymentTest.php":"1b1838b766a987b72beff0bf1129ed9e","tests\/Unit\/Transactions\/Builder\/IPFSTest.php":"268f87cddcbd85a70c788b471e859e24","src\/Helpers.php":"406e67af10ba8f83dc20eb840cdb8669","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"bde87e28b98eedab7d03f5005545567b","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"872f1d7f694f06884112d9d201427e44","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"b7274ecd25eea7c145e8fd285e95358d","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"0b4bf46752c98e15343432f95d2b3c33","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"ad3ee7c154b4fe0748b35933a785fac7","src\/ByteBuffer\/Concerns\/Transformable.php":"ba95c5e5ac572b7c7e0448e43ed9b27a","src\/ByteBuffer\/Concerns\/Writeable.php":"651c15dfb022146d91638dbcc1072197","src\/ByteBuffer\/Concerns\/Readable.php":"b7db578561d0402e6abac0765dc15715","src\/ByteBuffer\/Concerns\/Sizeable.php":"7b8664a95149592e15222c8ed38ffbd6","src\/ByteBuffer\/Concerns\/Initialisable.php":"1d40427ebf896a531eca906d04b68a9f","src\/ByteBuffer\/Concerns\/Offsetable.php":"593adce2783b7f974bf53aca3177c344","src\/ByteBuffer\/Concerns\/Positionable.php":"21f1bc9e5ae32757e035e3a7d33d87d3","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"2bdb398f7b8d1a3d74b081d50078f91f","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"42f57a6e7a0362565981c27f5f2b4e89","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"24866c6415f082abbe8e7b84d150cb8b","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"52f0b848979f7f4ac0fd429bd20518d9","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"5e5e44b81cd96280fd4c1878b532955c","src\/ByteBuffer\/ByteBuffer.php":"fd1cc054c10dd8df7c1c8012d2f3db06","src\/ByteBuffer\/ByteOrder.php":"65bb9e577fa7b13b9a900fd3a137684b","src\/ByteBuffer\/LengthMap.php":"d0b264f13f03b8c05e062bc4de93b9d1","src\/Utils\/Message.php":"41124e185ab03dfee684134d68b1af37","src\/Utils\/Slot.php":"72bbf7f3309c1b35fe573d263a56eb75","src\/Identities\/PrivateKey.php":"14297ccc35e2f42bc23afe2e8272a40f","src\/Identities\/WIF.php":"1351c493585c7e11ab422e3a9fa89135","src\/Identities\/PublicKey.php":"557b47038465ca83074363120d39b606","src\/Identities\/Address.php":"b473afbeade55afa58e4bbfbad287be7","src\/Binary\/UnsignedInteger\/Reader.php":"c39af81995cc3e68a74e7d1155c902f3","src\/Binary\/UnsignedInteger\/Writer.php":"4b57b334e27dc1039c3a6bf86a674c31","src\/Binary\/Buffer\/Writer\/Buffer.php":"756e1a6401609140d4d5a11866c0c349","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"c7c45e149c2cf9e83f4059c0e0036eee","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"4bda0887fbdd3b12889859fbc17c8519","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"4980bae47f9d4c516d886f431af9bd99","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"a35a59ffe67e970dd8de5b951c9554b7","src\/Binary\/Buffer\/Reader\/Buffer.php":"9ba298d595c72b3c78dd7efbade9b4bd","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"8201db89898e460687e403f2b31fca61","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"08b0855b0ae65ccf454883500f4a27d2","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"3ebb1be29fa00118bec01a5b77995cbe","src\/Binary\/Integer\/Reader.php":"93175a3453a38cf7c6cf67b64ae16e46","src\/Binary\/Integer\/Writer.php":"5c3fe724a68702d4d569bb0831909310","src\/Binary\/Hex\/Reader.php":"064f535617aed54bb9005b81d0b23532","src\/Binary\/Hex\/Writer.php":"2496bf019f929cf9b86f9ae807fba98f","src\/Enums\/Types.php":"75f006ec4ae2fc515d17ecc75d273c4b","src\/Enums\/TypeGroup.php":"4ca4497579cd5d5e1d9466717a7b5a11","src\/Enums\/Fees.php":"76ae2d51cfda15280d1515a64556dc19","src\/Networks\/Mainnet.php":"7c3d535d3ca99af860ea6ffdf5b75454","src\/Networks\/Testnet.php":"951d86285a3abaf46753cd6ae7faaf91","src\/Networks\/AbstractNetwork.php":"d9c64390bb5078612c8f68ea8c7fede3","src\/Networks\/Devnet.php":"3f7f5f9f571eca593daad45ec991f0ba","src\/Configuration\/Fee.php":"3f5d01b2de2308fb15b7d48148e1979d","src\/Configuration\/Network.php":"339e6038b9b32ac6a52af7bcda424d42","src\/Transactions\/Types\/MultiPayment.php":"f664fc37318230b430298a4ed3b3a655","src\/Transactions\/Types\/Transfer.php":"38e4629377847ee156600a2d523d9154","src\/Transactions\/Types\/DelegateRegistration.php":"30a9326121f2517f4002e1a4ad91a5c0","src\/Transactions\/Types\/IPFS.php":"5c3deeb61e33e87d1a19ff4e0c5044cb","src\/Transactions\/Types\/HtlcClaim.php":"8214718a175cd2cf99c05787cd3bf336","src\/Transactions\/Types\/Vote.php":"eb38657c46627faf8c19d36e9fe7d130","src\/Transactions\/Types\/HtlcLock.php":"5a227f7afe08445754898c380b43f435","src\/Transactions\/Types\/MultiSignatureRegistration.php":"49138c9dc17597ff231fc914e6e55ccd","src\/Transactions\/Types\/HtlcRefund.php":"3bc7171698dbb762f9403da3a4e5a86f","src\/Transactions\/Types\/DelegateResignation.php":"1302de279d94a28a76e7c2b4faa9807e","src\/Transactions\/Types\/SecondSignatureRegistration.php":"ad8f221e8eda825959dbab65c22260d8","src\/Transactions\/Types\/Transaction.php":"94ccfd03bf3b9719dbecf316a29f3866","src\/Transactions\/Serializer.php":"10cda68b0038fe5438f5a598421c8420","src\/Transactions\/Deserializer.php":"f61bb6c71dbb5089770c9f59f6aca8d6","src\/Transactions\/Builder\/MultiPaymentBuilder.php":"f4fd82e6d6caf883c385f8c3b36f257a","src\/Transactions\/Builder\/DelegateRegistrationBuilder.php":"9ec9a55d9a6cdf0a7112ce6a3f451193","src\/Transactions\/Builder\/VoteBuilder.php":"b8aad0c2d40c4c9dc7502d00323c4981","src\/Transactions\/Builder\/HtlcRefundBuilder.php":"79eca04bf8af723a0069b3154322fe68","src\/Transactions\/Builder\/SecondSignatureRegistrationBuilder.php":"8421e4135b765cef02f9ab5589026e36","src\/Transactions\/Builder\/TransferBuilder.php":"0c916c9eafa08a684f1eb4278c2d84e4","src\/Transactions\/Builder\/HtlcClaimBuilder.php":"a56483968acddeca42e20cce6ac1263c","src\/Transactions\/Builder\/MultiSignatureRegistrationBuilder.php":"981e3426812066885b32db4afc3c39a5","src\/Transactions\/Builder\/HtlcLockBuilder.php":"3f8bec8f46660abd4355cc65eea1ed6e","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"6dc51b605789bd444227dfe4991ceb2e","src\/Transactions\/Builder\/DelegateResignationBuilder.php":"37f80557f87f9174efa7fe7d064a2274","src\/Transactions\/Builder\/IPFSBuilder.php":"2127dd4ff096dff2cfb8ca225c6e3d7b"}} \ No newline at end of file diff --git a/.php-cs-fixer.php b/.php-cs-fixer.php new file mode 100644 index 00000000..267806e4 --- /dev/null +++ b/.php-cs-fixer.php @@ -0,0 +1,194 @@ + ['syntax' => 'short'], + 'binary_operator_spaces' => [ + 'default' => 'single_space', + 'operators' => [ + '=' => 'align', + '=>' => 'align', + ], + ], + 'blank_line_after_namespace' => true, + 'blank_line_after_opening_tag' => true, + 'blank_line_before_statement' => [ + 'statements' => [ + 'break', + 'continue', + 'declare', + 'return', + 'throw', + 'try', + ], + ], + 'braces' => true, + 'cast_spaces' => true, + 'class_attributes_separation' => [ + 'elements' => [ + 'const' => 'one', + 'method' => 'one', + 'property' => 'one', + ], + ], + 'class_definition' => true, + 'concat_space' => ['spacing' => 'none'], + 'constant_case' => ['case' => 'lower'], + 'declare_equal_normalize' => true, + 'declare_strict_types' => true, + 'echo_tag_syntax' => ['format' => 'long'], + 'elseif' => true, + 'encoding' => true, + 'final_internal_class' => true, + 'full_opening_tag' => true, + 'fully_qualified_strict_types' => true, + 'function_declaration' => true, + 'function_typehint_space' => true, + 'heredoc_to_nowdoc' => true, + 'include' => true, + 'increment_style' => ['style' => 'post'], + 'indentation_type' => true, + 'linebreak_after_opening_tag' => true, + 'line_ending' => true, + 'lowercase_cast' => true, + 'lowercase_keywords' => true, + 'lowercase_static_reference' => true, + 'magic_method_casing' => true, + 'magic_constant_casing' => true, + 'method_argument_space' => true, + 'multiline_whitespace_before_semicolons' => ['strategy' => 'no_multi_line'], + 'native_function_casing' => true, + 'new_with_braces' => true, + 'no_alias_functions' => true, + 'no_blank_lines_after_class_opening' => true, + 'no_blank_lines_after_phpdoc' => true, + 'no_closing_tag' => true, + 'no_empty_phpdoc' => true, + 'no_empty_statement' => true, + 'no_extra_blank_lines' => [ + 'tokens' => [ + 'extra', + 'throw', + 'use', + 'use_trait', + ], + ], + 'no_leading_import_slash' => true, + 'no_leading_namespace_whitespace' => true, + 'no_mixed_echo_print' => ['use' => 'echo'], + 'no_multiline_whitespace_around_double_arrow' => true, + 'no_short_bool_cast' => true, + 'no_singleline_whitespace_before_semicolons' => true, + 'no_spaces_after_function_name' => true, + 'no_spaces_around_offset' => [ + 'positions' => ['inside'], + ], + 'no_spaces_inside_parenthesis' => true, + 'no_trailing_comma_in_list_call' => true, + 'no_trailing_comma_in_singleline_array' => true, + 'no_trailing_whitespace' => true, + 'no_trailing_whitespace_in_comment' => true, + 'no_unneeded_control_parentheses' => [ + 'statements' => [ + 'break', + 'clone', + 'continue', + 'echo_print', + 'return', + 'switch_case', + 'yield', + ], + ], + 'no_unreachable_default_argument_value' => true, + 'no_unused_imports' => true, + 'no_useless_else' => true, + 'no_useless_return' => true, + 'no_whitespace_before_comma_in_array' => true, + 'no_whitespace_in_blank_line' => true, + 'normalize_index_brace' => true, + 'not_operator_with_successor_space' => true, + 'object_operator_without_whitespace' => true, + 'ordered_class_elements' => true, + 'ordered_imports' => ['sort_algorithm' => 'alpha'], + 'php_unit_strict' => true, + 'php_unit_test_class_requires_covers' => true, + 'phpdoc_add_missing_param_annotation' => true, + 'phpdoc_align' => false, + 'phpdoc_indent' => true, + 'phpdoc_inline_tag_normalizer' => true, + 'phpdoc_no_access' => true, + 'phpdoc_no_package' => true, + 'phpdoc_no_useless_inheritdoc' => true, + 'phpdoc_order' => true, + 'phpdoc_scalar' => true, + 'phpdoc_single_line_var_spacing' => true, + 'phpdoc_summary' => true, + 'phpdoc_to_comment' => ['ignored_tags' => ['var']], + 'phpdoc_trim' => true, + 'phpdoc_types' => true, + 'phpdoc_var_without_name' => true, + 'psr_autoloading' => true, + 'self_accessor' => true, + 'semicolon_after_instruction' => true, + 'short_scalar_cast' => true, + 'simplified_null_return' => true, + 'single_blank_line_at_eof' => true, + 'single_blank_line_before_namespace' => true, + 'single_class_element_per_statement' => [ + 'elements' => [ + 'const', + 'property', + ], + ], + 'single_import_per_statement' => true, + 'single_line_after_imports' => true, + 'single_line_comment_style' => [ + 'comment_types' => ['hash'], + ], + 'single_quote' => true, + 'single_trait_insert_per_statement' => true, + 'space_after_semicolon' => true, + 'standardize_not_equals' => true, + 'strict_comparison' => true, + 'strict_param' => true, + 'switch_case_semicolon_to_colon' => true, + 'switch_case_space' => true, + 'ternary_operator_spaces' => true, + 'trailing_comma_in_multiline' => [ + 'elements' => ['arrays'], + ], + 'trim_array_spaces' => true, + 'unary_operator_spaces' => true, + 'visibility_required' => [ + 'elements' => [ + 'property', + 'method', + 'const', + ], + ], + 'whitespace_after_comma_in_array' => true, +]; + +$finder = Finder::create() + ->notPath('bootstrap') + ->notPath('storage') + ->notPath('vendor') + ->in(getcwd()) + ->name('*.php') + ->notName('*.blade.php') + ->notName('index.php') + ->notName('server.php') + ->notName('_ide_helper.php') + ->ignoreDotFiles(true) + ->ignoreVCS(true); + +return (new Config()) + ->setFinder($finder) + ->setRules($rules) + ->setRiskyAllowed(true) + ->setCacheFile(__DIR__.'/.php-cs-fixer.cache') + ->setUsingCache(true); diff --git a/.php_cs b/.php_cs deleted file mode 100644 index fc8b00f7..00000000 --- a/.php_cs +++ /dev/null @@ -1,145 +0,0 @@ - ['syntax' => 'short'], - 'binary_operator_spaces' => [ - 'align_double_arrow' => true, - 'align_equals' => true, - ], - 'blank_line_after_namespace' => true, - 'blank_line_after_opening_tag' => true, - 'blank_line_before_return' => true, - 'blank_line_before_statement' => true, - 'braces' => true, - 'cast_spaces' => true, - 'class_attributes_separation' => true, - 'class_definition' => true, - 'combine_consecutive_unsets' => true, - 'concat_space' => true, - 'declare_equal_normalize' => true, - 'elseif' => true, - 'encoding' => true, - 'full_opening_tag' => true, - 'fully_qualified_strict_types' => true, // added by Shift - 'function_declaration' => true, - 'function_typehint_space' => true, - 'heredoc_to_nowdoc' => true, - 'include' => true, - 'increment_style' => ['style' => 'post'], - 'indentation_type' => true, - 'line_ending' => true, - 'linebreak_after_opening_tag' => true, - 'list_syntax' => ['syntax' => 'short'], - 'lowercase_cast' => true, - 'lowercase_constants' => true, - 'lowercase_keywords' => true, - 'lowercase_static_reference' => true, // added from Symfony - 'magic_constant_casing' => true, - 'magic_method_casing' => true, // added from Symfony - 'method_argument_space' => true, - 'method_separation' => true, - 'multiline_whitespace_before_semicolons' => true, - 'native_function_casing' => true, - 'new_with_braces' => true, - 'no_alias_functions' => true, - 'no_blank_lines_after_class_opening' => true, - 'no_blank_lines_after_phpdoc' => true, - 'no_closing_tag' => true, - 'no_empty_phpdoc' => true, - 'no_empty_statement' => true, - 'no_extra_blank_lines' => true, - 'no_extra_consecutive_blank_lines' => true, - 'no_leading_import_slash' => true, - 'no_leading_namespace_whitespace' => true, - 'no_mixed_echo_print' => true, - 'no_multiline_whitespace_around_double_arrow' => true, - 'no_multiline_whitespace_before_semicolons' => true, - 'no_short_bool_cast' => true, - 'no_short_echo_tag' => true, - 'no_singleline_whitespace_before_semicolons' => true, - 'no_spaces_after_function_name' => true, - 'no_spaces_around_offset' => true, - 'no_spaces_inside_parenthesis' => true, - 'no_trailing_comma_in_list_call' => true, - 'no_trailing_comma_in_singleline_array' => true, - 'no_trailing_whitespace_in_comment' => true, - 'no_trailing_whitespace' => true, - 'no_unneeded_control_parentheses' => true, - 'no_unreachable_default_argument_value' => true, - 'no_unused_imports' => true, - 'no_useless_else' => true, - 'no_useless_return' => true, - 'no_whitespace_before_comma_in_array' => true, - 'no_whitespace_in_blank_line' => true, - 'normalize_index_brace' => true, - 'not_operator_with_successor_space' => true, - 'object_operator_without_whitespace' => true, - 'ordered_imports' => ['sortAlgorithm' => 'alpha'], - 'php_unit_strict' => true, - 'php_unit_test_class_requires_covers' => true, - 'phpdoc_add_missing_param_annotation' => true, - 'phpdoc_align' => true, - 'phpdoc_indent' => true, - 'phpdoc_inline_tag' => true, - 'phpdoc_no_access' => true, - 'phpdoc_no_package' => true, - 'phpdoc_no_useless_inheritdoc' => true, - 'phpdoc_order' => true, - 'phpdoc_scalar' => true, - 'phpdoc_separation' => true, - 'phpdoc_single_line_var_spacing' => true, - 'phpdoc_summary' => true, - 'phpdoc_to_comment' => true, - 'phpdoc_trim' => true, - 'phpdoc_types' => true, - 'phpdoc_var_without_name' => true, - 'psr4' => true, - 'self_accessor' => true, - 'semicolon_after_instruction' => true, - 'short_scalar_cast' => true, - 'simplified_null_return' => true, - 'single_blank_line_at_eof' => true, - 'single_blank_line_before_namespace' => true, - 'single_class_element_per_statement' => true, - 'single_import_per_statement' => true, - 'single_line_after_imports' => true, - 'single_line_comment_style' => [ - 'comment_types' => ['hash'] - ], - 'single_quote' => true, - 'space_after_semicolon' => true, - 'standardize_not_equals' => true, - 'strict_comparison' => true, - 'strict_param' => true, - 'switch_case_semicolon_to_colon' => true, - 'switch_case_space' => true, - 'ternary_operator_spaces' => true, - 'trailing_comma_in_multiline_array' => true, - 'trim_array_spaces' => true, - 'unary_operator_spaces' => true, - 'visibility_required' => true, - 'whitespace_after_comma_in_array' => true, - -]; - -$finder = Finder::create() - ->notPath('bootstrap') - ->notPath('storage') - ->notPath('vendor') - ->in(getcwd()) - ->name('*.php') - ->notName('*.blade.php') - ->notName('index.php') - ->notName('server.php') - ->notName('_ide_helper.php') - ->ignoreDotFiles(true) - ->ignoreVCS(true); - -return Config::create() - ->setFinder($finder) - ->setRules($rules) - ->setRiskyAllowed(true) - ->setUsingCache(true); diff --git a/composer.json b/composer.json index 029b164f..b5a09cb7 100755 --- a/composer.json +++ b/composer.json @@ -17,15 +17,16 @@ } ], "require": { - "php": "^8.0", - "bitwasp/bitcoin": "^1.0", + "php": "^8.2", + "protonlabs/bitcoin": "^1.0", "simplito/elliptic-php": "^1.0" }, "require-dev": { - "graham-campbell/analyzer": "^3.0", - "illuminate/support": "^8.62", - "pestphp/pest": "^1.11", - "pestphp/pest-plugin-parallel": "^0.3.1" + "friendsofphp/php-cs-fixer": "^3.59", + "graham-campbell/analyzer": "^3.1", + "illuminate/support": "^8.8", + "pestphp/pest": "^1.23", + "pestphp/pest-plugin-parallel": "^1.2" }, "autoload": { "psr-4": { @@ -39,7 +40,10 @@ }, "config": { "preferred-install": "dist", - "sort-packages": true + "sort-packages": true, + "allow-plugins": { + "pestphp/pest-plugin": true + } }, "extra": { "branch-alias": { diff --git a/composer.lock b/composer.lock new file mode 100644 index 00000000..b1c9deb3 --- /dev/null +++ b/composer.lock @@ -0,0 +1,6573 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "682b7bb64cd5c4cd87e84d4c4300e87d", + "packages": [ + { + "name": "bitwasp/bech32", + "version": "v0.0.1", + "source": { + "type": "git", + "url": "https://github.com/Bit-Wasp/bech32.git", + "reference": "e1ea58c848a4ec59d81b697b3dfe9cc99968d0e7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Bit-Wasp/bech32/zipball/e1ea58c848a4ec59d81b697b3dfe9cc99968d0e7", + "reference": "e1ea58c848a4ec59d81b697b3dfe9cc99968d0e7", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "^5.4.0", + "squizlabs/php_codesniffer": "^2.0.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/bech32.php" + ], + "psr-4": { + "BitWasp\\Bech32\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Unlicense" + ], + "authors": [ + { + "name": "Thomas Kerin", + "homepage": "https://thomaskerin.io", + "role": "Author" + } + ], + "description": "Pure (no dependencies) implementation of bech32", + "homepage": "https://github.com/bit-wasp/bech32", + "support": { + "issues": "https://github.com/Bit-Wasp/bech32/issues", + "source": "https://github.com/Bit-Wasp/bech32/tree/more-tests" + }, + "time": "2018-02-05T22:23:47+00:00" + }, + { + "name": "composer/semver", + "version": "3.4.2", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6", + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-07-12T11:35:52+00:00" + }, + { + "name": "fgrosse/phpasn1", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/fgrosse/PHPASN1.git", + "reference": "42060ed45344789fb9f21f9f1864fc47b9e3507b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fgrosse/PHPASN1/zipball/42060ed45344789fb9f21f9f1864fc47b9e3507b", + "reference": "42060ed45344789fb9f21f9f1864fc47b9e3507b", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "~2.0", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "suggest": { + "ext-bcmath": "BCmath is the fallback extension for big integer calculations", + "ext-curl": "For loading OID information from the web if they have not bee defined statically", + "ext-gmp": "GMP is the preferred extension for big integer calculations", + "phpseclib/bcmath_compat": "BCmath polyfill for servers where neither GMP nor BCmath is available" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "FG\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Friedrich Große", + "email": "friedrich.grosse@gmail.com", + "homepage": "https://github.com/FGrosse", + "role": "Author" + }, + { + "name": "All contributors", + "homepage": "https://github.com/FGrosse/PHPASN1/contributors" + } + ], + "description": "A PHP Framework that allows you to encode and decode arbitrary ASN.1 structures using the ITU-T X.690 Encoding Rules.", + "homepage": "https://github.com/FGrosse/PHPASN1", + "keywords": [ + "DER", + "asn.1", + "asn1", + "ber", + "binary", + "decoding", + "encoding", + "x.509", + "x.690", + "x509", + "x690" + ], + "support": { + "issues": "https://github.com/fgrosse/PHPASN1/issues", + "source": "https://github.com/fgrosse/PHPASN1/tree/v2.5.0" + }, + "abandoned": true, + "time": "2022-12-19T11:08:26+00:00" + }, + { + "name": "lastguest/murmurhash", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/lastguest/murmurhash-php.git", + "reference": "0150ba26fb7025d1f936983a167cdc74149f87c8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lastguest/murmurhash-php/zipball/0150ba26fb7025d1f936983a167cdc74149f87c8", + "reference": "0150ba26fb7025d1f936983a167cdc74149f87c8", + "shasum": "" + }, + "require": { + "php": "^7||^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^7||^9" + }, + "type": "library", + "autoload": { + "psr-4": { + "lastguest\\": "src/lastguest/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Stefano Azzolini", + "email": "lastguest@gmail.com", + "homepage": "https://github.com/lastguest/murmurhash-php" + } + ], + "description": "MurmurHash3 Hash", + "homepage": "https://github.com/lastguest/murmurhash-php", + "keywords": [ + "hash", + "hashing", + "murmur" + ], + "support": { + "issues": "https://github.com/lastguest/murmurhash-php/issues", + "source": "https://github.com/lastguest/murmurhash-php/tree/2.1.1" + }, + "time": "2021-04-13T16:23:45+00:00" + }, + { + "name": "pleonasm/merkle-tree", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/pleonasm/merkle-tree.git", + "reference": "6abdf5aacd79b6d502f944c96edd1a896ef6039b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pleonasm/merkle-tree/zipball/6abdf5aacd79b6d502f944c96edd1a896ef6039b", + "reference": "6abdf5aacd79b6d502f944c96edd1a896ef6039b", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "require-dev": { + "phpunit/php-invoker": "*", + "phpunit/phpunit": "^5.7", + "satooshi/php-coveralls": "*@dev", + "squizlabs/php_codesniffer": "*" + }, + "type": "library", + "autoload": { + "psr-0": { + "Pleo": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Matt Nagi", + "email": "matthew.nagi@base-2.net" + } + ], + "description": "An implementation of a Merkle Tree in PHP", + "support": { + "issues": "https://github.com/pleonasm/merkle-tree/issues", + "source": "https://github.com/pleonasm/merkle-tree/tree/master" + }, + "time": "2017-02-10T15:26:01+00:00" + }, + { + "name": "protonlabs/bitcoin", + "version": "1.0.10", + "source": { + "type": "git", + "url": "https://github.com/ProtonMail/bitcoin-php.git", + "reference": "475361ce56f1601164cc447cbb78f859799d9eaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ProtonMail/bitcoin-php/zipball/475361ce56f1601164cc447cbb78f859799d9eaf", + "reference": "475361ce56f1601164cc447cbb78f859799d9eaf", + "shasum": "" + }, + "require": { + "bitwasp/bech32": "^0.0.1", + "composer/semver": "^1.4.0|^3.2.0", + "lastguest/murmurhash": "^v2.0.0", + "php-64bit": ">=7.0", + "pleonasm/merkle-tree": "~1.0.0", + "protonlabs/buffertools": "^0.5.0", + "shanecurran/phpecc": "^0.0.1" + }, + "require-dev": { + "bitwasp/bitcoinconsensus": "v3.0.0", + "bitwasp/secp256k1-php": "^v0.2.0", + "ext-json": "*", + "nbobtc/bitcoind-php": "v2.0.2", + "phpunit/phpunit": "^8.0.0", + "squizlabs/php_codesniffer": "^3.0.0" + }, + "suggest": { + "ext-bitcoinconsensus": "The bitcoinconsensus library for safest possible script verification", + "ext-secp256k1": "The secp256k1 library for fast and safe elliptic curve operations" + }, + "type": "library", + "autoload": { + "files": [ + "src/Script/functions.php" + ], + "psr-4": { + "BitWasp\\Bitcoin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Unlicense" + ], + "authors": [ + { + "name": "Thomas Kerin", + "homepage": "https://thomaskerin.io", + "role": "Author" + } + ], + "description": "PHP Bitcoin library with functions for transactions, signatures, serialization, Random/Deterministic ECDSA keys, blocks, RPC bindings", + "homepage": "https://github.com/bit-wasp/bitcoin-php", + "support": { + "issues": "https://github.com/ProtonMail/bitcoin-php/issues", + "source": "https://github.com/ProtonMail/bitcoin-php/tree/1.0.10" + }, + "time": "2024-04-17T17:01:22+00:00" + }, + { + "name": "protonlabs/buffertools", + "version": "v0.5.8", + "source": { + "type": "git", + "url": "https://github.com/ProtonMail/buffertools-php.git", + "reference": "9bb64c124f93f3e373e61806d1e10d8feb0d5751" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ProtonMail/buffertools-php/zipball/9bb64c124f93f3e373e61806d1e10d8feb0d5751", + "reference": "9bb64c124f93f3e373e61806d1e10d8feb0d5751", + "shasum": "" + }, + "require": { + "php-64bit": ">=7.0.0" + }, + "replace": { + "bitwasp/buffertools": "^0.5.0" + }, + "require-dev": { + "phpstan/phpstan": "v0.9.x", + "phpunit/phpunit": "^6.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "BitWasp\\Buffertools\\": "src/Buffertools/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Thomas Kerin", + "homepage": "https://thomaskerin.io" + }, + { + "name": "Ruben de Vries", + "email": "ruben@rubensayshi.com" + } + ], + "description": "Toolbox for working with binary and hex data. Similar to NodeJS Buffer.", + "support": { + "source": "https://github.com/ProtonMail/buffertools-php/tree/v0.5.8" + }, + "time": "2023-07-17T08:19:22+00:00" + }, + { + "name": "shanecurran/phpecc", + "version": "v0.0.1", + "source": { + "type": "git", + "url": "https://github.com/shanecurran/phpecc.git", + "reference": "2f99b2c785e7bac48485b0da7cc1db7d9c0e5d87" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/shanecurran/phpecc/zipball/2f99b2c785e7bac48485b0da7cc1db7d9c0e5d87", + "reference": "2f99b2c785e7bac48485b0da7cc1db7d9c0e5d87", + "shasum": "" + }, + "require": { + "ext-gmp": "*", + "fgrosse/phpasn1": "^2.0", + "php": "^7.0||^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0||^8.0||^9.0", + "squizlabs/php_codesniffer": "^2.0", + "symfony/yaml": "^2.6|^3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Mdanter\\Ecc\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matyas Danter", + "homepage": "http://matejdanter.com/", + "role": "Author" + }, + { + "name": "Thibaud Fabre", + "email": "thibaud@aztech.io", + "homepage": "http://aztech.io", + "role": "Maintainer" + }, + { + "name": "Thomas Kerin", + "email": "afk11@users.noreply.github.com", + "role": "Maintainer" + }, + { + "name": "Shane Curran", + "email": "shanecurran@users.noreply.github.com", + "role": "Maintainer" + } + ], + "description": "PHP Elliptic Curve Cryptography library", + "homepage": "https://github.com/shanecurran/phpecc", + "keywords": [ + "Diffie", + "ECDSA", + "Hellman", + "curve", + "ecdh", + "elliptic", + "nistp192", + "nistp224", + "nistp256", + "nistp384", + "nistp521", + "phpecc", + "secp256k1", + "secp256r1" + ], + "support": { + "source": "https://github.com/shanecurran/phpecc/tree/v0.0.1" + }, + "time": "2023-03-08T19:51:13+00:00" + }, + { + "name": "simplito/bigint-wrapper-php", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/simplito/bigint-wrapper-php.git", + "reference": "cf21ec76d33f103add487b3eadbd9f5033a25930" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/simplito/bigint-wrapper-php/zipball/cf21ec76d33f103add487b3eadbd9f5033a25930", + "reference": "cf21ec76d33f103add487b3eadbd9f5033a25930", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "BI\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Simplito Team", + "email": "s.smyczynski@simplito.com", + "homepage": "https://simplito.com" + } + ], + "description": "Common interface for php_gmp and php_bcmath modules", + "support": { + "issues": "https://github.com/simplito/bigint-wrapper-php/issues", + "source": "https://github.com/simplito/bigint-wrapper-php/tree/1.0.0" + }, + "time": "2018-02-27T12:38:08+00:00" + }, + { + "name": "simplito/bn-php", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/simplito/bn-php.git", + "reference": "83446756a81720eacc2ffb87ff97958431451fd6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/simplito/bn-php/zipball/83446756a81720eacc2ffb87ff97958431451fd6", + "reference": "83446756a81720eacc2ffb87ff97958431451fd6", + "shasum": "" + }, + "require": { + "simplito/bigint-wrapper-php": "~1.0.0" + }, + "require-dev": { + "phpunit/phpunit": "*" + }, + "type": "library", + "autoload": { + "psr-4": { + "BN\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Simplito Team", + "email": "s.smyczynski@simplito.com", + "homepage": "https://simplito.com" + } + ], + "description": "Big number implementation compatible with bn.js", + "support": { + "issues": "https://github.com/simplito/bn-php/issues", + "source": "https://github.com/simplito/bn-php/tree/1.1.4" + }, + "time": "2024-01-10T16:16:59+00:00" + }, + { + "name": "simplito/elliptic-php", + "version": "1.0.12", + "source": { + "type": "git", + "url": "https://github.com/simplito/elliptic-php.git", + "reference": "be321666781be2be2c89c79c43ffcac834bc8868" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/simplito/elliptic-php/zipball/be321666781be2be2c89c79c43ffcac834bc8868", + "reference": "be321666781be2be2c89c79c43ffcac834bc8868", + "shasum": "" + }, + "require": { + "ext-gmp": "*", + "simplito/bn-php": "~1.1.0" + }, + "require-dev": { + "phpbench/phpbench": "@dev", + "phpunit/phpunit": "*" + }, + "type": "library", + "autoload": { + "psr-4": { + "Elliptic\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Simplito Team", + "email": "s.smyczynski@simplito.com", + "homepage": "https://simplito.com" + } + ], + "description": "Fast elliptic curve cryptography", + "homepage": "https://github.com/simplito/elliptic-php", + "keywords": [ + "Curve25519", + "ECDSA", + "Ed25519", + "EdDSA", + "cryptography", + "curve", + "curve25519-weier", + "ecc", + "ecdh", + "elliptic", + "nistp192", + "nistp224", + "nistp256", + "nistp384", + "nistp521", + "secp256k1" + ], + "support": { + "issues": "https://github.com/simplito/elliptic-php/issues", + "source": "https://github.com/simplito/elliptic-php/tree/1.0.12" + }, + "time": "2024-01-09T14:57:04+00:00" + } + ], + "packages-dev": [ + { + "name": "brianium/paratest", + "version": "v6.11.1", + "source": { + "type": "git", + "url": "https://github.com/paratestphp/paratest.git", + "reference": "78e297a969049ca7cc370e80ff5e102921ef39a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/78e297a969049ca7cc370e80ff5e102921ef39a3", + "reference": "78e297a969049ca7cc370e80ff5e102921ef39a3", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-simplexml": "*", + "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0", + "jean85/pretty-package-versions": "^2.0.5", + "php": "^7.3 || ^8.0", + "phpunit/php-code-coverage": "^9.2.25", + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-timer": "^5.0.3", + "phpunit/phpunit": "^9.6.4", + "sebastian/environment": "^5.1.5", + "symfony/console": "^5.4.28 || ^6.3.4 || ^7.0.0", + "symfony/process": "^5.4.28 || ^6.3.4 || ^7.0.0" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0.0", + "ext-pcov": "*", + "ext-posix": "*", + "infection/infection": "^0.27.6", + "squizlabs/php_codesniffer": "^3.7.2", + "symfony/filesystem": "^5.4.25 || ^6.3.1 || ^7.0.0", + "vimeo/psalm": "^5.7.7" + }, + "bin": [ + "bin/paratest", + "bin/paratest.bat", + "bin/paratest_for_phpstorm" + ], + "type": "library", + "autoload": { + "psr-4": { + "ParaTest\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com", + "role": "Developer" + }, + { + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com", + "role": "Developer" + } + ], + "description": "Parallel testing for PHP", + "homepage": "https://github.com/paratestphp/paratest", + "keywords": [ + "concurrent", + "parallel", + "phpunit", + "testing" + ], + "support": { + "issues": "https://github.com/paratestphp/paratest/issues", + "source": "https://github.com/paratestphp/paratest/tree/v6.11.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/Slamdunk", + "type": "github" + }, + { + "url": "https://paypal.me/filippotessarotto", + "type": "paypal" + } + ], + "time": "2024-03-13T06:54:29+00:00" + }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/dbal": "<4.0.0 || >=5.0.0" + }, + "require-dev": { + "doctrine/dbal": "^4.0.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2024-02-09T16:56:22+00:00" + }, + { + "name": "clue/ndjson-react", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/clue/reactphp-ndjson.git", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/event-loop": "^1.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Clue\\React\\NDJson\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering" + } + ], + "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", + "homepage": "https://github.com/clue/reactphp-ndjson", + "keywords": [ + "NDJSON", + "json", + "jsonlines", + "newline", + "reactphp", + "streaming" + ], + "support": { + "issues": "https://github.com/clue/reactphp-ndjson/issues", + "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-12-23T10:58:28+00:00" + }, + { + "name": "composer/pcre", + "version": "3.1.4", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "04229f163664973f68f38f6f73d917799168ef24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/04229f163664973f68f38f6f73d917799168ef24", + "reference": "04229f163664973f68f38f6f73d917799168ef24", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.1.4" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-05-27T13:40:54+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "3.0.5", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", + "shasum": "" + }, + "require": { + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" + }, + "require-dev": { + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-05-06T16:37:16+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" + }, + "time": "2024-01-30T19:34:25+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.10", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.10" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2024-02-18T20:23:39+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^11", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2022-12-30T00:23:10+00:00" + }, + { + "name": "evenement/evenement", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/igorw/evenement.git", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^9 || ^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Evenement\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Événement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], + "support": { + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/v3.0.2" + }, + "time": "2023-08-08T05:53:35+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2024-02-07T09:43:46+00:00" + }, + { + "name": "filp/whoops", + "version": "2.15.4", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.15.4" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2023-11-03T12:00:00+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v3.59.3", + "source": { + "type": "git", + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "30ba9ecc2b0e5205e578fe29973c15653d9bfd29" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/30ba9ecc2b0e5205e578fe29973c15653d9bfd29", + "reference": "30ba9ecc2b0e5205e578fe29973c15653d9bfd29", + "shasum": "" + }, + "require": { + "clue/ndjson-react": "^1.0", + "composer/semver": "^3.4", + "composer/xdebug-handler": "^3.0.3", + "ext-filter": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "fidry/cpu-core-counter": "^1.0", + "php": "^7.4 || ^8.0", + "react/child-process": "^0.6.5", + "react/event-loop": "^1.0", + "react/promise": "^2.0 || ^3.0", + "react/socket": "^1.0", + "react/stream": "^1.0", + "sebastian/diff": "^4.0 || ^5.0 || ^6.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" + }, + "require-dev": { + "facile-it/paraunit": "^1.3 || ^2.3", + "infection/infection": "^0.29.5", + "justinrainbow/json-schema": "^5.2", + "keradus/cli-executor": "^2.1", + "mikey179/vfsstream": "^1.6.11", + "php-coveralls/php-coveralls": "^2.7", + "php-cs-fixer/accessible-object": "^1.1", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.5", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.5", + "phpunit/phpunit": "^9.6.19 || ^10.5.21 || ^11.2", + "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + }, + "suggest": { + "ext-dom": "For handling output formats in XML", + "ext-mbstring": "For handling non-UTF8 characters." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + }, + "exclude-from-classmap": [ + "src/Fixer/Internal/*" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "keywords": [ + "Static code analysis", + "fixer", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.59.3" + }, + "funding": [ + { + "url": "https://github.com/keradus", + "type": "github" + } + ], + "time": "2024-06-16T14:17:03+00:00" + }, + { + "name": "graham-campbell/analyzer", + "version": "v3.1.1", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Analyzer.git", + "reference": "0a1d452c1b41f342c7132188f0c25ca26e0be6d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Analyzer/zipball/0a1d452c1b41f342c7132188f0c25ca26e0be6d8", + "reference": "0a1d452c1b41f342c7132188f0c25ca26e0be6d8", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.13", + "php": "^7.4.15 || ^8.0.2", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/reflection-docblock": "^5.3", + "phpdocumentor/type-resolver": "^1.6" + }, + "require-dev": { + "phpunit/phpunit": "^9.5.21" + }, + "suggest": { + "phpunit/phpunit": "Required to use the analysis trait." + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\Analyzer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Checks if referenced classes really exist.", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "analysis", + "analyzer", + "classes", + "testing" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Analyzer/issues", + "source": "https://github.com/GrahamCampbell/Analyzer/tree/v3.1.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/analyzer", + "type": "tidelift" + } + ], + "time": "2023-02-25T14:28:39+00:00" + }, + { + "name": "illuminate/collections", + "version": "v8.83.27", + "source": { + "type": "git", + "url": "https://github.com/illuminate/collections.git", + "reference": "705a4e1ef93cd492c45b9b3e7911cccc990a07f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/collections/zipball/705a4e1ef93cd492c45b9b3e7911cccc990a07f4", + "reference": "705a4e1ef93cd492c45b9b3e7911cccc990a07f4", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^8.0", + "illuminate/macroable": "^8.0", + "php": "^7.3|^8.0" + }, + "suggest": { + "symfony/var-dumper": "Required to use the dump method (^5.4)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "files": [ + "helpers.php" + ], + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Collections package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2022-06-23T15:29:49+00:00" + }, + { + "name": "illuminate/contracts", + "version": "v8.83.27", + "source": { + "type": "git", + "url": "https://github.com/illuminate/contracts.git", + "reference": "5e0fd287a1b22a6b346a9f7cd484d8cf0234585d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/5e0fd287a1b22a6b346a9f7cd484d8cf0234585d", + "reference": "5e0fd287a1b22a6b346a9f7cd484d8cf0234585d", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0", + "psr/container": "^1.0", + "psr/simple-cache": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Contracts\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Contracts package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2022-01-13T14:47:47+00:00" + }, + { + "name": "illuminate/macroable", + "version": "v8.83.27", + "source": { + "type": "git", + "url": "https://github.com/illuminate/macroable.git", + "reference": "aed81891a6e046fdee72edd497f822190f61c162" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/macroable/zipball/aed81891a6e046fdee72edd497f822190f61c162", + "reference": "aed81891a6e046fdee72edd497f822190f61c162", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Macroable package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-11-16T13:57:03+00:00" + }, + { + "name": "illuminate/support", + "version": "v8.83.27", + "source": { + "type": "git", + "url": "https://github.com/illuminate/support.git", + "reference": "1c79242468d3bbd9a0f7477df34f9647dde2a09b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/support/zipball/1c79242468d3bbd9a0f7477df34f9647dde2a09b", + "reference": "1c79242468d3bbd9a0f7477df34f9647dde2a09b", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^1.4|^2.0", + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/collections": "^8.0", + "illuminate/contracts": "^8.0", + "illuminate/macroable": "^8.0", + "nesbot/carbon": "^2.53.1", + "php": "^7.3|^8.0", + "voku/portable-ascii": "^1.6.1" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "suggest": { + "illuminate/filesystem": "Required to use the composer class (^8.0).", + "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^1.3|^2.0.2).", + "ramsey/uuid": "Required to use Str::uuid() (^4.2.2).", + "symfony/process": "Required to use the composer class (^5.4).", + "symfony/var-dumper": "Required to use the dd function (^5.4).", + "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.4.1)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "files": [ + "helpers.php" + ], + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Support package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2022-09-21T21:30:03+00:00" + }, + { + "name": "jean85/pretty-package-versions", + "version": "2.0.6", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/f9fdd29ad8e6d024f52678b570e5593759b550b4", + "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0.0", + "php": "^7.1|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^7.5|^8.5|^9.4", + "vimeo/psalm": "^4.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Jean85\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A library to get pretty versions strings of installed dependencies", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.6" + }, + "time": "2024-03-08T09:58:59+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.12.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2024-06-12T14:39:25+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.72.5", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/afd46589c216118ecd48ff2b95d77596af1e57ed", + "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "*", + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "*", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", + "squizlabs/php_codesniffer": "^3.4" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev", + "dev-2.x": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2024-06-03T19:18:41+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.19.1", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.1" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" + }, + "time": "2024-03-17T08:10:35+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "f05978827b9343cba381ca05b8c7deee346b6015" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f05978827b9343cba381ca05b8c7deee346b6015", + "reference": "f05978827b9343cba381ca05b8c7deee346b6015", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.14.5", + "php": "^8.0.0", + "symfony/console": "^6.0.2" + }, + "require-dev": { + "brianium/paratest": "^6.4.1", + "laravel/framework": "^9.26.1", + "laravel/pint": "^1.1.1", + "nunomaduro/larastan": "^1.0.3", + "nunomaduro/mock-final-classes": "^1.1.0", + "orchestra/testbench": "^7.7", + "phpunit/phpunit": "^9.5.23", + "spatie/ignition": "^1.4.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "6.x-dev" + }, + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2023-01-03T12:54:54+00:00" + }, + { + "name": "pestphp/pest", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest.git", + "reference": "5c56ad8772b89611c72a07e23f6e30aa29dc677a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest/zipball/5c56ad8772b89611c72a07e23f6e30aa29dc677a", + "reference": "5c56ad8772b89611c72a07e23f6e30aa29dc677a", + "shasum": "" + }, + "require": { + "nunomaduro/collision": "^5.11.0|^6.4.0", + "pestphp/pest-plugin": "^1.1.0", + "php": "^7.3 || ^8.0", + "phpunit/phpunit": "^9.6.10" + }, + "require-dev": { + "illuminate/console": "^8.83.27", + "illuminate/support": "^8.83.27", + "laravel/dusk": "^6.25.2", + "pestphp/pest-dev-tools": "^1.0.0", + "pestphp/pest-plugin-parallel": "^1.2.1" + }, + "bin": [ + "bin/pest" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + }, + "pest": { + "plugins": [ + "Pest\\Plugins\\Coverage", + "Pest\\Plugins\\Init", + "Pest\\Plugins\\Version", + "Pest\\Plugins\\Environment" + ] + }, + "laravel": { + "providers": [ + "Pest\\Laravel\\PestServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Functions.php", + "src/Pest.php" + ], + "psr-4": { + "Pest\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "An elegant PHP Testing Framework.", + "keywords": [ + "framework", + "pest", + "php", + "test", + "testing", + "unit" + ], + "support": { + "issues": "https://github.com/pestphp/pest/issues", + "source": "https://github.com/pestphp/pest/tree/v1.23.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2023-07-12T19:42:47+00:00" + }, + { + "name": "pestphp/pest-plugin", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin.git", + "reference": "606c5f79c6a339b49838ffbee0151ca519efe378" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/606c5f79c6a339b49838ffbee0151ca519efe378", + "reference": "606c5f79c6a339b49838ffbee0151ca519efe378", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1.0 || ^2.0.0", + "php": "^7.3 || ^8.0" + }, + "conflict": { + "pestphp/pest": "<1.0" + }, + "require-dev": { + "composer/composer": "^2.4.2", + "pestphp/pest": "^1.22.1", + "pestphp/pest-dev-tools": "^1.0.0" + }, + "type": "composer-plugin", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "class": "Pest\\Plugin\\Manager" + }, + "autoload": { + "psr-4": { + "Pest\\Plugin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest plugin manager", + "keywords": [ + "framework", + "manager", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin/tree/v1.1.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2022-09-18T13:18:17+00:00" + }, + { + "name": "pestphp/pest-plugin-parallel", + "version": "v1.2.1", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-parallel.git", + "reference": "842592eba2439ba6477f6d6c7ee4a4e7bccdcd10" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-parallel/zipball/842592eba2439ba6477f6d6c7ee4a4e7bccdcd10", + "reference": "842592eba2439ba6477f6d6c7ee4a4e7bccdcd10", + "shasum": "" + }, + "require": { + "brianium/paratest": "^6.8.1", + "pestphp/pest-plugin": "^1.1.0", + "php": "^7.3 || ^8.0" + }, + "conflict": { + "laravel/framework": "<8.55", + "nunomaduro/collision": "<5.8", + "pestphp/pest": "<1.16" + }, + "require-dev": { + "pestphp/pest": "^1.22.3", + "pestphp/pest-dev-tools": "^1.0.0" + }, + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Parallel\\Plugin" + ] + } + }, + "autoload": { + "files": [ + "src/Autoload.php", + "build/RunnerWorker.php", + "build/BaseRunner.php" + ], + "psr-4": { + "Pest\\Parallel\\": "src/" + }, + "exclude-from-classmap": [ + "ParaTest\\Runners\\PHPUnit\\Worker\\RunnerWorker", + "ParaTest\\Runners\\PHPUnit\\BaseRunner" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest Parallel Plugin", + "keywords": [ + "framework", + "parallel", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-parallel/tree/v1.2.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "type": "custom" + }, + { + "url": "https://github.com/lukeraymonddowning", + "type": "github" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/octoper", + "type": "github" + }, + { + "url": "https://github.com/olivernybroe", + "type": "github" + }, + { + "url": "https://github.com/owenvoke", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2023-02-03T13:01:17+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.4.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.1", + "ext-filter": "*", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.7", + "phpstan/phpdoc-parser": "^1.7", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.5", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1" + }, + "time": "2024-05-21T05:55:05+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.8.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "153ae662783729388a584b4361f2545e4d841e3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", + "reference": "153ae662783729388a584b4361f2545e4d841e3c", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" + }, + "require-dev": { + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" + }, + "time": "2024-02-23T11:10:43+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.29.1", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1" + }, + "time": "2024-05-31T08:52:43+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.31", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", + "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:37:42+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.6.20", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "49d7820565836236411f5dc002d16dd689cde42f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/49d7820565836236411f5dc002d16dd689cde42f", + "reference": "49d7820565836236411f5dc002d16dd689cde42f", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.5.0 || ^2", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.12.0", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=7.3", + "phpunit/php-code-coverage": "^9.2.31", + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.4", + "phpunit/php-timer": "^5.0.3", + "sebastian/cli-parser": "^1.0.2", + "sebastian/code-unit": "^1.0.8", + "sebastian/comparator": "^4.0.8", + "sebastian/diff": "^4.0.6", + "sebastian/environment": "^5.1.5", + "sebastian/exporter": "^4.0.6", + "sebastian/global-state": "^5.0.7", + "sebastian/object-enumerator": "^4.0.4", + "sebastian/resource-operations": "^3.0.4", + "sebastian/type": "^3.2.1", + "sebastian/version": "^3.0.2" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.6-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.20" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2024-07-10T11:45:39+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" + }, + "time": "2021-11-05T16:50:12+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/log", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.0" + }, + "time": "2021-07-14T16:46:02+00:00" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, + "time": "2017-10-23T01:57:42+00:00" + }, + { + "name": "react/cache", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/cache.git", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/promise": "^3.0 || ^2.0 || ^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, Promise-based cache interface for ReactPHP", + "keywords": [ + "cache", + "caching", + "promise", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/cache/issues", + "source": "https://github.com/reactphp/cache/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2022-11-30T15:59:55+00:00" + }, + { + "name": "react/child-process", + "version": "v0.6.5", + "source": { + "type": "git", + "url": "https://github.com/reactphp/child-process.git", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/event-loop": "^1.2", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", + "react/socket": "^1.8", + "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\ChildProcess\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven library for executing child processes with ReactPHP.", + "keywords": [ + "event-driven", + "process", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/child-process/issues", + "source": "https://github.com/reactphp/child-process/tree/v0.6.5" + }, + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-09-16T13:41:56+00:00" + }, + { + "name": "react/dns", + "version": "v1.13.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/dns.git", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.7 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3 || ^2", + "react/promise-timer": "^1.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Dns\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async DNS resolver for ReactPHP", + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/dns/issues", + "source": "https://github.com/reactphp/dns/tree/v1.13.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-13T14:18:03+00:00" + }, + { + "name": "react/event-loop", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/event-loop.git", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "suggest": { + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\EventLoop\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" + ], + "support": { + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-11-13T13:48:05+00:00" + }, + { + "name": "react/promise", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v3.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-05-24T10:39:05+00:00" + }, + { + "name": "react/socket", + "version": "v1.15.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/socket.git", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/socket/zipball/216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.11", + "react/event-loop": "^1.2", + "react/promise": "^3 || ^2.6 || ^1.2.1", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4 || ^3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Socket\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", + "keywords": [ + "Connection", + "Socket", + "async", + "reactphp", + "stream" + ], + "support": { + "issues": "https://github.com/reactphp/socket/issues", + "source": "https://github.com/reactphp/socket/tree/v1.15.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-12-15T11:02:10+00:00" + }, + { + "name": "react/stream", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/stream.git", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.2" + }, + "require-dev": { + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Stream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", + "keywords": [ + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" + ], + "support": { + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-11T12:45:25+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:27:43+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-09-14T12:41:17+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-22T06:19:30+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:30:58+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:03:51+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:33:00+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:35:11+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-22T06:20:34+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:07:39+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-14T16:00:52+00:00" + }, + { + "name": "sebastian/type", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:13:03+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "symfony/console", + "version": "v6.4.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "6edb5363ec0c78ad4d48c5128ebf4d083d89d3a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/6edb5363ec0c78ad4d48c5128ebf4d083d89d3a9", + "reference": "6edb5363ec0c78ad4d48c5128ebf4d083d89d3a9", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v6.4.9" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-06-28T09:49:33+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T14:57:53+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v7.1.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "92a91985250c251de9b947a14bb2c9390b1a562c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/92a91985250c251de9b947a14bb2c9390b1a562c", + "reference": "92a91985250c251de9b947a14bb2c9390b1a562c", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v7.1.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-06-28T10:03:55+00:00" + }, + { + "name": "symfony/finder", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "fbb0ba67688b780efbc886c1a0a0948dcf7205d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/fbb0ba67688b780efbc886c1a0a0948dcf7205d6", + "reference": "fbb0ba67688b780efbc886c1a0a0948dcf7205d6", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v7.1.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T14:57:53+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/47aa818121ed3950acd2b58d1d37d08a94f9bf55", + "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v7.1.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T14:57:53+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.30.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "0424dff1c58f028c451efff2045f5d92410bd540" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", + "reference": "0424dff1c58f028c451efff2045f5d92410bd540", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T15:07:36+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.30.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T15:07:36+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.30.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T15:07:36+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.30.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-06-19T12:30:46+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.30.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "77fa7995ac1b21ab60769b7323d600a991a90433" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433", + "reference": "77fa7995ac1b21ab60769b7323d600a991a90433", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T15:07:36+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.30.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/3fb075789fb91f9ad9af537c4012d523085bd5af", + "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.30.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-06-19T12:30:46+00:00" + }, + { + "name": "symfony/process", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "febf90124323a093c7ee06fdb30e765ca3c20028" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/febf90124323a093c7ee06fdb30e765ca3c20028", + "reference": "febf90124323a093c7ee06fdb30e765ca3c20028", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v7.1.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T14:57:53+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", + "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/service-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a way to profile code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v7.1.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T14:57:53+00:00" + }, + { + "name": "symfony/string", + "version": "v7.1.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/14221089ac66cf82e3cf3d1c1da65de305587ff8", + "reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/emoji": "^7.1", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v7.1.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-06-28T09:27:18+00:00" + }, + { + "name": "symfony/translation", + "version": "v6.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/a002933b13989fc4bd0b58e04bf7eec5210e438a", + "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "conflict": { + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^4.18|^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v6.4.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T14:49:08+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:36:25+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/87337c91b9dfacee02452244ee14ab3c43bc485a", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/1.6.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2022-01-24T18:55:24+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.2" + }, + "platform-dev": [], + "plugin-api-version": "2.6.0" +} diff --git a/src/Binary/Buffer/Reader/Buffer.php b/src/Binary/Buffer/Reader/Buffer.php index 2924f686..4a9a351b 100644 --- a/src/Binary/Buffer/Reader/Buffer.php +++ b/src/Binary/Buffer/Reader/Buffer.php @@ -64,7 +64,7 @@ public static function fromHex(string $value): self * * @param int $value * - * @return \ArkEcosystem\Crypto\Binary\Buffer\Reader\Buffer + * @return Buffer */ public function position(int $value): self { @@ -79,7 +79,7 @@ public function position(int $value): self * * @param int $value * - * @return \ArkEcosystem\Crypto\Binary\Buffer\Reader\Buffer + * @return Buffer */ public function skip(int $value): self { diff --git a/src/ByteBuffer/ByteBuffer.php b/src/ByteBuffer/ByteBuffer.php index 9a08fad7..8ba00bcf 100644 --- a/src/ByteBuffer/ByteBuffer.php +++ b/src/ByteBuffer/ByteBuffer.php @@ -20,13 +20,13 @@ */ class ByteBuffer { - use Concerns\Initialisable, - Concerns\Offsetable, - Concerns\Positionable, - Concerns\Readable, - Concerns\Sizeable, - Concerns\Transformable, - Concerns\Writeable; + use Concerns\Initialisable; + use Concerns\Offsetable; + use Concerns\Positionable; + use Concerns\Readable; + use Concerns\Sizeable; + use Concerns\Transformable; + use Concerns\Writeable; /** * Backing ArrayBuffer. @@ -66,14 +66,17 @@ private function __construct($value) switch (gettype($value)) { case 'array': $this->initializeBuffer(count($value), $value); + break; case 'integer': $this->initializeBuffer($value, pack("x{$value}")); + break; case 'string': $this->initializeBuffer(strlen($value), $value); + break; default: @@ -131,7 +134,7 @@ public function __unset($offset) * * @param array|string|int $value * - * @return \ArkEcosystem\Crypto\ByteBuffer\ByteBuffer + * @return ByteBuffer */ public static function new($value): self { @@ -143,7 +146,7 @@ public static function new($value): self * * @param int $capacity * - * @return \ArkEcosystem\Crypto\ByteBuffer\ByteBuffer + * @return ByteBuffer */ public static function allocate(int $capacity): self { @@ -176,7 +179,7 @@ public function initializeBuffer(int $length, $content): void * @param string|int $value * @param int $offset * - * @return \ArkEcosystem\Crypto\ByteBuffer\ByteBuffer + * @return ByteBuffer */ public function pack(string $format, $value, int $offset): self { @@ -227,7 +230,7 @@ public function get(int $offset) * * @param array $buffers * - * @return \ArkEcosystem\Crypto\ByteBuffer\ByteBuffer + * @return ByteBuffer */ public static function concat(...$buffers): self { @@ -246,7 +249,7 @@ public static function concat(...$buffers): self * @param mixed $value * @param int $offset * - * @return \ArkEcosystem\Crypto\ByteBuffer\ByteBuffer + * @return ByteBuffer */ public function append($value, int $offset = 0): self { @@ -270,10 +273,10 @@ public function append($value, int $offset = 0): self /** * Appends this ByteBuffers contents to another ByteBuffer. * - * @param \ArkEcosystem\Crypto\ByteBuffer\ByteBuffer $buffer + * @param ByteBuffer $buffer * @param int $offset * - * @return \ArkEcosystem\Crypto\ByteBuffer\ByteBuffer + * @return ByteBuffer */ public function appendTo(self $buffer, int $offset = 0): self { @@ -286,7 +289,7 @@ public function appendTo(self $buffer, int $offset = 0): self * @param mixed $value * @param int $offset * - * @return \ArkEcosystem\Crypto\ByteBuffer\ByteBuffer + * @return ByteBuffer */ public function prepend($value, int $offset = 0): self { @@ -314,10 +317,10 @@ public function prepend($value, int $offset = 0): self /** * Prepends this ByteBuffers contents to another ByteBuffer. * - * @param \ArkEcosystem\Crypto\ByteBuffer\ByteBuffer $buffer + * @param ByteBuffer $buffer * @param int $offset * - * @return \ArkEcosystem\Crypto\ByteBuffer\ByteBuffer + * @return ByteBuffer */ public function prependTo(self $buffer, int $offset = 0): self { @@ -330,7 +333,7 @@ public function prependTo(self $buffer, int $offset = 0): self * @param int $length * @param int $start * - * @return \ArkEcosystem\Crypto\ByteBuffer\ByteBuffer + * @return ByteBuffer */ public function fill(int $length, int $start = 0): self { @@ -351,7 +354,7 @@ public function fill(int $length, int $start = 0): self * @param int $start * @param int $length * - * @return \ArkEcosystem\Crypto\ByteBuffer\ByteBuffer + * @return ByteBuffer */ public function flip(int $start = 0, int $length = 0): self { @@ -368,7 +371,7 @@ public function flip(int $start = 0, int $length = 0): self * @param int $start * @param int $length * - * @return \ArkEcosystem\Crypto\ByteBuffer\ByteBuffer + * @return ByteBuffer */ public function reverse(int $start = 0, int $length = 0): self { @@ -380,7 +383,7 @@ public function reverse(int $start = 0, int $length = 0): self * * @param int $value * - * @return \ArkEcosystem\Crypto\ByteBuffer\ByteBuffer + * @return ByteBuffer */ public function order(int $value): self { @@ -417,7 +420,7 @@ public function slice(int $offset, int $length): array /** * Determine if the given value is a ByteBuffer. * - * @param \ArkEcosystem\Crypto\ByteBuffer\ByteBuffer $buffer + * @param ByteBuffer $buffer * * @return bool */ diff --git a/src/ByteBuffer/ByteOrder.php b/src/ByteBuffer/ByteOrder.php index 8592fe77..0ccfc170 100644 --- a/src/ByteBuffer/ByteOrder.php +++ b/src/ByteBuffer/ByteOrder.php @@ -18,15 +18,15 @@ class ByteOrder /** * Most significant value in the sequence is stored first. Flip no bytes! */ - const BE = 0; + public const BE = 0; /** * Least significant value in the sequence is stored first. Flip bytes! */ - const LE = 1; + public const LE = 1; /** * Let the current machine determine the endianess. */ - const MB = 2; + public const MB = 2; } diff --git a/src/ByteBuffer/Concerns/Initialisable.php b/src/ByteBuffer/Concerns/Initialisable.php index 3730fb74..800a7851 100644 --- a/src/ByteBuffer/Concerns/Initialisable.php +++ b/src/ByteBuffer/Concerns/Initialisable.php @@ -41,7 +41,7 @@ public static function fromBinary(string $value): self */ public static function fromHex(string $value): self { - if (strlen($value) > 0 && !ctype_xdigit($value)) { + if (strlen($value) > 0 && ! ctype_xdigit($value)) { throw new InvalidArgumentException('Buffer::hex: non-hex character passed'); } diff --git a/src/ByteBuffer/Concerns/Readable.php b/src/ByteBuffer/Concerns/Readable.php index 3e98d13d..60bc3325 100644 --- a/src/ByteBuffer/Concerns/Readable.php +++ b/src/ByteBuffer/Concerns/Readable.php @@ -18,9 +18,9 @@ */ trait Readable { - use Reads\Floats, - Reads\Hex, - Reads\Integer, - Reads\Strings, - Reads\UnsignedInteger; + use Reads\Floats; + use Reads\Hex; + use Reads\Integer; + use Reads\Strings; + use Reads\UnsignedInteger; } diff --git a/src/ByteBuffer/Concerns/Reads/Strings.php b/src/ByteBuffer/Concerns/Reads/Strings.php index 0fc9d0fd..c5f615bf 100644 --- a/src/ByteBuffer/Concerns/Reads/Strings.php +++ b/src/ByteBuffer/Concerns/Reads/Strings.php @@ -41,7 +41,7 @@ public function readString(int $length, int $offset = 0): string */ public function readUTF8String(int $length, int $offset = 0): string { - return utf8_decode($this->unpack("a{$length}", $offset)); + return mb_convert_encoding($this->unpack("a{$length}", $offset), 'ISO-8859-1', 'UTF-8'); } /** @@ -54,7 +54,7 @@ public function readUTF8String(int $length, int $offset = 0): string */ public function readCString(int $length, int $offset = 0): string { - return utf8_decode($this->unpack("Z{$length}", $offset)); + return mb_convert_encoding($this->unpack("Z{$length}", $offset), 'ISO-8859-1', 'UTF-8'); } /** diff --git a/src/ByteBuffer/Concerns/Transformable.php b/src/ByteBuffer/Concerns/Transformable.php index 85a41291..6bb25f84 100644 --- a/src/ByteBuffer/Concerns/Transformable.php +++ b/src/ByteBuffer/Concerns/Transformable.php @@ -26,7 +26,7 @@ trait Transformable * @param int $offset * @param int $length * - * @return array + * @return string */ public function toBinary(int $offset = 0, int $length = 0): string { diff --git a/src/ByteBuffer/Concerns/Writeable.php b/src/ByteBuffer/Concerns/Writeable.php index 313eae0b..0daa2df1 100644 --- a/src/ByteBuffer/Concerns/Writeable.php +++ b/src/ByteBuffer/Concerns/Writeable.php @@ -18,9 +18,9 @@ */ trait Writeable { - use Writes\Floats, - Writes\Hex, - Writes\Integer, - Writes\Strings, - Writes\UnsignedInteger; + use Writes\Floats; + use Writes\Hex; + use Writes\Integer; + use Writes\Strings; + use Writes\UnsignedInteger; } diff --git a/src/ByteBuffer/Concerns/Writes/Strings.php b/src/ByteBuffer/Concerns/Writes/Strings.php index e51b3b71..28474480 100644 --- a/src/ByteBuffer/Concerns/Writes/Strings.php +++ b/src/ByteBuffer/Concerns/Writes/Strings.php @@ -54,7 +54,8 @@ public function writeString(string $value, int $offset = 0): self */ public function writeUTF8String(string $value, int $offset = 0): self { - $value = utf8_encode($value); + $value = mb_convert_encoding($value, 'UTF-8', 'ISO-8859-1'); + $length = strlen($value); return $this->pack("a{$length}", $value, $offset); @@ -70,7 +71,8 @@ public function writeUTF8String(string $value, int $offset = 0): self */ public function writeCString(string $value, int $offset = 0): self { - $value = utf8_encode($value.' '); + $value = mb_convert_encoding($value.' ', 'UTF-8', 'ISO-8859-1'); + $length = strlen($value); return $this->pack("Z{$length}", $value, $offset); diff --git a/src/ByteBuffer/LengthMap.php b/src/ByteBuffer/LengthMap.php index 92749379..552c658a 100644 --- a/src/ByteBuffer/LengthMap.php +++ b/src/ByteBuffer/LengthMap.php @@ -25,7 +25,7 @@ class LengthMap * * @var array */ - const LENGTHS = [ + public const LENGTHS = [ // Chars (8 bit) 'c' => 1, 'C' => 1, @@ -82,7 +82,7 @@ public static function get(string $format): int return (int) substr($format, 1) / 2; } - if (!array_key_exists($format, static::LENGTHS)) { + if (! array_key_exists($format, static::LENGTHS)) { throw new InvalidArgumentException("The given format [{$format}] is not supported."); } diff --git a/src/Configuration/Network.php b/src/Configuration/Network.php index e347c09d..32c4d28a 100644 --- a/src/Configuration/Network.php +++ b/src/Configuration/Network.php @@ -27,7 +27,7 @@ class Network /** * The network used for crypto operations. * - * @var \ArkEcosystem\Crypto\Networks\AbstractNetwork + * @var AbstractNetwork */ private static $network; @@ -47,7 +47,7 @@ public static function __callStatic(string $method, array $args) /** * Get the network used for crypto operations. * - * @return \ArkEcosystem\Crypto\Networks\AbstractNetwork + * @return AbstractNetwork */ public static function get(): AbstractNetwork { @@ -57,7 +57,7 @@ public static function get(): AbstractNetwork /** * Set the network used for crypto operations. * - * @param \ArkEcosystem\Crypto\Networks\AbstractNetwork $network + * @param AbstractNetwork $network */ public static function set(AbstractNetwork $network): void { diff --git a/src/Enums/Fees.php b/src/Enums/Fees.php index 7064fb7d..dc4fe4b4 100644 --- a/src/Enums/Fees.php +++ b/src/Enums/Fees.php @@ -20,25 +20,25 @@ */ class Fees { - const TRANSFER = '10000000'; + public const TRANSFER = '10000000'; - const SECOND_SIGNATURE_REGISTRATION = '500000000'; + public const SECOND_SIGNATURE_REGISTRATION = '500000000'; - const DELEGATE_REGISTRATION = '2500000000'; + public const DELEGATE_REGISTRATION = '2500000000'; - const VOTE = '100000000'; + public const VOTE = '100000000'; - const MULTI_SIGNATURE_REGISTRATION = '500000000'; + public const MULTI_SIGNATURE_REGISTRATION = '500000000'; - const IPFS = '500000000'; + public const IPFS = '500000000'; - const MULTI_PAYMENT = '10000000'; + public const MULTI_PAYMENT = '10000000'; - const DELEGATE_RESIGNATION = '2500000000'; + public const DELEGATE_RESIGNATION = '2500000000'; - const HTLC_LOCK = '10000000'; + public const HTLC_LOCK = '10000000'; - const HTLC_CLAIM = '0'; + public const HTLC_CLAIM = '0'; - const HTLC_REFUND = '0'; + public const HTLC_REFUND = '0'; } diff --git a/src/Enums/TypeGroup.php b/src/Enums/TypeGroup.php index d4a47694..e24382a3 100644 --- a/src/Enums/TypeGroup.php +++ b/src/Enums/TypeGroup.php @@ -20,9 +20,9 @@ */ class TypeGroup { - const TEST = 0; + public const TEST = 0; - const CORE = 1; + public const CORE = 1; - const RESERVED = 1000; // Everything above is available to anyone + public const RESERVED = 1000; // Everything above is available to anyone } diff --git a/src/Enums/Types.php b/src/Enums/Types.php index e71ebc84..1fb78222 100644 --- a/src/Enums/Types.php +++ b/src/Enums/Types.php @@ -20,25 +20,25 @@ */ class Types { - const TRANSFER = 0; + public const TRANSFER = 0; - const SECOND_SIGNATURE_REGISTRATION = 1; + public const SECOND_SIGNATURE_REGISTRATION = 1; - const DELEGATE_REGISTRATION = 2; + public const DELEGATE_REGISTRATION = 2; - const VOTE = 3; + public const VOTE = 3; - const MULTI_SIGNATURE_REGISTRATION = 4; + public const MULTI_SIGNATURE_REGISTRATION = 4; - const IPFS = 5; + public const IPFS = 5; - const MULTI_PAYMENT = 6; + public const MULTI_PAYMENT = 6; - const DELEGATE_RESIGNATION = 7; + public const DELEGATE_RESIGNATION = 7; - const HTLC_LOCK = 8; + public const HTLC_LOCK = 8; - const HTLC_CLAIM = 9; + public const HTLC_CLAIM = 9; - const HTLC_REFUND = 10; + public const HTLC_REFUND = 10; } diff --git a/src/Helpers.php b/src/Helpers.php index d372d881..4189509c 100644 --- a/src/Helpers.php +++ b/src/Helpers.php @@ -25,7 +25,7 @@ class Helpers /** * Get the network version. * - * @param \ArkEcosystem\Crypto\Networks\AbstractNetwork|int $network + * @param Networks\AbstractNetwork|int $network * * @return int */ diff --git a/src/Identities/Address.php b/src/Identities/Address.php index 68498aa6..a798a755 100644 --- a/src/Identities/Address.php +++ b/src/Identities/Address.php @@ -13,6 +13,7 @@ namespace ArkEcosystem\Crypto\Identities; +use ArkEcosystem\Crypto\Binary\UnsignedInteger\Writer; use ArkEcosystem\Crypto\Configuration\Network as NetworkConfiguration; use ArkEcosystem\Crypto\Helpers; use ArkEcosystem\Crypto\Networks\AbstractNetwork; @@ -22,7 +23,6 @@ use BitWasp\Bitcoin\Crypto\EcAdapter\Impl\PhpEcc\Key\PrivateKey as EccPrivateKey; use BitWasp\Bitcoin\Crypto\Hash; use BitWasp\Buffertools\Buffer; -use ArkEcosystem\Crypto\Binary\UnsignedInteger\Writer; /** * This is the address class. @@ -78,7 +78,7 @@ public static function fromPublicKey(string $publicKey, $network = null): string /** * Derive the address from the given private key. * - * @param \BitWasp\Bitcoin\Crypto\EcAdapter\Impl\PhpEcc\Key\PrivateKey $privateKey + * @param EccPrivateKey $privateKey * @param AbstractNetwork|null $network * * @return string diff --git a/src/Identities/PrivateKey.php b/src/Identities/PrivateKey.php index 7f7a6eb0..f7ec97a5 100644 --- a/src/Identities/PrivateKey.php +++ b/src/Identities/PrivateKey.php @@ -33,7 +33,7 @@ class PrivateKey * * @param string $passphrase * - * @return \BitWasp\Bitcoin\Crypto\EcAdapter\Impl\PhpEcc\Key\PrivateKey + * @return EcPrivateKey */ public static function fromPassphrase(string $passphrase): EcPrivateKey { @@ -52,7 +52,7 @@ public static function fromPassphrase(string $passphrase): EcPrivateKey * * @param \BitWasp\Buffertools\BufferInterface|string $privateKey * - * @return \BitWasp\Bitcoin\Crypto\EcAdapter\Impl\PhpEcc\Key\PrivateKey + * @return EcPrivateKey */ public static function fromHex($privateKey): EcPrivateKey { @@ -68,9 +68,9 @@ public static function fromHex($privateKey): EcPrivateKey * Derive the private key for the given WIF. * * @param string $wif - * @param \ArkEcosystem\Crypto\Networks\AbstractNetwork|null $network + * @param AbstractNetwork|null $network * - * @return \BitWasp\Bitcoin\Crypto\EcAdapter\Impl\PhpEcc\Key\PrivateKey + * @return EcPrivateKey */ public static function fromWif(string $wif, AbstractNetwork $network = null): EcPrivateKey { diff --git a/src/Identities/PublicKey.php b/src/Identities/PublicKey.php index 13dfa9ce..9c4252cd 100644 --- a/src/Identities/PublicKey.php +++ b/src/Identities/PublicKey.php @@ -31,7 +31,7 @@ class PublicKey * * @param string $passphrase * - * @return \BitWasp\Bitcoin\Crypto\EcAdapter\Impl\PhpEcc\Key\PublicKey + * @return EcPublicKey */ public static function fromPassphrase(string $passphrase): EcPublicKey { @@ -44,7 +44,7 @@ public static function fromPassphrase(string $passphrase): EcPublicKey * @param int $min * @param array $publicKeys * - * @return \BitWasp\Bitcoin\Crypto\EcAdapter\Impl\PhpEcc\Key\PublicKey + * @return EcPublicKey */ public static function fromMultiSignatureAsset(int $min, array $publicKeys): EcPublicKey { @@ -66,7 +66,7 @@ public static function fromMultiSignatureAsset(int $min, array $publicKeys): EcP * * @param \BitWasp\Buffertools\BufferInterface|string $publicKey * - * @return \BitWasp\Bitcoin\Crypto\EcAdapter\Impl\PhpEcc\Key\PublicKey + * @return EcPublicKey */ public static function fromHex($publicKey): EcPublicKey { diff --git a/src/Identities/WIF.php b/src/Identities/WIF.php index 50db26d0..5307cf84 100644 --- a/src/Identities/WIF.php +++ b/src/Identities/WIF.php @@ -26,7 +26,7 @@ class WIF * Derive the WIF from the given passphrase. * * @param string $passphrase - * @param \ArkEcosystem\Crypto\Networks\AbstractNetwork|null $network + * @param AbstractNetwork|null $network * * @return string */ diff --git a/src/Transactions/Builder/AbstractTransactionBuilder.php b/src/Transactions/Builder/AbstractTransactionBuilder.php index 7e185cbc..095c3626 100644 --- a/src/Transactions/Builder/AbstractTransactionBuilder.php +++ b/src/Transactions/Builder/AbstractTransactionBuilder.php @@ -25,6 +25,8 @@ */ abstract class AbstractTransactionBuilder { + public $transaction; + /** * Create a new transaction instance. */ @@ -53,7 +55,7 @@ public function __toString() /** * Create a new transaction instance. * - * @return \ArkEcosystem\Crypto\Transactions\Builder\AbstractTransactionBuilder + * @return AbstractTransactionBuilder */ public static function new(): self { @@ -65,7 +67,7 @@ public static function new(): self * * @param string $fee * - * @return \ArkEcosystem\Crypto\Transactions\Builder\AbstractTransactionBuilder + * @return AbstractTransactionBuilder */ public function withFee(string $fee): self { @@ -79,7 +81,7 @@ public function withFee(string $fee): self * * @param string $nonce * - * @return \ArkEcosystem\Crypto\Transactions\Builder\AbstractTransactionBuilder + * @return AbstractTransactionBuilder */ public function withNonce(string $nonce): self { @@ -93,7 +95,7 @@ public function withNonce(string $nonce): self * * @param int $network * - * @return \ArkEcosystem\Crypto\Transactions\Builder\AbstractTransactionBuilder + * @return AbstractTransactionBuilder */ public function withNetwork(int $network): self { @@ -107,7 +109,7 @@ public function withNetwork(int $network): self * * @param string $passphrase * - * @return \ArkEcosystem\Crypto\Transactions\Builder\AbstractTransactionBuilder + * @return AbstractTransactionBuilder */ public function sign(string $passphrase): self { @@ -125,7 +127,7 @@ public function sign(string $passphrase): self * * @param string $secondPassphrase * - * @return \ArkEcosystem\Crypto\Transactions\Builder\AbstractTransactionBuilder + * @return AbstractTransactionBuilder */ public function secondSign(string $secondPassphrase): self { diff --git a/src/Transactions/Deserializer.php b/src/Transactions/Deserializer.php index a33612db..b5598a03 100644 --- a/src/Transactions/Deserializer.php +++ b/src/Transactions/Deserializer.php @@ -13,9 +13,9 @@ namespace ArkEcosystem\Crypto\Transactions; +use ArkEcosystem\Crypto\ByteBuffer\ByteBuffer; use ArkEcosystem\Crypto\Transactions\Types\Transaction; use BitWasp\Bitcoin\Crypto\Hash; -use ArkEcosystem\Crypto\ByteBuffer\ByteBuffer; /** * This is the deserializer class. @@ -24,6 +24,8 @@ */ class Deserializer { + private ByteBuffer $buffer; + /** * The transaction classes. * @@ -96,6 +98,20 @@ public function deserialize(): Transaction return $transaction; } + /** + * Handle the deserialization of transaction data with a version of 2.0. + * + * @param Transaction $transaction + * + * @return Transaction + */ + public function handleVersionTwo(Transaction $transaction): Transaction + { + $transaction->data['id'] = Hash::sha256(Serializer::new($transaction)->serialize())->getHex(); + + return $transaction; + } + private function deserializeCommon(array &$data): void { $this->buffer->skip(1); @@ -260,18 +276,4 @@ private function detectSchnorr(): bool return false; } - - /** - * Handle the deserialization of transaction data with a version of 2.0. - * - * @param Transaction $transaction - * - * @return Transaction - */ - public function handleVersionTwo(Transaction $transaction): Transaction - { - $transaction->data['id'] = Hash::sha256(Serializer::new($transaction)->serialize())->getHex(); - - return $transaction; - } } diff --git a/src/Transactions/Serializer.php b/src/Transactions/Serializer.php index 26dfc9eb..d5e78068 100644 --- a/src/Transactions/Serializer.php +++ b/src/Transactions/Serializer.php @@ -13,11 +13,11 @@ namespace ArkEcosystem\Crypto\Transactions; +use ArkEcosystem\Crypto\ByteBuffer\ByteBuffer; use ArkEcosystem\Crypto\Configuration\Network; use ArkEcosystem\Crypto\Enums\TypeGroup; use ArkEcosystem\Crypto\Transactions\Types\Transaction; use BitWasp\Buffertools\Buffer; -use ArkEcosystem\Crypto\ByteBuffer\ByteBuffer; /** * This is the serializer class. @@ -26,10 +26,12 @@ */ class Serializer { + public Transaction $transaction; + /** * Create a new serializer instance. * - * @param \ArkEcosystem\Crypto\Transactions\Types\Transaction $transaction + * @param Transaction $transaction */ private function __construct($transaction) { @@ -39,7 +41,7 @@ private function __construct($transaction) /** * Create a new deserializer instance. * - * @param \ArkEcosystem\Crypto\Transactions\Types\Transaction $transaction + * @param Transaction $transaction */ public static function new($transaction) { @@ -54,7 +56,7 @@ public static function getBytes(Transaction $transaction, array $options = []): /** * Perform AIP11 compliant serialization. * - * @return \BitWasp\Buffertools\Buffer + * @return Buffer */ public function serialize(array $options = []): Buffer { @@ -72,6 +74,34 @@ public function serialize(array $options = []): Buffer return new Buffer($buffer->toString('binary')); } + /** + * Handle the serialization of transaction data. + * + * @param ByteBuffer $buffer + * + * @return string + */ + public function serializeSignatures(ByteBuffer $buffer, array $options): void + { + $skipSignature = $options['skipSignature'] ?? false; + $skipSecondSignature = $options['skipSecondSignature'] ?? false; + $skipMultiSignature = $options['skipMultiSignature'] ?? false; + + if (! $skipSignature && isset($this->transaction->data['signature'])) { + $buffer->writeHex($this->transaction->data['signature']); + } + + if (! $skipSecondSignature) { + if (isset($this->transaction->data['secondSignature'])) { + $buffer->writeHex($this->transaction->data['secondSignature']); + } + } + + if (! $skipMultiSignature && isset($this->transaction->data['signatures'])) { + $buffer->writeHex(implode('', $this->transaction->data['signatures'])); + } + } + private function serializeCommon(ByteBuffer $buffer): void { $this->transaction->data['version'] = $this->transaction->data['version'] ?? 0x01; @@ -116,32 +146,4 @@ private function serializeVendorField(ByteBuffer $buffer): void $buffer->writeUInt8(0x00); } } - - /** - * Handle the serialization of transaction data. - * - * @param ByteBuffer $buffer - * - * @return string - */ - public function serializeSignatures(ByteBuffer $buffer, array $options): void - { - $skipSignature = $options['skipSignature'] ?? false; - $skipSecondSignature = $options['skipSecondSignature'] ?? false; - $skipMultiSignature = $options['skipMultiSignature'] ?? false; - - if (! $skipSignature && isset($this->transaction->data['signature'])) { - $buffer->writeHex($this->transaction->data['signature']); - } - - if (! $skipSecondSignature) { - if (isset($this->transaction->data['secondSignature'])) { - $buffer->writeHex($this->transaction->data['secondSignature']); - } - } - - if (! $skipMultiSignature && isset($this->transaction->data['signatures'])) { - $buffer->writeHex(implode('', $this->transaction->data['signatures'])); - } - } } diff --git a/src/Transactions/Types/HtlcLock.php b/src/Transactions/Types/HtlcLock.php index 98fe0ffa..4bb96280 100644 --- a/src/Transactions/Types/HtlcLock.php +++ b/src/Transactions/Types/HtlcLock.php @@ -13,9 +13,9 @@ namespace ArkEcosystem\Crypto\Transactions\Types; +use ArkEcosystem\Crypto\ByteBuffer\ByteBuffer; use BitWasp\Bitcoin\Base58; use BitWasp\Buffertools\Buffer; -use ArkEcosystem\Crypto\ByteBuffer\ByteBuffer; class HtlcLock extends Transaction { diff --git a/src/Transactions/Types/IPFS.php b/src/Transactions/Types/IPFS.php index 02de842a..3bd67420 100644 --- a/src/Transactions/Types/IPFS.php +++ b/src/Transactions/Types/IPFS.php @@ -13,9 +13,9 @@ namespace ArkEcosystem\Crypto\Transactions\Types; +use ArkEcosystem\Crypto\ByteBuffer\ByteBuffer; use BitWasp\Bitcoin\Base58; use BitWasp\Buffertools\Buffer; -use ArkEcosystem\Crypto\ByteBuffer\ByteBuffer; /** * This is the serializer class. diff --git a/src/Transactions/Types/MultiPayment.php b/src/Transactions/Types/MultiPayment.php index c5a360a6..6389852c 100644 --- a/src/Transactions/Types/MultiPayment.php +++ b/src/Transactions/Types/MultiPayment.php @@ -13,9 +13,9 @@ namespace ArkEcosystem\Crypto\Transactions\Types; +use ArkEcosystem\Crypto\ByteBuffer\ByteBuffer; use BitWasp\Bitcoin\Base58; use BitWasp\Buffertools\Buffer; -use ArkEcosystem\Crypto\ByteBuffer\ByteBuffer; /** * This is the serializer class. diff --git a/src/Transactions/Types/Transaction.php b/src/Transactions/Types/Transaction.php index b1a5a7ae..c651ad1d 100644 --- a/src/Transactions/Types/Transaction.php +++ b/src/Transactions/Types/Transaction.php @@ -13,6 +13,7 @@ namespace ArkEcosystem\Crypto\Transactions\Types; +use ArkEcosystem\Crypto\ByteBuffer\ByteBuffer; use ArkEcosystem\Crypto\Configuration\Network; use ArkEcosystem\Crypto\Transactions\Serializer; use BitWasp\Bitcoin\Crypto\EcAdapter\Impl\PhpEcc\Key\PrivateKey; @@ -20,7 +21,6 @@ use BitWasp\Bitcoin\Key\Factory\PublicKeyFactory; use BitWasp\Bitcoin\Signature\SignatureFactory; use BitWasp\Buffertools\Buffer; -use ArkEcosystem\Crypto\ByteBuffer\ByteBuffer; /** * This is the transaction class. @@ -52,7 +52,7 @@ public function getBytes($options = []): Buffer /** * Sign the transaction using the given passphrase. * - * @param \BitWasp\Bitcoin\Crypto\EcAdapter\Impl\PhpEcc\Key\PrivateKey $keys + * @param PrivateKey $keys * * @return Transaction */ @@ -71,7 +71,7 @@ public function sign(PrivateKey $keys): self /** * Sign the transaction using the given second passphrase. * - * @param \BitWasp\Bitcoin\Crypto\EcAdapter\Impl\PhpEcc\Key\PrivateKey $keys + * @param PrivateKey $keys * * @return Transaction */ diff --git a/src/Transactions/Types/Transfer.php b/src/Transactions/Types/Transfer.php index 575d31f7..52d5f5e6 100644 --- a/src/Transactions/Types/Transfer.php +++ b/src/Transactions/Types/Transfer.php @@ -13,9 +13,9 @@ namespace ArkEcosystem\Crypto\Transactions\Types; +use ArkEcosystem\Crypto\ByteBuffer\ByteBuffer; use BitWasp\Bitcoin\Base58; use BitWasp\Buffertools\Buffer; -use ArkEcosystem\Crypto\ByteBuffer\ByteBuffer; /** * This is the serializer class. diff --git a/src/Utils/Message.php b/src/Utils/Message.php index 0124bc17..f406788b 100644 --- a/src/Utils/Message.php +++ b/src/Utils/Message.php @@ -84,7 +84,7 @@ public function __toString(): string * * @param mixed $message * - * @return \ArkEcosystem\Crypto\Utils\Message + * @return Message */ public static function new($message): self { @@ -109,7 +109,7 @@ public static function new($message): self * @param string $message * @param string $passphrase * - * @return \ArkEcosystem\Crypto\Utils\Message + * @return Message */ public static function sign(string $message, string $passphrase): self { diff --git a/tests/Analysis/AnalysisTest.php b/tests/Analysis/AnalysisTest.php index d6536123..77d81014 100644 --- a/tests/Analysis/AnalysisTest.php +++ b/tests/Analysis/AnalysisTest.php @@ -1,5 +1,7 @@ assertSame($expected, $actual); } + + private function array_only(array $arr, array $keys): array + { + $returnArray = []; + foreach ($keys as $key) { + if (isset($arr[$key])) { + $returnArray[$key] = $arr[$key]; + } + } + + return $returnArray; + } } diff --git a/tests/Helpers.php b/tests/Helpers.php index b63c4fb0..f25183a4 100644 --- a/tests/Helpers.php +++ b/tests/Helpers.php @@ -1,5 +1,7 @@ in(__DIR__); diff --git a/tests/TestCase.php b/tests/TestCase.php index 5eccfbb6..623e799f 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -19,9 +19,9 @@ abstract class TestCase extends BaseTestCase { - use Concerns\Fixtures, - Concerns\Serialize, - Concerns\Deserialize; + use Concerns\Fixtures; + use Concerns\Serialize; + use Concerns\Deserialize; protected $passphrase = 'this is a top secret passphrase'; diff --git a/tests/Unit/Transactions/Builder/HtlcClaimTest.php b/tests/Unit/Transactions/Builder/HtlcClaimTest.php index 5ec3734f..7c8c9838 100644 --- a/tests/Unit/Transactions/Builder/HtlcClaimTest.php +++ b/tests/Unit/Transactions/Builder/HtlcClaimTest.php @@ -62,7 +62,7 @@ public function it_should_match_fixture_passphrase() ->htlcClaimAsset( $fixture['data']['asset']['claim']['lockTransactionId'], $fixture['data']['asset']['claim']['unlockSecret'] - ) + ) ->sign($this->passphrase); $this->assertTrue($builder->verify()); @@ -78,7 +78,7 @@ public function it_should_match_fixture_second_passphrase() ->htlcClaimAsset( $fixture['data']['asset']['claim']['lockTransactionId'], $fixture['data']['asset']['claim']['unlockSecret'] - ) + ) ->sign($this->passphrase) ->secondSign($this->secondPassphrase); diff --git a/tests/Unit/Transactions/Builder/HtlcLockTest.php b/tests/Unit/Transactions/Builder/HtlcLockTest.php index 794261fa..e1f55ba1 100644 --- a/tests/Unit/Transactions/Builder/HtlcLockTest.php +++ b/tests/Unit/Transactions/Builder/HtlcLockTest.php @@ -71,7 +71,7 @@ public function it_should_match_fixture_passphrase() $fixture['data']['asset']['lock']['secretHash'], $fixture['data']['asset']['lock']['expiration']['type'], $fixture['data']['asset']['lock']['expiration']['value'] - ) + ) ->sign($this->passphrase); $this->assertTrue($builder->verify()); @@ -90,7 +90,7 @@ public function it_should_match_fixture_second_passphrase() $fixture['data']['asset']['lock']['secretHash'], $fixture['data']['asset']['lock']['expiration']['type'], $fixture['data']['asset']['lock']['expiration']['value'] - ) + ) ->sign($this->passphrase) ->secondSign($this->secondPassphrase); @@ -111,7 +111,7 @@ public function it_should_match_fixture_vendor_field_passphrase() $fixture['data']['asset']['lock']['secretHash'], $fixture['data']['asset']['lock']['expiration']['type'], $fixture['data']['asset']['lock']['expiration']['value'] - ) + ) ->vendorField($fixture['data']['vendorField']) ->sign($this->passphrase); @@ -132,7 +132,7 @@ public function it_should_match_fixture_vendor_field_second_passphrase() $fixture['data']['asset']['lock']['secretHash'], $fixture['data']['asset']['lock']['expiration']['type'], $fixture['data']['asset']['lock']['expiration']['value'] - ) + ) ->vendorField($fixture['data']['vendorField']) ->sign($this->passphrase) ->secondSign($this->secondPassphrase); From 761ddd2f57028b054030a1ff3d15aff7113d9a7e Mon Sep 17 00:00:00 2001 From: Nico Allers Date: Mon, 25 Nov 2024 12:15:01 +0100 Subject: [PATCH 02/27] chore: update documentation link in readme (#137) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aa35df43..dbd8a598 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ ## Documentation -You can find installation instructions and detailed instructions on how to use this package at the [dedicated documentation site](https://docs.ark.io/sdk/cryptography/php.html). +You can find installation instructions and detailed instructions on how to use this package at the [dedicated documentation site](https://ark.dev/docs/sdk/php/crypto/intro). ## Security From d3e19e9aec76abf2362e4da111137e1264617773 Mon Sep 17 00:00:00 2001 From: Alex Barnsley <8069294+alexbarnsley@users.noreply.github.com> Date: Wed, 2 Jul 2025 13:04:56 +0100 Subject: [PATCH 03/27] chore: minor update dependencies (#182) --- composer.lock | 767 ++++++++++++++++++++++++++------------------------ 1 file changed, 392 insertions(+), 375 deletions(-) diff --git a/composer.lock b/composer.lock index b1c9deb3..07147103 100644 --- a/composer.lock +++ b/composer.lock @@ -54,24 +54,24 @@ }, { "name": "composer/semver", - "version": "3.4.2", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6" + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6", - "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6", + "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" }, "type": "library", "extra": { @@ -115,7 +115,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.2" + "source": "https://github.com/composer/semver/tree/3.4.3" }, "funding": [ { @@ -131,7 +131,7 @@ "type": "tidelift" } ], - "time": "2024-07-12T11:35:52+00:00" + "time": "2024-09-19T14:15:21+00:00" }, { "name": "fgrosse/phpasn1", @@ -308,23 +308,23 @@ }, { "name": "protonlabs/bitcoin", - "version": "1.0.10", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/ProtonMail/bitcoin-php.git", - "reference": "475361ce56f1601164cc447cbb78f859799d9eaf" + "reference": "4499c52069c6d6a4d3311213229a1af557eb26b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ProtonMail/bitcoin-php/zipball/475361ce56f1601164cc447cbb78f859799d9eaf", - "reference": "475361ce56f1601164cc447cbb78f859799d9eaf", + "url": "https://api.github.com/repos/ProtonMail/bitcoin-php/zipball/4499c52069c6d6a4d3311213229a1af557eb26b9", + "reference": "4499c52069c6d6a4d3311213229a1af557eb26b9", "shasum": "" }, "require": { "bitwasp/bech32": "^0.0.1", "composer/semver": "^1.4.0|^3.2.0", "lastguest/murmurhash": "^v2.0.0", - "php-64bit": ">=7.0", + "php-64bit": ">=7.1", "pleonasm/merkle-tree": "~1.0.0", "protonlabs/buffertools": "^0.5.0", "shanecurran/phpecc": "^0.0.1" @@ -365,22 +365,22 @@ "homepage": "https://github.com/bit-wasp/bitcoin-php", "support": { "issues": "https://github.com/ProtonMail/bitcoin-php/issues", - "source": "https://github.com/ProtonMail/bitcoin-php/tree/1.0.10" + "source": "https://github.com/ProtonMail/bitcoin-php/tree/v1.1.0" }, - "time": "2024-04-17T17:01:22+00:00" + "time": "2025-05-22T08:01:04+00:00" }, { "name": "protonlabs/buffertools", - "version": "v0.5.8", + "version": "v0.5.9", "source": { "type": "git", "url": "https://github.com/ProtonMail/buffertools-php.git", - "reference": "9bb64c124f93f3e373e61806d1e10d8feb0d5751" + "reference": "cf0e260eabbc92ada92a1d958e19a22843e137bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ProtonMail/buffertools-php/zipball/9bb64c124f93f3e373e61806d1e10d8feb0d5751", - "reference": "9bb64c124f93f3e373e61806d1e10d8feb0d5751", + "url": "https://api.github.com/repos/ProtonMail/buffertools-php/zipball/cf0e260eabbc92ada92a1d958e19a22843e137bf", + "reference": "cf0e260eabbc92ada92a1d958e19a22843e137bf", "shasum": "" }, "require": { @@ -416,9 +416,9 @@ ], "description": "Toolbox for working with binary and hex data. Similar to NodeJS Buffer.", "support": { - "source": "https://github.com/ProtonMail/buffertools-php/tree/v0.5.8" + "source": "https://github.com/ProtonMail/buffertools-php/tree/v0.5.9" }, - "time": "2023-07-17T08:19:22+00:00" + "time": "2025-06-17T10:03:56+00:00" }, { "name": "shanecurran/phpecc", @@ -876,28 +876,36 @@ }, { "name": "composer/pcre", - "version": "3.1.4", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "04229f163664973f68f38f6f73d917799168ef24" + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/04229f163664973f68f38f6f73d917799168ef24", - "reference": "04229f163664973f68f38f6f73d917799168ef24", + "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", "shasum": "" }, "require": { "php": "^7.4 || ^8.0" }, + "conflict": { + "phpstan/phpstan": "<1.11.10" + }, "require-dev": { - "phpstan/phpstan": "^1.3", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" + "phpstan/phpstan": "^1.12 || ^2", + "phpstan/phpstan-strict-rules": "^1 || ^2", + "phpunit/phpunit": "^8 || ^9" }, "type": "library", "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, "branch-alias": { "dev-main": "3.x-dev" } @@ -927,7 +935,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.4" + "source": "https://github.com/composer/pcre/tree/3.3.2" }, "funding": [ { @@ -943,7 +951,7 @@ "type": "tidelift" } ], - "time": "2024-05-27T13:40:54+00:00" + "time": "2024-11-12T16:29:46+00:00" }, { "name": "composer/xdebug-handler", @@ -1013,29 +1021,30 @@ }, { "name": "doctrine/deprecations", - "version": "1.1.3", + "version": "1.1.5", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=13" + }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "1.4.10 || 1.10.15", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "0.18.4", - "psr/log": "^1 || ^2 || ^3", - "vimeo/psalm": "4.30.0 || 5.12.0" + "doctrine/coding-standard": "^9 || ^12 || ^13", + "phpstan/phpstan": "1.4.10 || 2.1.11", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", + "psr/log": "^1 || ^2 || ^3" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -1043,7 +1052,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + "Doctrine\\Deprecations\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1054,9 +1063,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.3" + "source": "https://github.com/doctrine/deprecations/tree/1.1.5" }, - "time": "2024-01-30T19:34:25+00:00" + "time": "2025-04-07T20:06:18+00:00" }, { "name": "doctrine/inflector", @@ -1268,16 +1277,16 @@ }, { "name": "fidry/cpu-core-counter", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" + "reference": "8520451a140d3f46ac33042715115e290cf5785f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", - "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f", + "reference": "8520451a140d3f46ac33042715115e290cf5785f", "shasum": "" }, "require": { @@ -1317,7 +1326,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0" }, "funding": [ { @@ -1325,30 +1334,30 @@ "type": "github" } ], - "time": "2024-02-07T09:43:46+00:00" + "time": "2024-08-06T10:04:20+00:00" }, { "name": "filp/whoops", - "version": "2.15.4", + "version": "2.18.3", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" + "reference": "59a123a3d459c5a23055802237cb317f609867e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", - "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", + "url": "https://api.github.com/repos/filp/whoops/zipball/59a123a3d459c5a23055802237cb317f609867e5", + "reference": "59a123a3d459c5a23055802237cb317f609867e5", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0 || ^8.0", + "php": "^7.1 || ^8.0", "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "require-dev": { - "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^4.0 || ^5.0" }, "suggest": { "symfony/var-dumper": "Pretty print complex values better with var-dumper available", @@ -1388,7 +1397,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.4" + "source": "https://github.com/filp/whoops/tree/2.18.3" }, "funding": [ { @@ -1396,61 +1405,63 @@ "type": "github" } ], - "time": "2023-11-03T12:00:00+00:00" + "time": "2025-06-16T00:02:10+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.59.3", + "version": "v3.76.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "30ba9ecc2b0e5205e578fe29973c15653d9bfd29" + "reference": "0e3c484cef0ae9314b0f85986a36296087432c40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/30ba9ecc2b0e5205e578fe29973c15653d9bfd29", - "reference": "30ba9ecc2b0e5205e578fe29973c15653d9bfd29", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/0e3c484cef0ae9314b0f85986a36296087432c40", + "reference": "0e3c484cef0ae9314b0f85986a36296087432c40", "shasum": "" }, "require": { "clue/ndjson-react": "^1.0", "composer/semver": "^3.4", - "composer/xdebug-handler": "^3.0.3", + "composer/xdebug-handler": "^3.0.5", "ext-filter": "*", + "ext-hash": "*", "ext-json": "*", "ext-tokenizer": "*", - "fidry/cpu-core-counter": "^1.0", + "fidry/cpu-core-counter": "^1.2", "php": "^7.4 || ^8.0", - "react/child-process": "^0.6.5", + "react/child-process": "^0.6.6", "react/event-loop": "^1.0", - "react/promise": "^2.0 || ^3.0", + "react/promise": "^2.11 || ^3.0", "react/socket": "^1.0", "react/stream": "^1.0", - "sebastian/diff": "^4.0 || ^5.0 || ^6.0", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", - "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", - "symfony/finder": "^5.4 || ^6.0 || ^7.0", - "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", - "symfony/polyfill-mbstring": "^1.28", - "symfony/polyfill-php80": "^1.28", - "symfony/polyfill-php81": "^1.28", - "symfony/process": "^5.4 || ^6.0 || ^7.0", - "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" + "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0", + "symfony/console": "^5.4.45 || ^6.4.13 || ^7.0", + "symfony/event-dispatcher": "^5.4.45 || ^6.4.13 || ^7.0", + "symfony/filesystem": "^5.4.45 || ^6.4.13 || ^7.0", + "symfony/finder": "^5.4.45 || ^6.4.17 || ^7.0", + "symfony/options-resolver": "^5.4.45 || ^6.4.16 || ^7.0", + "symfony/polyfill-mbstring": "^1.32", + "symfony/polyfill-php80": "^1.32", + "symfony/polyfill-php81": "^1.32", + "symfony/process": "^5.4.47 || ^6.4.20 || ^7.2", + "symfony/stopwatch": "^5.4.45 || ^6.4.19 || ^7.0" }, "require-dev": { - "facile-it/paraunit": "^1.3 || ^2.3", - "infection/infection": "^0.29.5", - "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.1", - "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.7", + "facile-it/paraunit": "^1.3.1 || ^2.6", + "infection/infection": "^0.29.14", + "justinrainbow/json-schema": "^5.3 || ^6.4", + "keradus/cli-executor": "^2.2", + "mikey179/vfsstream": "^1.6.12", + "php-coveralls/php-coveralls": "^2.8", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.5", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.5", - "phpunit/phpunit": "^9.6.19 || ^10.5.21 || ^11.2", - "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", + "phpunit/phpunit": "^9.6.23 || ^10.5.47 || ^11.5.25", + "symfony/polyfill-php84": "^1.32", + "symfony/var-dumper": "^5.4.48 || ^6.4.23 || ^7.3.1", + "symfony/yaml": "^5.4.45 || ^6.4.23 || ^7.3.1" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -1491,7 +1502,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.59.3" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.76.0" }, "funding": [ { @@ -1499,7 +1510,7 @@ "type": "github" } ], - "time": "2024-06-16T14:17:03+00:00" + "time": "2025-06-30T14:15:06+00:00" }, { "name": "graham-campbell/analyzer", @@ -1788,28 +1799,29 @@ }, { "name": "jean85/pretty-package-versions", - "version": "2.0.6", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4" + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/f9fdd29ad8e6d024f52678b570e5593759b550b4", - "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/4d7aa5dab42e2a76d99559706022885de0e18e1a", + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a", "shasum": "" }, "require": { - "composer-runtime-api": "^2.0.0", - "php": "^7.1|^8.0" + "composer-runtime-api": "^2.1.0", + "php": "^7.4|^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.2", "jean85/composer-provided-replaced-stub-package": "^1.0", - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^7.5|^8.5|^9.4", - "vimeo/psalm": "^4.3" + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^7.5|^8.5|^9.6", + "rector/rector": "^2.0", + "vimeo/psalm": "^4.3 || ^5.0" }, "type": "library", "extra": { @@ -1841,22 +1853,22 @@ ], "support": { "issues": "https://github.com/Jean85/pretty-package-versions/issues", - "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.6" + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.1" }, - "time": "2024-03-08T09:58:59+00:00" + "time": "2025-03-19T14:43:43+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.12.0", + "version": "1.13.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/1720ddd719e16cf0db4eb1c6eca108031636d46c", + "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c", "shasum": "" }, "require": { @@ -1895,7 +1907,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.1" }, "funding": [ { @@ -1903,20 +1915,20 @@ "type": "tidelift" } ], - "time": "2024-06-12T14:39:25+00:00" + "time": "2025-04-29T12:36:36+00:00" }, { "name": "nesbot/carbon", - "version": "2.72.5", + "version": "2.73.0", "source": { "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed" + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/afd46589c216118ecd48ff2b95d77596af1e57ed", - "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/9228ce90e1035ff2f0db84b40ec2e023ed802075", + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075", "shasum": "" }, "require": { @@ -1936,7 +1948,7 @@ "doctrine/orm": "^2.7 || ^3.0", "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", - "ondrejmirtes/better-reflection": "*", + "ondrejmirtes/better-reflection": "<6", "phpmd/phpmd": "^2.9", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^0.12.99 || ^1.7.14", @@ -1949,10 +1961,6 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.x-dev", - "dev-2.x": "2.x-dev" - }, "laravel": { "providers": [ "Carbon\\Laravel\\ServiceProvider" @@ -1962,6 +1970,10 @@ "includes": [ "extension.neon" ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-master": "3.x-dev" } }, "autoload": { @@ -2010,20 +2022,20 @@ "type": "tidelift" } ], - "time": "2024-06-03T19:18:41+00:00" + "time": "2025-01-08T20:10:23+00:00" }, { "name": "nikic/php-parser", - "version": "v4.19.1", + "version": "v4.19.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2", "shasum": "" }, "require": { @@ -2032,7 +2044,7 @@ }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -2064,9 +2076,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4" }, - "time": "2024-03-17T08:10:35+00:00" + "time": "2024-09-29T15:01:53+00:00" }, { "name": "nunomaduro/collision", @@ -2099,13 +2111,13 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, "laravel": { "providers": [ "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" ] + }, + "branch-alias": { + "dev-develop": "6.x-dev" } }, "autoload": { @@ -2188,9 +2200,6 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - }, "pest": { "plugins": [ "Pest\\Plugins\\Coverage", @@ -2203,6 +2212,9 @@ "providers": [ "Pest\\Laravel\\PestServiceProvider" ] + }, + "branch-alias": { + "dev-1.x": "1.x-dev" } }, "autoload": { @@ -2277,10 +2289,10 @@ }, "type": "composer-plugin", "extra": { + "class": "Pest\\Plugin\\Manager", "branch-alias": { "dev-master": "1.x-dev" - }, - "class": "Pest\\Plugin\\Manager" + } }, "autoload": { "psr-4": { @@ -2594,16 +2606,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.4.1", + "version": "5.6.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c" + "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", - "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/92dde6a5919e34835c506ac8c523ef095a95ed62", + "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62", "shasum": "" }, "require": { @@ -2612,17 +2624,17 @@ "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.2", "phpdocumentor/type-resolver": "^1.7", - "phpstan/phpdoc-parser": "^1.7", + "phpstan/phpdoc-parser": "^1.7|^2.0", "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.5", + "mockery/mockery": "~1.3.5 || ~1.6.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^1.8", "phpstan/phpstan-mockery": "^1.1", "phpstan/phpstan-webmozart-assert": "^1.2", "phpunit/phpunit": "^9.5", - "vimeo/psalm": "^5.13" + "psalm/phar": "^5.26" }, "type": "library", "extra": { @@ -2652,29 +2664,29 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.2" }, - "time": "2024-05-21T05:55:05+00:00" + "time": "2025-04-13T19:20:35+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.8.2", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "153ae662783729388a584b4361f2545e4d841e3c" + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", - "reference": "153ae662783729388a584b4361f2545e4d841e3c", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a", + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a", "shasum": "" }, "require": { "doctrine/deprecations": "^1.0", "php": "^7.3 || ^8.0", "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.13" + "phpstan/phpdoc-parser": "^1.18|^2.0" }, "require-dev": { "ext-tokenizer": "*", @@ -2710,36 +2722,36 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.10.0" }, - "time": "2024-02-23T11:10:43+00:00" + "time": "2024-11-09T15:12:26+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.29.1", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4" + "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4", - "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", + "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "doctrine/annotations": "^2.0", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^5.3.0", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", "symfony/process": "^5.2" }, "type": "library", @@ -2757,41 +2769,41 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.1.0" }, - "time": "2024-05-31T08:52:43+00:00" + "time": "2025-02-19T13:28:12+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.31", + "version": "9.2.32", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5", + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.18 || ^5.0", + "nikic/php-parser": "^4.19.1 || ^5.1.0", "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-text-template": "^2.0.4", + "sebastian/code-unit-reverse-lookup": "^2.0.3", + "sebastian/complexity": "^2.0.3", + "sebastian/environment": "^5.1.5", + "sebastian/lines-of-code": "^1.0.4", + "sebastian/version": "^3.0.2", + "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.6" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -2800,7 +2812,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "9.2.x-dev" } }, "autoload": { @@ -2829,7 +2841,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.32" }, "funding": [ { @@ -2837,7 +2849,7 @@ "type": "github" } ], - "time": "2024-03-02T06:37:42+00:00" + "time": "2024-08-22T04:23:01+00:00" }, { "name": "phpunit/php-file-iterator", @@ -3082,16 +3094,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.20", + "version": "9.6.23", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "49d7820565836236411f5dc002d16dd689cde42f" + "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/49d7820565836236411f5dc002d16dd689cde42f", - "reference": "49d7820565836236411f5dc002d16dd689cde42f", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/43d2cb18d0675c38bd44982a5d1d88f6d53d8d95", + "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95", "shasum": "" }, "require": { @@ -3102,11 +3114,11 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.12.0", + "myclabs/deep-copy": "^1.13.1", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.31", + "phpunit/php-code-coverage": "^9.2.32", "phpunit/php-file-iterator": "^3.0.6", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.4", @@ -3165,7 +3177,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.20" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.23" }, "funding": [ { @@ -3176,12 +3188,20 @@ "url": "https://github.com/sebastianbergmann", "type": "github" }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, { "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", "type": "tidelift" } ], - "time": "2024-07-10T11:45:39+00:00" + "time": "2025-05-02T06:40:34+00:00" }, { "name": "psr/clock", @@ -3331,16 +3351,16 @@ }, { "name": "psr/log", - "version": "3.0.0", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", "shasum": "" }, "require": { @@ -3375,9 +3395,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" + "source": "https://github.com/php-fig/log/tree/3.0.2" }, - "time": "2021-07-14T16:46:02+00:00" + "time": "2024-09-11T13:17:53+00:00" }, { "name": "psr/simple-cache", @@ -3504,33 +3524,33 @@ }, { "name": "react/child-process", - "version": "v0.6.5", + "version": "v0.6.6", "source": { "type": "git", "url": "https://github.com/reactphp/child-process.git", - "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43" + "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", - "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/1721e2b93d89b745664353b9cfc8f155ba8a6159", + "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159", "shasum": "" }, "require": { "evenement/evenement": "^3.0 || ^2.0 || ^1.0", "php": ">=5.3.0", "react/event-loop": "^1.2", - "react/stream": "^1.2" + "react/stream": "^1.4" }, "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", - "react/socket": "^1.8", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/socket": "^1.16", "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" }, "type": "library", "autoload": { "psr-4": { - "React\\ChildProcess\\": "src" + "React\\ChildProcess\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3567,19 +3587,15 @@ ], "support": { "issues": "https://github.com/reactphp/child-process/issues", - "source": "https://github.com/reactphp/child-process/tree/v0.6.5" + "source": "https://github.com/reactphp/child-process/tree/v0.6.6" }, "funding": [ { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" + "url": "https://opencollective.com/reactphp", + "type": "open_collective" } ], - "time": "2022-09-16T13:41:56+00:00" + "time": "2025-01-01T16:37:48+00:00" }, { "name": "react/dns", @@ -3804,31 +3820,31 @@ }, { "name": "react/socket", - "version": "v1.15.0", + "version": "v1.16.0", "source": { "type": "git", "url": "https://github.com/reactphp/socket.git", - "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038" + "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/216d3aec0b87f04a40ca04f481e6af01bdd1d038", - "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "url": "https://api.github.com/repos/reactphp/socket/zipball/23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", + "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", "shasum": "" }, "require": { "evenement/evenement": "^3.0 || ^2.0 || ^1.0", "php": ">=5.3.0", - "react/dns": "^1.11", + "react/dns": "^1.13", "react/event-loop": "^1.2", - "react/promise": "^3 || ^2.6 || ^1.2.1", - "react/stream": "^1.2" + "react/promise": "^3.2 || ^2.6 || ^1.2.1", + "react/stream": "^1.4" }, "require-dev": { "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", - "react/async": "^4 || ^3 || ^2", + "react/async": "^4.3 || ^3.3 || ^2", "react/promise-stream": "^1.4", - "react/promise-timer": "^1.10" + "react/promise-timer": "^1.11" }, "type": "library", "autoload": { @@ -3872,7 +3888,7 @@ ], "support": { "issues": "https://github.com/reactphp/socket/issues", - "source": "https://github.com/reactphp/socket/tree/v1.15.0" + "source": "https://github.com/reactphp/socket/tree/v1.16.0" }, "funding": [ { @@ -3880,7 +3896,7 @@ "type": "open_collective" } ], - "time": "2023-12-15T11:02:10+00:00" + "time": "2024-07-26T10:38:09+00:00" }, { "name": "react/stream", @@ -4925,16 +4941,16 @@ }, { "name": "symfony/console", - "version": "v6.4.9", + "version": "v6.4.23", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "6edb5363ec0c78ad4d48c5128ebf4d083d89d3a9" + "reference": "9056771b8eca08d026cd3280deeec3cfd99c4d93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/6edb5363ec0c78ad4d48c5128ebf4d083d89d3a9", - "reference": "6edb5363ec0c78ad4d48c5128ebf4d083d89d3a9", + "url": "https://api.github.com/repos/symfony/console/zipball/9056771b8eca08d026cd3280deeec3cfd99c4d93", + "reference": "9056771b8eca08d026cd3280deeec3cfd99c4d93", "shasum": "" }, "require": { @@ -4999,7 +5015,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.9" + "source": "https://github.com/symfony/console/tree/v6.4.23" }, "funding": [ { @@ -5015,20 +5031,20 @@ "type": "tidelift" } ], - "time": "2024-06-28T09:49:33+00:00" + "time": "2025-06-27T19:37:22+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "shasum": "" }, "require": { @@ -5036,12 +5052,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -5066,7 +5082,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" }, "funding": [ { @@ -5082,20 +5098,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.1.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7" + "reference": "497f73ac996a598c92409b44ac43b6690c4f666d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", - "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/497f73ac996a598c92409b44ac43b6690c4f666d", + "reference": "497f73ac996a598c92409b44ac43b6690c4f666d", "shasum": "" }, "require": { @@ -5146,7 +5162,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.1" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.0" }, "funding": [ { @@ -5162,20 +5178,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2025-04-22T09:11:45+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", "shasum": "" }, "require": { @@ -5184,12 +5200,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -5222,7 +5238,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" }, "funding": [ { @@ -5238,20 +5254,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/filesystem", - "version": "v7.1.2", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "92a91985250c251de9b947a14bb2c9390b1a562c" + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/92a91985250c251de9b947a14bb2c9390b1a562c", - "reference": "92a91985250c251de9b947a14bb2c9390b1a562c", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb", + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb", "shasum": "" }, "require": { @@ -5288,7 +5304,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.1.2" + "source": "https://github.com/symfony/filesystem/tree/v7.3.0" }, "funding": [ { @@ -5304,20 +5320,20 @@ "type": "tidelift" } ], - "time": "2024-06-28T10:03:55+00:00" + "time": "2024-10-25T15:15:23+00:00" }, { "name": "symfony/finder", - "version": "v7.1.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "fbb0ba67688b780efbc886c1a0a0948dcf7205d6" + "reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/fbb0ba67688b780efbc886c1a0a0948dcf7205d6", - "reference": "fbb0ba67688b780efbc886c1a0a0948dcf7205d6", + "url": "https://api.github.com/repos/symfony/finder/zipball/ec2344cf77a48253bbca6939aa3d2477773ea63d", + "reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d", "shasum": "" }, "require": { @@ -5352,7 +5368,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.1.1" + "source": "https://github.com/symfony/finder/tree/v7.3.0" }, "funding": [ { @@ -5368,20 +5384,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2024-12-30T19:00:26+00:00" }, { "name": "symfony/options-resolver", - "version": "v7.1.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55" + "reference": "afb9a8038025e5dbc657378bfab9198d75f10fca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/47aa818121ed3950acd2b58d1d37d08a94f9bf55", - "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/afb9a8038025e5dbc657378bfab9198d75f10fca", + "reference": "afb9a8038025e5dbc657378bfab9198d75f10fca", "shasum": "" }, "require": { @@ -5419,7 +5435,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.1.1" + "source": "https://github.com/symfony/options-resolver/tree/v7.3.0" }, "funding": [ { @@ -5435,24 +5451,24 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2025-04-04T13:12:05+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.30.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "0424dff1c58f028c451efff2045f5d92410bd540" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", - "reference": "0424dff1c58f028c451efff2045f5d92410bd540", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -5463,8 +5479,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5498,7 +5514,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0" }, "funding": [ { @@ -5514,24 +5530,24 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.30.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", - "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -5539,8 +5555,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5576,7 +5592,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0" }, "funding": [ { @@ -5592,24 +5608,24 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.30.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", - "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -5617,8 +5633,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5657,7 +5673,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0" }, "funding": [ { @@ -5673,24 +5689,25 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.30.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", - "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-iconv": "*", + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -5701,8 +5718,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5737,7 +5754,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0" }, "funding": [ { @@ -5753,30 +5770,30 @@ "type": "tidelift" } ], - "time": "2024-06-19T12:30:46+00:00" + "time": "2024-12-23T08:48:59+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.30.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "77fa7995ac1b21ab60769b7323d600a991a90433" + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433", - "reference": "77fa7995ac1b21ab60769b7323d600a991a90433", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5817,7 +5834,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.32.0" }, "funding": [ { @@ -5833,30 +5850,30 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2025-01-02T08:10:11+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.30.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af" + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/3fb075789fb91f9ad9af537c4012d523085bd5af", - "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5893,7 +5910,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.32.0" }, "funding": [ { @@ -5909,20 +5926,20 @@ "type": "tidelift" } ], - "time": "2024-06-19T12:30:46+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/process", - "version": "v7.1.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "febf90124323a093c7ee06fdb30e765ca3c20028" + "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/febf90124323a093c7ee06fdb30e765ca3c20028", - "reference": "febf90124323a093c7ee06fdb30e765ca3c20028", + "url": "https://api.github.com/repos/symfony/process/zipball/40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", + "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", "shasum": "" }, "require": { @@ -5954,7 +5971,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.1.1" + "source": "https://github.com/symfony/process/tree/v7.3.0" }, "funding": [ { @@ -5970,20 +5987,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2025-04-17T09:11:12+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.5.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", "shasum": "" }, "require": { @@ -5996,12 +6013,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -6037,7 +6054,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" }, "funding": [ { @@ -6053,20 +6070,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2025-04-25T09:37:31+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.1.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d" + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", - "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", "shasum": "" }, "require": { @@ -6099,7 +6116,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.1.1" + "source": "https://github.com/symfony/stopwatch/tree/v7.3.0" }, "funding": [ { @@ -6115,20 +6132,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2025-02-24T10:49:57+00:00" }, { "name": "symfony/string", - "version": "v7.1.2", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8" + "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/14221089ac66cf82e3cf3d1c1da65de305587ff8", - "reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8", + "url": "https://api.github.com/repos/symfony/string/zipball/f3570b8c61ca887a9e2938e85cb6458515d2b125", + "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125", "shasum": "" }, "require": { @@ -6186,7 +6203,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.1.2" + "source": "https://github.com/symfony/string/tree/v7.3.0" }, "funding": [ { @@ -6202,20 +6219,20 @@ "type": "tidelift" } ], - "time": "2024-06-28T09:27:18+00:00" + "time": "2025-04-20T20:19:01+00:00" }, { "name": "symfony/translation", - "version": "v6.4.8", + "version": "v6.4.23", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a" + "reference": "de8afa521e04a5220e9e58a1dc99971ab7cac643" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/a002933b13989fc4bd0b58e04bf7eec5210e438a", - "reference": "a002933b13989fc4bd0b58e04bf7eec5210e438a", + "url": "https://api.github.com/repos/symfony/translation/zipball/de8afa521e04a5220e9e58a1dc99971ab7cac643", + "reference": "de8afa521e04a5220e9e58a1dc99971ab7cac643", "shasum": "" }, "require": { @@ -6281,7 +6298,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.8" + "source": "https://github.com/symfony/translation/tree/v6.4.23" }, "funding": [ { @@ -6297,20 +6314,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2025-06-26T21:24:02+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.5.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" + "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d", + "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d", "shasum": "" }, "require": { @@ -6318,12 +6335,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -6359,7 +6376,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.6.0" }, "funding": [ { @@ -6375,7 +6392,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-27T08:32:26+00:00" }, { "name": "theseer/tokenizer", @@ -6562,12 +6579,12 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": true, "prefer-lowest": false, "platform": { "php": "^8.2" }, - "platform-dev": [], + "platform-dev": {}, "plugin-api-version": "2.6.0" } From 5b52e60e3225276477ac4d948c5dadf6a299b92c Mon Sep 17 00:00:00 2001 From: ItsANameToo Date: Wed, 2 Jul 2025 12:06:24 +0000 Subject: [PATCH 04/27] style: resolve style guide violations --- .php-cs-fixer.cache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 03e80756..0f6e3735 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.2-1ubuntu2.18","version":"3.59.3:v3.59.3#30ba9ecc2b0e5205e578fe29973c15653d9bfd29","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"hashes":{"tests\/Helpers.php":"ead3b754e9d1064afb42b4ba295f7801","tests\/Analysis\/AnalysisTest.php":"cbbd5c2285fef22e0e0ba587bf532921","tests\/TestCase.php":"88181896499e5de270710fc30e4f5f77","tests\/Concerns\/Deserialize.php":"823cf4ff03b8bf6fbd323403e8518b0d","tests\/Concerns\/Serialize.php":"7e7826db6e18d38f560b2155669a60c6","tests\/Concerns\/Fixtures.php":"c9de325db453e274d1080579d184a62c","tests\/Pest.php":"e94ffd859b54a678b7ea5aa68876c925","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"3f2ccca6307fb3dfb53c592d84195d14","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"64f87f6a19e09d5fc5abe196c1910dff","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"9a32203626cc79e050f42c14fa3e6ba7","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"da21b61dca9950da63270ab8993ae014","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"f3b02a10025b3544d1b825fbd2692b32","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"a5296fa0dc0e72b7e3cdce32b126b84e","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"849b9922e0623d0042dd7c1adedb3da3","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"a62d22fff1ff4e5f350d584f1ddf60cd","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"cbd2994ce7be1ef9c086291483797ab5","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"3670bb0159fa8cd97075fe71489ab1d9","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"8ef867799d158bcbe44b2bee3ce36a83","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"291829435c86a2c093fbb886a56a2b88","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"263c9acf17a9a1bf5fa32ab1eeae0b29","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"bc1ba970efad3acc0f1d57667efa0402","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"327d716d6c6da6da3c490fa293afd49e","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"783a66094d698d93bd00f59236f7a093","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"566eadccee85259d94a620578a542dbf","tests\/Unit\/Utils\/SlotTest.php":"0f9639a94ca904aab58de8e2bee771e7","tests\/Unit\/Utils\/MessageTest.php":"f53f55fb0cc3b34ecba4e36f11ccad3a","tests\/Unit\/Identities\/PrivateKeyTest.php":"03f1961d973ed6b8c692b962da4aa32a","tests\/Unit\/Identities\/PublicKeyTest.php":"191c8e3d703ed822b6023cd79bbada70","tests\/Unit\/Identities\/WIFTest.php":"0d0ecbed55770bfcc522ff72bfcb1706","tests\/Unit\/Identities\/AddressTest.php":"233252a9c2e479394fae57b06ab446cf","tests\/Unit\/Networks\/NetworkTestCase.php":"080da14e3d30370dab0e5c325e883b1e","tests\/Unit\/Networks\/DevnetTest.php":"55731cf7389728d924c87d3bf591318a","tests\/Unit\/Networks\/MainnetTest.php":"ef8ae566506f3d797fa9f6a117acc844","tests\/Unit\/Networks\/TestnetTest.php":"ae92bf475035ad441956192704e33729","tests\/Unit\/Configuration\/NetworkTest.php":"a0c93282667a0db8c7746e105a3a23f5","tests\/Unit\/Configuration\/FeeTest.php":"bcc4844a5eaa86d2423b87d9413e07f3","tests\/Unit\/Transactions\/Serializers\/TransferTest.php":"6138dbf390f1bd3e34f2e1514b2671f4","tests\/Unit\/Transactions\/Serializers\/HtlcRefundTest.php":"96c6006f6d918c66b25796120eee0ce6","tests\/Unit\/Transactions\/Serializers\/HtlcLockTest.php":"a65043f154c5a19be9420835d915039a","tests\/Unit\/Transactions\/Serializers\/MultiSignatureRegistrationTest.php":"5d9d14f33bfe133b8df0f2a6641b7c13","tests\/Unit\/Transactions\/Serializers\/DelegateRegistrationTest.php":"605f60af77ae8daedfea585fff101184","tests\/Unit\/Transactions\/Serializers\/HtlcClaimTest.php":"5b46d1b6e9f5247a91789d9b0a09626e","tests\/Unit\/Transactions\/Serializers\/DelegateResignationTest.php":"528745d73b842e540838527e42b6c542","tests\/Unit\/Transactions\/Serializers\/SecondSignatureRegistrationTest.php":"4e6287eb734f15dc820142d0dedec621","tests\/Unit\/Transactions\/Serializers\/VoteTest.php":"e429e932d64a2792d9c07f841cb46e6b","tests\/Unit\/Transactions\/Serializers\/MultiPaymentTest.php":"46c238787cc1aa18009ced65e2f74912","tests\/Unit\/Transactions\/Serializers\/IPFSTest.php":"ee6595523f02439dd9bcebf92822bd81","tests\/Unit\/Transactions\/Deserializers\/TransferTest.php":"07085f7900cad9ca67b12069c12d2afe","tests\/Unit\/Transactions\/Deserializers\/HtlcRefundTest.php":"43b70a1325c397635dc3d06d4f150308","tests\/Unit\/Transactions\/Deserializers\/HtlcLockTest.php":"533a3a85afba6e66281fe5310a0209d9","tests\/Unit\/Transactions\/Deserializers\/MultiSignatureRegistrationTest.php":"7c92a18198daf05d65d35ab31dda22ec","tests\/Unit\/Transactions\/Deserializers\/DelegateRegistrationTest.php":"fe619e7dcde26dbe370a4eb5c46c5d1a","tests\/Unit\/Transactions\/Deserializers\/HtlcClaimTest.php":"8f0defcd3cefeb7f2ca0cf40d2d58249","tests\/Unit\/Transactions\/Deserializers\/DelegateResignationTest.php":"2f5c500c5d02e0a3bf96344b5b3de8f9","tests\/Unit\/Transactions\/Deserializers\/SecondSignatureRegistrationTest.php":"11412d26d7c4d6a72d1ae62f90488f6d","tests\/Unit\/Transactions\/Deserializers\/VoteTest.php":"d728da8f8982baca8838de08e57afdf6","tests\/Unit\/Transactions\/Deserializers\/MultiPaymentTest.php":"6b8bc6e0b6851312d74b0f9e830787e2","tests\/Unit\/Transactions\/Deserializers\/IPFSTest.php":"ae652d4995ee111ba5860100fd11c917","tests\/Unit\/Transactions\/TransactionTest.php":"02a079f2fbf15075e8f2ae171093b564","tests\/Unit\/Transactions\/Builder\/TransferTest.php":"4ccabea7a853a439e55614923660124b","tests\/Unit\/Transactions\/Builder\/HtlcRefundTest.php":"db3d3de3487d31ff9106e98f48b66ea0","tests\/Unit\/Transactions\/Builder\/HtlcLockTest.php":"fc01afadae19cd931291263e0213ff82","tests\/Unit\/Transactions\/Builder\/MultiSignatureRegistrationTest.php":"c029ffbba305593a889b6121bd7ee606","tests\/Unit\/Transactions\/Builder\/DelegateRegistrationTest.php":"f7e67c16ecec6f451cc2491a2a5d1335","tests\/Unit\/Transactions\/Builder\/HtlcClaimTest.php":"6871991d210dc1367691b2a9193dbaf7","tests\/Unit\/Transactions\/Builder\/DelegateResignationTest.php":"bbb18c485a289b259fb8e583a12697e3","tests\/Unit\/Transactions\/Builder\/SecondSignatureRegistrationTest.php":"4648b25e08c3763f29a34af431031714","tests\/Unit\/Transactions\/Builder\/VoteTest.php":"f98987b7d1e5a07228ab2b1f6fdd17ec","tests\/Unit\/Transactions\/Builder\/MultiPaymentTest.php":"1b1838b766a987b72beff0bf1129ed9e","tests\/Unit\/Transactions\/Builder\/IPFSTest.php":"268f87cddcbd85a70c788b471e859e24","src\/Helpers.php":"406e67af10ba8f83dc20eb840cdb8669","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"bde87e28b98eedab7d03f5005545567b","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"872f1d7f694f06884112d9d201427e44","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"b7274ecd25eea7c145e8fd285e95358d","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"0b4bf46752c98e15343432f95d2b3c33","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"ad3ee7c154b4fe0748b35933a785fac7","src\/ByteBuffer\/Concerns\/Transformable.php":"ba95c5e5ac572b7c7e0448e43ed9b27a","src\/ByteBuffer\/Concerns\/Writeable.php":"651c15dfb022146d91638dbcc1072197","src\/ByteBuffer\/Concerns\/Readable.php":"b7db578561d0402e6abac0765dc15715","src\/ByteBuffer\/Concerns\/Sizeable.php":"7b8664a95149592e15222c8ed38ffbd6","src\/ByteBuffer\/Concerns\/Initialisable.php":"1d40427ebf896a531eca906d04b68a9f","src\/ByteBuffer\/Concerns\/Offsetable.php":"593adce2783b7f974bf53aca3177c344","src\/ByteBuffer\/Concerns\/Positionable.php":"21f1bc9e5ae32757e035e3a7d33d87d3","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"2bdb398f7b8d1a3d74b081d50078f91f","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"42f57a6e7a0362565981c27f5f2b4e89","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"24866c6415f082abbe8e7b84d150cb8b","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"52f0b848979f7f4ac0fd429bd20518d9","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"5e5e44b81cd96280fd4c1878b532955c","src\/ByteBuffer\/ByteBuffer.php":"fd1cc054c10dd8df7c1c8012d2f3db06","src\/ByteBuffer\/ByteOrder.php":"65bb9e577fa7b13b9a900fd3a137684b","src\/ByteBuffer\/LengthMap.php":"d0b264f13f03b8c05e062bc4de93b9d1","src\/Utils\/Message.php":"41124e185ab03dfee684134d68b1af37","src\/Utils\/Slot.php":"72bbf7f3309c1b35fe573d263a56eb75","src\/Identities\/PrivateKey.php":"14297ccc35e2f42bc23afe2e8272a40f","src\/Identities\/WIF.php":"1351c493585c7e11ab422e3a9fa89135","src\/Identities\/PublicKey.php":"557b47038465ca83074363120d39b606","src\/Identities\/Address.php":"b473afbeade55afa58e4bbfbad287be7","src\/Binary\/UnsignedInteger\/Reader.php":"c39af81995cc3e68a74e7d1155c902f3","src\/Binary\/UnsignedInteger\/Writer.php":"4b57b334e27dc1039c3a6bf86a674c31","src\/Binary\/Buffer\/Writer\/Buffer.php":"756e1a6401609140d4d5a11866c0c349","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"c7c45e149c2cf9e83f4059c0e0036eee","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"4bda0887fbdd3b12889859fbc17c8519","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"4980bae47f9d4c516d886f431af9bd99","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"a35a59ffe67e970dd8de5b951c9554b7","src\/Binary\/Buffer\/Reader\/Buffer.php":"9ba298d595c72b3c78dd7efbade9b4bd","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"8201db89898e460687e403f2b31fca61","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"08b0855b0ae65ccf454883500f4a27d2","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"3ebb1be29fa00118bec01a5b77995cbe","src\/Binary\/Integer\/Reader.php":"93175a3453a38cf7c6cf67b64ae16e46","src\/Binary\/Integer\/Writer.php":"5c3fe724a68702d4d569bb0831909310","src\/Binary\/Hex\/Reader.php":"064f535617aed54bb9005b81d0b23532","src\/Binary\/Hex\/Writer.php":"2496bf019f929cf9b86f9ae807fba98f","src\/Enums\/Types.php":"75f006ec4ae2fc515d17ecc75d273c4b","src\/Enums\/TypeGroup.php":"4ca4497579cd5d5e1d9466717a7b5a11","src\/Enums\/Fees.php":"76ae2d51cfda15280d1515a64556dc19","src\/Networks\/Mainnet.php":"7c3d535d3ca99af860ea6ffdf5b75454","src\/Networks\/Testnet.php":"951d86285a3abaf46753cd6ae7faaf91","src\/Networks\/AbstractNetwork.php":"d9c64390bb5078612c8f68ea8c7fede3","src\/Networks\/Devnet.php":"3f7f5f9f571eca593daad45ec991f0ba","src\/Configuration\/Fee.php":"3f5d01b2de2308fb15b7d48148e1979d","src\/Configuration\/Network.php":"339e6038b9b32ac6a52af7bcda424d42","src\/Transactions\/Types\/MultiPayment.php":"f664fc37318230b430298a4ed3b3a655","src\/Transactions\/Types\/Transfer.php":"38e4629377847ee156600a2d523d9154","src\/Transactions\/Types\/DelegateRegistration.php":"30a9326121f2517f4002e1a4ad91a5c0","src\/Transactions\/Types\/IPFS.php":"5c3deeb61e33e87d1a19ff4e0c5044cb","src\/Transactions\/Types\/HtlcClaim.php":"8214718a175cd2cf99c05787cd3bf336","src\/Transactions\/Types\/Vote.php":"eb38657c46627faf8c19d36e9fe7d130","src\/Transactions\/Types\/HtlcLock.php":"5a227f7afe08445754898c380b43f435","src\/Transactions\/Types\/MultiSignatureRegistration.php":"49138c9dc17597ff231fc914e6e55ccd","src\/Transactions\/Types\/HtlcRefund.php":"3bc7171698dbb762f9403da3a4e5a86f","src\/Transactions\/Types\/DelegateResignation.php":"1302de279d94a28a76e7c2b4faa9807e","src\/Transactions\/Types\/SecondSignatureRegistration.php":"ad8f221e8eda825959dbab65c22260d8","src\/Transactions\/Types\/Transaction.php":"94ccfd03bf3b9719dbecf316a29f3866","src\/Transactions\/Serializer.php":"10cda68b0038fe5438f5a598421c8420","src\/Transactions\/Deserializer.php":"f61bb6c71dbb5089770c9f59f6aca8d6","src\/Transactions\/Builder\/MultiPaymentBuilder.php":"f4fd82e6d6caf883c385f8c3b36f257a","src\/Transactions\/Builder\/DelegateRegistrationBuilder.php":"9ec9a55d9a6cdf0a7112ce6a3f451193","src\/Transactions\/Builder\/VoteBuilder.php":"b8aad0c2d40c4c9dc7502d00323c4981","src\/Transactions\/Builder\/HtlcRefundBuilder.php":"79eca04bf8af723a0069b3154322fe68","src\/Transactions\/Builder\/SecondSignatureRegistrationBuilder.php":"8421e4135b765cef02f9ab5589026e36","src\/Transactions\/Builder\/TransferBuilder.php":"0c916c9eafa08a684f1eb4278c2d84e4","src\/Transactions\/Builder\/HtlcClaimBuilder.php":"a56483968acddeca42e20cce6ac1263c","src\/Transactions\/Builder\/MultiSignatureRegistrationBuilder.php":"981e3426812066885b32db4afc3c39a5","src\/Transactions\/Builder\/HtlcLockBuilder.php":"3f8bec8f46660abd4355cc65eea1ed6e","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"6dc51b605789bd444227dfe4991ceb2e","src\/Transactions\/Builder\/DelegateResignationBuilder.php":"37f80557f87f9174efa7fe7d064a2274","src\/Transactions\/Builder\/IPFSBuilder.php":"2127dd4ff096dff2cfb8ca225c6e3d7b"}} \ No newline at end of file +{"php":"8.3.6","version":"3.76.0:v3.76.0#0e3c484cef0ae9314b0f85986a36296087432c40","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"hashes":{"src\/Helpers.php":"5736c281d8bb805826442682be38c1dc","src\/Identities\/PublicKey.php":"8cbe249d218989c54dde4ceb8eefc8e1","src\/Identities\/PrivateKey.php":"7259bbea2e5da198ee87bcde45661666","src\/Identities\/Address.php":"17da781bf1b9c717670918fecce1bc7b","src\/Identities\/WIF.php":"09b3bf1f9077384e6e6c9b6661ca9152","src\/Networks\/Devnet.php":"4f0097e6ec4d87f8c72f8bafeaee8892","src\/Networks\/AbstractNetwork.php":"c774f58977a6f2ed3fbdba69d2489e4e","src\/Networks\/Testnet.php":"5a1b266a1c176bcaf9a9ec6068c53b33","src\/Networks\/Mainnet.php":"df2645844a8c6dfe8f99a471dc1d85f7","src\/Enums\/Fees.php":"ac38a4162fea543d56563c975360270a","src\/Enums\/Types.php":"4d5534dd1a0bbcf26c2f20dd4e7e0c9b","src\/Enums\/TypeGroup.php":"2df34e8073d807a26f63cb5a92aa4466","src\/Utils\/Slot.php":"415aefcc91d5ee4e5fb0ad58bb4c2242","src\/Utils\/Message.php":"9805c970ca9353cab3c5385055c4a6ae","src\/Transactions\/Builder\/MultiSignatureRegistrationBuilder.php":"4fc820ea18d3844a7545bd182697842e","src\/Transactions\/Builder\/HtlcRefundBuilder.php":"172069a2c1744c7e1c26fc3d4506be33","src\/Transactions\/Builder\/SecondSignatureRegistrationBuilder.php":"3e00a57bac43eb656a092a649740251f","src\/Transactions\/Builder\/DelegateRegistrationBuilder.php":"94b1cb6bd077a5b9771be530635ea1e2","src\/Transactions\/Builder\/HtlcLockBuilder.php":"f9dff632706b6c63f3c1aade509c6301","src\/Transactions\/Builder\/DelegateResignationBuilder.php":"f0c849690575a8d158519d6319805e25","src\/Transactions\/Builder\/TransferBuilder.php":"d62a16edd17aae91e9cd5c20b271ea83","src\/Transactions\/Builder\/HtlcClaimBuilder.php":"26fa61beaf17a5dc5aa17270f48d02cf","src\/Transactions\/Builder\/IPFSBuilder.php":"c07a3cb80fcb3e23a38fab812d4516f6","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"b8c23d843ac1abfdd67f328487482dbc","src\/Transactions\/Builder\/MultiPaymentBuilder.php":"3befa6a0db1ba663a33f0934a2e3ed68","src\/Transactions\/Builder\/VoteBuilder.php":"256a00c4888c2e04a6fa46b8305b034b","src\/Transactions\/Serializer.php":"5663addddc99a09e0e60a8c2834872a2","src\/Transactions\/Types\/Vote.php":"9932a1b40eca6b47cd67316f4f0b3aa9","src\/Transactions\/Types\/DelegateRegistration.php":"7d02c0b996e22c4c480b4bd704f54815","src\/Transactions\/Types\/Transaction.php":"80534e6f6d28c853d5f6ee16bf353189","src\/Transactions\/Types\/Transfer.php":"fac76b00748e5b83819bfce8f0520a39","src\/Transactions\/Types\/HtlcRefund.php":"1a7c6aa917c84da527e8ba679342dd14","src\/Transactions\/Types\/DelegateResignation.php":"43d3b2784c388367154ea03b204eb9de","src\/Transactions\/Types\/HtlcClaim.php":"ca80737b8eb8de8af5b11a8f2584da45","src\/Transactions\/Types\/MultiPayment.php":"dd7c11fd4a726a6f2e04890622c797ce","src\/Transactions\/Types\/IPFS.php":"289389ba4072e543c4438cb95816d429","src\/Transactions\/Types\/MultiSignatureRegistration.php":"c314aaa3f8add62a8abbbec9fe92ce7e","src\/Transactions\/Types\/SecondSignatureRegistration.php":"f9808925fe8103587d9d2c357ee5c5e8","src\/Transactions\/Types\/HtlcLock.php":"cce0b1037c17a6a5ca75fae86831b3b1","src\/Transactions\/Deserializer.php":"1badd55a247238e0ba15fd7613abe668","src\/Configuration\/Fee.php":"009bd25096d57c05b8f76a42e3b1c1ed","src\/Configuration\/Network.php":"db39fa961d1f67dde1127324ebc29a88","src\/ByteBuffer\/ByteOrder.php":"c183930b74c3f6216fce6af0ad547412","src\/ByteBuffer\/Concerns\/Readable.php":"1703e1781f4882cc7427ed5e3eab1b90","src\/ByteBuffer\/Concerns\/Positionable.php":"8fe18d603bcba8ad7ec525c5fea9122a","src\/ByteBuffer\/Concerns\/Transformable.php":"4b9ded9d8a5b7005f3cbbace02315415","src\/ByteBuffer\/Concerns\/Offsetable.php":"784a6f9b0aa7c7624d455da260480541","src\/ByteBuffer\/Concerns\/Writeable.php":"d809e2408af8e181ef5c3d3101fde0ad","src\/ByteBuffer\/Concerns\/Sizeable.php":"81c7fbf368a593bb92bf4c9f58a9f72d","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"4f08096933dcd65121bab249422f8d4c","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"e7bd39863ddb227ec17d44ef487579d5","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"936ce2ebb44b67b39aeb2706f77b197c","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"4a06210be32a336cb06a642a2f772c26","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"45863cd3a3048e5d8e6523d3d7cffc07","src\/ByteBuffer\/Concerns\/Initialisable.php":"1aa3c826684e71339aa6297582c7fcc3","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"82da46facba54107aceb630852447893","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"bbfe09b67301bb9b8ee003f7b153322b","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"d3c2432f4a3584750387451be2b069d0","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"e9e2946752da1ed0b71351028deb7eea","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"cb71d199dafd21c47c2aecb3a6d9b4b5","src\/ByteBuffer\/ByteBuffer.php":"460fdd2bf51bacb8d5df479af9c3bac7","src\/ByteBuffer\/LengthMap.php":"d992e88d544bfcd6d169a1632f3e3d05","src\/Binary\/Integer\/Reader.php":"fc382f0d5cb346069e87bdf57af42dd4","src\/Binary\/Integer\/Writer.php":"c95566b5f15e7440a357a400f4957557","src\/Binary\/Hex\/Reader.php":"84c560f1a4210dcc04cf76e61b741681","src\/Binary\/Hex\/Writer.php":"1fda8dc1fda5769e71492375945421a6","src\/Binary\/UnsignedInteger\/Reader.php":"45f7182e4f5983c886ee8a589175f83a","src\/Binary\/UnsignedInteger\/Writer.php":"352dd6fbf6d6e6a96773bda8dbdc15b1","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"c2efefef99eefa7cf2c67649f97b7faf","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"484fea469ac07931d69f3c53e1fd09aa","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"f53059caa2118b5f6a4960afbbcf2d73","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"6d3c042771c2fd307b216d45532a73a3","src\/Binary\/Buffer\/Writer\/Buffer.php":"165a089ce688104a8db5941cf9ff6558","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"02f2f4774316d2484fb2b57feb086ea1","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3ee8fd0133cfbcaf15bd9c28a37a5be9","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"581d0559ed948f5feab6967c074892c0","src\/Binary\/Buffer\/Reader\/Buffer.php":"927b99c8047ccb9061e8193f8f144dc7","tests\/Unit\/Identities\/PublicKeyTest.php":"4cfded5f1e35c1083fed2ad7efeea615","tests\/Unit\/Identities\/PrivateKeyTest.php":"a1f81695d6331d223ac6a3312a00b193","tests\/Unit\/Identities\/AddressTest.php":"d7d375a29f37a4b9b772c75684c74b48","tests\/Unit\/Identities\/WIFTest.php":"b611511584dd0bfba84f113295365508","tests\/Unit\/Networks\/TestnetTest.php":"a6984eb7fa87bc6cf693bc241188e698","tests\/Unit\/Networks\/MainnetTest.php":"3307b4e256af4b9fd66437a5ebd0e8a2","tests\/Unit\/Networks\/NetworkTestCase.php":"f529bc550cd6b9d68f1287d0181ae150","tests\/Unit\/Networks\/DevnetTest.php":"17996bb8318d23a417339e72f330c3bd","tests\/Unit\/Utils\/SlotTest.php":"e2e6bf33055513aeaff285e4904099a4","tests\/Unit\/Utils\/MessageTest.php":"a9a261798733199bf3c7f9f813181875","tests\/Unit\/Transactions\/Builder\/DelegateRegistrationTest.php":"b4c0f10f2b10a91728e8352790f8f538","tests\/Unit\/Transactions\/Builder\/HtlcRefundTest.php":"e1113d28fa608fb7ff0ad4447a8b2f20","tests\/Unit\/Transactions\/Builder\/VoteTest.php":"db91e16f8987dd6c050471bd0704523a","tests\/Unit\/Transactions\/Builder\/TransferTest.php":"70cdd71c9cbb57bfb51c3e4a1bd74e86","tests\/Unit\/Transactions\/Builder\/IPFSTest.php":"310d8ef8251e14a9a6498b03cdd0d912","tests\/Unit\/Transactions\/Builder\/HtlcClaimTest.php":"619401dcbbee5dc4034429824bec865c","tests\/Unit\/Transactions\/Builder\/MultiPaymentTest.php":"968a69c19596fbbba3f07e022c44ba12","tests\/Unit\/Transactions\/Builder\/HtlcLockTest.php":"3c2c4fd37a0d14b006833fd1ac62663d","tests\/Unit\/Transactions\/Builder\/SecondSignatureRegistrationTest.php":"55f2fc9a05b4417820c3574aa828fdb3","tests\/Unit\/Transactions\/Builder\/MultiSignatureRegistrationTest.php":"e5b48524e7e97683ec8a1f7c9b43ba8e","tests\/Unit\/Transactions\/Builder\/DelegateResignationTest.php":"527f6988349a098d4fa6b92c78570954","tests\/Unit\/Transactions\/TransactionTest.php":"ac2e2e1de31db779f543a7d3f257822c","tests\/Unit\/Transactions\/Deserializers\/DelegateRegistrationTest.php":"9b0ce921e9b1c575f715ec028c5aec42","tests\/Unit\/Transactions\/Deserializers\/HtlcRefundTest.php":"22afd8ec2418d0406e4f42ee0e431b42","tests\/Unit\/Transactions\/Deserializers\/VoteTest.php":"fc61b9e98d001ee47dc6d61e87dddc1b","tests\/Unit\/Transactions\/Deserializers\/TransferTest.php":"0a7038846d256444b667fe80381698e0","tests\/Unit\/Transactions\/Deserializers\/IPFSTest.php":"53e714f862c3256e29660ab97ec6bf94","tests\/Unit\/Transactions\/Deserializers\/HtlcClaimTest.php":"30cacd4874af19e6026bafb57ee78b0a","tests\/Unit\/Transactions\/Deserializers\/MultiPaymentTest.php":"73b1d1ce139b3efac75814e4d13fedc0","tests\/Unit\/Transactions\/Deserializers\/HtlcLockTest.php":"cc70be6e68236f806f89b93bac7696ca","tests\/Unit\/Transactions\/Deserializers\/SecondSignatureRegistrationTest.php":"dfff4015d30f5e785a1933eb3475818d","tests\/Unit\/Transactions\/Deserializers\/MultiSignatureRegistrationTest.php":"1eb49e69bccee286f928c156633711ab","tests\/Unit\/Transactions\/Deserializers\/DelegateResignationTest.php":"8be75e4b6a9dd2072c7862dae1116b8e","tests\/Unit\/Transactions\/Serializers\/DelegateRegistrationTest.php":"04d9dc16c57e35bed0f98cd305302e3b","tests\/Unit\/Transactions\/Serializers\/HtlcRefundTest.php":"7af106a7fd38c4cdc8c57ecf6e03ab9c","tests\/Unit\/Transactions\/Serializers\/VoteTest.php":"632138bad64d4a325a95447a133bf3ca","tests\/Unit\/Transactions\/Serializers\/TransferTest.php":"bbf565785bd31035aac40b0c61bb4d6a","tests\/Unit\/Transactions\/Serializers\/IPFSTest.php":"9cbab01a748f824e2fa66a996268cf2e","tests\/Unit\/Transactions\/Serializers\/HtlcClaimTest.php":"69759df1d1377a02216573ac4e0c7694","tests\/Unit\/Transactions\/Serializers\/MultiPaymentTest.php":"04c22b03bffce8c2a713880517b0b1ec","tests\/Unit\/Transactions\/Serializers\/HtlcLockTest.php":"62d7af16064c66ced72b535ead234a8f","tests\/Unit\/Transactions\/Serializers\/SecondSignatureRegistrationTest.php":"7ffcc9bcfdf6ccde05c8d08b81b7273f","tests\/Unit\/Transactions\/Serializers\/MultiSignatureRegistrationTest.php":"d33995e48fe07147304a582454df446e","tests\/Unit\/Transactions\/Serializers\/DelegateResignationTest.php":"17dcdb013d1a6b2d0dc02d077ec101e2","tests\/Unit\/Configuration\/NetworkTest.php":"302b258b1f3ae05e0216d25929b69ea7","tests\/Unit\/Configuration\/FeeTest.php":"ce7f567b72dd0126683277b243fa9fc3","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"28470f16ddf35d79384b866973652813","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"784101c1b5986dcdd939d47bc966684d","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"e6f2608e0921d2b2c25e3796e0e0a920","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"4280210224bfe01b431348823fd37902","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"4a0b5b96e2a1e4b849eebf1f3c8781c8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"8617547d4052341646e500679de73dd8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"548c09489f87edce63066c196b4c35f2","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"8bbe9a2d00b2c16e6f07d526ec86954e","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"69e5e34cf122bfa36a64602fd9df0127","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"044f6a5480ac976533db063f28b3b0e3","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"5432d25fb0292b9e637f6e04af104745","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"ec65fb8a8be71266fb0191449ae24173","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"21babc31150ab55f010c0709328bf92d","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"09a667b97f0b5625bd2a267ae06b35ff","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"f3724a1f16a007a2d1a59001556d7cad","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"5951a16b75f5be22726c8f7db5bc9e17","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"e2eae23b9c271db3191c07b1025640b1","tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Concerns\/Fixtures.php":"a1cbc1ecf6e31bd07fdac1c230d7aa6f","tests\/Concerns\/Serialize.php":"134128506ad4e0f69949f773c1df3a70","tests\/Concerns\/Deserialize.php":"68b8f4b8877221e5052c9dd5f011aaa9","tests\/Analysis\/AnalysisTest.php":"a9d0b7406e5a6894ce689229a4b939ff","tests\/TestCase.php":"8ad8b9b7b084dc0d2c28a247ac4a7988"}} \ No newline at end of file From b77b1c5845d5fff3b8244569cc736e920cca5f2d Mon Sep 17 00:00:00 2001 From: Shahin Safaraliyev Date: Thu, 11 Jun 2026 20:18:01 +0400 Subject: [PATCH 05/27] feat: add BLS implementation --- src/BLS/Curves/G1.php | 188 ++++++++++++ src/BLS/Curves/G2.php | 329 +++++++++++++++++++++ src/BLS/EIP2333.php | 125 ++++++++ src/BLS/Fields/Fp.php | 185 ++++++++++++ src/BLS/Fields/Fp2.php | 179 ++++++++++++ src/BLS/HashToCurve/G2HashToCurve.php | 352 +++++++++++++++++++++++ src/BLS/ProofOfPossession.php | 87 ++++++ tests/Unit/BLS/EIP2333Test.php | 40 +++ tests/Unit/BLS/ProofOfPossessionTest.php | 83 ++++++ 9 files changed, 1568 insertions(+) create mode 100644 src/BLS/Curves/G1.php create mode 100644 src/BLS/Curves/G2.php create mode 100644 src/BLS/EIP2333.php create mode 100644 src/BLS/Fields/Fp.php create mode 100644 src/BLS/Fields/Fp2.php create mode 100644 src/BLS/HashToCurve/G2HashToCurve.php create mode 100644 src/BLS/ProofOfPossession.php create mode 100644 tests/Unit/BLS/EIP2333Test.php create mode 100644 tests/Unit/BLS/ProofOfPossessionTest.php diff --git a/src/BLS/Curves/G1.php b/src/BLS/Curves/G1.php new file mode 100644 index 00000000..933b3e61 --- /dev/null +++ b/src/BLS/Curves/G1.php @@ -0,0 +1,188 @@ +x = $x; + $this->y = $y; + $this->z = $z; + } + + public static function generator(): self + { + return new self(Fp::fromHex(self::GX), Fp::fromHex(self::GY), Fp::one()); + } + + public static function identity(): self + { + return new self(Fp::zero(), Fp::one(), Fp::zero()); + } + + public function isIdentity(): bool + { + return $this->z->isZero(); + } + + // ------------------------------------------------------------------------- + // Point doubling (dbl-2009-l, a=0) + // ------------------------------------------------------------------------- + + public function double(): self + { + if ($this->isIdentity()) { + return self::identity(); + } + + $X = $this->x; + $Y = $this->y; + $Z = $this->z; + + $A = $X->square(); + $B = $Y->square(); + $C = $B->square(); + $D = $X->add($B)->square()->sub($A)->sub($C)->mul(Fp::fromInt(2)); + $E = $A->mul(Fp::fromInt(3)); + $F = $E->square(); + $X3 = $F->sub($D->mul(Fp::fromInt(2))); + $Y3 = $E->mul($D->sub($X3))->sub($C->mul(Fp::fromInt(8))); + $Z3 = $Y->mul($Z)->mul(Fp::fromInt(2)); + + return new self($X3, $Y3, $Z3); + } + + // ------------------------------------------------------------------------- + // Point addition (add-2007-bl, handles mixed/projective) + // ------------------------------------------------------------------------- + + public function add(self $other): self + { + if ($this->isIdentity()) { + return $other; + } + if ($other->isIdentity()) { + return $this; + } + + $X1 = $this->x; + $Y1 = $this->y; + $Z1 = $this->z; + $X2 = $other->x; + $Y2 = $other->y; + $Z2 = $other->z; + + $Z1Z1 = $Z1->square(); + $Z2Z2 = $Z2->square(); + $U1 = $X1->mul($Z2Z2); + $U2 = $X2->mul($Z1Z1); + $S1 = $Y1->mul($Z2)->mul($Z2Z2); + $S2 = $Y2->mul($Z1)->mul($Z1Z1); + $H = $U2->sub($U1); + $r = $S2->sub($S1)->mul(Fp::fromInt(2)); + + // If H == 0 and r == 0: both points are equal, use double + if ($H->isZero()) { + if ($r->isZero()) { + return $this->double(); + } + return self::identity(); // opposite points + } + + $I = $H->mul(Fp::fromInt(2))->square(); + $J = $H->mul($I); + $V = $U1->mul($I); + $X3 = $r->square()->sub($J)->sub($V->mul(Fp::fromInt(2))); + $Y3 = $r->mul($V->sub($X3))->sub($S1->mul($J)->mul(Fp::fromInt(2))); + $Z3 = $Z1->add($Z2)->square()->sub($Z1Z1)->sub($Z2Z2)->mul($H); + + return new self($X3, $Y3, $Z3); + } + + public function neg(): self + { + return new self($this->x, $this->y->neg(), $this->z); + } + + // ------------------------------------------------------------------------- + // Scalar multiplication (double-and-add from MSB) + // ------------------------------------------------------------------------- + + public function scalarMul(\GMP $k): self + { + if (gmp_sign($k) === 0) { + return self::identity(); + } + + $result = self::identity(); + $addend = $this; + $n = gmp_abs($k); + + while (gmp_cmp($n, gmp_init(0)) > 0) { + if (gmp_testbit($n, 0)) { + $result = $result->add($addend); + } + $addend = $addend->double(); + $n = gmp_div($n, gmp_init(2)); + } + + if (gmp_sign($k) < 0) { + return $result->neg(); + } + + return $result; + } + + // ------------------------------------------------------------------------- + // Compressed serialization (ZCash encoding, 48 bytes) + // ------------------------------------------------------------------------- + + public function toCompressedBytes(): string + { + if ($this->isIdentity()) { + $bytes = str_repeat("\x00", 48); + $bytes[0] = chr(0xc0); // 0x80 (compressed) | 0x40 (infinity) + return $bytes; + } + + // Convert to affine + $zinv = $this->z->inv(); + $zinv2 = $zinv->square(); + $zinv3 = $zinv2->mul($zinv); + $ax = $this->x->mul($zinv2); + $ay = $this->y->mul($zinv3); + + $bytes = $ax->toBytes(); // 48 bytes, top 3 bits of first byte are 0 + // Bit 7 (0x80): compressed flag + $bytes[0] = chr(ord($bytes[0]) | 0x80); + // Bit 5 (0x20): sort/sign flag, set if y > (p-1)/2 + if ($ay->isNegative()) { + $bytes[0] = chr(ord($bytes[0]) | 0x20); + } + + return $bytes; + } + + public function toHex(): string + { + return bin2hex($this->toCompressedBytes()); + } +} diff --git a/src/BLS/Curves/G2.php b/src/BLS/Curves/G2.php new file mode 100644 index 00000000..5ba09ae7 --- /dev/null +++ b/src/BLS/Curves/G2.php @@ -0,0 +1,329 @@ +x = $x; + $this->y = $y; + $this->z = $z; + } + + public static function generator(): self + { + return new self( + Fp2::fromHex(self::GX_C0, self::GX_C1), + Fp2::fromHex(self::GY_C0, self::GY_C1), + Fp2::one() + ); + } + + public static function identity(): self + { + return new self(Fp2::zero(), Fp2::one(), Fp2::zero()); + } + + public function isIdentity(): bool + { + return $this->z->isZero(); + } + + public function getX(): Fp2 { return $this->x; } + public function getY(): Fp2 { return $this->y; } + public function getZ(): Fp2 { return $this->z; } + + // ------------------------------------------------------------------------- + // Point doubling (dbl-2009-l, a=0 for G2) + // ------------------------------------------------------------------------- + + public function double(): self + { + if ($this->isIdentity()) { + return self::identity(); + } + + $X = $this->x; + $Y = $this->y; + $Z = $this->z; + + $A = $X->square(); + $B = $Y->square(); + $C = $B->square(); + $D = $X->add($B)->square()->sub($A)->sub($C)->mulInt(2); + $E = $A->mulInt(3); + $F = $E->square(); + $X3 = $F->sub($D->mulInt(2)); + $Y3 = $E->mul($D->sub($X3))->sub($C->mulInt(8)); + $Z3 = $Y->mul($Z)->mulInt(2); + + return new self($X3, $Y3, $Z3); + } + + // ------------------------------------------------------------------------- + // Point addition + // ------------------------------------------------------------------------- + + public function add(self $other): self + { + if ($this->isIdentity()) { + return $other; + } + if ($other->isIdentity()) { + return $this; + } + + $X1 = $this->x; + $Y1 = $this->y; + $Z1 = $this->z; + $X2 = $other->x; + $Y2 = $other->y; + $Z2 = $other->z; + + $Z1Z1 = $Z1->square(); + $Z2Z2 = $Z2->square(); + $U1 = $X1->mul($Z2Z2); + $U2 = $X2->mul($Z1Z1); + $S1 = $Y1->mul($Z2)->mul($Z2Z2); + $S2 = $Y2->mul($Z1)->mul($Z1Z1); + $H = $U2->sub($U1); + $r = $S2->sub($S1)->mulInt(2); + + if ($H->isZero()) { + if ($r->isZero()) { + return $this->double(); + } + return self::identity(); + } + + $I = $H->mulInt(2)->square(); + $J = $H->mul($I); + $V = $U1->mul($I); + $X3 = $r->square()->sub($J)->sub($V->mulInt(2)); + $Y3 = $r->mul($V->sub($X3))->sub($S1->mul($J)->mulInt(2)); + $Z3 = $Z1->add($Z2)->square()->sub($Z1Z1)->sub($Z2Z2)->mul($H); + + return new self($X3, $Y3, $Z3); + } + + public function neg(): self + { + return new self($this->x, $this->y->neg(), $this->z); + } + + // ------------------------------------------------------------------------- + // Scalar multiplication (LSB double-and-add) + // ------------------------------------------------------------------------- + + public function scalarMul(\GMP $k): self + { + if (gmp_sign($k) === 0) { + return self::identity(); + } + + $result = self::identity(); + $addend = $this; + $n = gmp_abs($k); + + while (gmp_cmp($n, gmp_init(0)) > 0) { + if (gmp_testbit($n, 0)) { + $result = $result->add($addend); + } + $addend = $addend->double(); + $n = gmp_div($n, gmp_init(2)); + } + + if (gmp_sign($k) < 0) { + return $result->neg(); + } + + return $result; + } + + // ------------------------------------------------------------------------- + // Frobenius (ψ) endomorphism for cofactor clearing + // Efficient: only needs Frobenius conjugation + multiplication by PSI constants + // ------------------------------------------------------------------------- + + private static ?Fp2 $psiX = null; + private static ?Fp2 $psiY = null; + private static ?Fp2 $psi2X = null; + + /** + * Lazily compute and cache the three Frobenius constants. + * base = 1/(1+u) in Fp2 = ((p+1)/2, (p-1)/2) + * PSI_X = base^((p-1)/3) + * PSI_Y = base^((p-1)/2) + * PSI2_X = base^((p²-1)/3) + */ + private static function initPsiConstants(): void + { + if (self::$psiX !== null) { + return; + } + $p = Fp::prime(); + $inv2 = gmp_div(gmp_add($p, gmp_init(1)), gmp_init(2)); // (p+1)/2 = mod-inverse of 2 + $base = new Fp2(new Fp($inv2), new Fp(gmp_sub($p, $inv2))); + + $p1 = gmp_sub($p, gmp_init(1)); + self::$psiX = $base->pow(gmp_div($p1, gmp_init(3))); + self::$psiY = $base->pow(gmp_div($p1, gmp_init(2))); + + $p2 = gmp_mul($p, $p); + $p2m1 = gmp_sub($p2, gmp_init(1)); + self::$psi2X = $base->pow(gmp_div($p2m1, gmp_init(3))); + } + + private static function psiX(): Fp2 + { + self::initPsiConstants(); + return self::$psiX; + } + + private static function psiY(): Fp2 + { + self::initPsiConstants(); + return self::$psiY; + } + + private static function psi2X(): Fp2 + { + self::initPsiConstants(); + return self::$psi2X; + } + + /** + * ψ (psi) Frobenius endomorphism. + * ψ(x, y) = (conj(x) * PSI_X, conj(y) * PSI_Y) + * Applied to projective point (X:Y:Z): ψ(X:Y:Z) = (conj(X)*PSI_X : conj(Y)*PSI_Y : conj(Z)) + */ + public function psi(): self + { + if ($this->isIdentity()) { + return self::identity(); + } + $x2 = $this->x->conjugate()->mul(self::psiX()); + $y2 = $this->y->conjugate()->mul(self::psiY()); + $z2 = $this->z->conjugate(); + return new self($x2, $y2, $z2); + } + + /** + * ψ² (psi squared) endomorphism. + * ψ²(x, y) = (x * PSI2_X, -y) + * In projective: (X*PSI2_X : -Y : Z) — no conjugation needed since PSI2_X ∈ Fp + */ + public function psi2(): self + { + if ($this->isIdentity()) { + return self::identity(); + } + $x2 = $this->x->mul(self::psi2X()); + $y2 = $this->y->neg(); + return new self($x2, $y2, $this->z); + } + + // ------------------------------------------------------------------------- + // Cofactor clearing via Bowe et al. efficient algorithm + // h_eff = (x² - x - 1)P + (x-1)ψ(P) + ψ²(2P) + // ------------------------------------------------------------------------- + + public function clearCofactor(): self + { + $x = gmp_init(self::BLS_X, 16); + + $t1 = $this->scalarMul($x)->neg(); // [-x]P + $t2 = $this->psi(); // ψ(P) + $t3 = $this->double(); // 2P + $t3 = $t3->psi2(); // ψ²(2P) + $t3 = $t3->sub($t2); // ψ²(2P) - ψ(P) + $t2 = $t1->add($t2); // [-x]P + ψ(P) + $t2 = $t2->scalarMul($x)->neg(); // -[x]([-x]P + ψ(P)) = [x²]P - [x]ψ(P) + $t3 = $t3->add($t2); // ψ²(2P) - ψ(P) + [x²]P - [x]ψ(P) + $t3 = $t3->sub($t1); // + [x]P (sub neg = add) + $Q = $t3->sub($this); // - P + + return $Q; + } + + // sub is just add(neg) + public function sub(self $other): self + { + return $this->add($other->neg()); + } + + // ------------------------------------------------------------------------- + // Convert to affine + // ------------------------------------------------------------------------- + + public function toAffine(): array // [Fp2 $x, Fp2 $y] + { + if ($this->isIdentity()) { + return [Fp2::zero(), Fp2::one()]; + } + $zinv = $this->z->inv(); + $zinv2 = $zinv->square(); + $zinv3 = $zinv2->mul($zinv); + return [$this->x->mul($zinv2), $this->y->mul($zinv3)]; + } + + // ------------------------------------------------------------------------- + // Compressed serialization (ZCash encoding, 96 bytes) + // G2 x ∈ Fp2: encode as c1 || c0 (each 48 bytes), total 96 bytes + // ------------------------------------------------------------------------- + + public function toCompressedBytes(): string + { + if ($this->isIdentity()) { + $bytes = str_repeat("\x00", 96); + $bytes[0] = chr(0xc0); // 0x80 (compressed) | 0x40 (infinity) + return $bytes; + } + + [$ax, $ay] = $this->toAffine(); + + // Fp2 serialization: c1 (high 48 bytes) then c0 (low 48 bytes) + $bytes = $ax->c1->toBytes() . $ax->c0->toBytes(); // 96 bytes, top 3 bits of first byte are 0 + + // Bit 7 (0x80): compressed flag + $bytes[0] = chr(ord($bytes[0]) | 0x80); + + // Bit 5 (0x20): sort/sign flag + // ZCash uses: if c1 != 0 then sign = (c1 > (p-1)/2) else sign = (c0 > (p-1)/2) + $signFp = $ax->c1->isZero() ? $ax->c0 : $ax->c1; + if ($signFp->isNegative()) { + $bytes[0] = chr(ord($bytes[0]) | 0x20); + } + + return $bytes; + } + + public function toHex(): string + { + return bin2hex($this->toCompressedBytes()); + } +} diff --git a/src/BLS/EIP2333.php b/src/BLS/EIP2333.php new file mode 100644 index 00000000..388cf31b --- /dev/null +++ b/src/BLS/EIP2333.php @@ -0,0 +1,125 @@ + 0 + $this->value = $v; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + public static function fromHex(string $hex): self + { + return new self(gmp_init($hex, 16)); + } + + public static function fromInt(int $n): self + { + return new self(gmp_init($n)); + } + + public static function fromBytes(string $bytes): self + { + return new self(gmp_init(bin2hex($bytes), 16)); + } + + public static function zero(): self + { + return new self(gmp_init(0)); + } + + public static function one(): self + { + return new self(gmp_init(1)); + } + + public static function prime(): GMP + { + if (self::$prime === null) { + self::$prime = gmp_init(self::P_HEX, 16); + } + return self::$prime; + } + + public static function order(): GMP + { + if (self::$order === null) { + self::$order = gmp_init(self::R_HEX, 16); + } + return self::$order; + } + + // ------------------------------------------------------------------------- + // Arithmetic + // ------------------------------------------------------------------------- + + public function add(self $other): self + { + return new self(gmp_add($this->value, $other->value)); + } + + public function sub(self $other): self + { + $r = gmp_sub($this->value, $other->value); + if (gmp_sign($r) < 0) { + $r = gmp_add($r, self::prime()); + } + return new self($r); + } + + public function mul(self $other): self + { + return new self(gmp_mul($this->value, $other->value)); + } + + public function square(): self + { + return new self(gmp_pow($this->value, 2)); + } + + public function neg(): self + { + if (gmp_sign($this->value) === 0) { + return self::zero(); + } + return new self(gmp_sub(self::prime(), $this->value)); + } + + public function inv(): self + { + $inv = gmp_invert($this->value, self::prime()); + if ($inv === false) { + throw new \RuntimeException('Fp: element has no inverse (is zero)'); + } + return new self($inv); + } + + public function pow(GMP $exp): self + { + return new self(gmp_powm($this->value, $exp, self::prime())); + } + + public function div(self $other): self + { + return $this->mul($other->inv()); + } + + // ------------------------------------------------------------------------- + // Predicates + // ------------------------------------------------------------------------- + + public function isZero(): bool + { + return gmp_sign($this->value) === 0; + } + + public function equals(self $other): bool + { + return gmp_cmp($this->value, $other->value) === 0; + } + + /** sgn0: returns true if value is odd (used for hash-to-curve SWU) */ + public function isOdd(): bool + { + return gmp_testbit($this->value, 0); + } + + /** True if value > (p-1)/2 (used for ZCash compressed point sign bit) */ + public function isNegative(): bool + { + // p is odd, so (p-1)/2 = p >> 1 in integer arithmetic + return gmp_cmp($this->value, gmp_div(self::prime(), 2)) > 0; + } + + // ------------------------------------------------------------------------- + // Conditional move (for constant-time-style operations in SWU) + // ------------------------------------------------------------------------- + + public static function cmov(self $a, self $b, bool $condition): self + { + return $condition ? $b : $a; + } + + // ------------------------------------------------------------------------- + // Serialization + // ------------------------------------------------------------------------- + + /** Returns 48-byte big-endian representation */ + public function toBytes(): string + { + $hex = str_pad(gmp_strval($this->value, 16), 96, '0', STR_PAD_LEFT); + return hex2bin($hex); + } + + public function toHex(): string + { + return str_pad(gmp_strval($this->value, 16), 96, '0', STR_PAD_LEFT); + } +} diff --git a/src/BLS/Fields/Fp2.php b/src/BLS/Fields/Fp2.php new file mode 100644 index 00000000..017476c6 --- /dev/null +++ b/src/BLS/Fields/Fp2.php @@ -0,0 +1,179 @@ +c0 = $c0; + $this->c1 = $c1; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + public static function fromInts(int $c0, int $c1): self + { + return new self(Fp::fromInt($c0), Fp::fromInt($c1)); + } + + public static function fromHex(string $c0hex, string $c1hex): self + { + return new self(Fp::fromHex($c0hex), Fp::fromHex($c1hex)); + } + + public static function zero(): self + { + return new self(Fp::zero(), Fp::zero()); + } + + public static function one(): self + { + return new self(Fp::one(), Fp::zero()); + } + + // ------------------------------------------------------------------------- + // Arithmetic + // ------------------------------------------------------------------------- + + public function add(self $other): self + { + return new self($this->c0->add($other->c0), $this->c1->add($other->c1)); + } + + public function sub(self $other): self + { + return new self($this->c0->sub($other->c0), $this->c1->sub($other->c1)); + } + + /** + * Karatsuba multiplication in Fp2. + * (a + b·u)(c + d·u) = (ac - bd) + (ad + bc)·u [since u²=-1] + */ + public function mul(self $other): self + { + $ac = $this->c0->mul($other->c0); + $bd = $this->c1->mul($other->c1); + $c0 = $ac->sub($bd); + // (a+b)(c+d) - ac - bd = ad + bc + $c1 = $this->c0->add($this->c1)->mul($other->c0->add($other->c1))->sub($ac)->sub($bd); + return new self($c0, $c1); + } + + public function mulFp(Fp $scalar): self + { + return new self($this->c0->mul($scalar), $this->c1->mul($scalar)); + } + + public function mulInt(int $n): self + { + $s = Fp::fromInt($n); + return new self($this->c0->mul($s), $this->c1->mul($s)); + } + + public function square(): self + { + // (a + b·u)² = (a²-b²) + 2ab·u + $a = $this->c0; + $b = $this->c1; + $c0 = $a->add($b)->mul($a->sub($b)); // (a+b)(a-b) = a²-b² + $c1 = $a->mul($b)->mul(Fp::fromInt(2)); + return new self($c0, $c1); + } + + public function neg(): self + { + return new self($this->c0->neg(), $this->c1->neg()); + } + + /** Frobenius / conjugate: (a + b·u)* = a - b·u */ + public function conjugate(): self + { + return new self($this->c0, $this->c1->neg()); + } + + public function inv(): self + { + // 1/(a + b·u) = (a - b·u) / (a² + b²) + $norm = $this->c0->square()->add($this->c1->square()); // a² + b² + $invNorm = $norm->inv(); + return new self($this->c0->mul($invNorm), $this->c1->neg()->mul($invNorm)); + } + + public function div(self $other): self + { + return $this->mul($other->inv()); + } + + /** + * Exponentiation by a large GMP integer. + */ + public function pow(GMP $exp): self + { + $result = self::one(); + $base = $this; + $e = gmp_abs($exp); + while (gmp_cmp($e, gmp_init(0)) > 0) { + if (gmp_testbit($e, 0)) { + $result = $result->mul($base); + } + $base = $base->square(); + $e = gmp_div($e, gmp_init(2)); + } + return $result; + } + + // ------------------------------------------------------------------------- + // Predicates + // ------------------------------------------------------------------------- + + public function isZero(): bool + { + return $this->c0->isZero() && $this->c1->isZero(); + } + + public function equals(self $other): bool + { + return $this->c0->equals($other->c0) && $this->c1->equals($other->c1); + } + + /** + * sgn0_m_eq_2 from RFC 9380: sign of Fp2 element. + * Returns c0's parity unless c0==0, then c1's parity. + */ + public function isOdd(): bool + { + if (!$this->c0->isZero()) { + return $this->c0->isOdd(); + } + return $this->c1->isOdd(); + } + + public static function cmov(self $a, self $b, bool $condition): self + { + return $condition ? $b : $a; + } + + // ------------------------------------------------------------------------- + // Serialization (96 bytes: c1 first 48 bytes, c0 last 48 bytes) + // G2 compressed: 96 bytes per coordinate pair, two pairs = 192 bytes total + // ------------------------------------------------------------------------- + + public function toBytes(): string + { + return $this->c1->toBytes() . $this->c0->toBytes(); + } +} diff --git a/src/BLS/HashToCurve/G2HashToCurve.php b/src/BLS/HashToCurve/G2HashToCurve.php new file mode 100644 index 00000000..b46e2e23 --- /dev/null +++ b/src/BLS/HashToCurve/G2HashToCurve.php @@ -0,0 +1,352 @@ +add($q1)->clearCofactor(); + } + + // ========================================================================= + // expand_message_xmd (RFC 9380 §5.3.1, SHA-256 variant) + // ========================================================================= + + private static function expandMessageXmd(string $msg, string $dst, int $lenInBytes): string + { + $ell = (int) ceil($lenInBytes / self::B_IN_BYTES); // = 8 for 256 bytes + $dstPrime = $dst . chr(strlen($dst)); + $zPad = str_repeat("\x00", self::R_IN_BYTES); + $libStr = chr(($lenInBytes >> 8) & 0xff) . chr($lenInBytes & 0xff); + + $b0 = hash('sha256', $zPad . $msg . $libStr . "\x00" . $dstPrime, true); + $b = []; + $b[0] = hash('sha256', $b0 . "\x01" . $dstPrime, true); + + for ($i = 1; $i < $ell; $i++) { + $b[$i] = hash('sha256', self::strxor($b0, $b[$i - 1]) . chr($i + 1) . $dstPrime, true); + } + + return substr(implode('', $b), 0, $lenInBytes); + } + + private static function strxor(string $a, string $b): string + { + $out = ''; + $len = strlen($a); + for ($i = 0; $i < $len; $i++) { + $out .= chr(ord($a[$i]) ^ ord($b[$i])); + } + return $out; + } + + // ========================================================================= + // hash_to_field: 256 uniform bytes → two Fp2 elements + // Layout: [e0_c0 (64B), e0_c1 (64B), e1_c0 (64B), e1_c1 (64B)] + // ========================================================================= + + /** + * @return Fp2[] [u0, u1] + */ + private static function uniformBytesToFp2Pair(string $bytes, int $L): array + { + // m=2 extension, count=2 elements + // offset = L * (j + i * m) + // e0: j=0 → offset 0, j=1 → offset 64 + // e1: j=0 → offset 128, j=1 → offset 192 + $p = Fp::prime(); + $u0 = new Fp2( + new Fp(gmp_mod(gmp_init(bin2hex(substr($bytes, 0, $L)), 16), $p)), + new Fp(gmp_mod(gmp_init(bin2hex(substr($bytes, $L, $L)), 16), $p)) + ); + $u1 = new Fp2( + new Fp(gmp_mod(gmp_init(bin2hex(substr($bytes, 2 * $L, $L)), 16), $p)), + new Fp(gmp_mod(gmp_init(bin2hex(substr($bytes, 3 * $L, $L)), 16), $p)) + ); + return [$u0, $u1]; + } + + // ========================================================================= + // SWU map: Fp2 element → affine point on isogenous E' + // Then apply the 3-isogeny to land on actual G2 curve E. + // ========================================================================= + + private static function mapToCurveG2(Fp2 $u): G2 + { + // SWU curve parameters + // A' = 240·u + $A = Fp2::fromInts(0, 240); + // B' = 1012 + 1012·u + $B = Fp2::fromInts(1012, 1012); + // Z = -(2 + u) = (p-2) + (p-1)·u + $p = Fp::prime(); + $Z = new Fp2(new Fp(gmp_sub($p, gmp_init(2))), new Fp(gmp_sub($p, gmp_init(1)))); + $F1 = Fp2::one(); + + // RFC 9380 §6.6.2 Simplified SWU, 25 steps (noble-curves numbering): + // prettier-ignore + $tv1 = $u->square(); // 1. tv1 = u² + $tv1 = $Z->mul($tv1); // 2. tv1 = Z * tv1 + $tv2 = $tv1->square(); // 3. tv2 = tv1² + $tv2 = $tv2->add($tv1); // 4. tv2 = tv2 + tv1 + $tv3 = $tv2->add($F1); // 5. tv3 = tv2 + 1 + $tv3 = $B->mul($tv3); // 6. tv3 = B * tv3 + // 7. tv4 = CMOV(Z, -tv2, tv2 != 0) + $tv4 = Fp2::cmov($Z, $tv2->neg(), !$tv2->isZero()); + $tv4 = $A->mul($tv4); // 8. tv4 = A * tv4 + $tv2 = $tv3->square(); // 9. tv2 = tv3² + $tv6 = $tv4->square(); // 10. tv6 = tv4² + $tv5 = $A->mul($tv6); // 11. tv5 = A * tv6 + $tv2 = $tv2->add($tv5); // 12. tv2 = tv2 + tv5 + $tv2 = $tv2->mul($tv3); // 13. tv2 = tv2 * tv3 + $tv6 = $tv6->mul($tv4); // 14. tv6 = tv6 * tv4 + $tv5 = $B->mul($tv6); // 15. tv5 = B * tv6 + $tv2 = $tv2->add($tv5); // 16. tv2 = tv2 + tv5 + $x = $tv1->mul($tv3); // 17. x = tv1 * tv3 + + // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6) + ['isValid' => $isValid, 'value' => $y1] = self::sqrtRatio($tv2, $tv6); + + $y = $tv1->mul($u); // 19. y = tv1 * u (= Z·u³ * y_coeff) + $y = $y->mul($y1); // 20. y = y * y1 + + $x = Fp2::cmov($x, $tv3, $isValid); // 21. x = CMOV(x, tv3, is_gx1_square) + $y = Fp2::cmov($y, $y1, $isValid); // 22. y = CMOV(y, y1, is_gx1_square) + + // 23. e1 = (sgn0(u) == sgn0(y)) + $e1 = ($u->isOdd() === $y->isOdd()); + // 24. y = CMOV(-y, y, e1) + $y = Fp2::cmov($y->neg(), $y, $e1); + + // 25. x = x / tv4 + $x = $x->mul($tv4->inv()); + + // Apply 3-isogeny to get point on actual G2 curve + [$xi, $yi] = self::applyIsogeny($x, $y); + + // Return as Jacobian G2 point (Z=1) + return new G2($xi, $yi, Fp2::one()); + } + + // ========================================================================= + // RFC 9380 Appendix F.2.1.2 — sqrt_ratio for Fp2 (q ≡ 9 mod 16, c1=3) + // Returns { isValid, value } where value = sqrt(u/v) if QR, else sqrt(Z·u/v) + // ========================================================================= + + /** + * @return array{isValid: bool, value: Fp2} + */ + private static function sqrtRatio(Fp2 $u, Fp2 $v): array + { + [$c6, $c7] = self::swuPrecompute(); + + // The algorithm uses small-power exponents that we compute with Fp2::pow + $c4 = gmp_init(7); // 2^c1 - 1 = 7 + $c5 = gmp_init(4); // 2^(c1-1) = 4 + $c3 = self::swuC3(); + + // Steps 1-16 + $tv1 = $c6; // 1 + $tv2 = self::fp2Pow7($v); // 2. v^7 + $tv3 = $tv2->square()->mul($v); // 3-4. v^14 * v = v^15 + $tv5 = $u->mul($tv3); // 5. u * v^15 + $tv5 = $tv5->pow($c3); // 6. (u * v^15)^c3 + $tv5 = $tv5->mul($tv2); // 7. * v^7 + $tv2 = $tv5->mul($v); // 8. + $tv3 = $tv5->mul($u); // 9. + $tv4 = $tv3->mul($tv2); // 10. + $tv5 = $tv4->pow($c5); // 11. tv4^4 + $isQR = $tv5->equals(Fp2::one()); // 12. + $tv2 = $tv3->mul($c7); // 13. + $tv5 = $tv4->mul($tv1); // 14. tv4 * c6 + $tv3 = Fp2::cmov($tv2, $tv3, $isQR); // 15. + $tv4 = Fp2::cmov($tv5, $tv4, $isQR); // 16. + + // Steps 17-26: loop i = c1 downto 2 (i.e., i = 3 then i = 2) + for ($i = 3; $i >= 2; $i--) { + // tv5 = 2^(i-2): for i=3 → 2, for i=2 → 1 + $powExp = ($i === 3) ? 2 : 1; + $tvv5 = ($powExp === 2) ? $tv4->square() : $tv4; // tv4^powExp + $e1 = $tvv5->equals(Fp2::one()); // 21. + $tv2 = $tv3->mul($tv1); // 22. + $tv1 = $tv1->square(); // 23. + $tvv5 = $tv4->mul($tv1); // 24. + $tv3 = Fp2::cmov($tv2, $tv3, $e1); // 25. + $tv4 = Fp2::cmov($tvv5, $tv4, $e1); // 26. + } + + $isValid = !$v->isZero() && ($isQR || $u->isZero()); + return ['isValid' => $isValid, 'value' => $tv3]; + } + + /** Fp2^7 via binary method (3 squarings + 3 muls) */ + private static function fp2Pow7(Fp2 $v): Fp2 + { + $v2 = $v->square(); // v² + $v4 = $v2->square(); // v⁴ + return $v4->mul($v2)->mul($v); // v⁶ * v = v⁷ + } + + // ========================================================================= + // Precomputation of sqrtRatio constants c6 and c7 (lazily cached) + // c1 = 3, q = p², c2 = (q-1)/8, c3 = (c2-1)/2 + // c6 = Z^c2, c7 = Z^((c2+1)/2) + // ========================================================================= + + /** @return Fp2[] [c6, c7] */ + private static function swuPrecompute(): array + { + if (self::$swuC6 !== null) { + return [self::$swuC6, self::$swuC7]; + } + + $p = Fp::prime(); + $q = gmp_mul($p, $p); // q = p² + $q1 = gmp_sub($q, gmp_init(1)); // q - 1 + $c2 = gmp_div($q1, gmp_init(8)); // (q-1) / 8 + + // Z = -(2 + u) = (p-2) + (p-1)·u + $Z = new Fp2(new Fp(gmp_sub($p, gmp_init(2))), new Fp(gmp_sub($p, gmp_init(1)))); + + self::$swuC6 = $Z->pow($c2); + self::$swuC7 = $Z->pow(gmp_div(gmp_add($c2, gmp_init(1)), gmp_init(2))); + + return [self::$swuC6, self::$swuC7]; + } + + private static ?Fp2 $swuC3cached = null; + + private static function swuC3(): \GMP + { + static $c3 = null; + if ($c3 === null) { + $p = Fp::prime(); + $q = gmp_mul($p, $p); + $c2 = gmp_div(gmp_sub($q, gmp_init(1)), gmp_init(8)); + $c3 = gmp_div(gmp_sub($c2, gmp_init(1)), gmp_init(2)); + } + return $c3; + } + + // ========================================================================= + // 3-isogeny: E' → G2 curve E (rational map via Horner evaluation) + // ========================================================================= + + /** @return Fp2[] [x, y] */ + private static function applyIsogeny(Fp2 $x, Fp2 $y): array + { + $xn = self::horner(self::ISO_XN, $x); + $xd = self::horner(self::ISO_XD, $x); + $yn = self::horner(self::ISO_YN, $x); + $yd = self::horner(self::ISO_YD, $x); + + $xi = $xn->mul($xd->inv()); + $yi = $y->mul($yn->mul($yd->inv())); + + return [$xi, $yi]; + } + + /** + * Horner evaluation of a polynomial at x. + * Coefficients in ascending order [k0, k1, ..., kd] are reversed for Horner. + * Result: k0 + k1*x + ... + kd*x^d = horner([kd,...,k1,k0], x) + */ + private static function horner(array $ascCoeffs, Fp2 $x): Fp2 + { + $coeffs = array_reverse( + array_map(function ($pair) { + // '0' is falsy in PHP so use explicit comparison + $c0 = ($pair[0] !== '' && $pair[0] !== null) ? $pair[0] : '0'; + $c1 = ($pair[1] !== '' && $pair[1] !== null) ? $pair[1] : '0'; + return Fp2::fromHex($c0, $c1); + }, $ascCoeffs) + ); + $acc = $coeffs[0]; + for ($i = 1, $n = count($coeffs); $i < $n; $i++) { + $acc = $acc->mul($x)->add($coeffs[$i]); + } + return $acc; + } +} diff --git a/src/BLS/ProofOfPossession.php b/src/BLS/ProofOfPossession.php new file mode 100644 index 00000000..097fa087 --- /dev/null +++ b/src/BLS/ProofOfPossession.php @@ -0,0 +1,87 @@ +scalarMul($scalar)->toHex(); + } + + /** + * Builds the Proof of Possession for a given private key. + * + * PoP = Sign(sk, Hash_G2(pk)) where Hash_G2 hashes the G1 public key bytes + * to a G2 point under POP_DST, then the G2 point is "signed" by multiplying + * by the private key scalar. + * + * @param string $privateKeyBytes 32-byte raw private key + * @return array{pk: string, pop: string} hex-encoded G1 pk (96 chars) and G2 pop (192 chars) + */ + public static function buildProofOfPossession(string $privateKeyBytes): array + { + $sk = gmp_init(bin2hex($privateKeyBytes), 16); + + // G1 public key: [sk] * G1 + $pk = G1::generator()->scalarMul($sk)->toCompressedBytes(); + + // Hash pk bytes to G2 under POP_DST + $messagePoint = G2HashToCurve::hashToG2($pk, self::POP_DST); + + // Sign: PoP = [sk] * hash(pk) + $pop = $messagePoint->scalarMul($sk)->toCompressedBytes(); + + return [ + 'pk' => bin2hex($pk), + 'pop' => bin2hex($pop), + ]; + } + + /** + * Convenience: derive private key from mnemonic and build PoP. + * + * @return array{pk: string, pop: string} + */ + public static function fromMnemonic(string $mnemonic): array + { + return self::buildProofOfPossession(self::deriveBlsPrivateKey($mnemonic)); + } +} diff --git a/tests/Unit/BLS/EIP2333Test.php b/tests/Unit/BLS/EIP2333Test.php new file mode 100644 index 00000000..f6fa0505 --- /dev/null +++ b/tests/Unit/BLS/EIP2333Test.php @@ -0,0 +1,40 @@ +toBe(64); +}); + +it('derives a 32-byte master key from seed', function () { + $seed = EIP2333::mnemonicToSeed(EIP2333_MNEMONIC); + $master = EIP2333::deriveMaster($seed); + expect(strlen($master))->toBe(32); +}); + +it('derives a 32-byte child key at index 0', function () { + $seed = EIP2333::mnemonicToSeed(EIP2333_MNEMONIC); + $master = EIP2333::deriveMaster($seed); + $child = EIP2333::deriveChild($master, 0); + expect(strlen($child))->toBe(32); +}); + +it('is deterministic for the same mnemonic', function () { + $a = EIP2333::deriveBlsPrivateKey(EIP2333_MNEMONIC); + $b = EIP2333::deriveBlsPrivateKey(EIP2333_MNEMONIC); + expect(bin2hex($a))->toBe(bin2hex($b)); +}); + +it('produces different keys for different mnemonics', function () { + $a = EIP2333::deriveBlsPrivateKey(EIP2333_MNEMONIC); + $b = EIP2333::deriveBlsPrivateKey('zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo wrong'); + expect(bin2hex($a))->not->toBe(bin2hex($b)); +}); diff --git a/tests/Unit/BLS/ProofOfPossessionTest.php b/tests/Unit/BLS/ProofOfPossessionTest.php new file mode 100644 index 00000000..2eec35ec --- /dev/null +++ b/tests/Unit/BLS/ProofOfPossessionTest.php @@ -0,0 +1,83 @@ +toBe(96); // 48 bytes compressed G1 +}); + +it('matches the pinned G1 pk for SK_A', function () { + $pk = ProofOfPossession::privateKeyToPublicKey(hex2bin(POP_SK_A_HEX)); + expect($pk)->toBe(EXPECTED_PK_HEX); +}); + +it('produces a 96-char pk from a mnemonic', function () { + $pk = ProofOfPossession::deriveBlsPublicKey(POP_MNEMONIC_A); + expect(strlen($pk))->toBe(96); +}); + +it('matches the pinned pk for the canonical mnemonic', function () { + $pk = ProofOfPossession::deriveBlsPublicKey(POP_MNEMONIC_A); + expect($pk)->toBe(EXPECTED_MNEMONIC_PK); +}); + +// ------------------------------------------------------------------------- +// Proof of Possession +// ------------------------------------------------------------------------- + +it('buildProofOfPossession returns 96-char pk and 192-char pop', function () { + $result = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_A_HEX)); + expect(strlen($result['pk']))->toBe(96); + expect(strlen($result['pop']))->toBe(192); // 96 bytes compressed G2 +}); + +it('pk in buildProofOfPossession matches deriveBlsPublicKey', function () { + $result = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_A_HEX)); + $pk = ProofOfPossession::privateKeyToPublicKey(hex2bin(POP_SK_A_HEX)); + expect($result['pk'])->toBe($pk); +}); + +it('matches the pinned pk and pop for SK_A', function () { + $result = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_A_HEX)); + expect($result['pk'])->toBe(EXPECTED_PK_HEX); + expect($result['pop'])->toBe(EXPECTED_POP_HEX); +}); + +it('is deterministic for the same secret key', function () { + $a = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_A_HEX)); + $b = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_A_HEX)); + expect($a['pk'])->toBe($b['pk']); + expect($a['pop'])->toBe($b['pop']); +}); + +it('produces different pk and pop for different secret keys', function () { + $a = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_A_HEX)); + $b = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_B_HEX)); + expect($a['pk'])->not->toBe($b['pk']); + expect($a['pop'])->not->toBe($b['pop']); +}); + +it('fromMnemonic is deterministic', function () { + $a = ProofOfPossession::fromMnemonic(POP_MNEMONIC_A); + $b = ProofOfPossession::fromMnemonic(POP_MNEMONIC_A); + expect($a['pk'])->toBe($b['pk']); + expect($a['pop'])->toBe($b['pop']); +}); From 9d97386c716d42e359453dc3c3a3cac1e8e876fb Mon Sep 17 00:00:00 2001 From: Shahin Safaraliyev Date: Thu, 11 Jun 2026 20:28:06 +0400 Subject: [PATCH 06/27] feat: add BLS implementation --- src/BLS/ProofOfPossession.php | 15 +++- tests/Unit/BLS/ProofOfPossessionTest.php | 94 +++++++++++------------- 2 files changed, 56 insertions(+), 53 deletions(-) diff --git a/src/BLS/ProofOfPossession.php b/src/BLS/ProofOfPossession.php index 097fa087..572816e9 100644 --- a/src/BLS/ProofOfPossession.php +++ b/src/BLS/ProofOfPossession.php @@ -5,10 +5,8 @@ namespace ArkEcosystem\Crypto\BLS; use ArkEcosystem\Crypto\BLS\Curves\G1; -use ArkEcosystem\Crypto\BLS\Curves\G2; -use ArkEcosystem\Crypto\BLS\EIP2333; -use ArkEcosystem\Crypto\BLS\Fields\Fp; use ArkEcosystem\Crypto\BLS\HashToCurve\G2HashToCurve; +use InvalidArgumentException; /** * BLS12-381 Proof of Possession following the TypeScript SDK's ProofOfPossession.ts. @@ -55,11 +53,22 @@ public static function privateKeyToPublicKey(string $privateKeyBytes): string * * @param string $privateKeyBytes 32-byte raw private key * @return array{pk: string, pop: string} hex-encoded G1 pk (96 chars) and G2 pop (192 chars) + * @throws InvalidArgumentException if the key is not exactly 32 bytes or is the zero scalar */ public static function buildProofOfPossession(string $privateKeyBytes): array { + if (strlen($privateKeyBytes) !== 32) { + throw new InvalidArgumentException( + 'BLS secret key must be exactly 32 bytes, got ' . strlen($privateKeyBytes) + ); + } + $sk = gmp_init(bin2hex($privateKeyBytes), 16); + if (gmp_sign($sk) === 0) { + throw new InvalidArgumentException('BLS secret key must not be zero'); + } + // G1 public key: [sk] * G1 $pk = G1::generator()->scalarMul($sk)->toCompressedBytes(); diff --git a/tests/Unit/BLS/ProofOfPossessionTest.php b/tests/Unit/BLS/ProofOfPossessionTest.php index 2eec35ec..0d623f35 100644 --- a/tests/Unit/BLS/ProofOfPossessionTest.php +++ b/tests/Unit/BLS/ProofOfPossessionTest.php @@ -4,80 +4,74 @@ use ArkEcosystem\Crypto\BLS\ProofOfPossession; -// Test vectors from the TypeScript SDK ProofOfPossession.test.ts +// Test vectors matching the TypeScript SDK ProofOfPossession.test.ts exactly const POP_SK_A_HEX = '67d53f170b908cabb9eb326c3c337762d59289a8fec79f7bc9254b584b73265c'; const POP_SK_B_HEX = '3325023a5e4e0069558c5bd9eb7eca78b4f4c7711b9b231d9263a8edc33bc510'; -const POP_MNEMONIC_A = 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about'; +const POP_PASSPHRASE = 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about'; -// Pinned vectors from noble-curves reference implementation -const EXPECTED_PK_HEX = 'a7e75af9dd4d868a41ad2f5a5b021d653e31084261724fb40ae2f1b1c31c778d3b9464502d599cf6720723ec5c68b59d'; -const EXPECTED_POP_HEX = '878ad02e1f215d40722bd77a0148adb8dfaad4514157600a0a926cfc58589fa4e79d3d4d579cc4149237b8100efdcff110dd2a251c52543539d499c8f24b142da66d1dc19ec44b3d9c3f71112b2705e5557f932a36bd9cd9b3544ab0d9e6a677'; +// Pinned hex from the TypeScript SDK noble-curves reference (ProofOfPossession.test.ts) +const EXPECTED_PK_A = 'a7e75af9dd4d868a41ad2f5a5b021d653e31084261724fb40ae2f1b1c31c778d3b9464502d599cf6720723ec5c68b59d'; +const EXPECTED_POP_A = '878ad02e1f215d40722bd77a0148adb8dfaad4514157600a0a926cfc58589fa4e79d3d4d579cc4149237b8100efdcff110dd2a251c52543539d499c8f24b142da66d1dc19ec44b3d9c3f71112b2705e5557f932a36bd9cd9b3544ab0d9e6a677'; const EXPECTED_MNEMONIC_PK = 'b7e5e1ea87f5be0ac7d97402a73002d302a3672f58aacb443cc5456190eac50f439f61b73556209de7624dfb535459e8'; // ------------------------------------------------------------------------- -// G1 public key derivation +// buildProofOfPossession // ------------------------------------------------------------------------- -it('produces a 96-char hex G1 public key from a private key', function () { - $skBytes = hex2bin(POP_SK_A_HEX); - $pk = ProofOfPossession::privateKeyToPublicKey($skBytes); - expect(strlen($pk))->toBe(96); // 48 bytes compressed G1 +it('returns a 48-byte pk and 96-byte pop', function () { + $result = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_A_HEX)); + // hex strings: 96 chars = 48 bytes, 192 chars = 96 bytes + expect(strlen($result['pk']))->toBe(96) + ->and(strlen($result['pop']))->toBe(192); }); -it('matches the pinned G1 pk for SK_A', function () { - $pk = ProofOfPossession::privateKeyToPublicKey(hex2bin(POP_SK_A_HEX)); - expect($pk)->toBe(EXPECTED_PK_HEX); +it('is deterministic for the same secret key', function () { + $a = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_A_HEX)); + $b = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_A_HEX)); + expect($a['pk'])->toBe($b['pk']) + ->and($a['pop'])->toBe($b['pop']); }); -it('produces a 96-char pk from a mnemonic', function () { - $pk = ProofOfPossession::deriveBlsPublicKey(POP_MNEMONIC_A); - expect(strlen($pk))->toBe(96); +it('produces different pk and pop for different secret keys', function () { + $a = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_A_HEX)); + $b = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_B_HEX)); + expect($a['pk'])->not->toBe($b['pk']) + ->and($a['pop'])->not->toBe($b['pop']); }); -it('matches the pinned pk for the canonical mnemonic', function () { - $pk = ProofOfPossession::deriveBlsPublicKey(POP_MNEMONIC_A); - expect($pk)->toBe(EXPECTED_MNEMONIC_PK); +it('pk matches deriveBlsPublicKey for the same secret key', function () { + $result = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_A_HEX)); + $expected = ProofOfPossession::privateKeyToPublicKey(hex2bin(POP_SK_A_HEX)); + expect($result['pk'])->toBe($expected); }); -// ------------------------------------------------------------------------- -// Proof of Possession -// ------------------------------------------------------------------------- - -it('buildProofOfPossession returns 96-char pk and 192-char pop', function () { +it('matches the pinned test vector for SK_A', function () { $result = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_A_HEX)); - expect(strlen($result['pk']))->toBe(96); - expect(strlen($result['pop']))->toBe(192); // 96 bytes compressed G2 + expect($result['pk'])->toBe(EXPECTED_PK_A) + ->and($result['pop'])->toBe(EXPECTED_POP_A); }); -it('pk in buildProofOfPossession matches deriveBlsPublicKey', function () { - $result = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_A_HEX)); - $pk = ProofOfPossession::privateKeyToPublicKey(hex2bin(POP_SK_A_HEX)); - expect($result['pk'])->toBe($pk); +it('throws on a secret key of wrong length', function () { + expect(fn() => ProofOfPossession::buildProofOfPossession(str_repeat("\x00", 31)))->toThrow(\InvalidArgumentException::class) + ->and(fn() => ProofOfPossession::buildProofOfPossession(str_repeat("\x00", 33)))->toThrow(\InvalidArgumentException::class) + ->and(fn() => ProofOfPossession::buildProofOfPossession(''))->toThrow(\InvalidArgumentException::class); }); -it('matches the pinned pk and pop for SK_A', function () { - $result = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_A_HEX)); - expect($result['pk'])->toBe(EXPECTED_PK_HEX); - expect($result['pop'])->toBe(EXPECTED_POP_HEX); +it('throws on the zero secret key', function () { + // sk = 0 means pk = identity → invalid per BLS spec + expect(fn() => ProofOfPossession::buildProofOfPossession(str_repeat("\x00", 32)))->toThrow(\InvalidArgumentException::class); }); -it('is deterministic for the same secret key', function () { - $a = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_A_HEX)); - $b = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_A_HEX)); - expect($a['pk'])->toBe($b['pk']); - expect($a['pop'])->toBe($b['pop']); -}); +// ------------------------------------------------------------------------- +// deriveBlsPublicKey +// ------------------------------------------------------------------------- -it('produces different pk and pop for different secret keys', function () { - $a = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_A_HEX)); - $b = ProofOfPossession::buildProofOfPossession(hex2bin(POP_SK_B_HEX)); - expect($a['pk'])->not->toBe($b['pk']); - expect($a['pop'])->not->toBe($b['pop']); +it('returns a 96-character hex string (48-byte G1)', function () { + $pk = ProofOfPossession::deriveBlsPublicKey(POP_PASSPHRASE); + expect(strlen($pk))->toBe(96); }); -it('fromMnemonic is deterministic', function () { - $a = ProofOfPossession::fromMnemonic(POP_MNEMONIC_A); - $b = ProofOfPossession::fromMnemonic(POP_MNEMONIC_A); - expect($a['pk'])->toBe($b['pk']); - expect($a['pop'])->toBe($b['pop']); +it('is deterministic for the same passphrase', function () { + $pk = ProofOfPossession::deriveBlsPublicKey(POP_PASSPHRASE); + expect($pk)->toBe(EXPECTED_MNEMONIC_PK); }); From 6b704ff9aa17a2f63117df3888c1148df85c4d11 Mon Sep 17 00:00:00 2001 From: Shahin Safaraliyev Date: Thu, 11 Jun 2026 20:38:25 +0400 Subject: [PATCH 07/27] feat: add BLS implementation --- tests/Unit/BLS/EIP2333Test.php | 33 +++++------------------- tests/Unit/BLS/ProofOfPossessionTest.php | 14 ++++++---- 2 files changed, 15 insertions(+), 32 deletions(-) diff --git a/tests/Unit/BLS/EIP2333Test.php b/tests/Unit/BLS/EIP2333Test.php index f6fa0505..0dd8ffc8 100644 --- a/tests/Unit/BLS/EIP2333Test.php +++ b/tests/Unit/BLS/EIP2333Test.php @@ -4,36 +4,15 @@ use ArkEcosystem\Crypto\BLS\EIP2333; -// Known mnemonic and expected BLS private key from the TypeScript SDK tests -const EIP2333_MNEMONIC = 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about'; -// Expected public key (G1) hex for the derived private key → confirmed by TypeScript SDK -const DERIVED_PK_HEX = 'b7e5e1ea87f5be0ac7d97402a73002d302a3672f58aacb443cc5456190eac50f439f61b73556209de7624dfb535459e8'; +const EIP2333_MNEMONIC = 'peasant list dentist thrive guide uncle announce city energy artist basket divert stool glow eternal stove length gun action slice type labor aunt unlock'; +const EIP2333_EXPECTED_SK = '1e8241be151e557aa1de77c3732cd256461d5a1b946e044e3119efbd14e68e45'; -it('derives a 64-byte BIP39 seed from mnemonic', function () { - $seed = EIP2333::mnemonicToSeed(EIP2333_MNEMONIC); - expect(strlen($seed))->toBe(64); +it('derives the correct private key from the canonical mnemonic', function () { + $sk = EIP2333::deriveBlsPrivateKey(EIP2333_MNEMONIC); + expect(bin2hex($sk))->toBe(EIP2333_EXPECTED_SK); }); -it('derives a 32-byte master key from seed', function () { - $seed = EIP2333::mnemonicToSeed(EIP2333_MNEMONIC); - $master = EIP2333::deriveMaster($seed); - expect(strlen($master))->toBe(32); -}); - -it('derives a 32-byte child key at index 0', function () { - $seed = EIP2333::mnemonicToSeed(EIP2333_MNEMONIC); - $master = EIP2333::deriveMaster($seed); - $child = EIP2333::deriveChild($master, 0); - expect(strlen($child))->toBe(32); -}); - -it('is deterministic for the same mnemonic', function () { - $a = EIP2333::deriveBlsPrivateKey(EIP2333_MNEMONIC); - $b = EIP2333::deriveBlsPrivateKey(EIP2333_MNEMONIC); - expect(bin2hex($a))->toBe(bin2hex($b)); -}); - -it('produces different keys for different mnemonics', function () { +it('produces different private keys for different mnemonics', function () { $a = EIP2333::deriveBlsPrivateKey(EIP2333_MNEMONIC); $b = EIP2333::deriveBlsPrivateKey('zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo wrong'); expect(bin2hex($a))->not->toBe(bin2hex($b)); diff --git a/tests/Unit/BLS/ProofOfPossessionTest.php b/tests/Unit/BLS/ProofOfPossessionTest.php index 0d623f35..1555183b 100644 --- a/tests/Unit/BLS/ProofOfPossessionTest.php +++ b/tests/Unit/BLS/ProofOfPossessionTest.php @@ -4,15 +4,14 @@ use ArkEcosystem\Crypto\BLS\ProofOfPossession; -// Test vectors matching the TypeScript SDK ProofOfPossession.test.ts exactly const POP_SK_A_HEX = '67d53f170b908cabb9eb326c3c337762d59289a8fec79f7bc9254b584b73265c'; const POP_SK_B_HEX = '3325023a5e4e0069558c5bd9eb7eca78b4f4c7711b9b231d9263a8edc33bc510'; -const POP_PASSPHRASE = 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about'; +const POP_PASSPHRASE = 'peasant list dentist thrive guide uncle announce city energy artist basket divert stool glow eternal stove length gun action slice type labor aunt unlock'; -// Pinned hex from the TypeScript SDK noble-curves reference (ProofOfPossession.test.ts) const EXPECTED_PK_A = 'a7e75af9dd4d868a41ad2f5a5b021d653e31084261724fb40ae2f1b1c31c778d3b9464502d599cf6720723ec5c68b59d'; const EXPECTED_POP_A = '878ad02e1f215d40722bd77a0148adb8dfaad4514157600a0a926cfc58589fa4e79d3d4d579cc4149237b8100efdcff110dd2a251c52543539d499c8f24b142da66d1dc19ec44b3d9c3f71112b2705e5557f932a36bd9cd9b3544ab0d9e6a677'; -const EXPECTED_MNEMONIC_PK = 'b7e5e1ea87f5be0ac7d97402a73002d302a3672f58aacb443cc5456190eac50f439f61b73556209de7624dfb535459e8'; +const EXPECTED_MNEMONIC_PK = 'a3b93d0149c9e0ee8c2e734b641d313040b8901fcddbf61a018ae2a4633da49f9b169c0bb6653dee4cdd7dac2631a935'; +const EXPECTED_MNEMONIC_POP = 'b72a4b4601608029564c691c742bac7a089c355e9e4e3c60469bc429ca24a24f1a568377df210755c307939065ae8954125c823fea74ee3fe5fa9ecd5dfd4a33a540d1835acb086b968ca7b543d3258bb2afb7911fb1d2e560004d6e280c043c'; // ------------------------------------------------------------------------- // buildProofOfPossession @@ -58,7 +57,6 @@ }); it('throws on the zero secret key', function () { - // sk = 0 means pk = identity → invalid per BLS spec expect(fn() => ProofOfPossession::buildProofOfPossession(str_repeat("\x00", 32)))->toThrow(\InvalidArgumentException::class); }); @@ -75,3 +73,9 @@ $pk = ProofOfPossession::deriveBlsPublicKey(POP_PASSPHRASE); expect($pk)->toBe(EXPECTED_MNEMONIC_PK); }); + +it('matches the pinned pop for the same passphrase', function () { + $result = ProofOfPossession::fromMnemonic(POP_PASSPHRASE); + expect($result['pk'])->toBe(EXPECTED_MNEMONIC_PK) + ->and($result['pop'])->toBe(EXPECTED_MNEMONIC_POP); +}); From 57df336644581eff5d41e9d3e4e8f73f3337e61a Mon Sep 17 00:00:00 2001 From: Shahin Safaraliyev Date: Thu, 11 Jun 2026 20:58:38 +0400 Subject: [PATCH 08/27] feat: add BLS implementation --- composer.json | 3 +- src/BLS/HashToCurve/G2HashToCurve.php | 72 +++++++++++++++++---------- 2 files changed, 48 insertions(+), 27 deletions(-) diff --git a/composer.json b/composer.json index b5a09cb7..986d66b2 100755 --- a/composer.json +++ b/composer.json @@ -19,7 +19,8 @@ "require": { "php": "^8.2", "protonlabs/bitcoin": "^1.0", - "simplito/elliptic-php": "^1.0" + "simplito/elliptic-php": "^1.0", + "ext-gmp": "*" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.59", diff --git a/src/BLS/HashToCurve/G2HashToCurve.php b/src/BLS/HashToCurve/G2HashToCurve.php index b46e2e23..4b20382a 100644 --- a/src/BLS/HashToCurve/G2HashToCurve.php +++ b/src/BLS/HashToCurve/G2HashToCurve.php @@ -27,39 +27,59 @@ final class G2HashToCurve // Isogeny map G2 coefficients (ascending order k_{?,0} to k_{?,d}) // Maps the SWU output on E' to the actual BLS12-381 G2 curve E. private const ISO_XN = [ - ['5c759507e8e333ebb5b7a9a47d7ed8532c52d39fd3a042a88b58423c50ae15d5c2638e343d9c71c6238aaaaaaaa97d6', - '5c759507e8e333ebb5b7a9a47d7ed8532c52d39fd3a042a88b58423c50ae15d5c2638e343d9c71c6238aaaaaaaa97d6'], - ['0', - '11560bf17baa99bc32126fced787c88f984f87adf7ae0c7f9a208c6b4f20a4181472aaa9cb8d555526a9ffffffffc71a'], - ['11560bf17baa99bc32126fced787c88f984f87adf7ae0c7f9a208c6b4f20a4181472aaa9cb8d555526a9ffffffffc71e', - '8ab05f8bdd54cde190937e76bc3e447cc27c3d6fbd7063fcd104635a790520c0a395554e5c6aaaa9354ffffffffe38d'], - ['171d6541fa38ccfaed6dea691f5fb614cb14b4e7f4e810aa22d6108f142b85757098e38d0f671c7188e2aaaaaaaa5ed1', - '0'], + [ + '5c759507e8e333ebb5b7a9a47d7ed8532c52d39fd3a042a88b58423c50ae15d5c2638e343d9c71c6238aaaaaaaa97d6', + '5c759507e8e333ebb5b7a9a47d7ed8532c52d39fd3a042a88b58423c50ae15d5c2638e343d9c71c6238aaaaaaaa97d6' + ], + [ + '0', + '11560bf17baa99bc32126fced787c88f984f87adf7ae0c7f9a208c6b4f20a4181472aaa9cb8d555526a9ffffffffc71a' + ], + [ + '11560bf17baa99bc32126fced787c88f984f87adf7ae0c7f9a208c6b4f20a4181472aaa9cb8d555526a9ffffffffc71e', + '8ab05f8bdd54cde190937e76bc3e447cc27c3d6fbd7063fcd104635a790520c0a395554e5c6aaaa9354ffffffffe38d' + ], + [ + '171d6541fa38ccfaed6dea691f5fb614cb14b4e7f4e810aa22d6108f142b85757098e38d0f671c7188e2aaaaaaaa5ed1', + '0' + ], ]; private const ISO_XD = [ - ['0', - '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaa63'], - ['c', - '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaa9f'], + ['0', '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaa63'], + ['c', '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaa9f'], ['1', '0'], // leading 1 (monic) ]; private const ISO_YN = [ - ['1530477c7ab4113b59a4c18b076d11930f7da5d4a07f649bf54439d87d27e500fc8c25ebf8c92f6812cfc71c71c6d706', - '1530477c7ab4113b59a4c18b076d11930f7da5d4a07f649bf54439d87d27e500fc8c25ebf8c92f6812cfc71c71c6d706'], - ['0', - '5c759507e8e333ebb5b7a9a47d7ed8532c52d39fd3a042a88b58423c50ae15d5c2638e343d9c71c6238aaaaaaaa97be'], - ['11560bf17baa99bc32126fced787c88f984f87adf7ae0c7f9a208c6b4f20a4181472aaa9cb8d555526a9ffffffffc71c', - '8ab05f8bdd54cde190937e76bc3e447cc27c3d6fbd7063fcd104635a790520c0a395554e5c6aaaa9354ffffffffe38f'], - ['124c9ad43b6cf79bfbf7043de3811ad0761b0f37a1e26286b0e977c69aa274524e79097a56dc4bd9e1b371c71c718b10', - '0'], + [ + '1530477c7ab4113b59a4c18b076d11930f7da5d4a07f649bf54439d87d27e500fc8c25ebf8c92f6812cfc71c71c6d706', + '1530477c7ab4113b59a4c18b076d11930f7da5d4a07f649bf54439d87d27e500fc8c25ebf8c92f6812cfc71c71c6d706' + ], + [ + '0', + '5c759507e8e333ebb5b7a9a47d7ed8532c52d39fd3a042a88b58423c50ae15d5c2638e343d9c71c6238aaaaaaaa97be' + ], + [ + '11560bf17baa99bc32126fced787c88f984f87adf7ae0c7f9a208c6b4f20a4181472aaa9cb8d555526a9ffffffffc71c', + '8ab05f8bdd54cde190937e76bc3e447cc27c3d6fbd7063fcd104635a790520c0a395554e5c6aaaa9354ffffffffe38f' + ], + [ + '124c9ad43b6cf79bfbf7043de3811ad0761b0f37a1e26286b0e977c69aa274524e79097a56dc4bd9e1b371c71c718b10', + '0' + ], ]; private const ISO_YD = [ - ['1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffa8fb', - '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffa8fb'], - ['0', - '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffa9d3'], - ['12', - '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaa99'], + [ + '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffa8fb', + '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffa8fb' + ], + [ + '0', + '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffa9d3' + ], + [ + '12', + '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaa99' + ], ['1', '0'], // leading 1 (monic) ]; From ca56d01b1fd7168caa7f200041d1b812f04e4792 Mon Sep 17 00:00:00 2001 From: Shahin Safaraliyev Date: Thu, 11 Jun 2026 21:00:08 +0400 Subject: [PATCH 09/27] feat: add BLS implementation --- .php-cs-fixer.cache | 2 +- src/BLS/Curves/G1.php | 9 +- src/BLS/Curves/G2.php | 152 +++++++++++++---------- src/BLS/EIP2333.php | 7 +- src/BLS/Fields/Fp.php | 15 ++- src/BLS/Fields/Fp2.php | 19 ++- src/BLS/HashToCurve/G2HashToCurve.php | 84 +++++++------ src/BLS/ProofOfPossession.php | 6 +- tests/Unit/BLS/ProofOfPossessionTest.php | 12 +- 9 files changed, 184 insertions(+), 122 deletions(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 0f6e3735..d5f6c8ed 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.3.6","version":"3.76.0:v3.76.0#0e3c484cef0ae9314b0f85986a36296087432c40","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"hashes":{"src\/Helpers.php":"5736c281d8bb805826442682be38c1dc","src\/Identities\/PublicKey.php":"8cbe249d218989c54dde4ceb8eefc8e1","src\/Identities\/PrivateKey.php":"7259bbea2e5da198ee87bcde45661666","src\/Identities\/Address.php":"17da781bf1b9c717670918fecce1bc7b","src\/Identities\/WIF.php":"09b3bf1f9077384e6e6c9b6661ca9152","src\/Networks\/Devnet.php":"4f0097e6ec4d87f8c72f8bafeaee8892","src\/Networks\/AbstractNetwork.php":"c774f58977a6f2ed3fbdba69d2489e4e","src\/Networks\/Testnet.php":"5a1b266a1c176bcaf9a9ec6068c53b33","src\/Networks\/Mainnet.php":"df2645844a8c6dfe8f99a471dc1d85f7","src\/Enums\/Fees.php":"ac38a4162fea543d56563c975360270a","src\/Enums\/Types.php":"4d5534dd1a0bbcf26c2f20dd4e7e0c9b","src\/Enums\/TypeGroup.php":"2df34e8073d807a26f63cb5a92aa4466","src\/Utils\/Slot.php":"415aefcc91d5ee4e5fb0ad58bb4c2242","src\/Utils\/Message.php":"9805c970ca9353cab3c5385055c4a6ae","src\/Transactions\/Builder\/MultiSignatureRegistrationBuilder.php":"4fc820ea18d3844a7545bd182697842e","src\/Transactions\/Builder\/HtlcRefundBuilder.php":"172069a2c1744c7e1c26fc3d4506be33","src\/Transactions\/Builder\/SecondSignatureRegistrationBuilder.php":"3e00a57bac43eb656a092a649740251f","src\/Transactions\/Builder\/DelegateRegistrationBuilder.php":"94b1cb6bd077a5b9771be530635ea1e2","src\/Transactions\/Builder\/HtlcLockBuilder.php":"f9dff632706b6c63f3c1aade509c6301","src\/Transactions\/Builder\/DelegateResignationBuilder.php":"f0c849690575a8d158519d6319805e25","src\/Transactions\/Builder\/TransferBuilder.php":"d62a16edd17aae91e9cd5c20b271ea83","src\/Transactions\/Builder\/HtlcClaimBuilder.php":"26fa61beaf17a5dc5aa17270f48d02cf","src\/Transactions\/Builder\/IPFSBuilder.php":"c07a3cb80fcb3e23a38fab812d4516f6","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"b8c23d843ac1abfdd67f328487482dbc","src\/Transactions\/Builder\/MultiPaymentBuilder.php":"3befa6a0db1ba663a33f0934a2e3ed68","src\/Transactions\/Builder\/VoteBuilder.php":"256a00c4888c2e04a6fa46b8305b034b","src\/Transactions\/Serializer.php":"5663addddc99a09e0e60a8c2834872a2","src\/Transactions\/Types\/Vote.php":"9932a1b40eca6b47cd67316f4f0b3aa9","src\/Transactions\/Types\/DelegateRegistration.php":"7d02c0b996e22c4c480b4bd704f54815","src\/Transactions\/Types\/Transaction.php":"80534e6f6d28c853d5f6ee16bf353189","src\/Transactions\/Types\/Transfer.php":"fac76b00748e5b83819bfce8f0520a39","src\/Transactions\/Types\/HtlcRefund.php":"1a7c6aa917c84da527e8ba679342dd14","src\/Transactions\/Types\/DelegateResignation.php":"43d3b2784c388367154ea03b204eb9de","src\/Transactions\/Types\/HtlcClaim.php":"ca80737b8eb8de8af5b11a8f2584da45","src\/Transactions\/Types\/MultiPayment.php":"dd7c11fd4a726a6f2e04890622c797ce","src\/Transactions\/Types\/IPFS.php":"289389ba4072e543c4438cb95816d429","src\/Transactions\/Types\/MultiSignatureRegistration.php":"c314aaa3f8add62a8abbbec9fe92ce7e","src\/Transactions\/Types\/SecondSignatureRegistration.php":"f9808925fe8103587d9d2c357ee5c5e8","src\/Transactions\/Types\/HtlcLock.php":"cce0b1037c17a6a5ca75fae86831b3b1","src\/Transactions\/Deserializer.php":"1badd55a247238e0ba15fd7613abe668","src\/Configuration\/Fee.php":"009bd25096d57c05b8f76a42e3b1c1ed","src\/Configuration\/Network.php":"db39fa961d1f67dde1127324ebc29a88","src\/ByteBuffer\/ByteOrder.php":"c183930b74c3f6216fce6af0ad547412","src\/ByteBuffer\/Concerns\/Readable.php":"1703e1781f4882cc7427ed5e3eab1b90","src\/ByteBuffer\/Concerns\/Positionable.php":"8fe18d603bcba8ad7ec525c5fea9122a","src\/ByteBuffer\/Concerns\/Transformable.php":"4b9ded9d8a5b7005f3cbbace02315415","src\/ByteBuffer\/Concerns\/Offsetable.php":"784a6f9b0aa7c7624d455da260480541","src\/ByteBuffer\/Concerns\/Writeable.php":"d809e2408af8e181ef5c3d3101fde0ad","src\/ByteBuffer\/Concerns\/Sizeable.php":"81c7fbf368a593bb92bf4c9f58a9f72d","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"4f08096933dcd65121bab249422f8d4c","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"e7bd39863ddb227ec17d44ef487579d5","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"936ce2ebb44b67b39aeb2706f77b197c","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"4a06210be32a336cb06a642a2f772c26","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"45863cd3a3048e5d8e6523d3d7cffc07","src\/ByteBuffer\/Concerns\/Initialisable.php":"1aa3c826684e71339aa6297582c7fcc3","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"82da46facba54107aceb630852447893","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"bbfe09b67301bb9b8ee003f7b153322b","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"d3c2432f4a3584750387451be2b069d0","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"e9e2946752da1ed0b71351028deb7eea","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"cb71d199dafd21c47c2aecb3a6d9b4b5","src\/ByteBuffer\/ByteBuffer.php":"460fdd2bf51bacb8d5df479af9c3bac7","src\/ByteBuffer\/LengthMap.php":"d992e88d544bfcd6d169a1632f3e3d05","src\/Binary\/Integer\/Reader.php":"fc382f0d5cb346069e87bdf57af42dd4","src\/Binary\/Integer\/Writer.php":"c95566b5f15e7440a357a400f4957557","src\/Binary\/Hex\/Reader.php":"84c560f1a4210dcc04cf76e61b741681","src\/Binary\/Hex\/Writer.php":"1fda8dc1fda5769e71492375945421a6","src\/Binary\/UnsignedInteger\/Reader.php":"45f7182e4f5983c886ee8a589175f83a","src\/Binary\/UnsignedInteger\/Writer.php":"352dd6fbf6d6e6a96773bda8dbdc15b1","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"c2efefef99eefa7cf2c67649f97b7faf","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"484fea469ac07931d69f3c53e1fd09aa","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"f53059caa2118b5f6a4960afbbcf2d73","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"6d3c042771c2fd307b216d45532a73a3","src\/Binary\/Buffer\/Writer\/Buffer.php":"165a089ce688104a8db5941cf9ff6558","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"02f2f4774316d2484fb2b57feb086ea1","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3ee8fd0133cfbcaf15bd9c28a37a5be9","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"581d0559ed948f5feab6967c074892c0","src\/Binary\/Buffer\/Reader\/Buffer.php":"927b99c8047ccb9061e8193f8f144dc7","tests\/Unit\/Identities\/PublicKeyTest.php":"4cfded5f1e35c1083fed2ad7efeea615","tests\/Unit\/Identities\/PrivateKeyTest.php":"a1f81695d6331d223ac6a3312a00b193","tests\/Unit\/Identities\/AddressTest.php":"d7d375a29f37a4b9b772c75684c74b48","tests\/Unit\/Identities\/WIFTest.php":"b611511584dd0bfba84f113295365508","tests\/Unit\/Networks\/TestnetTest.php":"a6984eb7fa87bc6cf693bc241188e698","tests\/Unit\/Networks\/MainnetTest.php":"3307b4e256af4b9fd66437a5ebd0e8a2","tests\/Unit\/Networks\/NetworkTestCase.php":"f529bc550cd6b9d68f1287d0181ae150","tests\/Unit\/Networks\/DevnetTest.php":"17996bb8318d23a417339e72f330c3bd","tests\/Unit\/Utils\/SlotTest.php":"e2e6bf33055513aeaff285e4904099a4","tests\/Unit\/Utils\/MessageTest.php":"a9a261798733199bf3c7f9f813181875","tests\/Unit\/Transactions\/Builder\/DelegateRegistrationTest.php":"b4c0f10f2b10a91728e8352790f8f538","tests\/Unit\/Transactions\/Builder\/HtlcRefundTest.php":"e1113d28fa608fb7ff0ad4447a8b2f20","tests\/Unit\/Transactions\/Builder\/VoteTest.php":"db91e16f8987dd6c050471bd0704523a","tests\/Unit\/Transactions\/Builder\/TransferTest.php":"70cdd71c9cbb57bfb51c3e4a1bd74e86","tests\/Unit\/Transactions\/Builder\/IPFSTest.php":"310d8ef8251e14a9a6498b03cdd0d912","tests\/Unit\/Transactions\/Builder\/HtlcClaimTest.php":"619401dcbbee5dc4034429824bec865c","tests\/Unit\/Transactions\/Builder\/MultiPaymentTest.php":"968a69c19596fbbba3f07e022c44ba12","tests\/Unit\/Transactions\/Builder\/HtlcLockTest.php":"3c2c4fd37a0d14b006833fd1ac62663d","tests\/Unit\/Transactions\/Builder\/SecondSignatureRegistrationTest.php":"55f2fc9a05b4417820c3574aa828fdb3","tests\/Unit\/Transactions\/Builder\/MultiSignatureRegistrationTest.php":"e5b48524e7e97683ec8a1f7c9b43ba8e","tests\/Unit\/Transactions\/Builder\/DelegateResignationTest.php":"527f6988349a098d4fa6b92c78570954","tests\/Unit\/Transactions\/TransactionTest.php":"ac2e2e1de31db779f543a7d3f257822c","tests\/Unit\/Transactions\/Deserializers\/DelegateRegistrationTest.php":"9b0ce921e9b1c575f715ec028c5aec42","tests\/Unit\/Transactions\/Deserializers\/HtlcRefundTest.php":"22afd8ec2418d0406e4f42ee0e431b42","tests\/Unit\/Transactions\/Deserializers\/VoteTest.php":"fc61b9e98d001ee47dc6d61e87dddc1b","tests\/Unit\/Transactions\/Deserializers\/TransferTest.php":"0a7038846d256444b667fe80381698e0","tests\/Unit\/Transactions\/Deserializers\/IPFSTest.php":"53e714f862c3256e29660ab97ec6bf94","tests\/Unit\/Transactions\/Deserializers\/HtlcClaimTest.php":"30cacd4874af19e6026bafb57ee78b0a","tests\/Unit\/Transactions\/Deserializers\/MultiPaymentTest.php":"73b1d1ce139b3efac75814e4d13fedc0","tests\/Unit\/Transactions\/Deserializers\/HtlcLockTest.php":"cc70be6e68236f806f89b93bac7696ca","tests\/Unit\/Transactions\/Deserializers\/SecondSignatureRegistrationTest.php":"dfff4015d30f5e785a1933eb3475818d","tests\/Unit\/Transactions\/Deserializers\/MultiSignatureRegistrationTest.php":"1eb49e69bccee286f928c156633711ab","tests\/Unit\/Transactions\/Deserializers\/DelegateResignationTest.php":"8be75e4b6a9dd2072c7862dae1116b8e","tests\/Unit\/Transactions\/Serializers\/DelegateRegistrationTest.php":"04d9dc16c57e35bed0f98cd305302e3b","tests\/Unit\/Transactions\/Serializers\/HtlcRefundTest.php":"7af106a7fd38c4cdc8c57ecf6e03ab9c","tests\/Unit\/Transactions\/Serializers\/VoteTest.php":"632138bad64d4a325a95447a133bf3ca","tests\/Unit\/Transactions\/Serializers\/TransferTest.php":"bbf565785bd31035aac40b0c61bb4d6a","tests\/Unit\/Transactions\/Serializers\/IPFSTest.php":"9cbab01a748f824e2fa66a996268cf2e","tests\/Unit\/Transactions\/Serializers\/HtlcClaimTest.php":"69759df1d1377a02216573ac4e0c7694","tests\/Unit\/Transactions\/Serializers\/MultiPaymentTest.php":"04c22b03bffce8c2a713880517b0b1ec","tests\/Unit\/Transactions\/Serializers\/HtlcLockTest.php":"62d7af16064c66ced72b535ead234a8f","tests\/Unit\/Transactions\/Serializers\/SecondSignatureRegistrationTest.php":"7ffcc9bcfdf6ccde05c8d08b81b7273f","tests\/Unit\/Transactions\/Serializers\/MultiSignatureRegistrationTest.php":"d33995e48fe07147304a582454df446e","tests\/Unit\/Transactions\/Serializers\/DelegateResignationTest.php":"17dcdb013d1a6b2d0dc02d077ec101e2","tests\/Unit\/Configuration\/NetworkTest.php":"302b258b1f3ae05e0216d25929b69ea7","tests\/Unit\/Configuration\/FeeTest.php":"ce7f567b72dd0126683277b243fa9fc3","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"28470f16ddf35d79384b866973652813","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"784101c1b5986dcdd939d47bc966684d","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"e6f2608e0921d2b2c25e3796e0e0a920","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"4280210224bfe01b431348823fd37902","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"4a0b5b96e2a1e4b849eebf1f3c8781c8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"8617547d4052341646e500679de73dd8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"548c09489f87edce63066c196b4c35f2","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"8bbe9a2d00b2c16e6f07d526ec86954e","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"69e5e34cf122bfa36a64602fd9df0127","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"044f6a5480ac976533db063f28b3b0e3","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"5432d25fb0292b9e637f6e04af104745","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"ec65fb8a8be71266fb0191449ae24173","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"21babc31150ab55f010c0709328bf92d","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"09a667b97f0b5625bd2a267ae06b35ff","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"f3724a1f16a007a2d1a59001556d7cad","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"5951a16b75f5be22726c8f7db5bc9e17","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"e2eae23b9c271db3191c07b1025640b1","tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Concerns\/Fixtures.php":"a1cbc1ecf6e31bd07fdac1c230d7aa6f","tests\/Concerns\/Serialize.php":"134128506ad4e0f69949f773c1df3a70","tests\/Concerns\/Deserialize.php":"68b8f4b8877221e5052c9dd5f011aaa9","tests\/Analysis\/AnalysisTest.php":"a9d0b7406e5a6894ce689229a4b939ff","tests\/TestCase.php":"8ad8b9b7b084dc0d2c28a247ac4a7988"}} \ No newline at end of file +{"php":"8.3.31","version":"3.76.0:v3.76.0#0e3c484cef0ae9314b0f85986a36296087432c40","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"hashes":{"tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Analysis\/AnalysisTest.php":"a9d0b7406e5a6894ce689229a4b939ff","tests\/Concerns\/Serialize.php":"134128506ad4e0f69949f773c1df3a70","tests\/Concerns\/Fixtures.php":"a1cbc1ecf6e31bd07fdac1c230d7aa6f","tests\/Concerns\/Deserialize.php":"68b8f4b8877221e5052c9dd5f011aaa9","tests\/TestCase.php":"8ad8b9b7b084dc0d2c28a247ac4a7988","tests\/Unit\/Configuration\/FeeTest.php":"ce7f567b72dd0126683277b243fa9fc3","tests\/Unit\/Configuration\/NetworkTest.php":"302b258b1f3ae05e0216d25929b69ea7","tests\/Unit\/Identities\/PrivateKeyTest.php":"a1f81695d6331d223ac6a3312a00b193","tests\/Unit\/Identities\/AddressTest.php":"d7d375a29f37a4b9b772c75684c74b48","tests\/Unit\/Identities\/WIFTest.php":"b611511584dd0bfba84f113295365508","tests\/Unit\/Identities\/PublicKeyTest.php":"4cfded5f1e35c1083fed2ad7efeea615","tests\/Unit\/BLS\/EIP2333Test.php":"a7cbb6d601453304110e6e429ba9488b","tests\/Unit\/BLS\/ProofOfPossessionTest.php":"5a63ee9e7e557287cc11749e48b8eced","tests\/Unit\/Utils\/SlotTest.php":"e2e6bf33055513aeaff285e4904099a4","tests\/Unit\/Utils\/MessageTest.php":"a9a261798733199bf3c7f9f813181875","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"5951a16b75f5be22726c8f7db5bc9e17","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"4280210224bfe01b431348823fd37902","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"8617547d4052341646e500679de73dd8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"8bbe9a2d00b2c16e6f07d526ec86954e","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"4a0b5b96e2a1e4b849eebf1f3c8781c8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"548c09489f87edce63066c196b4c35f2","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"09a667b97f0b5625bd2a267ae06b35ff","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"784101c1b5986dcdd939d47bc966684d","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"f3724a1f16a007a2d1a59001556d7cad","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"69e5e34cf122bfa36a64602fd9df0127","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"5432d25fb0292b9e637f6e04af104745","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"21babc31150ab55f010c0709328bf92d","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"044f6a5480ac976533db063f28b3b0e3","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"ec65fb8a8be71266fb0191449ae24173","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"28470f16ddf35d79384b866973652813","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"e6f2608e0921d2b2c25e3796e0e0a920","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"e2eae23b9c271db3191c07b1025640b1","tests\/Unit\/Transactions\/Builder\/MultiPaymentTest.php":"968a69c19596fbbba3f07e022c44ba12","tests\/Unit\/Transactions\/Builder\/HtlcLockTest.php":"3c2c4fd37a0d14b006833fd1ac62663d","tests\/Unit\/Transactions\/Builder\/VoteTest.php":"db91e16f8987dd6c050471bd0704523a","tests\/Unit\/Transactions\/Builder\/SecondSignatureRegistrationTest.php":"55f2fc9a05b4417820c3574aa828fdb3","tests\/Unit\/Transactions\/Builder\/DelegateRegistrationTest.php":"b4c0f10f2b10a91728e8352790f8f538","tests\/Unit\/Transactions\/Builder\/HtlcClaimTest.php":"619401dcbbee5dc4034429824bec865c","tests\/Unit\/Transactions\/Builder\/DelegateResignationTest.php":"527f6988349a098d4fa6b92c78570954","tests\/Unit\/Transactions\/Builder\/TransferTest.php":"70cdd71c9cbb57bfb51c3e4a1bd74e86","tests\/Unit\/Transactions\/Builder\/MultiSignatureRegistrationTest.php":"e5b48524e7e97683ec8a1f7c9b43ba8e","tests\/Unit\/Transactions\/Builder\/HtlcRefundTest.php":"e1113d28fa608fb7ff0ad4447a8b2f20","tests\/Unit\/Transactions\/Builder\/IPFSTest.php":"310d8ef8251e14a9a6498b03cdd0d912","tests\/Unit\/Transactions\/Serializers\/MultiPaymentTest.php":"04c22b03bffce8c2a713880517b0b1ec","tests\/Unit\/Transactions\/Serializers\/HtlcLockTest.php":"62d7af16064c66ced72b535ead234a8f","tests\/Unit\/Transactions\/Serializers\/VoteTest.php":"632138bad64d4a325a95447a133bf3ca","tests\/Unit\/Transactions\/Serializers\/SecondSignatureRegistrationTest.php":"7ffcc9bcfdf6ccde05c8d08b81b7273f","tests\/Unit\/Transactions\/Serializers\/DelegateRegistrationTest.php":"04d9dc16c57e35bed0f98cd305302e3b","tests\/Unit\/Transactions\/Serializers\/HtlcClaimTest.php":"69759df1d1377a02216573ac4e0c7694","tests\/Unit\/Transactions\/Serializers\/DelegateResignationTest.php":"17dcdb013d1a6b2d0dc02d077ec101e2","tests\/Unit\/Transactions\/Serializers\/TransferTest.php":"bbf565785bd31035aac40b0c61bb4d6a","tests\/Unit\/Transactions\/Serializers\/MultiSignatureRegistrationTest.php":"d33995e48fe07147304a582454df446e","tests\/Unit\/Transactions\/Serializers\/HtlcRefundTest.php":"7af106a7fd38c4cdc8c57ecf6e03ab9c","tests\/Unit\/Transactions\/Serializers\/IPFSTest.php":"9cbab01a748f824e2fa66a996268cf2e","tests\/Unit\/Transactions\/Deserializers\/MultiPaymentTest.php":"73b1d1ce139b3efac75814e4d13fedc0","tests\/Unit\/Transactions\/Deserializers\/HtlcLockTest.php":"cc70be6e68236f806f89b93bac7696ca","tests\/Unit\/Transactions\/Deserializers\/VoteTest.php":"fc61b9e98d001ee47dc6d61e87dddc1b","tests\/Unit\/Transactions\/Deserializers\/SecondSignatureRegistrationTest.php":"dfff4015d30f5e785a1933eb3475818d","tests\/Unit\/Transactions\/Deserializers\/DelegateRegistrationTest.php":"9b0ce921e9b1c575f715ec028c5aec42","tests\/Unit\/Transactions\/Deserializers\/HtlcClaimTest.php":"30cacd4874af19e6026bafb57ee78b0a","tests\/Unit\/Transactions\/Deserializers\/DelegateResignationTest.php":"8be75e4b6a9dd2072c7862dae1116b8e","tests\/Unit\/Transactions\/Deserializers\/TransferTest.php":"0a7038846d256444b667fe80381698e0","tests\/Unit\/Transactions\/Deserializers\/MultiSignatureRegistrationTest.php":"1eb49e69bccee286f928c156633711ab","tests\/Unit\/Transactions\/Deserializers\/HtlcRefundTest.php":"22afd8ec2418d0406e4f42ee0e431b42","tests\/Unit\/Transactions\/Deserializers\/IPFSTest.php":"53e714f862c3256e29660ab97ec6bf94","tests\/Unit\/Transactions\/TransactionTest.php":"ac2e2e1de31db779f543a7d3f257822c","tests\/Unit\/Networks\/MainnetTest.php":"3307b4e256af4b9fd66437a5ebd0e8a2","tests\/Unit\/Networks\/NetworkTestCase.php":"f529bc550cd6b9d68f1287d0181ae150","tests\/Unit\/Networks\/TestnetTest.php":"a6984eb7fa87bc6cf693bc241188e698","tests\/Unit\/Networks\/DevnetTest.php":"17996bb8318d23a417339e72f330c3bd","src\/Configuration\/Network.php":"db39fa961d1f67dde1127324ebc29a88","src\/Configuration\/Fee.php":"009bd25096d57c05b8f76a42e3b1c1ed","src\/Identities\/PrivateKey.php":"7259bbea2e5da198ee87bcde45661666","src\/Identities\/Address.php":"17da781bf1b9c717670918fecce1bc7b","src\/Identities\/PublicKey.php":"8cbe249d218989c54dde4ceb8eefc8e1","src\/Identities\/WIF.php":"09b3bf1f9077384e6e6c9b6661ca9152","src\/Helpers.php":"5736c281d8bb805826442682be38c1dc","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"02f2f4774316d2484fb2b57feb086ea1","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3ee8fd0133cfbcaf15bd9c28a37a5be9","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"581d0559ed948f5feab6967c074892c0","src\/Binary\/Buffer\/Reader\/Buffer.php":"927b99c8047ccb9061e8193f8f144dc7","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"c2efefef99eefa7cf2c67649f97b7faf","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"f53059caa2118b5f6a4960afbbcf2d73","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"484fea469ac07931d69f3c53e1fd09aa","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"6d3c042771c2fd307b216d45532a73a3","src\/Binary\/Buffer\/Writer\/Buffer.php":"165a089ce688104a8db5941cf9ff6558","src\/Binary\/UnsignedInteger\/Reader.php":"45f7182e4f5983c886ee8a589175f83a","src\/Binary\/UnsignedInteger\/Writer.php":"352dd6fbf6d6e6a96773bda8dbdc15b1","src\/Binary\/Integer\/Reader.php":"fc382f0d5cb346069e87bdf57af42dd4","src\/Binary\/Integer\/Writer.php":"c95566b5f15e7440a357a400f4957557","src\/Binary\/Hex\/Reader.php":"84c560f1a4210dcc04cf76e61b741681","src\/Binary\/Hex\/Writer.php":"1fda8dc1fda5769e71492375945421a6","src\/BLS\/Curves\/G2.php":"596cccd6bb8706f1b5475a8dc4b03dc6","src\/BLS\/Curves\/G1.php":"8e3e950703b330142e0caac56f7b3c05","src\/BLS\/EIP2333.php":"9d803020f65ae1b3fadd3db45760da8f","src\/BLS\/Fields\/Fp.php":"3a05a19bd254ea4e4363e9315e83372e","src\/BLS\/Fields\/Fp2.php":"2da2445832239b8832c534758afb7d5a","src\/BLS\/HashToCurve\/G2HashToCurve.php":"cfd7e1dce4b2579547ec54a7d6c9f186","src\/BLS\/ProofOfPossession.php":"f78851c26f020b7b37e8be0f3728696a","src\/Utils\/Slot.php":"415aefcc91d5ee4e5fb0ad58bb4c2242","src\/Utils\/Message.php":"9805c970ca9353cab3c5385055c4a6ae","src\/ByteBuffer\/ByteOrder.php":"c183930b74c3f6216fce6af0ad547412","src\/ByteBuffer\/Concerns\/Offsetable.php":"784a6f9b0aa7c7624d455da260480541","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"4f08096933dcd65121bab249422f8d4c","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"4a06210be32a336cb06a642a2f772c26","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"936ce2ebb44b67b39aeb2706f77b197c","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"e7bd39863ddb227ec17d44ef487579d5","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"45863cd3a3048e5d8e6523d3d7cffc07","src\/ByteBuffer\/Concerns\/Positionable.php":"8fe18d603bcba8ad7ec525c5fea9122a","src\/ByteBuffer\/Concerns\/Readable.php":"1703e1781f4882cc7427ed5e3eab1b90","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"82da46facba54107aceb630852447893","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"e9e2946752da1ed0b71351028deb7eea","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"d3c2432f4a3584750387451be2b069d0","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"bbfe09b67301bb9b8ee003f7b153322b","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"cb71d199dafd21c47c2aecb3a6d9b4b5","src\/ByteBuffer\/Concerns\/Transformable.php":"4b9ded9d8a5b7005f3cbbace02315415","src\/ByteBuffer\/Concerns\/Writeable.php":"d809e2408af8e181ef5c3d3101fde0ad","src\/ByteBuffer\/Concerns\/Sizeable.php":"81c7fbf368a593bb92bf4c9f58a9f72d","src\/ByteBuffer\/Concerns\/Initialisable.php":"1aa3c826684e71339aa6297582c7fcc3","src\/ByteBuffer\/ByteBuffer.php":"460fdd2bf51bacb8d5df479af9c3bac7","src\/ByteBuffer\/LengthMap.php":"d992e88d544bfcd6d169a1632f3e3d05","src\/Transactions\/Builder\/HtlcLockBuilder.php":"f9dff632706b6c63f3c1aade509c6301","src\/Transactions\/Builder\/SecondSignatureRegistrationBuilder.php":"3e00a57bac43eb656a092a649740251f","src\/Transactions\/Builder\/DelegateRegistrationBuilder.php":"94b1cb6bd077a5b9771be530635ea1e2","src\/Transactions\/Builder\/HtlcClaimBuilder.php":"26fa61beaf17a5dc5aa17270f48d02cf","src\/Transactions\/Builder\/VoteBuilder.php":"256a00c4888c2e04a6fa46b8305b034b","src\/Transactions\/Builder\/MultiPaymentBuilder.php":"3befa6a0db1ba663a33f0934a2e3ed68","src\/Transactions\/Builder\/IPFSBuilder.php":"c07a3cb80fcb3e23a38fab812d4516f6","src\/Transactions\/Builder\/HtlcRefundBuilder.php":"172069a2c1744c7e1c26fc3d4506be33","src\/Transactions\/Builder\/MultiSignatureRegistrationBuilder.php":"4fc820ea18d3844a7545bd182697842e","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"b8c23d843ac1abfdd67f328487482dbc","src\/Transactions\/Builder\/DelegateResignationBuilder.php":"f0c849690575a8d158519d6319805e25","src\/Transactions\/Builder\/TransferBuilder.php":"d62a16edd17aae91e9cd5c20b271ea83","src\/Transactions\/Deserializer.php":"1badd55a247238e0ba15fd7613abe668","src\/Transactions\/Serializer.php":"5663addddc99a09e0e60a8c2834872a2","src\/Transactions\/Types\/DelegateRegistration.php":"7d02c0b996e22c4c480b4bd704f54815","src\/Transactions\/Types\/Transaction.php":"80534e6f6d28c853d5f6ee16bf353189","src\/Transactions\/Types\/HtlcLock.php":"cce0b1037c17a6a5ca75fae86831b3b1","src\/Transactions\/Types\/IPFS.php":"289389ba4072e543c4438cb95816d429","src\/Transactions\/Types\/DelegateResignation.php":"43d3b2784c388367154ea03b204eb9de","src\/Transactions\/Types\/MultiPayment.php":"dd7c11fd4a726a6f2e04890622c797ce","src\/Transactions\/Types\/HtlcRefund.php":"1a7c6aa917c84da527e8ba679342dd14","src\/Transactions\/Types\/Vote.php":"9932a1b40eca6b47cd67316f4f0b3aa9","src\/Transactions\/Types\/SecondSignatureRegistration.php":"f9808925fe8103587d9d2c357ee5c5e8","src\/Transactions\/Types\/Transfer.php":"fac76b00748e5b83819bfce8f0520a39","src\/Transactions\/Types\/HtlcClaim.php":"ca80737b8eb8de8af5b11a8f2584da45","src\/Transactions\/Types\/MultiSignatureRegistration.php":"c314aaa3f8add62a8abbbec9fe92ce7e","src\/Enums\/TypeGroup.php":"2df34e8073d807a26f63cb5a92aa4466","src\/Enums\/Fees.php":"ac38a4162fea543d56563c975360270a","src\/Enums\/Types.php":"4d5534dd1a0bbcf26c2f20dd4e7e0c9b","src\/Networks\/AbstractNetwork.php":"c774f58977a6f2ed3fbdba69d2489e4e","src\/Networks\/Devnet.php":"4f0097e6ec4d87f8c72f8bafeaee8892","src\/Networks\/Mainnet.php":"df2645844a8c6dfe8f99a471dc1d85f7","src\/Networks\/Testnet.php":"5a1b266a1c176bcaf9a9ec6068c53b33"}} \ No newline at end of file diff --git a/src/BLS/Curves/G1.php b/src/BLS/Curves/G1.php index 933b3e61..8f8b58f2 100644 --- a/src/BLS/Curves/G1.php +++ b/src/BLS/Curves/G1.php @@ -14,11 +14,14 @@ final class G1 { // Generator point (affine) - const GX = '17f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb'; - const GY = '08b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1'; + public const GX = '17f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb'; + + public const GY = '08b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1'; private readonly Fp $x; + private readonly Fp $y; + private readonly Fp $z; // z = zero means identity private function __construct(Fp $x, Fp $y, Fp $z) @@ -104,6 +107,7 @@ public function add(self $other): self if ($r->isZero()) { return $this->double(); } + return self::identity(); // opposite points } @@ -160,6 +164,7 @@ public function toCompressedBytes(): string if ($this->isIdentity()) { $bytes = str_repeat("\x00", 48); $bytes[0] = chr(0xc0); // 0x80 (compressed) | 0x40 (infinity) + return $bytes; } diff --git a/src/BLS/Curves/G2.php b/src/BLS/Curves/G2.php index 5ba09ae7..8e60abf1 100644 --- a/src/BLS/Curves/G2.php +++ b/src/BLS/Curves/G2.php @@ -15,18 +15,34 @@ final class G2 { // G2 generator (from BLS12-381 spec, affine coordinates over Fp2) - const GX_C0 = '024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8'; - const GX_C1 = '13e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e'; - const GY_C0 = '0ce5d527727d6e118cc9cdc6da2e351aadfd9baa8cbdd3a76d429a695160d12c923ac9cc3baca289e193548608b82801'; - const GY_C1 = '0606c4a02ea734cc32acd2b02bc28b99cb3e287e85a763af267492ab572e99ab3f370d275cec1da1aaa9075ff05f79be'; + public const GX_C0 = '024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8'; + + public const GX_C1 = '13e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e'; + + public const GY_C0 = '0ce5d527727d6e118cc9cdc6da2e351aadfd9baa8cbdd3a76d429a695160d12c923ac9cc3baca289e193548608b82801'; + + public const GY_C1 = '0606c4a02ea734cc32acd2b02bc28b99cb3e287e85a763af267492ab572e99ab3f370d275cec1da1aaa9075ff05f79be'; // BLS_X = 0xd201000000010000 (the BLS parameter for cofactor clearing) - const BLS_X = 'd201000000010000'; + public const BLS_X = 'd201000000010000'; private readonly Fp2 $x; + private readonly Fp2 $y; + private readonly Fp2 $z; // z = Fp2::zero() means identity + // ------------------------------------------------------------------------- + // Frobenius (ψ) endomorphism for cofactor clearing + // Efficient: only needs Frobenius conjugation + multiplication by PSI constants + // ------------------------------------------------------------------------- + + private static ?Fp2 $psiX = null; + + private static ?Fp2 $psiY = null; + + private static ?Fp2 $psi2X = null; + public function __construct(Fp2 $x, Fp2 $y, Fp2 $z) { $this->x = $x; @@ -53,9 +69,20 @@ public function isIdentity(): bool return $this->z->isZero(); } - public function getX(): Fp2 { return $this->x; } - public function getY(): Fp2 { return $this->y; } - public function getZ(): Fp2 { return $this->z; } + public function getX(): Fp2 + { + return $this->x; + } + + public function getY(): Fp2 + { + return $this->y; + } + + public function getZ(): Fp2 + { + return $this->z; + } // ------------------------------------------------------------------------- // Point doubling (dbl-2009-l, a=0 for G2) @@ -117,6 +144,7 @@ public function add(self $other): self if ($r->isZero()) { return $this->double(); } + return self::identity(); } @@ -164,62 +192,10 @@ public function scalarMul(\GMP $k): self return $result; } - // ------------------------------------------------------------------------- - // Frobenius (ψ) endomorphism for cofactor clearing - // Efficient: only needs Frobenius conjugation + multiplication by PSI constants - // ------------------------------------------------------------------------- - - private static ?Fp2 $psiX = null; - private static ?Fp2 $psiY = null; - private static ?Fp2 $psi2X = null; - - /** - * Lazily compute and cache the three Frobenius constants. - * base = 1/(1+u) in Fp2 = ((p+1)/2, (p-1)/2) - * PSI_X = base^((p-1)/3) - * PSI_Y = base^((p-1)/2) - * PSI2_X = base^((p²-1)/3) - */ - private static function initPsiConstants(): void - { - if (self::$psiX !== null) { - return; - } - $p = Fp::prime(); - $inv2 = gmp_div(gmp_add($p, gmp_init(1)), gmp_init(2)); // (p+1)/2 = mod-inverse of 2 - $base = new Fp2(new Fp($inv2), new Fp(gmp_sub($p, $inv2))); - - $p1 = gmp_sub($p, gmp_init(1)); - self::$psiX = $base->pow(gmp_div($p1, gmp_init(3))); - self::$psiY = $base->pow(gmp_div($p1, gmp_init(2))); - - $p2 = gmp_mul($p, $p); - $p2m1 = gmp_sub($p2, gmp_init(1)); - self::$psi2X = $base->pow(gmp_div($p2m1, gmp_init(3))); - } - - private static function psiX(): Fp2 - { - self::initPsiConstants(); - return self::$psiX; - } - - private static function psiY(): Fp2 - { - self::initPsiConstants(); - return self::$psiY; - } - - private static function psi2X(): Fp2 - { - self::initPsiConstants(); - return self::$psi2X; - } - /** * ψ (psi) Frobenius endomorphism. * ψ(x, y) = (conj(x) * PSI_X, conj(y) * PSI_Y) - * Applied to projective point (X:Y:Z): ψ(X:Y:Z) = (conj(X)*PSI_X : conj(Y)*PSI_Y : conj(Z)) + * Applied to projective point (X:Y:Z): ψ(X:Y:Z) = (conj(X)*PSI_X : conj(Y)*PSI_Y : conj(Z)). */ public function psi(): self { @@ -229,13 +205,14 @@ public function psi(): self $x2 = $this->x->conjugate()->mul(self::psiX()); $y2 = $this->y->conjugate()->mul(self::psiY()); $z2 = $this->z->conjugate(); + return new self($x2, $y2, $z2); } /** * ψ² (psi squared) endomorphism. * ψ²(x, y) = (x * PSI2_X, -y) - * In projective: (X*PSI2_X : -Y : Z) — no conjugation needed since PSI2_X ∈ Fp + * In projective: (X*PSI2_X : -Y : Z) — no conjugation needed since PSI2_X ∈ Fp. */ public function psi2(): self { @@ -244,6 +221,7 @@ public function psi2(): self } $x2 = $this->x->mul(self::psi2X()); $y2 = $this->y->neg(); + return new self($x2, $y2, $this->z); } @@ -288,6 +266,7 @@ public function toAffine(): array // [Fp2 $x, Fp2 $y] $zinv = $this->z->inv(); $zinv2 = $zinv->square(); $zinv3 = $zinv2->mul($zinv); + return [$this->x->mul($zinv2), $this->y->mul($zinv3)]; } @@ -301,13 +280,14 @@ public function toCompressedBytes(): string if ($this->isIdentity()) { $bytes = str_repeat("\x00", 96); $bytes[0] = chr(0xc0); // 0x80 (compressed) | 0x40 (infinity) + return $bytes; } [$ax, $ay] = $this->toAffine(); // Fp2 serialization: c1 (high 48 bytes) then c0 (low 48 bytes) - $bytes = $ax->c1->toBytes() . $ax->c0->toBytes(); // 96 bytes, top 3 bits of first byte are 0 + $bytes = $ax->c1->toBytes().$ax->c0->toBytes(); // 96 bytes, top 3 bits of first byte are 0 // Bit 7 (0x80): compressed flag $bytes[0] = chr(ord($bytes[0]) | 0x80); @@ -326,4 +306,50 @@ public function toHex(): string { return bin2hex($this->toCompressedBytes()); } + + /** + * Lazily compute and cache the three Frobenius constants. + * base = 1/(1+u) in Fp2 = ((p+1)/2, (p-1)/2) + * PSI_X = base^((p-1)/3) + * PSI_Y = base^((p-1)/2) + * PSI2_X = base^((p²-1)/3). + */ + private static function initPsiConstants(): void + { + if (self::$psiX !== null) { + return; + } + $p = Fp::prime(); + $inv2 = gmp_div(gmp_add($p, gmp_init(1)), gmp_init(2)); // (p+1)/2 = mod-inverse of 2 + $base = new Fp2(new Fp($inv2), new Fp(gmp_sub($p, $inv2))); + + $p1 = gmp_sub($p, gmp_init(1)); + self::$psiX = $base->pow(gmp_div($p1, gmp_init(3))); + self::$psiY = $base->pow(gmp_div($p1, gmp_init(2))); + + $p2 = gmp_mul($p, $p); + $p2m1 = gmp_sub($p2, gmp_init(1)); + self::$psi2X = $base->pow(gmp_div($p2m1, gmp_init(3))); + } + + private static function psiX(): Fp2 + { + self::initPsiConstants(); + + return self::$psiX; + } + + private static function psiY(): Fp2 + { + self::initPsiConstants(); + + return self::$psiY; + } + + private static function psi2X(): Fp2 + { + self::initPsiConstants(); + + return self::$psi2X; + } } diff --git a/src/BLS/EIP2333.php b/src/BLS/EIP2333.php index 388cf31b..dd83aeac 100644 --- a/src/BLS/EIP2333.php +++ b/src/BLS/EIP2333.php @@ -25,6 +25,7 @@ public static function deriveBlsPrivateKey(string $mnemonic): string { $seed = self::mnemonicToSeed($mnemonic); // 64-byte BIP-39 seed $master = self::deriveMaster($seed); // 32-byte master key + return self::deriveChild($master, 0); // 32-byte child key at index 0 } @@ -63,8 +64,8 @@ public static function deriveChild(string $parentKey, int $index): string public static function hkdfModR(string $ikm, string $keyInfo = ''): string { $r = Fp::order(); - $input = $ikm . "\x00"; // IKM padded per EIP-2333 - $info = $keyInfo . "\x00\x30"; // key_info || I2OSP(48, 2) + $input = $ikm."\x00"; // IKM padded per EIP-2333 + $info = $keyInfo."\x00\x30"; // key_info || I2OSP(48, 2) $salt = self::SALT_INIT; // will be sha256'd before first use while (true) { @@ -90,6 +91,7 @@ private static function ikmToLamportSK(string $ikm, string $salt): array for ($i = 0; $i < 255; $i++) { $chunks[] = substr($okm, $i * 32, 32); } + return $chunks; } @@ -120,6 +122,7 @@ private static function bitwiseNot(string $bytes): string for ($i = 0; $i < $len; $i++) { $result .= chr(~ord($bytes[$i]) & 0xff); } + return $result; } } diff --git a/src/BLS/Fields/Fp.php b/src/BLS/Fields/Fp.php index 37abb999..298d16e1 100644 --- a/src/BLS/Fields/Fp.php +++ b/src/BLS/Fields/Fp.php @@ -13,15 +13,16 @@ final class Fp { // BLS12-381 field prime - const P_HEX = '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab'; + public const P_HEX = '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab'; // Subgroup order r (used by EIP-2333 hkdfModR) - const R_HEX = '73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001'; + public const R_HEX = '73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001'; + + public readonly GMP $value; private static ?GMP $prime = null; - private static ?GMP $order = null; - public readonly GMP $value; + private static ?GMP $order = null; public function __construct(GMP $value) { @@ -65,6 +66,7 @@ public static function prime(): GMP if (self::$prime === null) { self::$prime = gmp_init(self::P_HEX, 16); } + return self::$prime; } @@ -73,6 +75,7 @@ public static function order(): GMP if (self::$order === null) { self::$order = gmp_init(self::R_HEX, 16); } + return self::$order; } @@ -91,6 +94,7 @@ public function sub(self $other): self if (gmp_sign($r) < 0) { $r = gmp_add($r, self::prime()); } + return new self($r); } @@ -109,6 +113,7 @@ public function neg(): self if (gmp_sign($this->value) === 0) { return self::zero(); } + return new self(gmp_sub(self::prime(), $this->value)); } @@ -118,6 +123,7 @@ public function inv(): self if ($inv === false) { throw new \RuntimeException('Fp: element has no inverse (is zero)'); } + return new self($inv); } @@ -175,6 +181,7 @@ public static function cmov(self $a, self $b, bool $condition): self public function toBytes(): string { $hex = str_pad(gmp_strval($this->value, 16), 96, '0', STR_PAD_LEFT); + return hex2bin($hex); } diff --git a/src/BLS/Fields/Fp2.php b/src/BLS/Fields/Fp2.php index 017476c6..634dccec 100644 --- a/src/BLS/Fields/Fp2.php +++ b/src/BLS/Fields/Fp2.php @@ -13,6 +13,7 @@ final class Fp2 { public readonly Fp $c0; + public readonly Fp $c1; public function __construct(Fp $c0, Fp $c1) @@ -61,7 +62,7 @@ public function sub(self $other): self /** * Karatsuba multiplication in Fp2. - * (a + b·u)(c + d·u) = (ac - bd) + (ad + bc)·u [since u²=-1] + * (a + b·u)(c + d·u) = (ac - bd) + (ad + bc)·u [since u²=-1]. */ public function mul(self $other): self { @@ -70,6 +71,7 @@ public function mul(self $other): self $c0 = $ac->sub($bd); // (a+b)(c+d) - ac - bd = ad + bc $c1 = $this->c0->add($this->c1)->mul($other->c0->add($other->c1))->sub($ac)->sub($bd); + return new self($c0, $c1); } @@ -81,16 +83,18 @@ public function mulFp(Fp $scalar): self public function mulInt(int $n): self { $s = Fp::fromInt($n); + return new self($this->c0->mul($s), $this->c1->mul($s)); } public function square(): self { // (a + b·u)² = (a²-b²) + 2ab·u - $a = $this->c0; - $b = $this->c1; + $a = $this->c0; + $b = $this->c1; $c0 = $a->add($b)->mul($a->sub($b)); // (a+b)(a-b) = a²-b² $c1 = $a->mul($b)->mul(Fp::fromInt(2)); + return new self($c0, $c1); } @@ -108,8 +112,9 @@ public function conjugate(): self public function inv(): self { // 1/(a + b·u) = (a - b·u) / (a² + b²) - $norm = $this->c0->square()->add($this->c1->square()); // a² + b² + $norm = $this->c0->square()->add($this->c1->square()); // a² + b² $invNorm = $norm->inv(); + return new self($this->c0->mul($invNorm), $this->c1->neg()->mul($invNorm)); } @@ -133,6 +138,7 @@ public function pow(GMP $exp): self $base = $base->square(); $e = gmp_div($e, gmp_init(2)); } + return $result; } @@ -156,9 +162,10 @@ public function equals(self $other): bool */ public function isOdd(): bool { - if (!$this->c0->isZero()) { + if (! $this->c0->isZero()) { return $this->c0->isOdd(); } + return $this->c1->isOdd(); } @@ -174,6 +181,6 @@ public static function cmov(self $a, self $b, bool $condition): self public function toBytes(): string { - return $this->c1->toBytes() . $this->c0->toBytes(); + return $this->c1->toBytes().$this->c0->toBytes(); } } diff --git a/src/BLS/HashToCurve/G2HashToCurve.php b/src/BLS/HashToCurve/G2HashToCurve.php index 4b20382a..0a9412bf 100644 --- a/src/BLS/HashToCurve/G2HashToCurve.php +++ b/src/BLS/HashToCurve/G2HashToCurve.php @@ -17,6 +17,7 @@ final class G2HashToCurve // RFC 9380 §8.8.2 cipher-suite: BLS12381G2_XMD:SHA-256_SSWU_RO_ // SHA-256 parameters private const B_IN_BYTES = 32; // sha256 output bytes + private const R_IN_BYTES = 64; // sha256 block size (zero-pad length) // SWU constants for the isogenous G2 curve E': y² = x³ + A'x + B' @@ -29,64 +30,70 @@ final class G2HashToCurve private const ISO_XN = [ [ '5c759507e8e333ebb5b7a9a47d7ed8532c52d39fd3a042a88b58423c50ae15d5c2638e343d9c71c6238aaaaaaaa97d6', - '5c759507e8e333ebb5b7a9a47d7ed8532c52d39fd3a042a88b58423c50ae15d5c2638e343d9c71c6238aaaaaaaa97d6' + '5c759507e8e333ebb5b7a9a47d7ed8532c52d39fd3a042a88b58423c50ae15d5c2638e343d9c71c6238aaaaaaaa97d6', ], [ '0', - '11560bf17baa99bc32126fced787c88f984f87adf7ae0c7f9a208c6b4f20a4181472aaa9cb8d555526a9ffffffffc71a' + '11560bf17baa99bc32126fced787c88f984f87adf7ae0c7f9a208c6b4f20a4181472aaa9cb8d555526a9ffffffffc71a', ], [ '11560bf17baa99bc32126fced787c88f984f87adf7ae0c7f9a208c6b4f20a4181472aaa9cb8d555526a9ffffffffc71e', - '8ab05f8bdd54cde190937e76bc3e447cc27c3d6fbd7063fcd104635a790520c0a395554e5c6aaaa9354ffffffffe38d' + '8ab05f8bdd54cde190937e76bc3e447cc27c3d6fbd7063fcd104635a790520c0a395554e5c6aaaa9354ffffffffe38d', ], [ '171d6541fa38ccfaed6dea691f5fb614cb14b4e7f4e810aa22d6108f142b85757098e38d0f671c7188e2aaaaaaaa5ed1', - '0' + '0', ], ]; + private const ISO_XD = [ ['0', '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaa63'], ['c', '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaa9f'], ['1', '0'], // leading 1 (monic) ]; + private const ISO_YN = [ [ '1530477c7ab4113b59a4c18b076d11930f7da5d4a07f649bf54439d87d27e500fc8c25ebf8c92f6812cfc71c71c6d706', - '1530477c7ab4113b59a4c18b076d11930f7da5d4a07f649bf54439d87d27e500fc8c25ebf8c92f6812cfc71c71c6d706' + '1530477c7ab4113b59a4c18b076d11930f7da5d4a07f649bf54439d87d27e500fc8c25ebf8c92f6812cfc71c71c6d706', ], [ '0', - '5c759507e8e333ebb5b7a9a47d7ed8532c52d39fd3a042a88b58423c50ae15d5c2638e343d9c71c6238aaaaaaaa97be' + '5c759507e8e333ebb5b7a9a47d7ed8532c52d39fd3a042a88b58423c50ae15d5c2638e343d9c71c6238aaaaaaaa97be', ], [ '11560bf17baa99bc32126fced787c88f984f87adf7ae0c7f9a208c6b4f20a4181472aaa9cb8d555526a9ffffffffc71c', - '8ab05f8bdd54cde190937e76bc3e447cc27c3d6fbd7063fcd104635a790520c0a395554e5c6aaaa9354ffffffffe38f' + '8ab05f8bdd54cde190937e76bc3e447cc27c3d6fbd7063fcd104635a790520c0a395554e5c6aaaa9354ffffffffe38f', ], [ '124c9ad43b6cf79bfbf7043de3811ad0761b0f37a1e26286b0e977c69aa274524e79097a56dc4bd9e1b371c71c718b10', - '0' + '0', ], ]; + private const ISO_YD = [ [ '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffa8fb', - '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffa8fb' + '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffa8fb', ], [ '0', - '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffa9d3' + '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffa9d3', ], [ '12', - '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaa99' + '1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaa99', ], ['1', '0'], // leading 1 (monic) ]; // Cached SWU sqrtRatio precomputed constants (c6 and c7 in RFC 9380 Appendix F.2.1.2) private static ?Fp2 $swuC6 = null; + private static ?Fp2 $swuC7 = null; + private static ?Fp2 $swuC3cached = null; + /** * Hash a byte string to a G2 point using the POP-DST. * Input: arbitrary bytes (e.g., a compressed G1 public key for PoP). @@ -117,16 +124,16 @@ public static function hashToG2(string $msg, string $dst): G2 private static function expandMessageXmd(string $msg, string $dst, int $lenInBytes): string { $ell = (int) ceil($lenInBytes / self::B_IN_BYTES); // = 8 for 256 bytes - $dstPrime = $dst . chr(strlen($dst)); + $dstPrime = $dst.chr(strlen($dst)); $zPad = str_repeat("\x00", self::R_IN_BYTES); - $libStr = chr(($lenInBytes >> 8) & 0xff) . chr($lenInBytes & 0xff); + $libStr = chr(($lenInBytes >> 8) & 0xff).chr($lenInBytes & 0xff); - $b0 = hash('sha256', $zPad . $msg . $libStr . "\x00" . $dstPrime, true); - $b = []; - $b[0] = hash('sha256', $b0 . "\x01" . $dstPrime, true); + $b0 = hash('sha256', $zPad.$msg.$libStr."\x00".$dstPrime, true); + $b = []; + $b[0] = hash('sha256', $b0."\x01".$dstPrime, true); for ($i = 1; $i < $ell; $i++) { - $b[$i] = hash('sha256', self::strxor($b0, $b[$i - 1]) . chr($i + 1) . $dstPrime, true); + $b[$i] = hash('sha256', self::strxor($b0, $b[$i - 1]).chr($i + 1).$dstPrime, true); } return substr(implode('', $b), 0, $lenInBytes); @@ -139,6 +146,7 @@ private static function strxor(string $a, string $b): string for ($i = 0; $i < $len; $i++) { $out .= chr(ord($a[$i]) ^ ord($b[$i])); } + return $out; } @@ -165,6 +173,7 @@ private static function uniformBytesToFp2Pair(string $bytes, int $L): array new Fp(gmp_mod(gmp_init(bin2hex(substr($bytes, 2 * $L, $L)), 16), $p)), new Fp(gmp_mod(gmp_init(bin2hex(substr($bytes, 3 * $L, $L)), 16), $p)) ); + return [$u0, $u1]; } @@ -194,7 +203,7 @@ private static function mapToCurveG2(Fp2 $u): G2 $tv3 = $tv2->add($F1); // 5. tv3 = tv2 + 1 $tv3 = $B->mul($tv3); // 6. tv3 = B * tv3 // 7. tv4 = CMOV(Z, -tv2, tv2 != 0) - $tv4 = Fp2::cmov($Z, $tv2->neg(), !$tv2->isZero()); + $tv4 = Fp2::cmov($Z, $tv2->neg(), ! $tv2->isZero()); $tv4 = $A->mul($tv4); // 8. tv4 = A * tv4 $tv2 = $tv3->square(); // 9. tv2 = tv3² $tv6 = $tv4->square(); // 10. tv6 = tv4² @@ -248,21 +257,21 @@ private static function sqrtRatio(Fp2 $u, Fp2 $v): array $c3 = self::swuC3(); // Steps 1-16 - $tv1 = $c6; // 1 - $tv2 = self::fp2Pow7($v); // 2. v^7 - $tv3 = $tv2->square()->mul($v); // 3-4. v^14 * v = v^15 - $tv5 = $u->mul($tv3); // 5. u * v^15 - $tv5 = $tv5->pow($c3); // 6. (u * v^15)^c3 - $tv5 = $tv5->mul($tv2); // 7. * v^7 - $tv2 = $tv5->mul($v); // 8. - $tv3 = $tv5->mul($u); // 9. - $tv4 = $tv3->mul($tv2); // 10. - $tv5 = $tv4->pow($c5); // 11. tv4^4 + $tv1 = $c6; // 1 + $tv2 = self::fp2Pow7($v); // 2. v^7 + $tv3 = $tv2->square()->mul($v); // 3-4. v^14 * v = v^15 + $tv5 = $u->mul($tv3); // 5. u * v^15 + $tv5 = $tv5->pow($c3); // 6. (u * v^15)^c3 + $tv5 = $tv5->mul($tv2); // 7. * v^7 + $tv2 = $tv5->mul($v); // 8. + $tv3 = $tv5->mul($u); // 9. + $tv4 = $tv3->mul($tv2); // 10. + $tv5 = $tv4->pow($c5); // 11. tv4^4 $isQR = $tv5->equals(Fp2::one()); // 12. - $tv2 = $tv3->mul($c7); // 13. - $tv5 = $tv4->mul($tv1); // 14. tv4 * c6 - $tv3 = Fp2::cmov($tv2, $tv3, $isQR); // 15. - $tv4 = Fp2::cmov($tv5, $tv4, $isQR); // 16. + $tv2 = $tv3->mul($c7); // 13. + $tv5 = $tv4->mul($tv1); // 14. tv4 * c6 + $tv3 = Fp2::cmov($tv2, $tv3, $isQR); // 15. + $tv4 = Fp2::cmov($tv5, $tv4, $isQR); // 16. // Steps 17-26: loop i = c1 downto 2 (i.e., i = 3 then i = 2) for ($i = 3; $i >= 2; $i--) { @@ -277,7 +286,8 @@ private static function sqrtRatio(Fp2 $u, Fp2 $v): array $tv4 = Fp2::cmov($tvv5, $tv4, $e1); // 26. } - $isValid = !$v->isZero() && ($isQR || $u->isZero()); + $isValid = ! $v->isZero() && ($isQR || $u->isZero()); + return ['isValid' => $isValid, 'value' => $tv3]; } @@ -286,6 +296,7 @@ private static function fp2Pow7(Fp2 $v): Fp2 { $v2 = $v->square(); // v² $v4 = $v2->square(); // v⁴ + return $v4->mul($v2)->mul($v); // v⁶ * v = v⁷ } @@ -316,8 +327,6 @@ private static function swuPrecompute(): array return [self::$swuC6, self::$swuC7]; } - private static ?Fp2 $swuC3cached = null; - private static function swuC3(): \GMP { static $c3 = null; @@ -327,6 +336,7 @@ private static function swuC3(): \GMP $c2 = gmp_div(gmp_sub($q, gmp_init(1)), gmp_init(8)); $c3 = gmp_div(gmp_sub($c2, gmp_init(1)), gmp_init(2)); } + return $c3; } @@ -351,7 +361,7 @@ private static function applyIsogeny(Fp2 $x, Fp2 $y): array /** * Horner evaluation of a polynomial at x. * Coefficients in ascending order [k0, k1, ..., kd] are reversed for Horner. - * Result: k0 + k1*x + ... + kd*x^d = horner([kd,...,k1,k0], x) + * Result: k0 + k1*x + ... + kd*x^d = horner([kd,...,k1,k0], x). */ private static function horner(array $ascCoeffs, Fp2 $x): Fp2 { @@ -360,6 +370,7 @@ private static function horner(array $ascCoeffs, Fp2 $x): Fp2 // '0' is falsy in PHP so use explicit comparison $c0 = ($pair[0] !== '' && $pair[0] !== null) ? $pair[0] : '0'; $c1 = ($pair[1] !== '' && $pair[1] !== null) ? $pair[1] : '0'; + return Fp2::fromHex($c0, $c1); }, $ascCoeffs) ); @@ -367,6 +378,7 @@ private static function horner(array $ascCoeffs, Fp2 $x): Fp2 for ($i = 1, $n = count($coeffs); $i < $n; $i++) { $acc = $acc->mul($x)->add($coeffs[$i]); } + return $acc; } } diff --git a/src/BLS/ProofOfPossession.php b/src/BLS/ProofOfPossession.php index 572816e9..73c4d36a 100644 --- a/src/BLS/ProofOfPossession.php +++ b/src/BLS/ProofOfPossession.php @@ -32,6 +32,7 @@ public static function deriveBlsPrivateKey(string $mnemonic): string public static function deriveBlsPublicKey(string $mnemonic): string { $privKey = self::deriveBlsPrivateKey($mnemonic); + return self::privateKeyToPublicKey($privKey); } @@ -41,6 +42,7 @@ public static function deriveBlsPublicKey(string $mnemonic): string public static function privateKeyToPublicKey(string $privateKeyBytes): string { $scalar = gmp_init(bin2hex($privateKeyBytes), 16); + return G1::generator()->scalarMul($scalar)->toHex(); } @@ -52,14 +54,14 @@ public static function privateKeyToPublicKey(string $privateKeyBytes): string * by the private key scalar. * * @param string $privateKeyBytes 32-byte raw private key - * @return array{pk: string, pop: string} hex-encoded G1 pk (96 chars) and G2 pop (192 chars) * @throws InvalidArgumentException if the key is not exactly 32 bytes or is the zero scalar + * @return array{pk: string, pop: string} hex-encoded G1 pk (96 chars) and G2 pop (192 chars) */ public static function buildProofOfPossession(string $privateKeyBytes): array { if (strlen($privateKeyBytes) !== 32) { throw new InvalidArgumentException( - 'BLS secret key must be exactly 32 bytes, got ' . strlen($privateKeyBytes) + 'BLS secret key must be exactly 32 bytes, got '.strlen($privateKeyBytes) ); } diff --git a/tests/Unit/BLS/ProofOfPossessionTest.php b/tests/Unit/BLS/ProofOfPossessionTest.php index 1555183b..0746fefa 100644 --- a/tests/Unit/BLS/ProofOfPossessionTest.php +++ b/tests/Unit/BLS/ProofOfPossessionTest.php @@ -8,8 +8,8 @@ const POP_SK_B_HEX = '3325023a5e4e0069558c5bd9eb7eca78b4f4c7711b9b231d9263a8edc33bc510'; const POP_PASSPHRASE = 'peasant list dentist thrive guide uncle announce city energy artist basket divert stool glow eternal stove length gun action slice type labor aunt unlock'; -const EXPECTED_PK_A = 'a7e75af9dd4d868a41ad2f5a5b021d653e31084261724fb40ae2f1b1c31c778d3b9464502d599cf6720723ec5c68b59d'; -const EXPECTED_POP_A = '878ad02e1f215d40722bd77a0148adb8dfaad4514157600a0a926cfc58589fa4e79d3d4d579cc4149237b8100efdcff110dd2a251c52543539d499c8f24b142da66d1dc19ec44b3d9c3f71112b2705e5557f932a36bd9cd9b3544ab0d9e6a677'; +const EXPECTED_PK_A = 'a7e75af9dd4d868a41ad2f5a5b021d653e31084261724fb40ae2f1b1c31c778d3b9464502d599cf6720723ec5c68b59d'; +const EXPECTED_POP_A = '878ad02e1f215d40722bd77a0148adb8dfaad4514157600a0a926cfc58589fa4e79d3d4d579cc4149237b8100efdcff110dd2a251c52543539d499c8f24b142da66d1dc19ec44b3d9c3f71112b2705e5557f932a36bd9cd9b3544ab0d9e6a677'; const EXPECTED_MNEMONIC_PK = 'a3b93d0149c9e0ee8c2e734b641d313040b8901fcddbf61a018ae2a4633da49f9b169c0bb6653dee4cdd7dac2631a935'; const EXPECTED_MNEMONIC_POP = 'b72a4b4601608029564c691c742bac7a089c355e9e4e3c60469bc429ca24a24f1a568377df210755c307939065ae8954125c823fea74ee3fe5fa9ecd5dfd4a33a540d1835acb086b968ca7b543d3258bb2afb7911fb1d2e560004d6e280c043c'; @@ -51,13 +51,13 @@ }); it('throws on a secret key of wrong length', function () { - expect(fn() => ProofOfPossession::buildProofOfPossession(str_repeat("\x00", 31)))->toThrow(\InvalidArgumentException::class) - ->and(fn() => ProofOfPossession::buildProofOfPossession(str_repeat("\x00", 33)))->toThrow(\InvalidArgumentException::class) - ->and(fn() => ProofOfPossession::buildProofOfPossession(''))->toThrow(\InvalidArgumentException::class); + expect(fn () => ProofOfPossession::buildProofOfPossession(str_repeat("\x00", 31)))->toThrow(InvalidArgumentException::class) + ->and(fn () => ProofOfPossession::buildProofOfPossession(str_repeat("\x00", 33)))->toThrow(InvalidArgumentException::class) + ->and(fn () => ProofOfPossession::buildProofOfPossession(''))->toThrow(InvalidArgumentException::class); }); it('throws on the zero secret key', function () { - expect(fn() => ProofOfPossession::buildProofOfPossession(str_repeat("\x00", 32)))->toThrow(\InvalidArgumentException::class); + expect(fn () => ProofOfPossession::buildProofOfPossession(str_repeat("\x00", 32)))->toThrow(InvalidArgumentException::class); }); // ------------------------------------------------------------------------- From b09a9b2e097ae03a6f337789de029e02f150f1d9 Mon Sep 17 00:00:00 2001 From: Shahin Safaraliyev Date: Thu, 11 Jun 2026 21:10:17 +0400 Subject: [PATCH 10/27] feat: add BLS implementation --- src/BLS/ProofOfPossession.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/BLS/ProofOfPossession.php b/src/BLS/ProofOfPossession.php index 73c4d36a..d38a43ee 100644 --- a/src/BLS/ProofOfPossession.php +++ b/src/BLS/ProofOfPossession.php @@ -9,8 +9,6 @@ use InvalidArgumentException; /** - * BLS12-381 Proof of Possession following the TypeScript SDK's ProofOfPossession.ts. - * * DST used for PoP signatures: "BLS_POP_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_" */ final class ProofOfPossession From 12b123a220bbeb09d34db958d56df0408b30dba5 Mon Sep 17 00:00:00 2001 From: shahin-hq Date: Fri, 12 Jun 2026 09:24:47 +0000 Subject: [PATCH 11/27] style: resolve style guide violations --- .php-cs-fixer.cache | 2 +- src/BLS/ProofOfPossession.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index d5f6c8ed..bb076598 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.3.31","version":"3.76.0:v3.76.0#0e3c484cef0ae9314b0f85986a36296087432c40","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"hashes":{"tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Analysis\/AnalysisTest.php":"a9d0b7406e5a6894ce689229a4b939ff","tests\/Concerns\/Serialize.php":"134128506ad4e0f69949f773c1df3a70","tests\/Concerns\/Fixtures.php":"a1cbc1ecf6e31bd07fdac1c230d7aa6f","tests\/Concerns\/Deserialize.php":"68b8f4b8877221e5052c9dd5f011aaa9","tests\/TestCase.php":"8ad8b9b7b084dc0d2c28a247ac4a7988","tests\/Unit\/Configuration\/FeeTest.php":"ce7f567b72dd0126683277b243fa9fc3","tests\/Unit\/Configuration\/NetworkTest.php":"302b258b1f3ae05e0216d25929b69ea7","tests\/Unit\/Identities\/PrivateKeyTest.php":"a1f81695d6331d223ac6a3312a00b193","tests\/Unit\/Identities\/AddressTest.php":"d7d375a29f37a4b9b772c75684c74b48","tests\/Unit\/Identities\/WIFTest.php":"b611511584dd0bfba84f113295365508","tests\/Unit\/Identities\/PublicKeyTest.php":"4cfded5f1e35c1083fed2ad7efeea615","tests\/Unit\/BLS\/EIP2333Test.php":"a7cbb6d601453304110e6e429ba9488b","tests\/Unit\/BLS\/ProofOfPossessionTest.php":"5a63ee9e7e557287cc11749e48b8eced","tests\/Unit\/Utils\/SlotTest.php":"e2e6bf33055513aeaff285e4904099a4","tests\/Unit\/Utils\/MessageTest.php":"a9a261798733199bf3c7f9f813181875","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"5951a16b75f5be22726c8f7db5bc9e17","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"4280210224bfe01b431348823fd37902","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"8617547d4052341646e500679de73dd8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"8bbe9a2d00b2c16e6f07d526ec86954e","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"4a0b5b96e2a1e4b849eebf1f3c8781c8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"548c09489f87edce63066c196b4c35f2","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"09a667b97f0b5625bd2a267ae06b35ff","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"784101c1b5986dcdd939d47bc966684d","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"f3724a1f16a007a2d1a59001556d7cad","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"69e5e34cf122bfa36a64602fd9df0127","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"5432d25fb0292b9e637f6e04af104745","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"21babc31150ab55f010c0709328bf92d","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"044f6a5480ac976533db063f28b3b0e3","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"ec65fb8a8be71266fb0191449ae24173","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"28470f16ddf35d79384b866973652813","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"e6f2608e0921d2b2c25e3796e0e0a920","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"e2eae23b9c271db3191c07b1025640b1","tests\/Unit\/Transactions\/Builder\/MultiPaymentTest.php":"968a69c19596fbbba3f07e022c44ba12","tests\/Unit\/Transactions\/Builder\/HtlcLockTest.php":"3c2c4fd37a0d14b006833fd1ac62663d","tests\/Unit\/Transactions\/Builder\/VoteTest.php":"db91e16f8987dd6c050471bd0704523a","tests\/Unit\/Transactions\/Builder\/SecondSignatureRegistrationTest.php":"55f2fc9a05b4417820c3574aa828fdb3","tests\/Unit\/Transactions\/Builder\/DelegateRegistrationTest.php":"b4c0f10f2b10a91728e8352790f8f538","tests\/Unit\/Transactions\/Builder\/HtlcClaimTest.php":"619401dcbbee5dc4034429824bec865c","tests\/Unit\/Transactions\/Builder\/DelegateResignationTest.php":"527f6988349a098d4fa6b92c78570954","tests\/Unit\/Transactions\/Builder\/TransferTest.php":"70cdd71c9cbb57bfb51c3e4a1bd74e86","tests\/Unit\/Transactions\/Builder\/MultiSignatureRegistrationTest.php":"e5b48524e7e97683ec8a1f7c9b43ba8e","tests\/Unit\/Transactions\/Builder\/HtlcRefundTest.php":"e1113d28fa608fb7ff0ad4447a8b2f20","tests\/Unit\/Transactions\/Builder\/IPFSTest.php":"310d8ef8251e14a9a6498b03cdd0d912","tests\/Unit\/Transactions\/Serializers\/MultiPaymentTest.php":"04c22b03bffce8c2a713880517b0b1ec","tests\/Unit\/Transactions\/Serializers\/HtlcLockTest.php":"62d7af16064c66ced72b535ead234a8f","tests\/Unit\/Transactions\/Serializers\/VoteTest.php":"632138bad64d4a325a95447a133bf3ca","tests\/Unit\/Transactions\/Serializers\/SecondSignatureRegistrationTest.php":"7ffcc9bcfdf6ccde05c8d08b81b7273f","tests\/Unit\/Transactions\/Serializers\/DelegateRegistrationTest.php":"04d9dc16c57e35bed0f98cd305302e3b","tests\/Unit\/Transactions\/Serializers\/HtlcClaimTest.php":"69759df1d1377a02216573ac4e0c7694","tests\/Unit\/Transactions\/Serializers\/DelegateResignationTest.php":"17dcdb013d1a6b2d0dc02d077ec101e2","tests\/Unit\/Transactions\/Serializers\/TransferTest.php":"bbf565785bd31035aac40b0c61bb4d6a","tests\/Unit\/Transactions\/Serializers\/MultiSignatureRegistrationTest.php":"d33995e48fe07147304a582454df446e","tests\/Unit\/Transactions\/Serializers\/HtlcRefundTest.php":"7af106a7fd38c4cdc8c57ecf6e03ab9c","tests\/Unit\/Transactions\/Serializers\/IPFSTest.php":"9cbab01a748f824e2fa66a996268cf2e","tests\/Unit\/Transactions\/Deserializers\/MultiPaymentTest.php":"73b1d1ce139b3efac75814e4d13fedc0","tests\/Unit\/Transactions\/Deserializers\/HtlcLockTest.php":"cc70be6e68236f806f89b93bac7696ca","tests\/Unit\/Transactions\/Deserializers\/VoteTest.php":"fc61b9e98d001ee47dc6d61e87dddc1b","tests\/Unit\/Transactions\/Deserializers\/SecondSignatureRegistrationTest.php":"dfff4015d30f5e785a1933eb3475818d","tests\/Unit\/Transactions\/Deserializers\/DelegateRegistrationTest.php":"9b0ce921e9b1c575f715ec028c5aec42","tests\/Unit\/Transactions\/Deserializers\/HtlcClaimTest.php":"30cacd4874af19e6026bafb57ee78b0a","tests\/Unit\/Transactions\/Deserializers\/DelegateResignationTest.php":"8be75e4b6a9dd2072c7862dae1116b8e","tests\/Unit\/Transactions\/Deserializers\/TransferTest.php":"0a7038846d256444b667fe80381698e0","tests\/Unit\/Transactions\/Deserializers\/MultiSignatureRegistrationTest.php":"1eb49e69bccee286f928c156633711ab","tests\/Unit\/Transactions\/Deserializers\/HtlcRefundTest.php":"22afd8ec2418d0406e4f42ee0e431b42","tests\/Unit\/Transactions\/Deserializers\/IPFSTest.php":"53e714f862c3256e29660ab97ec6bf94","tests\/Unit\/Transactions\/TransactionTest.php":"ac2e2e1de31db779f543a7d3f257822c","tests\/Unit\/Networks\/MainnetTest.php":"3307b4e256af4b9fd66437a5ebd0e8a2","tests\/Unit\/Networks\/NetworkTestCase.php":"f529bc550cd6b9d68f1287d0181ae150","tests\/Unit\/Networks\/TestnetTest.php":"a6984eb7fa87bc6cf693bc241188e698","tests\/Unit\/Networks\/DevnetTest.php":"17996bb8318d23a417339e72f330c3bd","src\/Configuration\/Network.php":"db39fa961d1f67dde1127324ebc29a88","src\/Configuration\/Fee.php":"009bd25096d57c05b8f76a42e3b1c1ed","src\/Identities\/PrivateKey.php":"7259bbea2e5da198ee87bcde45661666","src\/Identities\/Address.php":"17da781bf1b9c717670918fecce1bc7b","src\/Identities\/PublicKey.php":"8cbe249d218989c54dde4ceb8eefc8e1","src\/Identities\/WIF.php":"09b3bf1f9077384e6e6c9b6661ca9152","src\/Helpers.php":"5736c281d8bb805826442682be38c1dc","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"02f2f4774316d2484fb2b57feb086ea1","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3ee8fd0133cfbcaf15bd9c28a37a5be9","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"581d0559ed948f5feab6967c074892c0","src\/Binary\/Buffer\/Reader\/Buffer.php":"927b99c8047ccb9061e8193f8f144dc7","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"c2efefef99eefa7cf2c67649f97b7faf","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"f53059caa2118b5f6a4960afbbcf2d73","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"484fea469ac07931d69f3c53e1fd09aa","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"6d3c042771c2fd307b216d45532a73a3","src\/Binary\/Buffer\/Writer\/Buffer.php":"165a089ce688104a8db5941cf9ff6558","src\/Binary\/UnsignedInteger\/Reader.php":"45f7182e4f5983c886ee8a589175f83a","src\/Binary\/UnsignedInteger\/Writer.php":"352dd6fbf6d6e6a96773bda8dbdc15b1","src\/Binary\/Integer\/Reader.php":"fc382f0d5cb346069e87bdf57af42dd4","src\/Binary\/Integer\/Writer.php":"c95566b5f15e7440a357a400f4957557","src\/Binary\/Hex\/Reader.php":"84c560f1a4210dcc04cf76e61b741681","src\/Binary\/Hex\/Writer.php":"1fda8dc1fda5769e71492375945421a6","src\/BLS\/Curves\/G2.php":"596cccd6bb8706f1b5475a8dc4b03dc6","src\/BLS\/Curves\/G1.php":"8e3e950703b330142e0caac56f7b3c05","src\/BLS\/EIP2333.php":"9d803020f65ae1b3fadd3db45760da8f","src\/BLS\/Fields\/Fp.php":"3a05a19bd254ea4e4363e9315e83372e","src\/BLS\/Fields\/Fp2.php":"2da2445832239b8832c534758afb7d5a","src\/BLS\/HashToCurve\/G2HashToCurve.php":"cfd7e1dce4b2579547ec54a7d6c9f186","src\/BLS\/ProofOfPossession.php":"f78851c26f020b7b37e8be0f3728696a","src\/Utils\/Slot.php":"415aefcc91d5ee4e5fb0ad58bb4c2242","src\/Utils\/Message.php":"9805c970ca9353cab3c5385055c4a6ae","src\/ByteBuffer\/ByteOrder.php":"c183930b74c3f6216fce6af0ad547412","src\/ByteBuffer\/Concerns\/Offsetable.php":"784a6f9b0aa7c7624d455da260480541","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"4f08096933dcd65121bab249422f8d4c","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"4a06210be32a336cb06a642a2f772c26","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"936ce2ebb44b67b39aeb2706f77b197c","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"e7bd39863ddb227ec17d44ef487579d5","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"45863cd3a3048e5d8e6523d3d7cffc07","src\/ByteBuffer\/Concerns\/Positionable.php":"8fe18d603bcba8ad7ec525c5fea9122a","src\/ByteBuffer\/Concerns\/Readable.php":"1703e1781f4882cc7427ed5e3eab1b90","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"82da46facba54107aceb630852447893","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"e9e2946752da1ed0b71351028deb7eea","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"d3c2432f4a3584750387451be2b069d0","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"bbfe09b67301bb9b8ee003f7b153322b","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"cb71d199dafd21c47c2aecb3a6d9b4b5","src\/ByteBuffer\/Concerns\/Transformable.php":"4b9ded9d8a5b7005f3cbbace02315415","src\/ByteBuffer\/Concerns\/Writeable.php":"d809e2408af8e181ef5c3d3101fde0ad","src\/ByteBuffer\/Concerns\/Sizeable.php":"81c7fbf368a593bb92bf4c9f58a9f72d","src\/ByteBuffer\/Concerns\/Initialisable.php":"1aa3c826684e71339aa6297582c7fcc3","src\/ByteBuffer\/ByteBuffer.php":"460fdd2bf51bacb8d5df479af9c3bac7","src\/ByteBuffer\/LengthMap.php":"d992e88d544bfcd6d169a1632f3e3d05","src\/Transactions\/Builder\/HtlcLockBuilder.php":"f9dff632706b6c63f3c1aade509c6301","src\/Transactions\/Builder\/SecondSignatureRegistrationBuilder.php":"3e00a57bac43eb656a092a649740251f","src\/Transactions\/Builder\/DelegateRegistrationBuilder.php":"94b1cb6bd077a5b9771be530635ea1e2","src\/Transactions\/Builder\/HtlcClaimBuilder.php":"26fa61beaf17a5dc5aa17270f48d02cf","src\/Transactions\/Builder\/VoteBuilder.php":"256a00c4888c2e04a6fa46b8305b034b","src\/Transactions\/Builder\/MultiPaymentBuilder.php":"3befa6a0db1ba663a33f0934a2e3ed68","src\/Transactions\/Builder\/IPFSBuilder.php":"c07a3cb80fcb3e23a38fab812d4516f6","src\/Transactions\/Builder\/HtlcRefundBuilder.php":"172069a2c1744c7e1c26fc3d4506be33","src\/Transactions\/Builder\/MultiSignatureRegistrationBuilder.php":"4fc820ea18d3844a7545bd182697842e","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"b8c23d843ac1abfdd67f328487482dbc","src\/Transactions\/Builder\/DelegateResignationBuilder.php":"f0c849690575a8d158519d6319805e25","src\/Transactions\/Builder\/TransferBuilder.php":"d62a16edd17aae91e9cd5c20b271ea83","src\/Transactions\/Deserializer.php":"1badd55a247238e0ba15fd7613abe668","src\/Transactions\/Serializer.php":"5663addddc99a09e0e60a8c2834872a2","src\/Transactions\/Types\/DelegateRegistration.php":"7d02c0b996e22c4c480b4bd704f54815","src\/Transactions\/Types\/Transaction.php":"80534e6f6d28c853d5f6ee16bf353189","src\/Transactions\/Types\/HtlcLock.php":"cce0b1037c17a6a5ca75fae86831b3b1","src\/Transactions\/Types\/IPFS.php":"289389ba4072e543c4438cb95816d429","src\/Transactions\/Types\/DelegateResignation.php":"43d3b2784c388367154ea03b204eb9de","src\/Transactions\/Types\/MultiPayment.php":"dd7c11fd4a726a6f2e04890622c797ce","src\/Transactions\/Types\/HtlcRefund.php":"1a7c6aa917c84da527e8ba679342dd14","src\/Transactions\/Types\/Vote.php":"9932a1b40eca6b47cd67316f4f0b3aa9","src\/Transactions\/Types\/SecondSignatureRegistration.php":"f9808925fe8103587d9d2c357ee5c5e8","src\/Transactions\/Types\/Transfer.php":"fac76b00748e5b83819bfce8f0520a39","src\/Transactions\/Types\/HtlcClaim.php":"ca80737b8eb8de8af5b11a8f2584da45","src\/Transactions\/Types\/MultiSignatureRegistration.php":"c314aaa3f8add62a8abbbec9fe92ce7e","src\/Enums\/TypeGroup.php":"2df34e8073d807a26f63cb5a92aa4466","src\/Enums\/Fees.php":"ac38a4162fea543d56563c975360270a","src\/Enums\/Types.php":"4d5534dd1a0bbcf26c2f20dd4e7e0c9b","src\/Networks\/AbstractNetwork.php":"c774f58977a6f2ed3fbdba69d2489e4e","src\/Networks\/Devnet.php":"4f0097e6ec4d87f8c72f8bafeaee8892","src\/Networks\/Mainnet.php":"df2645844a8c6dfe8f99a471dc1d85f7","src\/Networks\/Testnet.php":"5a1b266a1c176bcaf9a9ec6068c53b33"}} \ No newline at end of file +{"php":"8.3.6","version":"3.76.0:v3.76.0#0e3c484cef0ae9314b0f85986a36296087432c40","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"hashes":{"src\/Helpers.php":"5736c281d8bb805826442682be38c1dc","src\/Enums\/TypeGroup.php":"2df34e8073d807a26f63cb5a92aa4466","src\/Enums\/Types.php":"4d5534dd1a0bbcf26c2f20dd4e7e0c9b","src\/Enums\/Fees.php":"ac38a4162fea543d56563c975360270a","src\/Identities\/Address.php":"17da781bf1b9c717670918fecce1bc7b","src\/Identities\/PrivateKey.php":"7259bbea2e5da198ee87bcde45661666","src\/Identities\/WIF.php":"09b3bf1f9077384e6e6c9b6661ca9152","src\/Identities\/PublicKey.php":"8cbe249d218989c54dde4ceb8eefc8e1","src\/Binary\/Hex\/Reader.php":"84c560f1a4210dcc04cf76e61b741681","src\/Binary\/Hex\/Writer.php":"1fda8dc1fda5769e71492375945421a6","src\/Binary\/Buffer\/Writer\/Buffer.php":"165a089ce688104a8db5941cf9ff6558","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"f53059caa2118b5f6a4960afbbcf2d73","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"6d3c042771c2fd307b216d45532a73a3","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"c2efefef99eefa7cf2c67649f97b7faf","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"484fea469ac07931d69f3c53e1fd09aa","src\/Binary\/Buffer\/Reader\/Buffer.php":"927b99c8047ccb9061e8193f8f144dc7","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3ee8fd0133cfbcaf15bd9c28a37a5be9","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"581d0559ed948f5feab6967c074892c0","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"02f2f4774316d2484fb2b57feb086ea1","src\/Binary\/Integer\/Reader.php":"fc382f0d5cb346069e87bdf57af42dd4","src\/Binary\/Integer\/Writer.php":"c95566b5f15e7440a357a400f4957557","src\/Binary\/UnsignedInteger\/Reader.php":"45f7182e4f5983c886ee8a589175f83a","src\/Binary\/UnsignedInteger\/Writer.php":"352dd6fbf6d6e6a96773bda8dbdc15b1","src\/Utils\/Slot.php":"415aefcc91d5ee4e5fb0ad58bb4c2242","src\/Utils\/Message.php":"9805c970ca9353cab3c5385055c4a6ae","src\/ByteBuffer\/LengthMap.php":"d992e88d544bfcd6d169a1632f3e3d05","src\/ByteBuffer\/Concerns\/Transformable.php":"4b9ded9d8a5b7005f3cbbace02315415","src\/ByteBuffer\/Concerns\/Positionable.php":"8fe18d603bcba8ad7ec525c5fea9122a","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"936ce2ebb44b67b39aeb2706f77b197c","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"4a06210be32a336cb06a642a2f772c26","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"45863cd3a3048e5d8e6523d3d7cffc07","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"e7bd39863ddb227ec17d44ef487579d5","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"4f08096933dcd65121bab249422f8d4c","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"d3c2432f4a3584750387451be2b069d0","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"e9e2946752da1ed0b71351028deb7eea","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"cb71d199dafd21c47c2aecb3a6d9b4b5","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"bbfe09b67301bb9b8ee003f7b153322b","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"82da46facba54107aceb630852447893","src\/ByteBuffer\/Concerns\/Initialisable.php":"1aa3c826684e71339aa6297582c7fcc3","src\/ByteBuffer\/Concerns\/Sizeable.php":"81c7fbf368a593bb92bf4c9f58a9f72d","src\/ByteBuffer\/Concerns\/Offsetable.php":"784a6f9b0aa7c7624d455da260480541","src\/ByteBuffer\/Concerns\/Readable.php":"1703e1781f4882cc7427ed5e3eab1b90","src\/ByteBuffer\/Concerns\/Writeable.php":"d809e2408af8e181ef5c3d3101fde0ad","src\/ByteBuffer\/ByteBuffer.php":"460fdd2bf51bacb8d5df479af9c3bac7","src\/ByteBuffer\/ByteOrder.php":"c183930b74c3f6216fce6af0ad547412","src\/Transactions\/Builder\/MultiSignatureRegistrationBuilder.php":"4fc820ea18d3844a7545bd182697842e","src\/Transactions\/Builder\/HtlcClaimBuilder.php":"26fa61beaf17a5dc5aa17270f48d02cf","src\/Transactions\/Builder\/IPFSBuilder.php":"c07a3cb80fcb3e23a38fab812d4516f6","src\/Transactions\/Builder\/TransferBuilder.php":"d62a16edd17aae91e9cd5c20b271ea83","src\/Transactions\/Builder\/MultiPaymentBuilder.php":"3befa6a0db1ba663a33f0934a2e3ed68","src\/Transactions\/Builder\/SecondSignatureRegistrationBuilder.php":"3e00a57bac43eb656a092a649740251f","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"b8c23d843ac1abfdd67f328487482dbc","src\/Transactions\/Builder\/DelegateResignationBuilder.php":"f0c849690575a8d158519d6319805e25","src\/Transactions\/Builder\/HtlcRefundBuilder.php":"172069a2c1744c7e1c26fc3d4506be33","src\/Transactions\/Builder\/DelegateRegistrationBuilder.php":"94b1cb6bd077a5b9771be530635ea1e2","src\/Transactions\/Builder\/VoteBuilder.php":"256a00c4888c2e04a6fa46b8305b034b","src\/Transactions\/Builder\/HtlcLockBuilder.php":"f9dff632706b6c63f3c1aade509c6301","src\/Transactions\/Types\/HtlcLock.php":"cce0b1037c17a6a5ca75fae86831b3b1","src\/Transactions\/Types\/SecondSignatureRegistration.php":"f9808925fe8103587d9d2c357ee5c5e8","src\/Transactions\/Types\/MultiSignatureRegistration.php":"c314aaa3f8add62a8abbbec9fe92ce7e","src\/Transactions\/Types\/Vote.php":"9932a1b40eca6b47cd67316f4f0b3aa9","src\/Transactions\/Types\/IPFS.php":"289389ba4072e543c4438cb95816d429","src\/Transactions\/Types\/MultiPayment.php":"dd7c11fd4a726a6f2e04890622c797ce","src\/Transactions\/Types\/HtlcClaim.php":"ca80737b8eb8de8af5b11a8f2584da45","src\/Transactions\/Types\/DelegateRegistration.php":"7d02c0b996e22c4c480b4bd704f54815","src\/Transactions\/Types\/Transfer.php":"fac76b00748e5b83819bfce8f0520a39","src\/Transactions\/Types\/HtlcRefund.php":"1a7c6aa917c84da527e8ba679342dd14","src\/Transactions\/Types\/DelegateResignation.php":"43d3b2784c388367154ea03b204eb9de","src\/Transactions\/Types\/Transaction.php":"80534e6f6d28c853d5f6ee16bf353189","src\/Transactions\/Serializer.php":"5663addddc99a09e0e60a8c2834872a2","src\/Transactions\/Deserializer.php":"1badd55a247238e0ba15fd7613abe668","src\/Configuration\/Fee.php":"009bd25096d57c05b8f76a42e3b1c1ed","src\/Configuration\/Network.php":"db39fa961d1f67dde1127324ebc29a88","src\/BLS\/HashToCurve\/G2HashToCurve.php":"cfd7e1dce4b2579547ec54a7d6c9f186","src\/BLS\/ProofOfPossession.php":"f27d847ffcb5db3d5179367adadcb018","src\/BLS\/Fields\/Fp2.php":"2da2445832239b8832c534758afb7d5a","src\/BLS\/Fields\/Fp.php":"3a05a19bd254ea4e4363e9315e83372e","src\/BLS\/EIP2333.php":"9d803020f65ae1b3fadd3db45760da8f","src\/BLS\/Curves\/G2.php":"596cccd6bb8706f1b5475a8dc4b03dc6","src\/BLS\/Curves\/G1.php":"8e3e950703b330142e0caac56f7b3c05","src\/Networks\/Mainnet.php":"df2645844a8c6dfe8f99a471dc1d85f7","src\/Networks\/AbstractNetwork.php":"c774f58977a6f2ed3fbdba69d2489e4e","src\/Networks\/Devnet.php":"4f0097e6ec4d87f8c72f8bafeaee8892","src\/Networks\/Testnet.php":"5a1b266a1c176bcaf9a9ec6068c53b33","tests\/Unit\/Identities\/PrivateKeyTest.php":"a1f81695d6331d223ac6a3312a00b193","tests\/Unit\/Identities\/PublicKeyTest.php":"4cfded5f1e35c1083fed2ad7efeea615","tests\/Unit\/Identities\/AddressTest.php":"d7d375a29f37a4b9b772c75684c74b48","tests\/Unit\/Identities\/WIFTest.php":"b611511584dd0bfba84f113295365508","tests\/Unit\/Utils\/SlotTest.php":"e2e6bf33055513aeaff285e4904099a4","tests\/Unit\/Utils\/MessageTest.php":"a9a261798733199bf3c7f9f813181875","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"e2eae23b9c271db3191c07b1025640b1","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"09a667b97f0b5625bd2a267ae06b35ff","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"548c09489f87edce63066c196b4c35f2","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"4280210224bfe01b431348823fd37902","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"8617547d4052341646e500679de73dd8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"8bbe9a2d00b2c16e6f07d526ec86954e","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"4a0b5b96e2a1e4b849eebf1f3c8781c8","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"ec65fb8a8be71266fb0191449ae24173","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"69e5e34cf122bfa36a64602fd9df0127","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"5432d25fb0292b9e637f6e04af104745","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"21babc31150ab55f010c0709328bf92d","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"044f6a5480ac976533db063f28b3b0e3","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"28470f16ddf35d79384b866973652813","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"f3724a1f16a007a2d1a59001556d7cad","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"784101c1b5986dcdd939d47bc966684d","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"e6f2608e0921d2b2c25e3796e0e0a920","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"5951a16b75f5be22726c8f7db5bc9e17","tests\/Unit\/Transactions\/Builder\/DelegateRegistrationTest.php":"b4c0f10f2b10a91728e8352790f8f538","tests\/Unit\/Transactions\/Builder\/HtlcRefundTest.php":"e1113d28fa608fb7ff0ad4447a8b2f20","tests\/Unit\/Transactions\/Builder\/TransferTest.php":"70cdd71c9cbb57bfb51c3e4a1bd74e86","tests\/Unit\/Transactions\/Builder\/HtlcLockTest.php":"3c2c4fd37a0d14b006833fd1ac62663d","tests\/Unit\/Transactions\/Builder\/MultiSignatureRegistrationTest.php":"e5b48524e7e97683ec8a1f7c9b43ba8e","tests\/Unit\/Transactions\/Builder\/IPFSTest.php":"310d8ef8251e14a9a6498b03cdd0d912","tests\/Unit\/Transactions\/Builder\/DelegateResignationTest.php":"527f6988349a098d4fa6b92c78570954","tests\/Unit\/Transactions\/Builder\/VoteTest.php":"db91e16f8987dd6c050471bd0704523a","tests\/Unit\/Transactions\/Builder\/HtlcClaimTest.php":"619401dcbbee5dc4034429824bec865c","tests\/Unit\/Transactions\/Builder\/SecondSignatureRegistrationTest.php":"55f2fc9a05b4417820c3574aa828fdb3","tests\/Unit\/Transactions\/Builder\/MultiPaymentTest.php":"968a69c19596fbbba3f07e022c44ba12","tests\/Unit\/Transactions\/TransactionTest.php":"ac2e2e1de31db779f543a7d3f257822c","tests\/Unit\/Transactions\/Serializers\/DelegateRegistrationTest.php":"04d9dc16c57e35bed0f98cd305302e3b","tests\/Unit\/Transactions\/Serializers\/HtlcRefundTest.php":"7af106a7fd38c4cdc8c57ecf6e03ab9c","tests\/Unit\/Transactions\/Serializers\/TransferTest.php":"bbf565785bd31035aac40b0c61bb4d6a","tests\/Unit\/Transactions\/Serializers\/HtlcLockTest.php":"62d7af16064c66ced72b535ead234a8f","tests\/Unit\/Transactions\/Serializers\/MultiSignatureRegistrationTest.php":"d33995e48fe07147304a582454df446e","tests\/Unit\/Transactions\/Serializers\/IPFSTest.php":"9cbab01a748f824e2fa66a996268cf2e","tests\/Unit\/Transactions\/Serializers\/DelegateResignationTest.php":"17dcdb013d1a6b2d0dc02d077ec101e2","tests\/Unit\/Transactions\/Serializers\/VoteTest.php":"632138bad64d4a325a95447a133bf3ca","tests\/Unit\/Transactions\/Serializers\/HtlcClaimTest.php":"69759df1d1377a02216573ac4e0c7694","tests\/Unit\/Transactions\/Serializers\/SecondSignatureRegistrationTest.php":"7ffcc9bcfdf6ccde05c8d08b81b7273f","tests\/Unit\/Transactions\/Serializers\/MultiPaymentTest.php":"04c22b03bffce8c2a713880517b0b1ec","tests\/Unit\/Transactions\/Deserializers\/DelegateRegistrationTest.php":"9b0ce921e9b1c575f715ec028c5aec42","tests\/Unit\/Transactions\/Deserializers\/HtlcRefundTest.php":"22afd8ec2418d0406e4f42ee0e431b42","tests\/Unit\/Transactions\/Deserializers\/TransferTest.php":"0a7038846d256444b667fe80381698e0","tests\/Unit\/Transactions\/Deserializers\/HtlcLockTest.php":"cc70be6e68236f806f89b93bac7696ca","tests\/Unit\/Transactions\/Deserializers\/MultiSignatureRegistrationTest.php":"1eb49e69bccee286f928c156633711ab","tests\/Unit\/Transactions\/Deserializers\/IPFSTest.php":"53e714f862c3256e29660ab97ec6bf94","tests\/Unit\/Transactions\/Deserializers\/DelegateResignationTest.php":"8be75e4b6a9dd2072c7862dae1116b8e","tests\/Unit\/Transactions\/Deserializers\/VoteTest.php":"fc61b9e98d001ee47dc6d61e87dddc1b","tests\/Unit\/Transactions\/Deserializers\/HtlcClaimTest.php":"30cacd4874af19e6026bafb57ee78b0a","tests\/Unit\/Transactions\/Deserializers\/SecondSignatureRegistrationTest.php":"dfff4015d30f5e785a1933eb3475818d","tests\/Unit\/Transactions\/Deserializers\/MultiPaymentTest.php":"73b1d1ce139b3efac75814e4d13fedc0","tests\/Unit\/Configuration\/NetworkTest.php":"302b258b1f3ae05e0216d25929b69ea7","tests\/Unit\/Configuration\/FeeTest.php":"ce7f567b72dd0126683277b243fa9fc3","tests\/Unit\/BLS\/EIP2333Test.php":"a7cbb6d601453304110e6e429ba9488b","tests\/Unit\/BLS\/ProofOfPossessionTest.php":"5a63ee9e7e557287cc11749e48b8eced","tests\/Unit\/Networks\/NetworkTestCase.php":"f529bc550cd6b9d68f1287d0181ae150","tests\/Unit\/Networks\/MainnetTest.php":"3307b4e256af4b9fd66437a5ebd0e8a2","tests\/Unit\/Networks\/TestnetTest.php":"a6984eb7fa87bc6cf693bc241188e698","tests\/Unit\/Networks\/DevnetTest.php":"17996bb8318d23a417339e72f330c3bd","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/TestCase.php":"8ad8b9b7b084dc0d2c28a247ac4a7988","tests\/Concerns\/Serialize.php":"134128506ad4e0f69949f773c1df3a70","tests\/Concerns\/Deserialize.php":"68b8f4b8877221e5052c9dd5f011aaa9","tests\/Concerns\/Fixtures.php":"a1cbc1ecf6e31bd07fdac1c230d7aa6f","tests\/Analysis\/AnalysisTest.php":"a9d0b7406e5a6894ce689229a4b939ff"}} \ No newline at end of file diff --git a/src/BLS/ProofOfPossession.php b/src/BLS/ProofOfPossession.php index d38a43ee..2602315e 100644 --- a/src/BLS/ProofOfPossession.php +++ b/src/BLS/ProofOfPossession.php @@ -9,7 +9,7 @@ use InvalidArgumentException; /** - * DST used for PoP signatures: "BLS_POP_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_" + * DST used for PoP signatures: "BLS_POP_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_". */ final class ProofOfPossession { From 96a50c745049e57f5faf03b2ab4669584aaa9d78 Mon Sep 17 00:00:00 2001 From: Shahin Safaraliyev Date: Fri, 12 Jun 2026 13:41:25 +0400 Subject: [PATCH 12/27] feat: add BLS implementation --- src/BLS/Curves/G1.php | 2 +- src/BLS/Curves/G2.php | 20 -------------------- src/BLS/Fields/Fp.php | 23 ----------------------- src/BLS/Fields/Fp2.php | 10 ---------- src/BLS/HashToCurve/G2HashToCurve.php | 4 ---- 5 files changed, 1 insertion(+), 58 deletions(-) diff --git a/src/BLS/Curves/G1.php b/src/BLS/Curves/G1.php index 8f8b58f2..ec78b980 100644 --- a/src/BLS/Curves/G1.php +++ b/src/BLS/Curves/G1.php @@ -127,7 +127,7 @@ public function neg(): self } // ------------------------------------------------------------------------- - // Scalar multiplication (double-and-add from MSB) + // Scalar multiplication (LSB double-and-add) // ------------------------------------------------------------------------- public function scalarMul(\GMP $k): self diff --git a/src/BLS/Curves/G2.php b/src/BLS/Curves/G2.php index 8e60abf1..a6f430cf 100644 --- a/src/BLS/Curves/G2.php +++ b/src/BLS/Curves/G2.php @@ -69,21 +69,6 @@ public function isIdentity(): bool return $this->z->isZero(); } - public function getX(): Fp2 - { - return $this->x; - } - - public function getY(): Fp2 - { - return $this->y; - } - - public function getZ(): Fp2 - { - return $this->z; - } - // ------------------------------------------------------------------------- // Point doubling (dbl-2009-l, a=0 for G2) // ------------------------------------------------------------------------- @@ -302,11 +287,6 @@ public function toCompressedBytes(): string return $bytes; } - public function toHex(): string - { - return bin2hex($this->toCompressedBytes()); - } - /** * Lazily compute and cache the three Frobenius constants. * base = 1/(1+u) in Fp2 = ((p+1)/2, (p-1)/2) diff --git a/src/BLS/Fields/Fp.php b/src/BLS/Fields/Fp.php index 298d16e1..77aaca7c 100644 --- a/src/BLS/Fields/Fp.php +++ b/src/BLS/Fields/Fp.php @@ -46,11 +46,6 @@ public static function fromInt(int $n): self return new self(gmp_init($n)); } - public static function fromBytes(string $bytes): self - { - return new self(gmp_init(bin2hex($bytes), 16)); - } - public static function zero(): self { return new self(gmp_init(0)); @@ -132,11 +127,6 @@ public function pow(GMP $exp): self return new self(gmp_powm($this->value, $exp, self::prime())); } - public function div(self $other): self - { - return $this->mul($other->inv()); - } - // ------------------------------------------------------------------------- // Predicates // ------------------------------------------------------------------------- @@ -164,15 +154,6 @@ public function isNegative(): bool return gmp_cmp($this->value, gmp_div(self::prime(), 2)) > 0; } - // ------------------------------------------------------------------------- - // Conditional move (for constant-time-style operations in SWU) - // ------------------------------------------------------------------------- - - public static function cmov(self $a, self $b, bool $condition): self - { - return $condition ? $b : $a; - } - // ------------------------------------------------------------------------- // Serialization // ------------------------------------------------------------------------- @@ -185,8 +166,4 @@ public function toBytes(): string return hex2bin($hex); } - public function toHex(): string - { - return str_pad(gmp_strval($this->value, 16), 96, '0', STR_PAD_LEFT); - } } diff --git a/src/BLS/Fields/Fp2.php b/src/BLS/Fields/Fp2.php index 634dccec..94f53bda 100644 --- a/src/BLS/Fields/Fp2.php +++ b/src/BLS/Fields/Fp2.php @@ -75,11 +75,6 @@ public function mul(self $other): self return new self($c0, $c1); } - public function mulFp(Fp $scalar): self - { - return new self($this->c0->mul($scalar), $this->c1->mul($scalar)); - } - public function mulInt(int $n): self { $s = Fp::fromInt($n); @@ -118,11 +113,6 @@ public function inv(): self return new self($this->c0->mul($invNorm), $this->c1->neg()->mul($invNorm)); } - public function div(self $other): self - { - return $this->mul($other->inv()); - } - /** * Exponentiation by a large GMP integer. */ diff --git a/src/BLS/HashToCurve/G2HashToCurve.php b/src/BLS/HashToCurve/G2HashToCurve.php index 0a9412bf..9866d5be 100644 --- a/src/BLS/HashToCurve/G2HashToCurve.php +++ b/src/BLS/HashToCurve/G2HashToCurve.php @@ -92,8 +92,6 @@ final class G2HashToCurve private static ?Fp2 $swuC7 = null; - private static ?Fp2 $swuC3cached = null; - /** * Hash a byte string to a G2 point using the POP-DST. * Input: arbitrary bytes (e.g., a compressed G1 public key for PoP). @@ -251,8 +249,6 @@ private static function sqrtRatio(Fp2 $u, Fp2 $v): array { [$c6, $c7] = self::swuPrecompute(); - // The algorithm uses small-power exponents that we compute with Fp2::pow - $c4 = gmp_init(7); // 2^c1 - 1 = 7 $c5 = gmp_init(4); // 2^(c1-1) = 4 $c3 = self::swuC3(); From 3ed222760fa10e2f841153c353edffc6ac6f065d Mon Sep 17 00:00:00 2001 From: Shahin Safaraliyev Date: Fri, 12 Jun 2026 14:37:37 +0400 Subject: [PATCH 13/27] feat: add BLS implementation --- .php-cs-fixer.cache | 2 +- src/BLS/Fields/Fp.php | 1 - tests/Unit/BLS/ProofOfPossessionTest.php | 71 ++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 2 deletions(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index bb076598..eee22b64 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.3.6","version":"3.76.0:v3.76.0#0e3c484cef0ae9314b0f85986a36296087432c40","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"hashes":{"src\/Helpers.php":"5736c281d8bb805826442682be38c1dc","src\/Enums\/TypeGroup.php":"2df34e8073d807a26f63cb5a92aa4466","src\/Enums\/Types.php":"4d5534dd1a0bbcf26c2f20dd4e7e0c9b","src\/Enums\/Fees.php":"ac38a4162fea543d56563c975360270a","src\/Identities\/Address.php":"17da781bf1b9c717670918fecce1bc7b","src\/Identities\/PrivateKey.php":"7259bbea2e5da198ee87bcde45661666","src\/Identities\/WIF.php":"09b3bf1f9077384e6e6c9b6661ca9152","src\/Identities\/PublicKey.php":"8cbe249d218989c54dde4ceb8eefc8e1","src\/Binary\/Hex\/Reader.php":"84c560f1a4210dcc04cf76e61b741681","src\/Binary\/Hex\/Writer.php":"1fda8dc1fda5769e71492375945421a6","src\/Binary\/Buffer\/Writer\/Buffer.php":"165a089ce688104a8db5941cf9ff6558","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"f53059caa2118b5f6a4960afbbcf2d73","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"6d3c042771c2fd307b216d45532a73a3","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"c2efefef99eefa7cf2c67649f97b7faf","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"484fea469ac07931d69f3c53e1fd09aa","src\/Binary\/Buffer\/Reader\/Buffer.php":"927b99c8047ccb9061e8193f8f144dc7","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3ee8fd0133cfbcaf15bd9c28a37a5be9","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"581d0559ed948f5feab6967c074892c0","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"02f2f4774316d2484fb2b57feb086ea1","src\/Binary\/Integer\/Reader.php":"fc382f0d5cb346069e87bdf57af42dd4","src\/Binary\/Integer\/Writer.php":"c95566b5f15e7440a357a400f4957557","src\/Binary\/UnsignedInteger\/Reader.php":"45f7182e4f5983c886ee8a589175f83a","src\/Binary\/UnsignedInteger\/Writer.php":"352dd6fbf6d6e6a96773bda8dbdc15b1","src\/Utils\/Slot.php":"415aefcc91d5ee4e5fb0ad58bb4c2242","src\/Utils\/Message.php":"9805c970ca9353cab3c5385055c4a6ae","src\/ByteBuffer\/LengthMap.php":"d992e88d544bfcd6d169a1632f3e3d05","src\/ByteBuffer\/Concerns\/Transformable.php":"4b9ded9d8a5b7005f3cbbace02315415","src\/ByteBuffer\/Concerns\/Positionable.php":"8fe18d603bcba8ad7ec525c5fea9122a","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"936ce2ebb44b67b39aeb2706f77b197c","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"4a06210be32a336cb06a642a2f772c26","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"45863cd3a3048e5d8e6523d3d7cffc07","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"e7bd39863ddb227ec17d44ef487579d5","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"4f08096933dcd65121bab249422f8d4c","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"d3c2432f4a3584750387451be2b069d0","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"e9e2946752da1ed0b71351028deb7eea","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"cb71d199dafd21c47c2aecb3a6d9b4b5","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"bbfe09b67301bb9b8ee003f7b153322b","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"82da46facba54107aceb630852447893","src\/ByteBuffer\/Concerns\/Initialisable.php":"1aa3c826684e71339aa6297582c7fcc3","src\/ByteBuffer\/Concerns\/Sizeable.php":"81c7fbf368a593bb92bf4c9f58a9f72d","src\/ByteBuffer\/Concerns\/Offsetable.php":"784a6f9b0aa7c7624d455da260480541","src\/ByteBuffer\/Concerns\/Readable.php":"1703e1781f4882cc7427ed5e3eab1b90","src\/ByteBuffer\/Concerns\/Writeable.php":"d809e2408af8e181ef5c3d3101fde0ad","src\/ByteBuffer\/ByteBuffer.php":"460fdd2bf51bacb8d5df479af9c3bac7","src\/ByteBuffer\/ByteOrder.php":"c183930b74c3f6216fce6af0ad547412","src\/Transactions\/Builder\/MultiSignatureRegistrationBuilder.php":"4fc820ea18d3844a7545bd182697842e","src\/Transactions\/Builder\/HtlcClaimBuilder.php":"26fa61beaf17a5dc5aa17270f48d02cf","src\/Transactions\/Builder\/IPFSBuilder.php":"c07a3cb80fcb3e23a38fab812d4516f6","src\/Transactions\/Builder\/TransferBuilder.php":"d62a16edd17aae91e9cd5c20b271ea83","src\/Transactions\/Builder\/MultiPaymentBuilder.php":"3befa6a0db1ba663a33f0934a2e3ed68","src\/Transactions\/Builder\/SecondSignatureRegistrationBuilder.php":"3e00a57bac43eb656a092a649740251f","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"b8c23d843ac1abfdd67f328487482dbc","src\/Transactions\/Builder\/DelegateResignationBuilder.php":"f0c849690575a8d158519d6319805e25","src\/Transactions\/Builder\/HtlcRefundBuilder.php":"172069a2c1744c7e1c26fc3d4506be33","src\/Transactions\/Builder\/DelegateRegistrationBuilder.php":"94b1cb6bd077a5b9771be530635ea1e2","src\/Transactions\/Builder\/VoteBuilder.php":"256a00c4888c2e04a6fa46b8305b034b","src\/Transactions\/Builder\/HtlcLockBuilder.php":"f9dff632706b6c63f3c1aade509c6301","src\/Transactions\/Types\/HtlcLock.php":"cce0b1037c17a6a5ca75fae86831b3b1","src\/Transactions\/Types\/SecondSignatureRegistration.php":"f9808925fe8103587d9d2c357ee5c5e8","src\/Transactions\/Types\/MultiSignatureRegistration.php":"c314aaa3f8add62a8abbbec9fe92ce7e","src\/Transactions\/Types\/Vote.php":"9932a1b40eca6b47cd67316f4f0b3aa9","src\/Transactions\/Types\/IPFS.php":"289389ba4072e543c4438cb95816d429","src\/Transactions\/Types\/MultiPayment.php":"dd7c11fd4a726a6f2e04890622c797ce","src\/Transactions\/Types\/HtlcClaim.php":"ca80737b8eb8de8af5b11a8f2584da45","src\/Transactions\/Types\/DelegateRegistration.php":"7d02c0b996e22c4c480b4bd704f54815","src\/Transactions\/Types\/Transfer.php":"fac76b00748e5b83819bfce8f0520a39","src\/Transactions\/Types\/HtlcRefund.php":"1a7c6aa917c84da527e8ba679342dd14","src\/Transactions\/Types\/DelegateResignation.php":"43d3b2784c388367154ea03b204eb9de","src\/Transactions\/Types\/Transaction.php":"80534e6f6d28c853d5f6ee16bf353189","src\/Transactions\/Serializer.php":"5663addddc99a09e0e60a8c2834872a2","src\/Transactions\/Deserializer.php":"1badd55a247238e0ba15fd7613abe668","src\/Configuration\/Fee.php":"009bd25096d57c05b8f76a42e3b1c1ed","src\/Configuration\/Network.php":"db39fa961d1f67dde1127324ebc29a88","src\/BLS\/HashToCurve\/G2HashToCurve.php":"cfd7e1dce4b2579547ec54a7d6c9f186","src\/BLS\/ProofOfPossession.php":"f27d847ffcb5db3d5179367adadcb018","src\/BLS\/Fields\/Fp2.php":"2da2445832239b8832c534758afb7d5a","src\/BLS\/Fields\/Fp.php":"3a05a19bd254ea4e4363e9315e83372e","src\/BLS\/EIP2333.php":"9d803020f65ae1b3fadd3db45760da8f","src\/BLS\/Curves\/G2.php":"596cccd6bb8706f1b5475a8dc4b03dc6","src\/BLS\/Curves\/G1.php":"8e3e950703b330142e0caac56f7b3c05","src\/Networks\/Mainnet.php":"df2645844a8c6dfe8f99a471dc1d85f7","src\/Networks\/AbstractNetwork.php":"c774f58977a6f2ed3fbdba69d2489e4e","src\/Networks\/Devnet.php":"4f0097e6ec4d87f8c72f8bafeaee8892","src\/Networks\/Testnet.php":"5a1b266a1c176bcaf9a9ec6068c53b33","tests\/Unit\/Identities\/PrivateKeyTest.php":"a1f81695d6331d223ac6a3312a00b193","tests\/Unit\/Identities\/PublicKeyTest.php":"4cfded5f1e35c1083fed2ad7efeea615","tests\/Unit\/Identities\/AddressTest.php":"d7d375a29f37a4b9b772c75684c74b48","tests\/Unit\/Identities\/WIFTest.php":"b611511584dd0bfba84f113295365508","tests\/Unit\/Utils\/SlotTest.php":"e2e6bf33055513aeaff285e4904099a4","tests\/Unit\/Utils\/MessageTest.php":"a9a261798733199bf3c7f9f813181875","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"e2eae23b9c271db3191c07b1025640b1","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"09a667b97f0b5625bd2a267ae06b35ff","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"548c09489f87edce63066c196b4c35f2","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"4280210224bfe01b431348823fd37902","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"8617547d4052341646e500679de73dd8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"8bbe9a2d00b2c16e6f07d526ec86954e","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"4a0b5b96e2a1e4b849eebf1f3c8781c8","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"ec65fb8a8be71266fb0191449ae24173","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"69e5e34cf122bfa36a64602fd9df0127","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"5432d25fb0292b9e637f6e04af104745","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"21babc31150ab55f010c0709328bf92d","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"044f6a5480ac976533db063f28b3b0e3","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"28470f16ddf35d79384b866973652813","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"f3724a1f16a007a2d1a59001556d7cad","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"784101c1b5986dcdd939d47bc966684d","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"e6f2608e0921d2b2c25e3796e0e0a920","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"5951a16b75f5be22726c8f7db5bc9e17","tests\/Unit\/Transactions\/Builder\/DelegateRegistrationTest.php":"b4c0f10f2b10a91728e8352790f8f538","tests\/Unit\/Transactions\/Builder\/HtlcRefundTest.php":"e1113d28fa608fb7ff0ad4447a8b2f20","tests\/Unit\/Transactions\/Builder\/TransferTest.php":"70cdd71c9cbb57bfb51c3e4a1bd74e86","tests\/Unit\/Transactions\/Builder\/HtlcLockTest.php":"3c2c4fd37a0d14b006833fd1ac62663d","tests\/Unit\/Transactions\/Builder\/MultiSignatureRegistrationTest.php":"e5b48524e7e97683ec8a1f7c9b43ba8e","tests\/Unit\/Transactions\/Builder\/IPFSTest.php":"310d8ef8251e14a9a6498b03cdd0d912","tests\/Unit\/Transactions\/Builder\/DelegateResignationTest.php":"527f6988349a098d4fa6b92c78570954","tests\/Unit\/Transactions\/Builder\/VoteTest.php":"db91e16f8987dd6c050471bd0704523a","tests\/Unit\/Transactions\/Builder\/HtlcClaimTest.php":"619401dcbbee5dc4034429824bec865c","tests\/Unit\/Transactions\/Builder\/SecondSignatureRegistrationTest.php":"55f2fc9a05b4417820c3574aa828fdb3","tests\/Unit\/Transactions\/Builder\/MultiPaymentTest.php":"968a69c19596fbbba3f07e022c44ba12","tests\/Unit\/Transactions\/TransactionTest.php":"ac2e2e1de31db779f543a7d3f257822c","tests\/Unit\/Transactions\/Serializers\/DelegateRegistrationTest.php":"04d9dc16c57e35bed0f98cd305302e3b","tests\/Unit\/Transactions\/Serializers\/HtlcRefundTest.php":"7af106a7fd38c4cdc8c57ecf6e03ab9c","tests\/Unit\/Transactions\/Serializers\/TransferTest.php":"bbf565785bd31035aac40b0c61bb4d6a","tests\/Unit\/Transactions\/Serializers\/HtlcLockTest.php":"62d7af16064c66ced72b535ead234a8f","tests\/Unit\/Transactions\/Serializers\/MultiSignatureRegistrationTest.php":"d33995e48fe07147304a582454df446e","tests\/Unit\/Transactions\/Serializers\/IPFSTest.php":"9cbab01a748f824e2fa66a996268cf2e","tests\/Unit\/Transactions\/Serializers\/DelegateResignationTest.php":"17dcdb013d1a6b2d0dc02d077ec101e2","tests\/Unit\/Transactions\/Serializers\/VoteTest.php":"632138bad64d4a325a95447a133bf3ca","tests\/Unit\/Transactions\/Serializers\/HtlcClaimTest.php":"69759df1d1377a02216573ac4e0c7694","tests\/Unit\/Transactions\/Serializers\/SecondSignatureRegistrationTest.php":"7ffcc9bcfdf6ccde05c8d08b81b7273f","tests\/Unit\/Transactions\/Serializers\/MultiPaymentTest.php":"04c22b03bffce8c2a713880517b0b1ec","tests\/Unit\/Transactions\/Deserializers\/DelegateRegistrationTest.php":"9b0ce921e9b1c575f715ec028c5aec42","tests\/Unit\/Transactions\/Deserializers\/HtlcRefundTest.php":"22afd8ec2418d0406e4f42ee0e431b42","tests\/Unit\/Transactions\/Deserializers\/TransferTest.php":"0a7038846d256444b667fe80381698e0","tests\/Unit\/Transactions\/Deserializers\/HtlcLockTest.php":"cc70be6e68236f806f89b93bac7696ca","tests\/Unit\/Transactions\/Deserializers\/MultiSignatureRegistrationTest.php":"1eb49e69bccee286f928c156633711ab","tests\/Unit\/Transactions\/Deserializers\/IPFSTest.php":"53e714f862c3256e29660ab97ec6bf94","tests\/Unit\/Transactions\/Deserializers\/DelegateResignationTest.php":"8be75e4b6a9dd2072c7862dae1116b8e","tests\/Unit\/Transactions\/Deserializers\/VoteTest.php":"fc61b9e98d001ee47dc6d61e87dddc1b","tests\/Unit\/Transactions\/Deserializers\/HtlcClaimTest.php":"30cacd4874af19e6026bafb57ee78b0a","tests\/Unit\/Transactions\/Deserializers\/SecondSignatureRegistrationTest.php":"dfff4015d30f5e785a1933eb3475818d","tests\/Unit\/Transactions\/Deserializers\/MultiPaymentTest.php":"73b1d1ce139b3efac75814e4d13fedc0","tests\/Unit\/Configuration\/NetworkTest.php":"302b258b1f3ae05e0216d25929b69ea7","tests\/Unit\/Configuration\/FeeTest.php":"ce7f567b72dd0126683277b243fa9fc3","tests\/Unit\/BLS\/EIP2333Test.php":"a7cbb6d601453304110e6e429ba9488b","tests\/Unit\/BLS\/ProofOfPossessionTest.php":"5a63ee9e7e557287cc11749e48b8eced","tests\/Unit\/Networks\/NetworkTestCase.php":"f529bc550cd6b9d68f1287d0181ae150","tests\/Unit\/Networks\/MainnetTest.php":"3307b4e256af4b9fd66437a5ebd0e8a2","tests\/Unit\/Networks\/TestnetTest.php":"a6984eb7fa87bc6cf693bc241188e698","tests\/Unit\/Networks\/DevnetTest.php":"17996bb8318d23a417339e72f330c3bd","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/TestCase.php":"8ad8b9b7b084dc0d2c28a247ac4a7988","tests\/Concerns\/Serialize.php":"134128506ad4e0f69949f773c1df3a70","tests\/Concerns\/Deserialize.php":"68b8f4b8877221e5052c9dd5f011aaa9","tests\/Concerns\/Fixtures.php":"a1cbc1ecf6e31bd07fdac1c230d7aa6f","tests\/Analysis\/AnalysisTest.php":"a9d0b7406e5a6894ce689229a4b939ff"}} \ No newline at end of file +{"php":"8.3.31","version":"3.76.0:v3.76.0#0e3c484cef0ae9314b0f85986a36296087432c40","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"hashes":{"tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Analysis\/AnalysisTest.php":"a9d0b7406e5a6894ce689229a4b939ff","tests\/Concerns\/Serialize.php":"134128506ad4e0f69949f773c1df3a70","tests\/Concerns\/Fixtures.php":"a1cbc1ecf6e31bd07fdac1c230d7aa6f","tests\/Concerns\/Deserialize.php":"68b8f4b8877221e5052c9dd5f011aaa9","tests\/TestCase.php":"8ad8b9b7b084dc0d2c28a247ac4a7988","tests\/Unit\/Configuration\/FeeTest.php":"ce7f567b72dd0126683277b243fa9fc3","tests\/Unit\/Configuration\/NetworkTest.php":"302b258b1f3ae05e0216d25929b69ea7","tests\/Unit\/Identities\/PrivateKeyTest.php":"a1f81695d6331d223ac6a3312a00b193","tests\/Unit\/Identities\/AddressTest.php":"d7d375a29f37a4b9b772c75684c74b48","tests\/Unit\/Identities\/WIFTest.php":"b611511584dd0bfba84f113295365508","tests\/Unit\/Identities\/PublicKeyTest.php":"4cfded5f1e35c1083fed2ad7efeea615","tests\/Unit\/BLS\/EIP2333Test.php":"a7cbb6d601453304110e6e429ba9488b","tests\/Unit\/BLS\/ProofOfPossessionTest.php":"f6ec213024f4339c84c407bdd842380a","tests\/Unit\/Utils\/SlotTest.php":"e2e6bf33055513aeaff285e4904099a4","tests\/Unit\/Utils\/MessageTest.php":"a9a261798733199bf3c7f9f813181875","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"5951a16b75f5be22726c8f7db5bc9e17","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"4280210224bfe01b431348823fd37902","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"8617547d4052341646e500679de73dd8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"8bbe9a2d00b2c16e6f07d526ec86954e","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"4a0b5b96e2a1e4b849eebf1f3c8781c8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"548c09489f87edce63066c196b4c35f2","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"09a667b97f0b5625bd2a267ae06b35ff","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"784101c1b5986dcdd939d47bc966684d","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"f3724a1f16a007a2d1a59001556d7cad","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"69e5e34cf122bfa36a64602fd9df0127","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"5432d25fb0292b9e637f6e04af104745","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"21babc31150ab55f010c0709328bf92d","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"044f6a5480ac976533db063f28b3b0e3","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"ec65fb8a8be71266fb0191449ae24173","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"28470f16ddf35d79384b866973652813","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"e6f2608e0921d2b2c25e3796e0e0a920","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"e2eae23b9c271db3191c07b1025640b1","tests\/Unit\/Transactions\/Builder\/MultiPaymentTest.php":"968a69c19596fbbba3f07e022c44ba12","tests\/Unit\/Transactions\/Builder\/HtlcLockTest.php":"3c2c4fd37a0d14b006833fd1ac62663d","tests\/Unit\/Transactions\/Builder\/VoteTest.php":"db91e16f8987dd6c050471bd0704523a","tests\/Unit\/Transactions\/Builder\/SecondSignatureRegistrationTest.php":"55f2fc9a05b4417820c3574aa828fdb3","tests\/Unit\/Transactions\/Builder\/DelegateRegistrationTest.php":"b4c0f10f2b10a91728e8352790f8f538","tests\/Unit\/Transactions\/Builder\/HtlcClaimTest.php":"619401dcbbee5dc4034429824bec865c","tests\/Unit\/Transactions\/Builder\/DelegateResignationTest.php":"527f6988349a098d4fa6b92c78570954","tests\/Unit\/Transactions\/Builder\/TransferTest.php":"70cdd71c9cbb57bfb51c3e4a1bd74e86","tests\/Unit\/Transactions\/Builder\/MultiSignatureRegistrationTest.php":"e5b48524e7e97683ec8a1f7c9b43ba8e","tests\/Unit\/Transactions\/Builder\/HtlcRefundTest.php":"e1113d28fa608fb7ff0ad4447a8b2f20","tests\/Unit\/Transactions\/Builder\/IPFSTest.php":"310d8ef8251e14a9a6498b03cdd0d912","tests\/Unit\/Transactions\/Serializers\/MultiPaymentTest.php":"04c22b03bffce8c2a713880517b0b1ec","tests\/Unit\/Transactions\/Serializers\/HtlcLockTest.php":"62d7af16064c66ced72b535ead234a8f","tests\/Unit\/Transactions\/Serializers\/VoteTest.php":"632138bad64d4a325a95447a133bf3ca","tests\/Unit\/Transactions\/Serializers\/SecondSignatureRegistrationTest.php":"7ffcc9bcfdf6ccde05c8d08b81b7273f","tests\/Unit\/Transactions\/Serializers\/DelegateRegistrationTest.php":"04d9dc16c57e35bed0f98cd305302e3b","tests\/Unit\/Transactions\/Serializers\/HtlcClaimTest.php":"69759df1d1377a02216573ac4e0c7694","tests\/Unit\/Transactions\/Serializers\/DelegateResignationTest.php":"17dcdb013d1a6b2d0dc02d077ec101e2","tests\/Unit\/Transactions\/Serializers\/TransferTest.php":"bbf565785bd31035aac40b0c61bb4d6a","tests\/Unit\/Transactions\/Serializers\/MultiSignatureRegistrationTest.php":"d33995e48fe07147304a582454df446e","tests\/Unit\/Transactions\/Serializers\/HtlcRefundTest.php":"7af106a7fd38c4cdc8c57ecf6e03ab9c","tests\/Unit\/Transactions\/Serializers\/IPFSTest.php":"9cbab01a748f824e2fa66a996268cf2e","tests\/Unit\/Transactions\/Deserializers\/MultiPaymentTest.php":"73b1d1ce139b3efac75814e4d13fedc0","tests\/Unit\/Transactions\/Deserializers\/HtlcLockTest.php":"cc70be6e68236f806f89b93bac7696ca","tests\/Unit\/Transactions\/Deserializers\/VoteTest.php":"fc61b9e98d001ee47dc6d61e87dddc1b","tests\/Unit\/Transactions\/Deserializers\/SecondSignatureRegistrationTest.php":"dfff4015d30f5e785a1933eb3475818d","tests\/Unit\/Transactions\/Deserializers\/DelegateRegistrationTest.php":"9b0ce921e9b1c575f715ec028c5aec42","tests\/Unit\/Transactions\/Deserializers\/HtlcClaimTest.php":"30cacd4874af19e6026bafb57ee78b0a","tests\/Unit\/Transactions\/Deserializers\/DelegateResignationTest.php":"8be75e4b6a9dd2072c7862dae1116b8e","tests\/Unit\/Transactions\/Deserializers\/TransferTest.php":"0a7038846d256444b667fe80381698e0","tests\/Unit\/Transactions\/Deserializers\/MultiSignatureRegistrationTest.php":"1eb49e69bccee286f928c156633711ab","tests\/Unit\/Transactions\/Deserializers\/HtlcRefundTest.php":"22afd8ec2418d0406e4f42ee0e431b42","tests\/Unit\/Transactions\/Deserializers\/IPFSTest.php":"53e714f862c3256e29660ab97ec6bf94","tests\/Unit\/Transactions\/TransactionTest.php":"ac2e2e1de31db779f543a7d3f257822c","tests\/Unit\/Networks\/MainnetTest.php":"3307b4e256af4b9fd66437a5ebd0e8a2","tests\/Unit\/Networks\/NetworkTestCase.php":"f529bc550cd6b9d68f1287d0181ae150","tests\/Unit\/Networks\/TestnetTest.php":"a6984eb7fa87bc6cf693bc241188e698","tests\/Unit\/Networks\/DevnetTest.php":"17996bb8318d23a417339e72f330c3bd","src\/Configuration\/Network.php":"db39fa961d1f67dde1127324ebc29a88","src\/Configuration\/Fee.php":"009bd25096d57c05b8f76a42e3b1c1ed","src\/Identities\/PrivateKey.php":"7259bbea2e5da198ee87bcde45661666","src\/Identities\/Address.php":"17da781bf1b9c717670918fecce1bc7b","src\/Identities\/PublicKey.php":"8cbe249d218989c54dde4ceb8eefc8e1","src\/Identities\/WIF.php":"09b3bf1f9077384e6e6c9b6661ca9152","src\/Helpers.php":"5736c281d8bb805826442682be38c1dc","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"02f2f4774316d2484fb2b57feb086ea1","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3ee8fd0133cfbcaf15bd9c28a37a5be9","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"581d0559ed948f5feab6967c074892c0","src\/Binary\/Buffer\/Reader\/Buffer.php":"927b99c8047ccb9061e8193f8f144dc7","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"c2efefef99eefa7cf2c67649f97b7faf","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"f53059caa2118b5f6a4960afbbcf2d73","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"484fea469ac07931d69f3c53e1fd09aa","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"6d3c042771c2fd307b216d45532a73a3","src\/Binary\/Buffer\/Writer\/Buffer.php":"165a089ce688104a8db5941cf9ff6558","src\/Binary\/UnsignedInteger\/Reader.php":"45f7182e4f5983c886ee8a589175f83a","src\/Binary\/UnsignedInteger\/Writer.php":"352dd6fbf6d6e6a96773bda8dbdc15b1","src\/Binary\/Integer\/Reader.php":"fc382f0d5cb346069e87bdf57af42dd4","src\/Binary\/Integer\/Writer.php":"c95566b5f15e7440a357a400f4957557","src\/Binary\/Hex\/Reader.php":"84c560f1a4210dcc04cf76e61b741681","src\/Binary\/Hex\/Writer.php":"1fda8dc1fda5769e71492375945421a6","src\/BLS\/Curves\/G2.php":"9aa9c0bd8b6f4bcd0ee58bea1463337d","src\/BLS\/Curves\/G1.php":"7dc863fe9fc87415120143b23bf3172b","src\/BLS\/EIP2333.php":"9d803020f65ae1b3fadd3db45760da8f","src\/BLS\/Fields\/Fp.php":"415f741a7ae6e45436e54f3258b95363","src\/BLS\/Fields\/Fp2.php":"7685c72b29900bef127170b812134086","src\/BLS\/HashToCurve\/G2HashToCurve.php":"104f044fbd0bfc2d871412caf6284306","src\/BLS\/ProofOfPossession.php":"f27d847ffcb5db3d5179367adadcb018","src\/Utils\/Slot.php":"415aefcc91d5ee4e5fb0ad58bb4c2242","src\/Utils\/Message.php":"9805c970ca9353cab3c5385055c4a6ae","src\/ByteBuffer\/ByteOrder.php":"c183930b74c3f6216fce6af0ad547412","src\/ByteBuffer\/Concerns\/Offsetable.php":"784a6f9b0aa7c7624d455da260480541","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"4f08096933dcd65121bab249422f8d4c","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"4a06210be32a336cb06a642a2f772c26","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"936ce2ebb44b67b39aeb2706f77b197c","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"e7bd39863ddb227ec17d44ef487579d5","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"45863cd3a3048e5d8e6523d3d7cffc07","src\/ByteBuffer\/Concerns\/Positionable.php":"8fe18d603bcba8ad7ec525c5fea9122a","src\/ByteBuffer\/Concerns\/Readable.php":"1703e1781f4882cc7427ed5e3eab1b90","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"82da46facba54107aceb630852447893","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"e9e2946752da1ed0b71351028deb7eea","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"d3c2432f4a3584750387451be2b069d0","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"bbfe09b67301bb9b8ee003f7b153322b","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"cb71d199dafd21c47c2aecb3a6d9b4b5","src\/ByteBuffer\/Concerns\/Transformable.php":"4b9ded9d8a5b7005f3cbbace02315415","src\/ByteBuffer\/Concerns\/Writeable.php":"d809e2408af8e181ef5c3d3101fde0ad","src\/ByteBuffer\/Concerns\/Sizeable.php":"81c7fbf368a593bb92bf4c9f58a9f72d","src\/ByteBuffer\/Concerns\/Initialisable.php":"1aa3c826684e71339aa6297582c7fcc3","src\/ByteBuffer\/ByteBuffer.php":"460fdd2bf51bacb8d5df479af9c3bac7","src\/ByteBuffer\/LengthMap.php":"d992e88d544bfcd6d169a1632f3e3d05","src\/Transactions\/Builder\/HtlcLockBuilder.php":"f9dff632706b6c63f3c1aade509c6301","src\/Transactions\/Builder\/SecondSignatureRegistrationBuilder.php":"3e00a57bac43eb656a092a649740251f","src\/Transactions\/Builder\/DelegateRegistrationBuilder.php":"94b1cb6bd077a5b9771be530635ea1e2","src\/Transactions\/Builder\/HtlcClaimBuilder.php":"26fa61beaf17a5dc5aa17270f48d02cf","src\/Transactions\/Builder\/VoteBuilder.php":"256a00c4888c2e04a6fa46b8305b034b","src\/Transactions\/Builder\/MultiPaymentBuilder.php":"3befa6a0db1ba663a33f0934a2e3ed68","src\/Transactions\/Builder\/IPFSBuilder.php":"c07a3cb80fcb3e23a38fab812d4516f6","src\/Transactions\/Builder\/HtlcRefundBuilder.php":"172069a2c1744c7e1c26fc3d4506be33","src\/Transactions\/Builder\/MultiSignatureRegistrationBuilder.php":"4fc820ea18d3844a7545bd182697842e","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"b8c23d843ac1abfdd67f328487482dbc","src\/Transactions\/Builder\/DelegateResignationBuilder.php":"f0c849690575a8d158519d6319805e25","src\/Transactions\/Builder\/TransferBuilder.php":"d62a16edd17aae91e9cd5c20b271ea83","src\/Transactions\/Deserializer.php":"1badd55a247238e0ba15fd7613abe668","src\/Transactions\/Serializer.php":"5663addddc99a09e0e60a8c2834872a2","src\/Transactions\/Types\/DelegateRegistration.php":"7d02c0b996e22c4c480b4bd704f54815","src\/Transactions\/Types\/Transaction.php":"80534e6f6d28c853d5f6ee16bf353189","src\/Transactions\/Types\/HtlcLock.php":"cce0b1037c17a6a5ca75fae86831b3b1","src\/Transactions\/Types\/IPFS.php":"289389ba4072e543c4438cb95816d429","src\/Transactions\/Types\/DelegateResignation.php":"43d3b2784c388367154ea03b204eb9de","src\/Transactions\/Types\/MultiPayment.php":"dd7c11fd4a726a6f2e04890622c797ce","src\/Transactions\/Types\/HtlcRefund.php":"1a7c6aa917c84da527e8ba679342dd14","src\/Transactions\/Types\/Vote.php":"9932a1b40eca6b47cd67316f4f0b3aa9","src\/Transactions\/Types\/SecondSignatureRegistration.php":"f9808925fe8103587d9d2c357ee5c5e8","src\/Transactions\/Types\/Transfer.php":"fac76b00748e5b83819bfce8f0520a39","src\/Transactions\/Types\/HtlcClaim.php":"ca80737b8eb8de8af5b11a8f2584da45","src\/Transactions\/Types\/MultiSignatureRegistration.php":"c314aaa3f8add62a8abbbec9fe92ce7e","src\/Enums\/TypeGroup.php":"2df34e8073d807a26f63cb5a92aa4466","src\/Enums\/Fees.php":"ac38a4162fea543d56563c975360270a","src\/Enums\/Types.php":"4d5534dd1a0bbcf26c2f20dd4e7e0c9b","src\/Networks\/AbstractNetwork.php":"c774f58977a6f2ed3fbdba69d2489e4e","src\/Networks\/Devnet.php":"4f0097e6ec4d87f8c72f8bafeaee8892","src\/Networks\/Mainnet.php":"df2645844a8c6dfe8f99a471dc1d85f7","src\/Networks\/Testnet.php":"5a1b266a1c176bcaf9a9ec6068c53b33"}} \ No newline at end of file diff --git a/src/BLS/Fields/Fp.php b/src/BLS/Fields/Fp.php index 77aaca7c..acbdda0c 100644 --- a/src/BLS/Fields/Fp.php +++ b/src/BLS/Fields/Fp.php @@ -165,5 +165,4 @@ public function toBytes(): string return hex2bin($hex); } - } diff --git a/tests/Unit/BLS/ProofOfPossessionTest.php b/tests/Unit/BLS/ProofOfPossessionTest.php index 0746fefa..2de32ad7 100644 --- a/tests/Unit/BLS/ProofOfPossessionTest.php +++ b/tests/Unit/BLS/ProofOfPossessionTest.php @@ -2,6 +2,7 @@ declare(strict_types=1); +use ArkEcosystem\Crypto\BLS\EIP2333; use ArkEcosystem\Crypto\BLS\ProofOfPossession; const POP_SK_A_HEX = '67d53f170b908cabb9eb326c3c337762d59289a8fec79f7bc9254b584b73265c'; @@ -79,3 +80,73 @@ expect($result['pk'])->toBe(EXPECTED_MNEMONIC_PK) ->and($result['pop'])->toBe(EXPECTED_MNEMONIC_POP); }); + +// ------------------------------------------------------------------------- +// Table-driven derivation vectors +// Add new rows as mnemonics and expected values are verified. +// ------------------------------------------------------------------------- + +$testData = <<toBe($expectedPrivateKey); + + $result = ProofOfPossession::fromMnemonic($mnemonic); + expect($result['pk'])->toBe($expectedPublicKey)->and($result['pop'])->toBe($expectedPop); +})->with(json_decode($testData, true)); From de231aa7c51472ac0e7e59b6dbe1931e9525961f Mon Sep 17 00:00:00 2001 From: Shahin Safaraliyev Date: Fri, 12 Jun 2026 14:41:06 +0400 Subject: [PATCH 14/27] feat: add BLS implementation --- tests/Unit/BLS/ProofOfPossessionTest.php | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/tests/Unit/BLS/ProofOfPossessionTest.php b/tests/Unit/BLS/ProofOfPossessionTest.php index 2de32ad7..fd8b454a 100644 --- a/tests/Unit/BLS/ProofOfPossessionTest.php +++ b/tests/Unit/BLS/ProofOfPossessionTest.php @@ -139,14 +139,13 @@ } JSON; -it('derives correct public key, private key, and pop for the given mnemonic', function ($key, $data) { - $mnemonic = $data['mnemonic']; - $expectedPrivateKey = $data['privateKey']; - $expectedPublicKey = $data['publicKey']; - $expectedPop = $data['pop']; - -// expect(EIP2333::deriveBlsPrivateKey($mnemonic))->toBe($expectedPrivateKey); +it('derives correct public key, private key, and pop for the given mnemonic', function (string $mnemonic, string $expectedSk, string $expectedPk, string $expectedPop) { + expect(bin2hex(EIP2333::deriveBlsPrivateKey($mnemonic)))->toBe($expectedSk); $result = ProofOfPossession::fromMnemonic($mnemonic); - expect($result['pk'])->toBe($expectedPublicKey)->and($result['pop'])->toBe($expectedPop); -})->with(json_decode($testData, true)); + expect($result['pk'])->toBe($expectedPk) + ->and($result['pop'])->toBe($expectedPop); +})->with(array_map( + fn ($d) => [$d['mnemonic'], $d['privateKey'], $d['publicKey'], $d['pop']], + json_decode($testData, true) +)); From 656d872aeab40d1015be7389f37e645ccc318be4 Mon Sep 17 00:00:00 2001 From: Shahin Safaraliyev Date: Fri, 12 Jun 2026 14:58:39 +0400 Subject: [PATCH 15/27] feat: add BLS implementation --- src/BLS/Curves/G2.php | 6 +++--- src/BLS/EIP2333.php | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/BLS/Curves/G2.php b/src/BLS/Curves/G2.php index a6f430cf..9cea68d9 100644 --- a/src/BLS/Curves/G2.php +++ b/src/BLS/Curves/G2.php @@ -277,9 +277,9 @@ public function toCompressedBytes(): string // Bit 7 (0x80): compressed flag $bytes[0] = chr(ord($bytes[0]) | 0x80); - // Bit 5 (0x20): sort/sign flag - // ZCash uses: if c1 != 0 then sign = (c1 > (p-1)/2) else sign = (c0 > (p-1)/2) - $signFp = $ax->c1->isZero() ? $ax->c0 : $ax->c1; + // Bit 5 (0x20): sort/sign flag — determined by y, not x + // ZCash: if y.c1 != 0 then sign = (y.c1 > (p-1)/2) else sign = (y.c0 > (p-1)/2) + $signFp = $ay->c1->isZero() ? $ay->c0 : $ay->c1; if ($signFp->isNegative()) { $bytes[0] = chr(ord($bytes[0]) | 0x20); } diff --git a/src/BLS/EIP2333.php b/src/BLS/EIP2333.php index dd83aeac..1ed8dadd 100644 --- a/src/BLS/EIP2333.php +++ b/src/BLS/EIP2333.php @@ -31,10 +31,14 @@ public static function deriveBlsPrivateKey(string $mnemonic): string /** * BIP-39: mnemonic → 64-byte seed via PBKDF2-HMAC-SHA512 with salt "mnemonic". + * Ideographic spaces (U+3000, used in Japanese wordlists) are normalized to U+0020 + * before hashing, matching the behaviour of reference BIP-39 implementations. */ public static function mnemonicToSeed(string $mnemonic): string { - return hash_pbkdf2('sha512', $mnemonic, 'mnemonic', 2048, 64, true); + $normalized = str_replace("\xe3\x80\x80", ' ', $mnemonic); + + return hash_pbkdf2('sha512', $normalized, 'mnemonic', 2048, 64, true); } /** From b2823511ca2b4e9744d9800fa8aaafbedd69edc3 Mon Sep 17 00:00:00 2001 From: Shahin Safaraliyev Date: Fri, 12 Jun 2026 15:07:22 +0400 Subject: [PATCH 16/27] feat: add BLS implementation --- tests/Unit/BLS/ProofOfPossessionTest.php | 102 +++++++++++------------ 1 file changed, 50 insertions(+), 52 deletions(-) diff --git a/tests/Unit/BLS/ProofOfPossessionTest.php b/tests/Unit/BLS/ProofOfPossessionTest.php index fd8b454a..6a4638c8 100644 --- a/tests/Unit/BLS/ProofOfPossessionTest.php +++ b/tests/Unit/BLS/ProofOfPossessionTest.php @@ -84,58 +84,59 @@ // ------------------------------------------------------------------------- // Table-driven derivation vectors // Add new rows as mnemonics and expected values are verified. +// [mnemonic, private key, public key, proof of possession] // ------------------------------------------------------------------------- $testData = <<toBe($expectedPk) ->and($result['pop'])->toBe($expectedPop); -})->with(array_map( - fn ($d) => [$d['mnemonic'], $d['privateKey'], $d['publicKey'], $d['pop']], - json_decode($testData, true) -)); +})->with(json_decode($testData, true)); From bd3773ad8cb216afb5191051682292339def0d14 Mon Sep 17 00:00:00 2001 From: shahin-hq Date: Fri, 12 Jun 2026 11:07:45 +0000 Subject: [PATCH 17/27] style: resolve style guide violations --- .php-cs-fixer.cache | 2 +- tests/Unit/BLS/ProofOfPossessionTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index eee22b64..ebdc5966 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.3.31","version":"3.76.0:v3.76.0#0e3c484cef0ae9314b0f85986a36296087432c40","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"hashes":{"tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Analysis\/AnalysisTest.php":"a9d0b7406e5a6894ce689229a4b939ff","tests\/Concerns\/Serialize.php":"134128506ad4e0f69949f773c1df3a70","tests\/Concerns\/Fixtures.php":"a1cbc1ecf6e31bd07fdac1c230d7aa6f","tests\/Concerns\/Deserialize.php":"68b8f4b8877221e5052c9dd5f011aaa9","tests\/TestCase.php":"8ad8b9b7b084dc0d2c28a247ac4a7988","tests\/Unit\/Configuration\/FeeTest.php":"ce7f567b72dd0126683277b243fa9fc3","tests\/Unit\/Configuration\/NetworkTest.php":"302b258b1f3ae05e0216d25929b69ea7","tests\/Unit\/Identities\/PrivateKeyTest.php":"a1f81695d6331d223ac6a3312a00b193","tests\/Unit\/Identities\/AddressTest.php":"d7d375a29f37a4b9b772c75684c74b48","tests\/Unit\/Identities\/WIFTest.php":"b611511584dd0bfba84f113295365508","tests\/Unit\/Identities\/PublicKeyTest.php":"4cfded5f1e35c1083fed2ad7efeea615","tests\/Unit\/BLS\/EIP2333Test.php":"a7cbb6d601453304110e6e429ba9488b","tests\/Unit\/BLS\/ProofOfPossessionTest.php":"f6ec213024f4339c84c407bdd842380a","tests\/Unit\/Utils\/SlotTest.php":"e2e6bf33055513aeaff285e4904099a4","tests\/Unit\/Utils\/MessageTest.php":"a9a261798733199bf3c7f9f813181875","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"5951a16b75f5be22726c8f7db5bc9e17","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"4280210224bfe01b431348823fd37902","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"8617547d4052341646e500679de73dd8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"8bbe9a2d00b2c16e6f07d526ec86954e","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"4a0b5b96e2a1e4b849eebf1f3c8781c8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"548c09489f87edce63066c196b4c35f2","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"09a667b97f0b5625bd2a267ae06b35ff","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"784101c1b5986dcdd939d47bc966684d","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"f3724a1f16a007a2d1a59001556d7cad","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"69e5e34cf122bfa36a64602fd9df0127","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"5432d25fb0292b9e637f6e04af104745","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"21babc31150ab55f010c0709328bf92d","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"044f6a5480ac976533db063f28b3b0e3","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"ec65fb8a8be71266fb0191449ae24173","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"28470f16ddf35d79384b866973652813","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"e6f2608e0921d2b2c25e3796e0e0a920","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"e2eae23b9c271db3191c07b1025640b1","tests\/Unit\/Transactions\/Builder\/MultiPaymentTest.php":"968a69c19596fbbba3f07e022c44ba12","tests\/Unit\/Transactions\/Builder\/HtlcLockTest.php":"3c2c4fd37a0d14b006833fd1ac62663d","tests\/Unit\/Transactions\/Builder\/VoteTest.php":"db91e16f8987dd6c050471bd0704523a","tests\/Unit\/Transactions\/Builder\/SecondSignatureRegistrationTest.php":"55f2fc9a05b4417820c3574aa828fdb3","tests\/Unit\/Transactions\/Builder\/DelegateRegistrationTest.php":"b4c0f10f2b10a91728e8352790f8f538","tests\/Unit\/Transactions\/Builder\/HtlcClaimTest.php":"619401dcbbee5dc4034429824bec865c","tests\/Unit\/Transactions\/Builder\/DelegateResignationTest.php":"527f6988349a098d4fa6b92c78570954","tests\/Unit\/Transactions\/Builder\/TransferTest.php":"70cdd71c9cbb57bfb51c3e4a1bd74e86","tests\/Unit\/Transactions\/Builder\/MultiSignatureRegistrationTest.php":"e5b48524e7e97683ec8a1f7c9b43ba8e","tests\/Unit\/Transactions\/Builder\/HtlcRefundTest.php":"e1113d28fa608fb7ff0ad4447a8b2f20","tests\/Unit\/Transactions\/Builder\/IPFSTest.php":"310d8ef8251e14a9a6498b03cdd0d912","tests\/Unit\/Transactions\/Serializers\/MultiPaymentTest.php":"04c22b03bffce8c2a713880517b0b1ec","tests\/Unit\/Transactions\/Serializers\/HtlcLockTest.php":"62d7af16064c66ced72b535ead234a8f","tests\/Unit\/Transactions\/Serializers\/VoteTest.php":"632138bad64d4a325a95447a133bf3ca","tests\/Unit\/Transactions\/Serializers\/SecondSignatureRegistrationTest.php":"7ffcc9bcfdf6ccde05c8d08b81b7273f","tests\/Unit\/Transactions\/Serializers\/DelegateRegistrationTest.php":"04d9dc16c57e35bed0f98cd305302e3b","tests\/Unit\/Transactions\/Serializers\/HtlcClaimTest.php":"69759df1d1377a02216573ac4e0c7694","tests\/Unit\/Transactions\/Serializers\/DelegateResignationTest.php":"17dcdb013d1a6b2d0dc02d077ec101e2","tests\/Unit\/Transactions\/Serializers\/TransferTest.php":"bbf565785bd31035aac40b0c61bb4d6a","tests\/Unit\/Transactions\/Serializers\/MultiSignatureRegistrationTest.php":"d33995e48fe07147304a582454df446e","tests\/Unit\/Transactions\/Serializers\/HtlcRefundTest.php":"7af106a7fd38c4cdc8c57ecf6e03ab9c","tests\/Unit\/Transactions\/Serializers\/IPFSTest.php":"9cbab01a748f824e2fa66a996268cf2e","tests\/Unit\/Transactions\/Deserializers\/MultiPaymentTest.php":"73b1d1ce139b3efac75814e4d13fedc0","tests\/Unit\/Transactions\/Deserializers\/HtlcLockTest.php":"cc70be6e68236f806f89b93bac7696ca","tests\/Unit\/Transactions\/Deserializers\/VoteTest.php":"fc61b9e98d001ee47dc6d61e87dddc1b","tests\/Unit\/Transactions\/Deserializers\/SecondSignatureRegistrationTest.php":"dfff4015d30f5e785a1933eb3475818d","tests\/Unit\/Transactions\/Deserializers\/DelegateRegistrationTest.php":"9b0ce921e9b1c575f715ec028c5aec42","tests\/Unit\/Transactions\/Deserializers\/HtlcClaimTest.php":"30cacd4874af19e6026bafb57ee78b0a","tests\/Unit\/Transactions\/Deserializers\/DelegateResignationTest.php":"8be75e4b6a9dd2072c7862dae1116b8e","tests\/Unit\/Transactions\/Deserializers\/TransferTest.php":"0a7038846d256444b667fe80381698e0","tests\/Unit\/Transactions\/Deserializers\/MultiSignatureRegistrationTest.php":"1eb49e69bccee286f928c156633711ab","tests\/Unit\/Transactions\/Deserializers\/HtlcRefundTest.php":"22afd8ec2418d0406e4f42ee0e431b42","tests\/Unit\/Transactions\/Deserializers\/IPFSTest.php":"53e714f862c3256e29660ab97ec6bf94","tests\/Unit\/Transactions\/TransactionTest.php":"ac2e2e1de31db779f543a7d3f257822c","tests\/Unit\/Networks\/MainnetTest.php":"3307b4e256af4b9fd66437a5ebd0e8a2","tests\/Unit\/Networks\/NetworkTestCase.php":"f529bc550cd6b9d68f1287d0181ae150","tests\/Unit\/Networks\/TestnetTest.php":"a6984eb7fa87bc6cf693bc241188e698","tests\/Unit\/Networks\/DevnetTest.php":"17996bb8318d23a417339e72f330c3bd","src\/Configuration\/Network.php":"db39fa961d1f67dde1127324ebc29a88","src\/Configuration\/Fee.php":"009bd25096d57c05b8f76a42e3b1c1ed","src\/Identities\/PrivateKey.php":"7259bbea2e5da198ee87bcde45661666","src\/Identities\/Address.php":"17da781bf1b9c717670918fecce1bc7b","src\/Identities\/PublicKey.php":"8cbe249d218989c54dde4ceb8eefc8e1","src\/Identities\/WIF.php":"09b3bf1f9077384e6e6c9b6661ca9152","src\/Helpers.php":"5736c281d8bb805826442682be38c1dc","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"02f2f4774316d2484fb2b57feb086ea1","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3ee8fd0133cfbcaf15bd9c28a37a5be9","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"581d0559ed948f5feab6967c074892c0","src\/Binary\/Buffer\/Reader\/Buffer.php":"927b99c8047ccb9061e8193f8f144dc7","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"c2efefef99eefa7cf2c67649f97b7faf","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"f53059caa2118b5f6a4960afbbcf2d73","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"484fea469ac07931d69f3c53e1fd09aa","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"6d3c042771c2fd307b216d45532a73a3","src\/Binary\/Buffer\/Writer\/Buffer.php":"165a089ce688104a8db5941cf9ff6558","src\/Binary\/UnsignedInteger\/Reader.php":"45f7182e4f5983c886ee8a589175f83a","src\/Binary\/UnsignedInteger\/Writer.php":"352dd6fbf6d6e6a96773bda8dbdc15b1","src\/Binary\/Integer\/Reader.php":"fc382f0d5cb346069e87bdf57af42dd4","src\/Binary\/Integer\/Writer.php":"c95566b5f15e7440a357a400f4957557","src\/Binary\/Hex\/Reader.php":"84c560f1a4210dcc04cf76e61b741681","src\/Binary\/Hex\/Writer.php":"1fda8dc1fda5769e71492375945421a6","src\/BLS\/Curves\/G2.php":"9aa9c0bd8b6f4bcd0ee58bea1463337d","src\/BLS\/Curves\/G1.php":"7dc863fe9fc87415120143b23bf3172b","src\/BLS\/EIP2333.php":"9d803020f65ae1b3fadd3db45760da8f","src\/BLS\/Fields\/Fp.php":"415f741a7ae6e45436e54f3258b95363","src\/BLS\/Fields\/Fp2.php":"7685c72b29900bef127170b812134086","src\/BLS\/HashToCurve\/G2HashToCurve.php":"104f044fbd0bfc2d871412caf6284306","src\/BLS\/ProofOfPossession.php":"f27d847ffcb5db3d5179367adadcb018","src\/Utils\/Slot.php":"415aefcc91d5ee4e5fb0ad58bb4c2242","src\/Utils\/Message.php":"9805c970ca9353cab3c5385055c4a6ae","src\/ByteBuffer\/ByteOrder.php":"c183930b74c3f6216fce6af0ad547412","src\/ByteBuffer\/Concerns\/Offsetable.php":"784a6f9b0aa7c7624d455da260480541","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"4f08096933dcd65121bab249422f8d4c","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"4a06210be32a336cb06a642a2f772c26","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"936ce2ebb44b67b39aeb2706f77b197c","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"e7bd39863ddb227ec17d44ef487579d5","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"45863cd3a3048e5d8e6523d3d7cffc07","src\/ByteBuffer\/Concerns\/Positionable.php":"8fe18d603bcba8ad7ec525c5fea9122a","src\/ByteBuffer\/Concerns\/Readable.php":"1703e1781f4882cc7427ed5e3eab1b90","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"82da46facba54107aceb630852447893","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"e9e2946752da1ed0b71351028deb7eea","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"d3c2432f4a3584750387451be2b069d0","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"bbfe09b67301bb9b8ee003f7b153322b","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"cb71d199dafd21c47c2aecb3a6d9b4b5","src\/ByteBuffer\/Concerns\/Transformable.php":"4b9ded9d8a5b7005f3cbbace02315415","src\/ByteBuffer\/Concerns\/Writeable.php":"d809e2408af8e181ef5c3d3101fde0ad","src\/ByteBuffer\/Concerns\/Sizeable.php":"81c7fbf368a593bb92bf4c9f58a9f72d","src\/ByteBuffer\/Concerns\/Initialisable.php":"1aa3c826684e71339aa6297582c7fcc3","src\/ByteBuffer\/ByteBuffer.php":"460fdd2bf51bacb8d5df479af9c3bac7","src\/ByteBuffer\/LengthMap.php":"d992e88d544bfcd6d169a1632f3e3d05","src\/Transactions\/Builder\/HtlcLockBuilder.php":"f9dff632706b6c63f3c1aade509c6301","src\/Transactions\/Builder\/SecondSignatureRegistrationBuilder.php":"3e00a57bac43eb656a092a649740251f","src\/Transactions\/Builder\/DelegateRegistrationBuilder.php":"94b1cb6bd077a5b9771be530635ea1e2","src\/Transactions\/Builder\/HtlcClaimBuilder.php":"26fa61beaf17a5dc5aa17270f48d02cf","src\/Transactions\/Builder\/VoteBuilder.php":"256a00c4888c2e04a6fa46b8305b034b","src\/Transactions\/Builder\/MultiPaymentBuilder.php":"3befa6a0db1ba663a33f0934a2e3ed68","src\/Transactions\/Builder\/IPFSBuilder.php":"c07a3cb80fcb3e23a38fab812d4516f6","src\/Transactions\/Builder\/HtlcRefundBuilder.php":"172069a2c1744c7e1c26fc3d4506be33","src\/Transactions\/Builder\/MultiSignatureRegistrationBuilder.php":"4fc820ea18d3844a7545bd182697842e","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"b8c23d843ac1abfdd67f328487482dbc","src\/Transactions\/Builder\/DelegateResignationBuilder.php":"f0c849690575a8d158519d6319805e25","src\/Transactions\/Builder\/TransferBuilder.php":"d62a16edd17aae91e9cd5c20b271ea83","src\/Transactions\/Deserializer.php":"1badd55a247238e0ba15fd7613abe668","src\/Transactions\/Serializer.php":"5663addddc99a09e0e60a8c2834872a2","src\/Transactions\/Types\/DelegateRegistration.php":"7d02c0b996e22c4c480b4bd704f54815","src\/Transactions\/Types\/Transaction.php":"80534e6f6d28c853d5f6ee16bf353189","src\/Transactions\/Types\/HtlcLock.php":"cce0b1037c17a6a5ca75fae86831b3b1","src\/Transactions\/Types\/IPFS.php":"289389ba4072e543c4438cb95816d429","src\/Transactions\/Types\/DelegateResignation.php":"43d3b2784c388367154ea03b204eb9de","src\/Transactions\/Types\/MultiPayment.php":"dd7c11fd4a726a6f2e04890622c797ce","src\/Transactions\/Types\/HtlcRefund.php":"1a7c6aa917c84da527e8ba679342dd14","src\/Transactions\/Types\/Vote.php":"9932a1b40eca6b47cd67316f4f0b3aa9","src\/Transactions\/Types\/SecondSignatureRegistration.php":"f9808925fe8103587d9d2c357ee5c5e8","src\/Transactions\/Types\/Transfer.php":"fac76b00748e5b83819bfce8f0520a39","src\/Transactions\/Types\/HtlcClaim.php":"ca80737b8eb8de8af5b11a8f2584da45","src\/Transactions\/Types\/MultiSignatureRegistration.php":"c314aaa3f8add62a8abbbec9fe92ce7e","src\/Enums\/TypeGroup.php":"2df34e8073d807a26f63cb5a92aa4466","src\/Enums\/Fees.php":"ac38a4162fea543d56563c975360270a","src\/Enums\/Types.php":"4d5534dd1a0bbcf26c2f20dd4e7e0c9b","src\/Networks\/AbstractNetwork.php":"c774f58977a6f2ed3fbdba69d2489e4e","src\/Networks\/Devnet.php":"4f0097e6ec4d87f8c72f8bafeaee8892","src\/Networks\/Mainnet.php":"df2645844a8c6dfe8f99a471dc1d85f7","src\/Networks\/Testnet.php":"5a1b266a1c176bcaf9a9ec6068c53b33"}} \ No newline at end of file +{"php":"8.3.6","version":"3.76.0:v3.76.0#0e3c484cef0ae9314b0f85986a36296087432c40","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"hashes":{"src\/Helpers.php":"5736c281d8bb805826442682be38c1dc","src\/Enums\/TypeGroup.php":"2df34e8073d807a26f63cb5a92aa4466","src\/Enums\/Types.php":"4d5534dd1a0bbcf26c2f20dd4e7e0c9b","src\/Enums\/Fees.php":"ac38a4162fea543d56563c975360270a","src\/Identities\/Address.php":"17da781bf1b9c717670918fecce1bc7b","src\/Identities\/PrivateKey.php":"7259bbea2e5da198ee87bcde45661666","src\/Identities\/WIF.php":"09b3bf1f9077384e6e6c9b6661ca9152","src\/Identities\/PublicKey.php":"8cbe249d218989c54dde4ceb8eefc8e1","src\/Binary\/Hex\/Reader.php":"84c560f1a4210dcc04cf76e61b741681","src\/Binary\/Hex\/Writer.php":"1fda8dc1fda5769e71492375945421a6","src\/Binary\/Buffer\/Writer\/Buffer.php":"165a089ce688104a8db5941cf9ff6558","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"f53059caa2118b5f6a4960afbbcf2d73","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"6d3c042771c2fd307b216d45532a73a3","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"c2efefef99eefa7cf2c67649f97b7faf","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"484fea469ac07931d69f3c53e1fd09aa","src\/Binary\/Buffer\/Reader\/Buffer.php":"927b99c8047ccb9061e8193f8f144dc7","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3ee8fd0133cfbcaf15bd9c28a37a5be9","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"581d0559ed948f5feab6967c074892c0","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"02f2f4774316d2484fb2b57feb086ea1","src\/Binary\/Integer\/Reader.php":"fc382f0d5cb346069e87bdf57af42dd4","src\/Binary\/Integer\/Writer.php":"c95566b5f15e7440a357a400f4957557","src\/Binary\/UnsignedInteger\/Reader.php":"45f7182e4f5983c886ee8a589175f83a","src\/Binary\/UnsignedInteger\/Writer.php":"352dd6fbf6d6e6a96773bda8dbdc15b1","src\/Utils\/Slot.php":"415aefcc91d5ee4e5fb0ad58bb4c2242","src\/Utils\/Message.php":"9805c970ca9353cab3c5385055c4a6ae","src\/ByteBuffer\/LengthMap.php":"d992e88d544bfcd6d169a1632f3e3d05","src\/ByteBuffer\/Concerns\/Transformable.php":"4b9ded9d8a5b7005f3cbbace02315415","src\/ByteBuffer\/Concerns\/Positionable.php":"8fe18d603bcba8ad7ec525c5fea9122a","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"936ce2ebb44b67b39aeb2706f77b197c","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"4a06210be32a336cb06a642a2f772c26","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"45863cd3a3048e5d8e6523d3d7cffc07","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"e7bd39863ddb227ec17d44ef487579d5","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"4f08096933dcd65121bab249422f8d4c","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"d3c2432f4a3584750387451be2b069d0","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"e9e2946752da1ed0b71351028deb7eea","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"cb71d199dafd21c47c2aecb3a6d9b4b5","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"bbfe09b67301bb9b8ee003f7b153322b","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"82da46facba54107aceb630852447893","src\/ByteBuffer\/Concerns\/Initialisable.php":"1aa3c826684e71339aa6297582c7fcc3","src\/ByteBuffer\/Concerns\/Sizeable.php":"81c7fbf368a593bb92bf4c9f58a9f72d","src\/ByteBuffer\/Concerns\/Offsetable.php":"784a6f9b0aa7c7624d455da260480541","src\/ByteBuffer\/Concerns\/Readable.php":"1703e1781f4882cc7427ed5e3eab1b90","src\/ByteBuffer\/Concerns\/Writeable.php":"d809e2408af8e181ef5c3d3101fde0ad","src\/ByteBuffer\/ByteBuffer.php":"460fdd2bf51bacb8d5df479af9c3bac7","src\/ByteBuffer\/ByteOrder.php":"c183930b74c3f6216fce6af0ad547412","src\/Transactions\/Builder\/MultiSignatureRegistrationBuilder.php":"4fc820ea18d3844a7545bd182697842e","src\/Transactions\/Builder\/HtlcClaimBuilder.php":"26fa61beaf17a5dc5aa17270f48d02cf","src\/Transactions\/Builder\/IPFSBuilder.php":"c07a3cb80fcb3e23a38fab812d4516f6","src\/Transactions\/Builder\/TransferBuilder.php":"d62a16edd17aae91e9cd5c20b271ea83","src\/Transactions\/Builder\/MultiPaymentBuilder.php":"3befa6a0db1ba663a33f0934a2e3ed68","src\/Transactions\/Builder\/SecondSignatureRegistrationBuilder.php":"3e00a57bac43eb656a092a649740251f","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"b8c23d843ac1abfdd67f328487482dbc","src\/Transactions\/Builder\/DelegateResignationBuilder.php":"f0c849690575a8d158519d6319805e25","src\/Transactions\/Builder\/HtlcRefundBuilder.php":"172069a2c1744c7e1c26fc3d4506be33","src\/Transactions\/Builder\/DelegateRegistrationBuilder.php":"94b1cb6bd077a5b9771be530635ea1e2","src\/Transactions\/Builder\/VoteBuilder.php":"256a00c4888c2e04a6fa46b8305b034b","src\/Transactions\/Builder\/HtlcLockBuilder.php":"f9dff632706b6c63f3c1aade509c6301","src\/Transactions\/Types\/HtlcLock.php":"cce0b1037c17a6a5ca75fae86831b3b1","src\/Transactions\/Types\/SecondSignatureRegistration.php":"f9808925fe8103587d9d2c357ee5c5e8","src\/Transactions\/Types\/MultiSignatureRegistration.php":"c314aaa3f8add62a8abbbec9fe92ce7e","src\/Transactions\/Types\/Vote.php":"9932a1b40eca6b47cd67316f4f0b3aa9","src\/Transactions\/Types\/IPFS.php":"289389ba4072e543c4438cb95816d429","src\/Transactions\/Types\/MultiPayment.php":"dd7c11fd4a726a6f2e04890622c797ce","src\/Transactions\/Types\/HtlcClaim.php":"ca80737b8eb8de8af5b11a8f2584da45","src\/Transactions\/Types\/DelegateRegistration.php":"7d02c0b996e22c4c480b4bd704f54815","src\/Transactions\/Types\/Transfer.php":"fac76b00748e5b83819bfce8f0520a39","src\/Transactions\/Types\/HtlcRefund.php":"1a7c6aa917c84da527e8ba679342dd14","src\/Transactions\/Types\/DelegateResignation.php":"43d3b2784c388367154ea03b204eb9de","src\/Transactions\/Types\/Transaction.php":"80534e6f6d28c853d5f6ee16bf353189","src\/Transactions\/Serializer.php":"5663addddc99a09e0e60a8c2834872a2","src\/Transactions\/Deserializer.php":"1badd55a247238e0ba15fd7613abe668","src\/Configuration\/Fee.php":"009bd25096d57c05b8f76a42e3b1c1ed","src\/Configuration\/Network.php":"db39fa961d1f67dde1127324ebc29a88","src\/BLS\/HashToCurve\/G2HashToCurve.php":"104f044fbd0bfc2d871412caf6284306","src\/BLS\/ProofOfPossession.php":"f27d847ffcb5db3d5179367adadcb018","src\/BLS\/Fields\/Fp2.php":"7685c72b29900bef127170b812134086","src\/BLS\/Fields\/Fp.php":"415f741a7ae6e45436e54f3258b95363","src\/BLS\/EIP2333.php":"8ae983f54821a7d04a215ab109f240d8","src\/BLS\/Curves\/G2.php":"69e7f11b35b6f66c22265d1242b4cbed","src\/BLS\/Curves\/G1.php":"7dc863fe9fc87415120143b23bf3172b","src\/Networks\/Mainnet.php":"df2645844a8c6dfe8f99a471dc1d85f7","src\/Networks\/AbstractNetwork.php":"c774f58977a6f2ed3fbdba69d2489e4e","src\/Networks\/Devnet.php":"4f0097e6ec4d87f8c72f8bafeaee8892","src\/Networks\/Testnet.php":"5a1b266a1c176bcaf9a9ec6068c53b33","tests\/Unit\/Identities\/PrivateKeyTest.php":"a1f81695d6331d223ac6a3312a00b193","tests\/Unit\/Identities\/PublicKeyTest.php":"4cfded5f1e35c1083fed2ad7efeea615","tests\/Unit\/Identities\/AddressTest.php":"d7d375a29f37a4b9b772c75684c74b48","tests\/Unit\/Identities\/WIFTest.php":"b611511584dd0bfba84f113295365508","tests\/Unit\/Utils\/SlotTest.php":"e2e6bf33055513aeaff285e4904099a4","tests\/Unit\/Utils\/MessageTest.php":"a9a261798733199bf3c7f9f813181875","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"e2eae23b9c271db3191c07b1025640b1","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"09a667b97f0b5625bd2a267ae06b35ff","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"548c09489f87edce63066c196b4c35f2","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"4280210224bfe01b431348823fd37902","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"8617547d4052341646e500679de73dd8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"8bbe9a2d00b2c16e6f07d526ec86954e","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"4a0b5b96e2a1e4b849eebf1f3c8781c8","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"ec65fb8a8be71266fb0191449ae24173","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"69e5e34cf122bfa36a64602fd9df0127","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"5432d25fb0292b9e637f6e04af104745","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"21babc31150ab55f010c0709328bf92d","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"044f6a5480ac976533db063f28b3b0e3","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"28470f16ddf35d79384b866973652813","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"f3724a1f16a007a2d1a59001556d7cad","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"784101c1b5986dcdd939d47bc966684d","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"e6f2608e0921d2b2c25e3796e0e0a920","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"5951a16b75f5be22726c8f7db5bc9e17","tests\/Unit\/Transactions\/Builder\/DelegateRegistrationTest.php":"b4c0f10f2b10a91728e8352790f8f538","tests\/Unit\/Transactions\/Builder\/HtlcRefundTest.php":"e1113d28fa608fb7ff0ad4447a8b2f20","tests\/Unit\/Transactions\/Builder\/TransferTest.php":"70cdd71c9cbb57bfb51c3e4a1bd74e86","tests\/Unit\/Transactions\/Builder\/HtlcLockTest.php":"3c2c4fd37a0d14b006833fd1ac62663d","tests\/Unit\/Transactions\/Builder\/MultiSignatureRegistrationTest.php":"e5b48524e7e97683ec8a1f7c9b43ba8e","tests\/Unit\/Transactions\/Builder\/IPFSTest.php":"310d8ef8251e14a9a6498b03cdd0d912","tests\/Unit\/Transactions\/Builder\/DelegateResignationTest.php":"527f6988349a098d4fa6b92c78570954","tests\/Unit\/Transactions\/Builder\/VoteTest.php":"db91e16f8987dd6c050471bd0704523a","tests\/Unit\/Transactions\/Builder\/HtlcClaimTest.php":"619401dcbbee5dc4034429824bec865c","tests\/Unit\/Transactions\/Builder\/SecondSignatureRegistrationTest.php":"55f2fc9a05b4417820c3574aa828fdb3","tests\/Unit\/Transactions\/Builder\/MultiPaymentTest.php":"968a69c19596fbbba3f07e022c44ba12","tests\/Unit\/Transactions\/TransactionTest.php":"ac2e2e1de31db779f543a7d3f257822c","tests\/Unit\/Transactions\/Serializers\/DelegateRegistrationTest.php":"04d9dc16c57e35bed0f98cd305302e3b","tests\/Unit\/Transactions\/Serializers\/HtlcRefundTest.php":"7af106a7fd38c4cdc8c57ecf6e03ab9c","tests\/Unit\/Transactions\/Serializers\/TransferTest.php":"bbf565785bd31035aac40b0c61bb4d6a","tests\/Unit\/Transactions\/Serializers\/HtlcLockTest.php":"62d7af16064c66ced72b535ead234a8f","tests\/Unit\/Transactions\/Serializers\/MultiSignatureRegistrationTest.php":"d33995e48fe07147304a582454df446e","tests\/Unit\/Transactions\/Serializers\/IPFSTest.php":"9cbab01a748f824e2fa66a996268cf2e","tests\/Unit\/Transactions\/Serializers\/DelegateResignationTest.php":"17dcdb013d1a6b2d0dc02d077ec101e2","tests\/Unit\/Transactions\/Serializers\/VoteTest.php":"632138bad64d4a325a95447a133bf3ca","tests\/Unit\/Transactions\/Serializers\/HtlcClaimTest.php":"69759df1d1377a02216573ac4e0c7694","tests\/Unit\/Transactions\/Serializers\/SecondSignatureRegistrationTest.php":"7ffcc9bcfdf6ccde05c8d08b81b7273f","tests\/Unit\/Transactions\/Serializers\/MultiPaymentTest.php":"04c22b03bffce8c2a713880517b0b1ec","tests\/Unit\/Transactions\/Deserializers\/DelegateRegistrationTest.php":"9b0ce921e9b1c575f715ec028c5aec42","tests\/Unit\/Transactions\/Deserializers\/HtlcRefundTest.php":"22afd8ec2418d0406e4f42ee0e431b42","tests\/Unit\/Transactions\/Deserializers\/TransferTest.php":"0a7038846d256444b667fe80381698e0","tests\/Unit\/Transactions\/Deserializers\/HtlcLockTest.php":"cc70be6e68236f806f89b93bac7696ca","tests\/Unit\/Transactions\/Deserializers\/MultiSignatureRegistrationTest.php":"1eb49e69bccee286f928c156633711ab","tests\/Unit\/Transactions\/Deserializers\/IPFSTest.php":"53e714f862c3256e29660ab97ec6bf94","tests\/Unit\/Transactions\/Deserializers\/DelegateResignationTest.php":"8be75e4b6a9dd2072c7862dae1116b8e","tests\/Unit\/Transactions\/Deserializers\/VoteTest.php":"fc61b9e98d001ee47dc6d61e87dddc1b","tests\/Unit\/Transactions\/Deserializers\/HtlcClaimTest.php":"30cacd4874af19e6026bafb57ee78b0a","tests\/Unit\/Transactions\/Deserializers\/SecondSignatureRegistrationTest.php":"dfff4015d30f5e785a1933eb3475818d","tests\/Unit\/Transactions\/Deserializers\/MultiPaymentTest.php":"73b1d1ce139b3efac75814e4d13fedc0","tests\/Unit\/Configuration\/NetworkTest.php":"302b258b1f3ae05e0216d25929b69ea7","tests\/Unit\/Configuration\/FeeTest.php":"ce7f567b72dd0126683277b243fa9fc3","tests\/Unit\/BLS\/EIP2333Test.php":"a7cbb6d601453304110e6e429ba9488b","tests\/Unit\/BLS\/ProofOfPossessionTest.php":"3a8842a310cc7a6ab6b2cb20b4642c4b","tests\/Unit\/Networks\/NetworkTestCase.php":"f529bc550cd6b9d68f1287d0181ae150","tests\/Unit\/Networks\/MainnetTest.php":"3307b4e256af4b9fd66437a5ebd0e8a2","tests\/Unit\/Networks\/TestnetTest.php":"a6984eb7fa87bc6cf693bc241188e698","tests\/Unit\/Networks\/DevnetTest.php":"17996bb8318d23a417339e72f330c3bd","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/TestCase.php":"8ad8b9b7b084dc0d2c28a247ac4a7988","tests\/Concerns\/Serialize.php":"134128506ad4e0f69949f773c1df3a70","tests\/Concerns\/Deserialize.php":"68b8f4b8877221e5052c9dd5f011aaa9","tests\/Concerns\/Fixtures.php":"a1cbc1ecf6e31bd07fdac1c230d7aa6f","tests\/Analysis\/AnalysisTest.php":"a9d0b7406e5a6894ce689229a4b939ff"}} \ No newline at end of file diff --git a/tests/Unit/BLS/ProofOfPossessionTest.php b/tests/Unit/BLS/ProofOfPossessionTest.php index 6a4638c8..5c207729 100644 --- a/tests/Unit/BLS/ProofOfPossessionTest.php +++ b/tests/Unit/BLS/ProofOfPossessionTest.php @@ -87,7 +87,7 @@ // [mnemonic, private key, public key, proof of possession] // ------------------------------------------------------------------------- -$testData = << Date: Fri, 12 Jun 2026 21:03:48 +0400 Subject: [PATCH 18/27] feat: add BLS implementation --- tests/Unit/BLS/ProofOfPossessionTest.php | 61 +---- tests/fixtures/bls-keys.json | 322 +++++++++++++++++++++++ 2 files changed, 329 insertions(+), 54 deletions(-) create mode 100644 tests/fixtures/bls-keys.json diff --git a/tests/Unit/BLS/ProofOfPossessionTest.php b/tests/Unit/BLS/ProofOfPossessionTest.php index 5c207729..7fdcd4e7 100644 --- a/tests/Unit/BLS/ProofOfPossessionTest.php +++ b/tests/Unit/BLS/ProofOfPossessionTest.php @@ -83,62 +83,15 @@ // ------------------------------------------------------------------------- // Table-driven derivation vectors -// Add new rows as mnemonics and expected values are verified. -// [mnemonic, private key, public key, proof of possession] +// Each entry: [mnemonic, private key (hex), public key (hex), proof of possession (hex)] // ------------------------------------------------------------------------- -$testData = <<<'JSON' - { - "English": [ - "scrap math switch nominee eyebrow stone melody first episode focus piece weekend amount spirit novel warfare special soda stone become sad oven example cannon", - "38b19fd74675ebab3063162f695423887ca3c1408561d3ed426c36bae5c19652", - "a611f22e481a213eef530b550f1e16ba1c4ac2263088a7b0c167c0ecc62328926581bbc50c36445a44bc8af9720ae90c", - "b1666a77167332a077b93e7e54ef1b83776c43f25d4f59dabec1a240dee28c8ae88f0146643b9a8ba8493c43d8390892019fbe134742cec235dd99ebad514c508031b61db88c6143705cde6c1dfe68e52f21f0f7eb400576703ab006acea1631" - ], - "Chinese Simplified": [ - "逻 砖 浇 动 牌 霞 扎 团 柴 年 虽 类 因 什 电 骂 后 什 帽 玻 缩 像 壮 摘", - "3c91a0142bdb0c777b64c74ae2a76cb110b1cdd56f2781aeb5ba7f1eac983b91", - "a6fab215d09829188d9fe753ae0162cb0aacfc875a2246550585205cd95e062b79585402b3ef853a8afc73a13e09065b", - "b2333783b03f6b0c095391c48b874a1d4e6beac5c840a5a89ef3954f94bf5519210578aa734ecbe90e90a7417eed001a01e3402e3c899183ffee6fe636a02833276b0f3bac543312804d2c9908233252e998696d6fd34df847137b48c4548b78" - ], - "Chinese Traditional": [ - "溶 班 顧 政 候 頭 艱 應 麥 腔 鴨 崇 鳥 飲 器 遼 避 吏 相 帝 牢 題 再 便", - "330222326a53a94f3c4d916b41e0bfc89e18c2276dba798b5ecefefba2375e0f", - "a40fe8429f7bbca2f3c013c1297c906fc4200272b58bc45e3c7fbe3806a83d2b51ac148c7a4a56bd5d8e41cf38f91c7c", - "80cdad2f7756f1ac6da37767a1b36e0395db9971bd9005a5f52915c2d18aaeae648a84688c42b28f7c00973c91b9a1d91600a6359346309ac05330bc127d14bc7cbc6a9d655b4d0c2745dcd3adc7f05301d8473ecb2388ed008c922fd6ad64bc" - ], - "French": [ - "musicien vecteur gorille carnage toboggan lavoir zoologie hiberner bavarder dégager amovible glace plaque sauter cloche griffure assiette fraise éjecter enduire chance sceptre ronce formuler", - "1a3ed283df0f998e2d7295c147bb184f2ef37b857eb307bd2328cbdca9782732", - "a600ae9122d27e4b1665b5b7191288295bac34cd4c64198ba5e3e08016fd5b9391dc4a7e18e3044dd0482fe6b09cf492", - "805e9c3c7e0fb4c89f90565a95fbf9b5d73e5c4ae1ae2f8d5ef924abb5fa77845b631827ffc517b219cdc95638a61bba0c09f2f49fce0867f68dee93b8b9ab127e5e32521bc6629a81ac859f5d5b5acfff7253833fe3d849e48cb3bf0809eb3c" - ], - "Italian": [ - "capello tendone forzare satellite fuso spessore treccia benzina scindere molosso lancetta tortora sposo impeto illeso daino torrone pollice chela ocra bilancia ripetuto totano energia", - "1453e74fd4f04e0d8eb5b140b773fdaaf0e6e71f2d3518dd186a16cba64e0fc7", - "b22f2f96b7e4dada84f57c63bd8b5b2c65279e3fcb734833eceb6c19a5f942f354fb0aad0d9bee9b444a0f23493b5a02", - "a35092f3132b0ee9d08afd082866f9c231ae09b41431ad715d3ac0afa06bdb603f026cd1aec872b5a3cbf5ff0aa9e0e102e69c77c75849969fdd03da81bfb9f1385c62837414a6770c94e5a92a629710dba127597fb1f1bf7dcd675563913635" - ], - "Japanese": [ - "ひさしぶり そえもの さんか なれる つみき はつおん いさん おかわり そっこう にんめい おうたい すばらしい さよう えんぜつ ひびく のはら ときどき ろんぱ さのう いんげんまめ きりん むしろ なみだ おやゆび", - "2770417db1d1e16f183a033df92f182e680621cccb11c9fd094c663c9f884a4d", - "a9579cd51bf4cde66a02fe8c063b3e7b24940ed73542e22dd20598a5bc32a521adfa38fe42ea290a335a038d645a8fa4", - "8b0da67bb4b679cd6922848da1fcdf40e7624302b61bdcec6184d7ab05220921bf6aaa1deb6ab513eebedccdaf25221a05d0bf21672ff6802734ad366c18bca2f1a97ac3bfdac17213d04900d7bb6acb9d62d7be7070c001083229b6727767d6" - ], - "Korean": [ - "한마디 티셔츠 가죽 반지 상관 예산 주름 대규모 추억 시나리오 생선 대략 용서 구석 유학 원피스 통제 활동 술집 학교 비명 유학 이윽고 믿음", - "01736f1b05ab33e5699c7c410a53929f961a2f78eb7f64acad44d3ef08b2780d", - "a17e76cb9eb3557185830779de5d3575a4b6cb0ed9d6ecdf93bc221a45b916b87ccf644552820233845e44e898afd054", - "967850f2d81330742665d7b8a6d8ccf83363c56be5b278c79301baf1eb61e916cebe84c47188236333db5b8e1da196bd0df37a7da3b91cf6f6e38ee218172721f63308c0eaa80922d7ee124eede1975cb5dd6ce3f4742625e444f92789407591" - ], - "Spanish": [ - "sábado droga academia corazón sexto diadema tórax lavar silencio agonía figura dolor llover lámina divino coger lucir escala feroz ópera firma medio seis renta", - "31a9f393c76630de49fc24b160ac2312dd0d95a7bea4c325fca835161c0b918b", - "a92746694fdf3248493d292ba67e802c4076e6c0c62f8137b81c5df4c8c7c67ef7bda33fe7a2ae033d6c2a642f412cba", - "b4a42854f004c3e7e9c0ea82ba5972f2afdd40a1adc4e2b94692db0a3ae8763091da7ce422ed60cf520de611b4ed361a0ad97220dc3c23b6c4f544559362eb077729331842401c8e225367ae5bca34ce5cb1bf1933ae9b7de3ac64b7465af1c6" - ] +$blsDataset = []; +foreach (json_decode(file_get_contents(__DIR__.'/../../fixtures/bls-keys.json'), true) as $lang => $vectors) { + foreach ($vectors as $i => $vector) { + $blsDataset["{$lang} #{$i}"] = $vector; } -JSON; +} it('derives correct public key, private key, and pop for the given mnemonic', function (string $mnemonic, string $expectedSk, string $expectedPk, string $expectedPop) { expect(bin2hex(EIP2333::deriveBlsPrivateKey($mnemonic)))->toBe($expectedSk); @@ -146,4 +99,4 @@ $result = ProofOfPossession::fromMnemonic($mnemonic); expect($result['pk'])->toBe($expectedPk) ->and($result['pop'])->toBe($expectedPop); -})->with(json_decode($testData, true)); +})->with($blsDataset); diff --git a/tests/fixtures/bls-keys.json b/tests/fixtures/bls-keys.json new file mode 100644 index 00000000..bec5d5b3 --- /dev/null +++ b/tests/fixtures/bls-keys.json @@ -0,0 +1,322 @@ +{ + "czech": [ + [ + "dosud cuketa tygr dorost masopust setba krach kadet lodivod pomalu znalost riziko odeslat munice trpce pianista maminka holub zeptat pevnina klacek obvinit laso zprostit", + "6834f4387994a217c3ba3ad687cb46f8bc9c28502f5497b4439fc79fd320aeb9", + "a84752120641d97fcc6b0c3af4bd17b6e5739b3f202c2441617dae8da5a87802ab5660d95d481deb997b68a72d2031d7", + "a67e820787c28d9cb21f9cdd64733d3004388e746bb139f2d2d77b3749f514e6390d61ea797788fc2cb5d01887859ada006d6f365e472ed548df5adcf76755f8e61deb4dc8df5b9840d13c12e718dc4152c4498ffd858d85951926480e772410" + ], + [ + "deska lusk situace chechtat muzikant nedaleko ubrousek parodie grep bolest kovboj doutnat pozor buchta najmout butik porucha dosah rotunda penalta krovka rozloha naprosto ostuda", + "62608d58c460cc9f890763b2cec165777696fe3e70ed0858b1470b8ee7368ce1", + "ac200a7ea53ba6d421b03bcdef418ff9b5f2d6a33eb9013ee7bc9eb5d31b69998e9fe845119a91db0be6eb33dc31cf41", + "b55f40f7e80e7e83e06722557d2570ca3a2bc188e98eeb525d67b1035b2b71c30e7b8a25eec02bf32cf2e8af102092af0faeaf6498cb5594d9cceb740bd86319fa5b74eeb1ffe14bb0b4639fd7abcf9b22d2379418b39943d4232831724e236c" + ], + [ + "hoblina pokles trest rostlina bodlina kapybara odvolat nelibost nutnost kapota mohyla carevna alkohol bytovka zpomalit odebrat asfalt kolize smilstvo havran palanda doleva kytka pocit", + "2cef134b7035b2402706f16502781e6de2b08af6642f7c0f6faeb6a6409609d3", + "b48b244b78e0d448a3594c7c9e7b8ddb623b2713a3e13eec482f06b9fc909feba802cd110e05981715b13dc132c693c5", + "8649c1f0084b5846affb89c1d2d19731ad3c8b9082eb6e792507eba7c27f0f19392b8d4f814366f92f1cdf580f82c73802ce54ae9cb5c9befe7b7f6534cc25fcb0074ac6d95afd9fdd6775b701bb46dfa44991a8331561236848e89d7287a6ca" + ], + [ + "sranda vyklopit obhajoba fajfka prsten chov starosta oslovit myslivec svodidlo tykev odezva vnucovat koalice freska fantazie nikterak strach karotka aspirace zahrada pahorek exkurze zarazit", + "3b1d6a4c3bef5246dd7816e241e25dcf6eeffca8a8eb2adfe3219cc17606d160", + "a9990ab73c9bf33216b23b41d47d10a64ec22b52f26ab143e7890c02a90fb55c94870cd6df4539ba59b4f206f5e5abe1", + "840033fd926846b5ef169160940eed6ccbc22298e81a1c8e7191bec7e527bd3e2936c2b4b0607254e00b2b1cfc6ae350158ec4f913a92093b72f9b6aeb5819c38a982c32d37823784a710f9c5b62fa3583493529399f7ca1dd8bad12186aa8ce" + ], + [ + "skripta mluvit bohatost hodovat kondice tamhle bourat rozruch videohra chirurg disk ovanout posoudit citrus nuget nikl bulva hezky pejsek veterina vyklopit sklo zamotat astma", + "484bb2c756d66e7d7e40766c4a51ca3aa2d36f55b73ba60ca9a9689400536f89", + "85aa7b5e380a5c92828a537fce80f8027803ce0c3b1d3f10d93c3b7748a080954f688da8905ba13ee9c59aaf99d6b324", + "8b00f0d89cebcfd8b688b126cc376d40544562c9eb2471b1c0cf6163cece6dfede76e1f02eaaa4cbb0a56fdc91d896401108fa4d992415c9797a15622c1b19dbc4a91322c2034c738957f3e5ad1f53e39d542b604bae053bbfdf3a9880ec2b8c" + ] + ], + "chinese_simplified": [ + [ + "颗 慌 省 厉 讲 款 杜 丢 虫 再 章 其 霞 解 钟 别 引 样 铃 性 柬 西 咱 送", + "5833336652ecc03a9d5de40d0344db24e18de5e9abb4f8d4a08fc2d629eda575", + "8407695a74ce6aad86997b3a329a1f70f90703766aeef3046994f901a94fc7ffa6f306f9b3ae1327707e1ebee2eb90e7", + "b071b6c07d90db9ce6897dc871ad232941a1ea8d440d68d61507930ab7701f89e1a48fb2836513fd1647f0ae9e0fbfeb128062aef7616044691710dcf08e201828036bd55f81a7f040f83f9688be0fef770f936a73f4162e39af2658f6c26a62" + ], + [ + "抬 练 催 律 锋 盛 抗 沟 税 宿 氧 坦 盗 冒 抬 线 沸 货 皇 泪 废 罚 钱 产", + "3ef02b613ad659b201875f5cb97642baefafc9abdf6d7c6fcc74024fd1b67c49", + "94a1246ba3259861c810d0c5e78999ba9157c27a0f5fc38b28dae69632f506bf5fb824743ac92d6a4770ca4f57df19b4", + "aaac5f11d77f4f4bb6d238b115d5c8989fecf08b8f25092c2e3fc2489cfae6362048a5a929497ed63343b5258e3a655617ccf8fabc8e91af06ac441ad33dc235febf003b2ec474d7da14ed806a90c4c6608a8b903f7869e67cd9e998d1ae4950" + ], + [ + "起 昆 必 统 寨 习 科 献 把 毛 受 阻 扩 辑 意 青 兵 庭 牺 炎 番 塘 克 双", + "61dbf20a9dd0f95753293a5227efd0465e57719d5ce592d9ad4b4e313c10cfa3", + "87144288d15eacb30602a24788aab2084d5a89dcba0742fa6493bce78690e5df3ae9a8d015ce4bd2c04c4cb2e69aadf3", + "93848b2c7ce03f2dcb52eacc376f9d379acdc11d596c10557bb771cbd71bfc44e1b5384b525ad2b8335dbef68e628bbc10cb027b760ea3f98dfe570e41f99093b89196ab05727578a6a921badc797c8c64e23d2610ae968876e90fa0851fa02f" + ], + [ + "银 脏 腹 太 迹 驳 销 偿 借 勃 纸 挥 歌 骨 障 够 研 旦 浆 闹 骑 涂 盾 狱", + "65af76f6c95c1ffe018bb564906d9e0a577baf27a79ecad71b81e86e2db92cbb", + "8d354de1fb257a2d8128e66ba14f40fadd0e5cf3dbec09c6ab3f518b3f8315f03c0f7ab54cd9b2d579304125b8175a17", + "a349f4538521b05e8232c878e6db8ce74bf313a3a47da1132c339a4a20d95bfaf4b84951f1d9339ee1777716add6dc400cc0ac49f4336e9db25762fa246d43063d78849029492571bdec0984c8b6acf0041204c712baa4bc1b13528c1d011f58" + ], + [ + "妈 季 我 温 歪 哲 先 范 凡 比 姑 马 惜 淀 疗 邀 落 彻 辉 杀 太 枪 卷 罢", + "6fa27b24bb66eeb5dfc845757ad4116d03f9784297a92b466d7b5f693c1d2c91", + "969c0f5c33d4bd4dab45dabcbb07b29a731a91096d924f767bce9bf06dbd92b9949f4ff23e615a9626c6e389d040b21a", + "aea409cd88da1482b886fb06578906dea410195a4a016e8044039a0fd91ac93252da8c03e5a4e58f97f04008ad3428c108af494c361994633fcc0aab5842faa8b14d3de2c2f496f9e313cc7335764556bb6217c891d44f3d10245949f9ee1c6c" + ] + ], + "chinese_traditional": [ + [ + "刻 終 連 份 頁 厲 袁 示 烯 曾 鎮 磁 賞 悟 監 織 子 輔 緩 病 序 地 僑 寒", + "1256fad8037078f14d24a4311137ac2b8671a8ef54111476e21244d2c25b24d2", + "b7d17e9b7245f2f36d243f03b813f2472cafdb7c96c6e4d712ac0fb082a11b636e47ce6088008fdeebab2899ab7c288d", + "82d98f480d0faf2b866d5ca3611dd3fac3a3e93db138d0175c8f1395ef31ff55bdf72322af9f231b5d96a21e0888f39e03c225f441cd427e281ef7f5481e73bdf765997db0adf3f64f0e8786a65cb3a21554955526e1386961a073bc94fa1e1a" + ], + [ + "質 裁 二 終 侵 緣 鉤 門 巴 紅 展 且 厚 無 漁 意 就 濕 峽 欺 之 層 伐 貧", + "193e791be009b8e2348106f608eadf65bcd16b61c9f2ff2d89b4b69c4265eaa2", + "b843132b802354a3e0c3c6e1095f417090ab57ed2d3bc9e9c44ee75a0beb0e95534e4ec3694ada16c26537d996fd734c", + "b9d2b000c0af62682099c8124267c1e947c211c4cf1b3c993226e06974a50e30d49d68dc922a3d5a593acf9ecc2391eb0a19fb89baa8dc4c3e7e940f6b9268b912f703800228252e72917df5dbb16c7b30832a0826932951be4d75f43365c65d" + ], + [ + "布 漫 營 陽 績 仗 洪 雷 品 奧 牧 絡 影 義 庭 弦 拜 序 禦 鐵 協 粗 帽 皮", + "51253227321c9a38b596dd19a943920ce420e7401646bdd2a0a00bf40213517f", + "898c87287603d466acb25c8ff3b9c3e35f3cb8d6fc16d9787e308acb9e4a41b911ef1fd1e855a675bf28f4140ebc9919", + "91bd87d3dff627fabf471c0ff9ceedda90eaa7c7034c085ce0541f52eb209440185fbeba9ce5506a08e2cdb33a687e010fa5d3c9c1cc626083173b05cbcbccfc82948c9ad46ae699b209b95b9f4f8ae2fa7d5f6b952acb94e2fcabbf662ead39" + ], + [ + "略 航 富 糧 磨 任 助 浪 丁 都 型 辨 濱 隱 鼓 觀 喬 擾 膽 和 鍋 至 損 舟", + "17aef98e48cb791f1cea6a366b80f215192ae4464faabf41feb68936e4c0a283", + "ad10effb26041d2594912579e580b2c4754f3c7c0ea9c35962d1e40e76f640f04185acca73d774b307b944729d9ca13a", + "a2efdeb86985d6645ce006feee479efda96b26b400c399991a97099b4c7aec45aa10aad98aaf5606167ee67f771ba8fd135d391168911ffffa3537302d019972d4b68ab278f5b2843ceb2428c5e654c4b27fe1edbaaa3bb71675fa48b28e1620" + ], + [ + "霞 音 屏 典 規 午 宮 王 丟 鄰 沸 峰 吐 隙 泛 若 方 壓 地 派 務 餅 坑 鐵", + "1d39b476b29e9f348cf276be475f61663986d330839f2e6d17281191b8723433", + "872522ce44a84e86031b8180418c0ee722ef7d9f4eec2fe50742b10c7e990d1272bb006d018e41c6f7c711b1d13c4ea1", + "ab478f08d40195ae523a0da974f57994abe95415651e5040394f09ad2bb720f26861806a4aa1ccafc081b28752043617012b871845825a2df491d2e55e8c4bc8b573767a3223860c9e87b54d01d928591b0b9d9fd02fbf9b11a34c0559a32d08" + ] + ], + "korean": [ + [ + "에어컨 만남 시험 마중 주민 심판 자가용 마찬가지 어쩐지 간섭 부동산 메일 왼발 눈썹 기업 초여름 씨앗 교양 후반 연극 박사 열차 연세 금강산", + "72526354c85351d66e8649ae90935b5ccb9416fc5d7efbf24ad6a51048ea2b00", + "8eecc1efe579aef85781d8f81d2869c3011f84024c1bdf6d9d08c6d99ed73e8a728e95d6209405948ccab984e653802a", + "acd3695a8f595ddf5e6d3f449f4b632483ae54af2f735fb701027b56ca5bb6b1302eabea132f025146fd25985ae80c2f0f794866e22813879a774e102c363ae516aee3fe69b5a415dcbce384ac5f8e1bcb0930d802d2545fae61b9a4a8da1586" + ], + [ + "복숭아 빨간색 공휴일 적용 깨소금 목사 유물 이대로 가능 발톱 설날 오랫동안 농장 갈색 목사 생물 전달 웃음 일정 외갓집 침실 중계방송 능력 무덤", + "5f5c61c3a769d26d4881cbd835d80c6d80cb0f20b5ebe91f34a517021a4589bc", + "8a7b986954d0e4637018d5d29e5bb3c8145fcaafec0ca8bd58e52d18643e39f361f842e775bedc61e5102c7d75e3080a", + "822cbbe0a34c4ad6bb535dbcad09b1cdfe2f6aeadaf53aefb1ec20deb476d952f8aee4b1afaa4ae1fa11db750a973b8006d7f4c1d54bb57e8510933309d1134eab09b5e10a59314d4255b6251dd6b9a211b31114b39f8c0baa41a5548939eb1d" + ], + [ + "가정 다양성 명칭 종류 약국 수업 보편적 비판 일기 연인 편히 봉사 상점 이슬 항공 일등 의외로 행복 그룹 수시로 채널 하여튼 실체 장학금", + "5b3572efd2af40ec727f82dd954690fa8050d65ad6f7e9f47438c67a6ac9e8d4", + "82435085b9640830e178f7c14849bed59c542888817eefced809acd452e3b77c7456149237eb4b236e9c665a31915c4c", + "8627efc19bf244e5eb595a3f7e38d07daaa5e02eda1e59deb090fd3bd2d5f43dfc4de4f0cd27f5b0f7f48ff2a53ad7de094845197db5d3c72737f1cf065d9c9ea1bf31e3473d488b917569cdc5e33d2e19778920e65281bcbffaef771dddd611" + ], + [ + "한동안 수시로 단위 시점 전철 어젯밤 송편 김치 기쁨 안주 막내 소설 중부 골짜기 상표 종종 사모님 설명 조각 각자 김포공항 각자 언덕 지우개", + "585b4aad585f9e843358e1d11e471dc89f222891dd6e73e8d70f27ae2f69fcd6", + "b47d880bce0032ea0a7dee19a1d5b98a87d220fe9e9100c743edb11f7652219d1c788f4f8f4641add2871b34ff7d4984", + "aad0b3a9c618f89b8fa6f9f8858f5217df7f4064024c451d5bfab972fc89a44f1730b03eb0ed259995236adebd03dcec1277edcd268bd65c21266f0d53cbc28d0882b27e8faa7f1032808560fbc7f315c92affe528d1d6481b9270e2442c9eb7" + ], + [ + "충고 액수 도중 경험 이야기 식구 발목 먹이 종종 수컷 명령 차량 양주 환자 사물 염려 넥타이 보자기 선물 손톱 나란히 마이크 왠지 사전", + "6c2c4c579c623be50c293dba87bc5923e8a580a5e75f667c45436e230c8281ba", + "939f78fda45726ba25a8154e0dbe0cbb2abe181ed0b8b84aac24b65a57e26cdbfa7688a54bb31724aa340ed49dea704c", + "8b8a6485807aa343920aa79782188cfca5448fbc32f1f700b33f2563dbac25ef79586e3a1e92d86472b83d8db752bced18fe05d7e841a65379c7cc5a1911fd0fd2f68e8215dca597758dd484f25c0d7af600b94c6f008d1893723b8a8a393bb6" + ] + ], + "french": [ + [ + "pépite pelle vague glaive frelon trafic gronder ogive frère mythique onirique ethnie murène union ennemi pollen endiguer intuitif vorace fléau valable vaillant sincère bidule", + "46aae75e4e089c6b52d317950673f4d12a69a20a9b682249772832b7f8516c24", + "85142d769af987dd6e08f47bd90b6dce697e2891fe9c4a3e7541da19241a47d8ffd42b7d893e48a0036c0085e1b88d88", + "93dcf1d436cc927ff31edfe32650ff26ff6ccedb186db325d4c975795eb3ad41e8426d738d1184175316cad880d24ff6115239593d61b1aefadf1585ff42ba2856aa8d58f244208285d5b00eb859a0eddff0fb9482630d623913488ea94589a5" + ], + [ + "finir parvenir armure méconnu excuse cocasse appuyer épatant phoque sextuple plateau fissure pouce sérum boire tortue migrer ornement lutter novice unifier éluder anarchie impérial", + "5be2a4fbb7a54bf196f969a7085a6a363f89c734356eb808c3d86a518137ec7c", + "8a19e0afab17d4aaa1705997e61c27b7dd5cde9364fe1564c2cd148d7c8024e6ecd035146556da7931c3dca899f658a4", + "802599ed4d4cb9cced3a01439f6f4a7886e02e9a8e8dbf9258caaaa683dd83ce4863e380a190671faf16378a50fe567e17355ad39568e965ba6ec0cdc21b45b7f04d322a0be9f432428cccb18ed178bbab0ae519673fc4514d0d84ec0d35029f" + ], + [ + "décaler douanier nickel grand recruter ajuster édifier infusion berline ruelle réticule numéro grenat mascotte draper mouche créditer victoire brusque bulletin figure intuitif nocif cantine", + "6a9b72e614c46cf69c39ed9c697c08188867cbf5ba6f07d88db04daea8b75d42", + "ad0d220c36c52caa0e3fa8e39a563ed9515b41e646f32373d0466ace39c7ab9fb3554ab5c3216cdc5c32a0389f78f83a", + "9351de80c1cad5f2f4a10d71e9b2b2a1b3baaf9ed203596cf8d779d7bbe648b69e633a3fee1ef37152c4cc80e4ce0a6c0ba2ce57ba55ea56ffc94c6f79a27e82e22fc20b500ded9791f604f8783bc16f530df3faa2369aa66dce1a239e0104e2" + ], + [ + "union encadrer joueur pénétrer cendrier obscur ruisseau juteux indice largeur farouche élaborer proverbe axial fiasco bonheur cubique charbon miroiter éthique niche ultrason nocif annuel", + "4f2c0808e65dfbac9636213ffab156492ab6624c421b3b4b00df4a0660d0882f", + "87ef9cf982a51130c310824657c64483d066b791942ad02a68bcd7cc2effed8576f25d99b4b857b70ec2daad02c0ca8c", + "a81cd058c758f813aa1f784746d68e079973ef9ed0255ce33b6eb671ddde1612257119ba69a7ad4893cbb07b017daab60f4c297c6326d2f3bdbd2ba7ad0873b79c8156425949e2e61d881ec420e2bde58f5199a6670a655eccf3cadcb5312f57" + ], + [ + "amour unitaire durcir silicium largeur coton ajuster pensif alvéole talonner bafouer salade épatant caviar puceron mixte buvette plaque entraver gendarme réticule tissu coton taupe", + "3d9f85c62fd0f206cdf5211d80bea293e3205e6438976086b3941e6c57be0b0f", + "a81107175dee2b15f23f920b39dc9ce54892ca0c119b43374731f3b796f5268a1b44d2da83d667a50279bf9df2180d77", + "ad1b19adf3e79dadfdb1b57245596da0073914448bec3712fe3422bdcbd18205ceaad535f53a038acdb9f13aa7bb06b0049f271aca30bd570a2c74db7e98cd5175b0285184d12e40b9ac04c56af6a6e77a79b755874d94b63205c550b64b90d9" + ] + ], + "italian": [ + [ + "turchino falco allusivo mastino alimento volere baraonda sviluppo zitto malumore ruga esagono rapina china sclerare smottato titubante gonfio cerume sella testato dolce rinomato fucilata", + "2e5e245890ed215911defc8b84339fd2f203ae7d4c184ab60cea3148a845744e", + "903754291d71b035c3e80fe6438817b6ee45b7f3530cc559459fac70144565e7e8e9deae12e18ce5174d828fd3d90d4f", + "b0d2e4d7098166f095e13409f6449f80d80b304e9a305387306f63339d8c5b541969a300f62c98a261a574baa563c3ac0768283db8a6d691dce22c0cf8dc8fe24eaa57d707f07a11475dc9700a1afe29a9dfaaf85603bd973ac106a9ccd34ff3" + ], + [ + "nastrare lastra cucire scodella starnuto esoso sapido placebo corsia baraonda scippo bisonte amico ologramma ametista colposo padella trifoglio fune fenomeno frugale miele zulu riportare", + "2ca8ae4033f62068e8ea43847257d184f10cb0f359eb02e610d74136781b3a48", + "a0f0ad5b7f21d45efe745aeb0d6d38bc73c032c2b00743ff36f675c2e4f5467e2d33d93a42f0206c8c2147f90b31479b", + "a51ca8839885ee1a311bda44b1684e1240dcc1bacf2c68f1a08728405d2e12d66dcb77ace657b55bf896fb9eee59614e06ad2ba9b52db240e340ae90fa11e0c4ec326921b2912cc89f2be1f2309664d45f312779b14707bdb09f293554d46c71" + ], + [ + "anonimo inflitto sfarzoso cesoia battuto zelante valletta bretella solido sbavare venato ametista regresso diedro scolpito russare arso fisico asciutto rivolto tossire somma ovino fenomeno", + "17737d0a7dd1a14504d19f27e741f4002e5af0ca24ba1d407e444782972b242e", + "ac6c7994774fd677dabf2dd2b800280f5f2a4db9e25afc182e0500b67f6d3d6cf20d86eacd1112eeca63f58b0a0c53ed", + "88a47c329aae366db7ce580e096911e849e1b4cce08c20f3472cd311f6af7f842f36bce5b2ec844cdeae22e4635a681a148b7b934fee35bc7fe21571f204fb7ddb8103e9b50baaf3b096528a74a333fbeaf9bac44b447324cf4e42f9de595576" + ], + [ + "asepsi mattone targato irrigato cantina sbrinare meschino massaia orma decennio nodo incisivo rinvenire sbrinare difeso tensione gallina desumere divorato saluto fantasma oliva omega esame", + "3f00653fd48d4adb8b086cc9c6d988d60c95dd91dcd0f4896176dd83d8a7c4f5", + "86dd16c8ce646d8c6f65dd8ab841a6cc95c08d354586b8f872040b094603ff42cb719bebc8d0a0703942f5b212b506be", + "8897900391d694ef5700d09865b2cea01d5e08c6e69485b705ec5971223d6e346dc30b34184a5ff5d8d04b1f87f5a0e51134be1c41563ba32733e4ff2398158144db8adbf1d9ff4385aea9d8e704c614634dc555335cd0c95737b8353a837694" + ], + [ + "tramonto chela manubrio fobico flemma fosso litigio patologia sierra onorevole nevrotico divorato crusca dono azione fumetto dado sfinge decreto miscela andrea sentire davanti rimanere", + "32de069caa6ee0071f80bf9f7ff8454ca210866abfd31ceb958a8793709b7527", + "85d064a57e7968f42cfb97769814eb92495bd7a015c4f654fd1cd65e7389d077e98b6e8a320af6fcc1e77f74d3effe20", + "aa891b266869f77cb922aa52bca79d638d2341988e8170ee11b901abd9c710861672044d8b35b4eb13f02bde55a6dd3d07890b8e227ab18cccb3345c2e45b67995521500775b390b90cde5f87d28fb0719f803edafd38015e51364311ac4e9b7" + ] + ], + "spanish": [ + [ + "élite camello cabra sonido cómodo roble codo negro grasa codo tronco correr salmón goteo jugo tigre sorpresa grada ilegal mover folio colmo nota resto", + "0d3649cb4f8d5fff356eac35e0d423a1684f0ee1a6e6af70f0ed9deab96764b8", + "98cbc5d32843b4fad640a4a0278f5cd8085b3227140ae670b05ccab8c6216f4956ba57ee604a462cbead7b64eba2a87c", + "88f1e5f6124bd64dfde5dde1bf85659c4e6c09462c3efe2f7fcba0fe3631d3c0728339b354eab0b2afa4ef6ac61d7ac916bd1a57f54334e7305b4a3eba3baa362fc348a4b284efab336623b404ab225e799cf6576ff0fcbadebfb2405392fc6f" + ], + [ + "utopía pista gallo nave cromo úlcera jurar triste antojo situar gordo grano mañana piojo bonito entero unidad sermón aceptar remar harina ascenso fachada célebre", + "2f1be777b5c4579935a9bc987690b68ab873b3009764eba6b600a5e175b7e5bc", + "b64da0edb1e3617438bfb1f31522a9066fef78baa8527826358da3131619ed436d5d8b5a08aa75150ae037760192c213", + "9496edec7d395f9e9034cfc05a61076c47a14107ea250b54d3fd3a1aff31f8ef84fe3049458ee1a9871d62926ff0fcfa0387f1c23d08256a1cc5ce1c5cd55a627263c893bf7f272b6a008d3e29854d41674271f57589720881091d36b1fa18e0" + ], + [ + "talar verja tosco inerte rígido huerta teléfono rojo dilema osadía erizo silbar obvio técnica novio gesto asesor moneda sauna edad suceso ocaso alteza columna", + "59021216132305577c9e6fd50fa5d0ce3a15d2d636e126fdf5fc5298f8d45b12", + "b00bca1e6e53e3f5a3b6acc3df7d68a222da7113d98f4bd3ffa754964ad3f48d16cdb79bb4d5720201cfbfd291d397cb", + "ab23f9dac36c7c961ab164b46eb08563a7bf301d7d0972ce4b3b2cc01726995fc6ce21392c4af42a3939b8e1bf8a7bc6158c97e22843291847bc1db26f1a67f7300ef4f41e086f595291cda7da7fafa2175cf0fd71ba40d4d20d328ee03f9d91" + ], + [ + "rígido ancho prado rasgo sostén radical baúl abrazo cuesta enfermo ceder etnia siesta enfado apio diseño burro agosto sanear colina alma negar rosa encía", + "1881bcfc5f7a8994eb114b62345995057e4e363448952fe6cf5771c55ff6cd4c", + "a2f602d27ab7b7383d444e369f0770d03ed6a77ebd8897dd4b295c33266227340bc60930778be816138390467bcfe8ba", + "a2b22b8ffb21dfa758180cbc05bb52a656176f8813917d4d1b80facae51c8922c0a671a8026bec69186590fa3468ba8e0b2f1a232c25565582b493dc5cec7a59607e81c346249138f37a5e620905b47825b1b1e7381e7ed087400a45f366b254" + ], + [ + "oscuro tarot lector lote oponer litio empeño espejo permiso antojo taza remo cebolla tuerto primo miedo parar rueda suceso oponer boina línea pésimo lienzo", + "0d25600951084748a4318b7f7b20ecb29921627201ca1843f315e217e884a8a3", + "8da89c05af150d06e6d4bc820977ab39836af47416339cd2a7195b560c80e0f9517345a71245b51548a34ee3327facdb", + "a4524d78544e0ec9f38c60ead1d3a477e737f6e69bcd1f9eaf4d58146d104fc8435e037ff73630338e8f6e06435b0b5b0437160e2bb5acb7c89ce011b423f01fb3541e8de33744b7c63ad04f014d4f9f73de6093756b6072da607cdac8ac68e6" + ] + ], + "japanese": [ + [ + "うらぐち ぬくもり こうはい でんあつ むかう かがし ちょさくけん あまい おもう ぐんて きねん えのぐ けんげん はぶらし たいねつ むえき おちつく だいひょう あんてい とのさま ちへいせん にきび こせき へこむ", + "06eafc5fc339d668592a575e21864987c8a3123fe89a15db1b6e389aa6db6563", + "ac24567f375be868870b95f6acfbb9136a51dd9e624dc8a5facad473a5b4af0c85703cbc3f893470a110ebaab8610fb4", + "9540ea1efaf643955e88a2785f0b4d52fb09a0805f49c83158c0b579bd995bd4e9d5f1895604f9ce99318c96a5b10ce5092bbc38529a181b281066a155131cec6065c2ec2f8b58b4ecd008dbdf7eabad36f5ae27a68c5e5de2f29ca105b43e09" + ], + [ + "まなぶ せめる すめし そぼく しほう がいこう ほそい まよう たいそう みうち かあつ おじぎ こまつな すてき しほん ろうじん きせつ もどる むしば いこう わしつ そとがわ おしゃれ げんぶつ", + "69c1f48087135fd98acbc3ba03eb3a7d8a102a8bad9b947384876ccc928687ad", + "a8b5999d08b83447f35ac64dd97d3810b08157eb633ea2d4cb1eb9e823bf1cedc050c81e8d629d88d1fab015d935f899", + "893e567a27eae306c64ef550428315750c27ecf4c2740802b63b2dc0441679aad3cddf6687019142f9406b94a67a76600b83f088a318821d3119f4d2a8f5961cd81a52e71182fbacc466264a2be267ef32934dec5748421512ba04c11ef29482" + ], + [ + "きおん でんわ くちさき てつづき となえる えらい けねん ふのう さうな いてざ さつまいも ねんざ さんみ せもたれ はんえい きおう みつかる でんわ だむる きぼう だいどころ とくい ひんぱん らたい", + "68e63d2b9b2bcf7c0c60bccdbf20e62fb1e620833cc86143ea6f6bfed31b0fea", + "a04d06a2f3b96a9e02ff34fec9a5e44df632048b3ce317f9284230d5cf33950feba24f1f1aebf6d63767c726b43eb2ea", + "951d817e55ad883b154cc4610b05b28f033693c88d9b875c97b176e45df3b1415f14cb9b7856c0a18b9bf19bc3daf57108df3cdbc6b519c661c41c140c844d0ea8aeedc050e47c5e86469eacb282e572a2560d40b1af9e8f95697f76f7635068" + ], + [ + "おぎなう さとし してき ろじうら てんめつ せんよう しやくしょ しゃこ たいざい つもる たのしみ きふく ときおり ねんおし けんとう ほうそう つける おさえる けみかる がいき たろっと けむり すあげ たりる", + "2a249d3aa20e3e999cfeea2b2617108569aef894b153ff31641996c0d9de9e1d", + "a4a50a19c4468541f602ac1c0e2821a21fad719415801bc07a8f94200976bc42d934461afa058e1a2c09c09963bee1c1", + "975365d89798642a44013d2bd7fc99f2452eb5d13f6b8dc801eb6b9708d5673297e99d9bfd6642d4b2fc0d84ffe56ffe0e32f99f0027f8d0efd531d0c0095133f45ca145d651817f29760380046ac4dfdd13ecc317296e2a963760ca02f0cbea" + ], + [ + "てつや むかい だんあつ ぐあい ねみみ つかれる こっか のべる あらためる ばいばい けなす むしあつい むかえ くしょう みんか つとめる みっか てふだ しゃりん ほけん せつめい にせもの めんせき ぷうたろう", + "627a2914207209f1c92b9c9b8b79bcfcb1d41737a4cd9beccd139474c768da74", + "80a15a4371c0b2474494e4ce3c00c2d6aefa4051d4a749f02828cb6d05b29a8bd9bc33d05db6542ef78582374e87ebf5", + "a9d5c130bbbf23cefd839b0fab32859efbbfbf8cb59466a41262b38fd8fdc19ae15a0d70fc45909b621e6f1f8835b95d037132df452a7d6ea0dc137193e275519fe103f148faf84ae8719969d392e047b77155333946b0b3b15b3ee04568918e" + ] + ], + "portuguese": [ + [ + "pinote alertar nativa consumir postal rapel peitoral servo acaso merecer siri lavrador boneco espiga nobreza mosquete limitar desafio resumir gaiato lasanha ginasta inicial traseiro", + "26e91e1a0e783ec329a174d740c5012ebfe84782bbff87020a2d9c6da3242dac", + "94e30165b3ead644abfd6a52029ad7e0665c473094842e301de6721a867f7581e5e395074c50a2a653eb87be97d8defc", + "96726ed176f5d3f2ef47ae3aac4da50c86e86b8ddf10ca441abef112146190166c3135af94e7b9f2ab05fd3d875d8c48078190d867fe358be6724827ba9c8ae2b89a1f04f8c5a9e7e8470bf27d657009c6cdc77ff68b437db9914765eeee379d" + ], + [ + "imersivo amistoso comando letivo lanche cabrito garoupa acenar zombar fofocar rebolar flora salgado folheto saxofone agrupar dobrador arame piedade fluxo restante plumagem arsenal budismo", + "2a7b6ff012300acb580e5155b4e187075f6298d715bb45553db0dc8a471327dd", + "95b51634ed89105de5681b096908f9f7e507d8c2cc50ba49629843d43a01821bbd9298293f87fb38276d23f74f120c56", + "b494b645d01cc82f674a82c1e65da81542b7417f6a878d7d0d7aa481ec1b42941f767907975d5533ad816cce1b173f0703267b21b5cdcc046bc6eb563d2ac0ef3d3bf4a3cb5604ab46b64f4b91d1270088083bf33882d26e578150f7a189e05c" + ], + [ + "iogurte morena pactuar simpatia renovado afivelar farpa fralda videira meiga brasa anel grisalho envergar tremer lanche fuligem presilha laranja charme furioso zebu gaivota albergue", + "375428b52ff683d66dd9be32d99d6177ebcc2814fcdf3903f5bfbf5c0acf902c", + "a046a2c66486d68229531434cc531965bc6113d65f1ab72c84a067086d8faf7d056fd39eea3579481b52429429b3e7a5", + "87855a00848b15190682b4dfc86db832629c6e2803ab91527c5cd8810a2c5b32ea87d4a5c0bb7d3a746503c3627daada03362004c8045bcf0e9e899f7dd3138b371b37ae5eedeeef34211f2eeaef849ede1db740467d321da1e87f0ac9058394" + ], + [ + "calmante golfe enjoar veludo trova tigela nivelar canguru couve lontra esfumado errata global bobagem hino vigente secular trilogia abrigar libido sugador imprensa entidade hiato", + "11be4189327d63f3ec9e37c63bb2235b038a8d4b24ca306de8863e489f43d4f8", + "b1e3d5fc733a2570b627810de43a24dc60a5d127485162860118ec495777c6dd3dfb0abe1831b776389e80c948fad23a", + "b3025302f3af43e3675a140747c9c0202a03ae4f1292aafe33a29e78277dd49070f45be06906e6330500ddaa03b33e1f0aba67494e24f3570ab7189373be412536098f831095fd58ba18d73ba635a3e0afeb6ecc110b4dfea323607476727f64" + ], + [ + "janeiro barulho patente loteria carneiro picado cinto ficar remendo decalque queda ideia dueto saliva testado limoeiro sono geologia errata sabor artigo pescado caneta acervo", + "022dedd507fe6585cf64f44327e9c41104f8cdb88bd63b1f8fc274665aa47f13", + "8b83cf444d4d5147ea792f4f069a26003c6b09df845d55509f610fa3b401c2f479311d04155d912d233e49c2ac510194", + "9432734faa08fe4f968226a0d170c6cbb835e8dc654f0092812314314ccf398fff90e39aeea643fdd2506bd8476451d6112e96a5584b4d449d0e8727dbe64a48d3853ffef2219d21f6669c669ba6498d8088e12d3c93f4a44f53d79d2ec8c043" + ] + ], + "english": [ + [ + "ring dial addict filter frequent kiss service wheat once body pet parent run obscure flat enroll snake casino grocery sustain caught course reform system", + "6effd99803ace32ccc4c723fc613378ec12c8a312d38ecc1cdb13628f84c6502", + "aba2cac749a29680e3b797c46a045a4abd2d620c94116aa0ac02fcc00f45d94be07f236e0f4f5c255ab80af770ac9b55", + "b6e81aed6798769fe066d6de64d732907016bad169106a08a21c9906dd0848415ef3c2040e2ca4c4e64b62c043dd34ef0937021e18acf7fc46657df6ad832a41503c2450283dab0a5ab824eeb0b93fbe4f60253770fdbbd77c0adc894f14ba54" + ], + [ + "soccer engage scissors deny wonder surprise figure vast absent crowd evidence rain duck foil sport list abuse donkey sail air cereal gallery vessel miracle", + "67fc9578aee0ac04c0d195e89b2faa68def770f4c6362f2c570bcc0e206c5e43", + "a6d06668b357e97a07372f4be80e24af3467a9088bb2e6c4b420241a69f5863286329239bd3acfcc778ef501d903f9f7", + "a3121f81b084d8350ed318107e832e080d29180b321b8f2978994a336854e01c1b644c180cab52cd1831fd5d6ad3213d03f78e711382e5300fbdb82d3bbc48466931d89f5ecddf65567657494a0faa4e48a31fe259070ae3f6e279af140fb433" + ], + [ + "jealous sail enhance mimic demise thumb pig cargo coil elevator better scan ring rib cause eye sun tube elevator wonder employ hold chimney pill", + "460d2ea780a564a16b474be68974e656231d85e561e90550f0117acafe2bd305", + "b044f0f1ebb1c4ba832f946fc0ee232dd6c8506459219056e7cc6b05ac41bcd1a51019cf6108be7370a80b4e5b96340d", + "b5ef5002297cda57dfceceaec30ad51d6931786c5d505f5f147f1a92c4edec47f151da272547210203adc0e8ec9ad1c70c47b6d7be336a9915c318d02281a0e5ede3902f2f025597b35a18bc978fb0a383ac8b1117fe3fa70c01c0946d128e4f" + ], + [ + "age eight left cruise deal combine combine letter poverty voice thumb tooth ramp age enlist pave lunar nice allow sugar talk spider labor frequent", + "5f83f4a497e501abefc97d7577ef380e542bf6b984c4a30e9244aa6078b686b0", + "93ad4e345789b51f5c11ead839cd309dde1694ad82ea1a860e3d6c4437acc496669fd20ff5a9226821a0de492ab27978", + "b48c07816cecffd6d1aa47f99287f66e71356cd55019ddbdb7d55e9efaa576b7872feaee17b6033725001f1ccac80a6f0ab1ff54b65dee440b07fcd02572c63cc5a9d1b24216c327499c58d61698cd263cc065b02ad30add39fbd254d0a57d94" + ], + [ + "inherit bench bulb crime clarify category glad civil thought reflect cute nothing hedgehog square bike antique mango dizzy swamp pelican only hint margin equal", + "5a1b2b55eb01aaeafb1b27adebeaa7ab97a5581240f7b682e309e77f5ddda676", + "8898a1f93c547ab67a147ed55992c7bcd24d1a4fe8421160ef7ea7b102303c358809a729c222495b1b25ddebbc981df1", + "935cd97384897400687482a71af7a3c1d379618bf366ed25fbac9980a45b2cd6de3d13d31a454177535775d44bb13fb60be663e63da196e8f5719066eb964648077e03019cf3e40cd91954140262254575a9c32cb86b201fc1109bdea14ada1c" + ] + ] +} From a4cdc7cfa4d1d37cb05e913c7322ad6ce2bfcafb Mon Sep 17 00:00:00 2001 From: shahin-hq Date: Fri, 12 Jun 2026 17:04:12 +0000 Subject: [PATCH 19/27] style: resolve style guide violations --- .php-cs-fixer.cache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index ebdc5966..bd1c9b88 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.3.6","version":"3.76.0:v3.76.0#0e3c484cef0ae9314b0f85986a36296087432c40","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"hashes":{"src\/Helpers.php":"5736c281d8bb805826442682be38c1dc","src\/Enums\/TypeGroup.php":"2df34e8073d807a26f63cb5a92aa4466","src\/Enums\/Types.php":"4d5534dd1a0bbcf26c2f20dd4e7e0c9b","src\/Enums\/Fees.php":"ac38a4162fea543d56563c975360270a","src\/Identities\/Address.php":"17da781bf1b9c717670918fecce1bc7b","src\/Identities\/PrivateKey.php":"7259bbea2e5da198ee87bcde45661666","src\/Identities\/WIF.php":"09b3bf1f9077384e6e6c9b6661ca9152","src\/Identities\/PublicKey.php":"8cbe249d218989c54dde4ceb8eefc8e1","src\/Binary\/Hex\/Reader.php":"84c560f1a4210dcc04cf76e61b741681","src\/Binary\/Hex\/Writer.php":"1fda8dc1fda5769e71492375945421a6","src\/Binary\/Buffer\/Writer\/Buffer.php":"165a089ce688104a8db5941cf9ff6558","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"f53059caa2118b5f6a4960afbbcf2d73","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"6d3c042771c2fd307b216d45532a73a3","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"c2efefef99eefa7cf2c67649f97b7faf","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"484fea469ac07931d69f3c53e1fd09aa","src\/Binary\/Buffer\/Reader\/Buffer.php":"927b99c8047ccb9061e8193f8f144dc7","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3ee8fd0133cfbcaf15bd9c28a37a5be9","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"581d0559ed948f5feab6967c074892c0","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"02f2f4774316d2484fb2b57feb086ea1","src\/Binary\/Integer\/Reader.php":"fc382f0d5cb346069e87bdf57af42dd4","src\/Binary\/Integer\/Writer.php":"c95566b5f15e7440a357a400f4957557","src\/Binary\/UnsignedInteger\/Reader.php":"45f7182e4f5983c886ee8a589175f83a","src\/Binary\/UnsignedInteger\/Writer.php":"352dd6fbf6d6e6a96773bda8dbdc15b1","src\/Utils\/Slot.php":"415aefcc91d5ee4e5fb0ad58bb4c2242","src\/Utils\/Message.php":"9805c970ca9353cab3c5385055c4a6ae","src\/ByteBuffer\/LengthMap.php":"d992e88d544bfcd6d169a1632f3e3d05","src\/ByteBuffer\/Concerns\/Transformable.php":"4b9ded9d8a5b7005f3cbbace02315415","src\/ByteBuffer\/Concerns\/Positionable.php":"8fe18d603bcba8ad7ec525c5fea9122a","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"936ce2ebb44b67b39aeb2706f77b197c","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"4a06210be32a336cb06a642a2f772c26","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"45863cd3a3048e5d8e6523d3d7cffc07","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"e7bd39863ddb227ec17d44ef487579d5","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"4f08096933dcd65121bab249422f8d4c","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"d3c2432f4a3584750387451be2b069d0","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"e9e2946752da1ed0b71351028deb7eea","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"cb71d199dafd21c47c2aecb3a6d9b4b5","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"bbfe09b67301bb9b8ee003f7b153322b","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"82da46facba54107aceb630852447893","src\/ByteBuffer\/Concerns\/Initialisable.php":"1aa3c826684e71339aa6297582c7fcc3","src\/ByteBuffer\/Concerns\/Sizeable.php":"81c7fbf368a593bb92bf4c9f58a9f72d","src\/ByteBuffer\/Concerns\/Offsetable.php":"784a6f9b0aa7c7624d455da260480541","src\/ByteBuffer\/Concerns\/Readable.php":"1703e1781f4882cc7427ed5e3eab1b90","src\/ByteBuffer\/Concerns\/Writeable.php":"d809e2408af8e181ef5c3d3101fde0ad","src\/ByteBuffer\/ByteBuffer.php":"460fdd2bf51bacb8d5df479af9c3bac7","src\/ByteBuffer\/ByteOrder.php":"c183930b74c3f6216fce6af0ad547412","src\/Transactions\/Builder\/MultiSignatureRegistrationBuilder.php":"4fc820ea18d3844a7545bd182697842e","src\/Transactions\/Builder\/HtlcClaimBuilder.php":"26fa61beaf17a5dc5aa17270f48d02cf","src\/Transactions\/Builder\/IPFSBuilder.php":"c07a3cb80fcb3e23a38fab812d4516f6","src\/Transactions\/Builder\/TransferBuilder.php":"d62a16edd17aae91e9cd5c20b271ea83","src\/Transactions\/Builder\/MultiPaymentBuilder.php":"3befa6a0db1ba663a33f0934a2e3ed68","src\/Transactions\/Builder\/SecondSignatureRegistrationBuilder.php":"3e00a57bac43eb656a092a649740251f","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"b8c23d843ac1abfdd67f328487482dbc","src\/Transactions\/Builder\/DelegateResignationBuilder.php":"f0c849690575a8d158519d6319805e25","src\/Transactions\/Builder\/HtlcRefundBuilder.php":"172069a2c1744c7e1c26fc3d4506be33","src\/Transactions\/Builder\/DelegateRegistrationBuilder.php":"94b1cb6bd077a5b9771be530635ea1e2","src\/Transactions\/Builder\/VoteBuilder.php":"256a00c4888c2e04a6fa46b8305b034b","src\/Transactions\/Builder\/HtlcLockBuilder.php":"f9dff632706b6c63f3c1aade509c6301","src\/Transactions\/Types\/HtlcLock.php":"cce0b1037c17a6a5ca75fae86831b3b1","src\/Transactions\/Types\/SecondSignatureRegistration.php":"f9808925fe8103587d9d2c357ee5c5e8","src\/Transactions\/Types\/MultiSignatureRegistration.php":"c314aaa3f8add62a8abbbec9fe92ce7e","src\/Transactions\/Types\/Vote.php":"9932a1b40eca6b47cd67316f4f0b3aa9","src\/Transactions\/Types\/IPFS.php":"289389ba4072e543c4438cb95816d429","src\/Transactions\/Types\/MultiPayment.php":"dd7c11fd4a726a6f2e04890622c797ce","src\/Transactions\/Types\/HtlcClaim.php":"ca80737b8eb8de8af5b11a8f2584da45","src\/Transactions\/Types\/DelegateRegistration.php":"7d02c0b996e22c4c480b4bd704f54815","src\/Transactions\/Types\/Transfer.php":"fac76b00748e5b83819bfce8f0520a39","src\/Transactions\/Types\/HtlcRefund.php":"1a7c6aa917c84da527e8ba679342dd14","src\/Transactions\/Types\/DelegateResignation.php":"43d3b2784c388367154ea03b204eb9de","src\/Transactions\/Types\/Transaction.php":"80534e6f6d28c853d5f6ee16bf353189","src\/Transactions\/Serializer.php":"5663addddc99a09e0e60a8c2834872a2","src\/Transactions\/Deserializer.php":"1badd55a247238e0ba15fd7613abe668","src\/Configuration\/Fee.php":"009bd25096d57c05b8f76a42e3b1c1ed","src\/Configuration\/Network.php":"db39fa961d1f67dde1127324ebc29a88","src\/BLS\/HashToCurve\/G2HashToCurve.php":"104f044fbd0bfc2d871412caf6284306","src\/BLS\/ProofOfPossession.php":"f27d847ffcb5db3d5179367adadcb018","src\/BLS\/Fields\/Fp2.php":"7685c72b29900bef127170b812134086","src\/BLS\/Fields\/Fp.php":"415f741a7ae6e45436e54f3258b95363","src\/BLS\/EIP2333.php":"8ae983f54821a7d04a215ab109f240d8","src\/BLS\/Curves\/G2.php":"69e7f11b35b6f66c22265d1242b4cbed","src\/BLS\/Curves\/G1.php":"7dc863fe9fc87415120143b23bf3172b","src\/Networks\/Mainnet.php":"df2645844a8c6dfe8f99a471dc1d85f7","src\/Networks\/AbstractNetwork.php":"c774f58977a6f2ed3fbdba69d2489e4e","src\/Networks\/Devnet.php":"4f0097e6ec4d87f8c72f8bafeaee8892","src\/Networks\/Testnet.php":"5a1b266a1c176bcaf9a9ec6068c53b33","tests\/Unit\/Identities\/PrivateKeyTest.php":"a1f81695d6331d223ac6a3312a00b193","tests\/Unit\/Identities\/PublicKeyTest.php":"4cfded5f1e35c1083fed2ad7efeea615","tests\/Unit\/Identities\/AddressTest.php":"d7d375a29f37a4b9b772c75684c74b48","tests\/Unit\/Identities\/WIFTest.php":"b611511584dd0bfba84f113295365508","tests\/Unit\/Utils\/SlotTest.php":"e2e6bf33055513aeaff285e4904099a4","tests\/Unit\/Utils\/MessageTest.php":"a9a261798733199bf3c7f9f813181875","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"e2eae23b9c271db3191c07b1025640b1","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"09a667b97f0b5625bd2a267ae06b35ff","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"548c09489f87edce63066c196b4c35f2","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"4280210224bfe01b431348823fd37902","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"8617547d4052341646e500679de73dd8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"8bbe9a2d00b2c16e6f07d526ec86954e","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"4a0b5b96e2a1e4b849eebf1f3c8781c8","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"ec65fb8a8be71266fb0191449ae24173","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"69e5e34cf122bfa36a64602fd9df0127","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"5432d25fb0292b9e637f6e04af104745","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"21babc31150ab55f010c0709328bf92d","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"044f6a5480ac976533db063f28b3b0e3","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"28470f16ddf35d79384b866973652813","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"f3724a1f16a007a2d1a59001556d7cad","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"784101c1b5986dcdd939d47bc966684d","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"e6f2608e0921d2b2c25e3796e0e0a920","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"5951a16b75f5be22726c8f7db5bc9e17","tests\/Unit\/Transactions\/Builder\/DelegateRegistrationTest.php":"b4c0f10f2b10a91728e8352790f8f538","tests\/Unit\/Transactions\/Builder\/HtlcRefundTest.php":"e1113d28fa608fb7ff0ad4447a8b2f20","tests\/Unit\/Transactions\/Builder\/TransferTest.php":"70cdd71c9cbb57bfb51c3e4a1bd74e86","tests\/Unit\/Transactions\/Builder\/HtlcLockTest.php":"3c2c4fd37a0d14b006833fd1ac62663d","tests\/Unit\/Transactions\/Builder\/MultiSignatureRegistrationTest.php":"e5b48524e7e97683ec8a1f7c9b43ba8e","tests\/Unit\/Transactions\/Builder\/IPFSTest.php":"310d8ef8251e14a9a6498b03cdd0d912","tests\/Unit\/Transactions\/Builder\/DelegateResignationTest.php":"527f6988349a098d4fa6b92c78570954","tests\/Unit\/Transactions\/Builder\/VoteTest.php":"db91e16f8987dd6c050471bd0704523a","tests\/Unit\/Transactions\/Builder\/HtlcClaimTest.php":"619401dcbbee5dc4034429824bec865c","tests\/Unit\/Transactions\/Builder\/SecondSignatureRegistrationTest.php":"55f2fc9a05b4417820c3574aa828fdb3","tests\/Unit\/Transactions\/Builder\/MultiPaymentTest.php":"968a69c19596fbbba3f07e022c44ba12","tests\/Unit\/Transactions\/TransactionTest.php":"ac2e2e1de31db779f543a7d3f257822c","tests\/Unit\/Transactions\/Serializers\/DelegateRegistrationTest.php":"04d9dc16c57e35bed0f98cd305302e3b","tests\/Unit\/Transactions\/Serializers\/HtlcRefundTest.php":"7af106a7fd38c4cdc8c57ecf6e03ab9c","tests\/Unit\/Transactions\/Serializers\/TransferTest.php":"bbf565785bd31035aac40b0c61bb4d6a","tests\/Unit\/Transactions\/Serializers\/HtlcLockTest.php":"62d7af16064c66ced72b535ead234a8f","tests\/Unit\/Transactions\/Serializers\/MultiSignatureRegistrationTest.php":"d33995e48fe07147304a582454df446e","tests\/Unit\/Transactions\/Serializers\/IPFSTest.php":"9cbab01a748f824e2fa66a996268cf2e","tests\/Unit\/Transactions\/Serializers\/DelegateResignationTest.php":"17dcdb013d1a6b2d0dc02d077ec101e2","tests\/Unit\/Transactions\/Serializers\/VoteTest.php":"632138bad64d4a325a95447a133bf3ca","tests\/Unit\/Transactions\/Serializers\/HtlcClaimTest.php":"69759df1d1377a02216573ac4e0c7694","tests\/Unit\/Transactions\/Serializers\/SecondSignatureRegistrationTest.php":"7ffcc9bcfdf6ccde05c8d08b81b7273f","tests\/Unit\/Transactions\/Serializers\/MultiPaymentTest.php":"04c22b03bffce8c2a713880517b0b1ec","tests\/Unit\/Transactions\/Deserializers\/DelegateRegistrationTest.php":"9b0ce921e9b1c575f715ec028c5aec42","tests\/Unit\/Transactions\/Deserializers\/HtlcRefundTest.php":"22afd8ec2418d0406e4f42ee0e431b42","tests\/Unit\/Transactions\/Deserializers\/TransferTest.php":"0a7038846d256444b667fe80381698e0","tests\/Unit\/Transactions\/Deserializers\/HtlcLockTest.php":"cc70be6e68236f806f89b93bac7696ca","tests\/Unit\/Transactions\/Deserializers\/MultiSignatureRegistrationTest.php":"1eb49e69bccee286f928c156633711ab","tests\/Unit\/Transactions\/Deserializers\/IPFSTest.php":"53e714f862c3256e29660ab97ec6bf94","tests\/Unit\/Transactions\/Deserializers\/DelegateResignationTest.php":"8be75e4b6a9dd2072c7862dae1116b8e","tests\/Unit\/Transactions\/Deserializers\/VoteTest.php":"fc61b9e98d001ee47dc6d61e87dddc1b","tests\/Unit\/Transactions\/Deserializers\/HtlcClaimTest.php":"30cacd4874af19e6026bafb57ee78b0a","tests\/Unit\/Transactions\/Deserializers\/SecondSignatureRegistrationTest.php":"dfff4015d30f5e785a1933eb3475818d","tests\/Unit\/Transactions\/Deserializers\/MultiPaymentTest.php":"73b1d1ce139b3efac75814e4d13fedc0","tests\/Unit\/Configuration\/NetworkTest.php":"302b258b1f3ae05e0216d25929b69ea7","tests\/Unit\/Configuration\/FeeTest.php":"ce7f567b72dd0126683277b243fa9fc3","tests\/Unit\/BLS\/EIP2333Test.php":"a7cbb6d601453304110e6e429ba9488b","tests\/Unit\/BLS\/ProofOfPossessionTest.php":"3a8842a310cc7a6ab6b2cb20b4642c4b","tests\/Unit\/Networks\/NetworkTestCase.php":"f529bc550cd6b9d68f1287d0181ae150","tests\/Unit\/Networks\/MainnetTest.php":"3307b4e256af4b9fd66437a5ebd0e8a2","tests\/Unit\/Networks\/TestnetTest.php":"a6984eb7fa87bc6cf693bc241188e698","tests\/Unit\/Networks\/DevnetTest.php":"17996bb8318d23a417339e72f330c3bd","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/TestCase.php":"8ad8b9b7b084dc0d2c28a247ac4a7988","tests\/Concerns\/Serialize.php":"134128506ad4e0f69949f773c1df3a70","tests\/Concerns\/Deserialize.php":"68b8f4b8877221e5052c9dd5f011aaa9","tests\/Concerns\/Fixtures.php":"a1cbc1ecf6e31bd07fdac1c230d7aa6f","tests\/Analysis\/AnalysisTest.php":"a9d0b7406e5a6894ce689229a4b939ff"}} \ No newline at end of file +{"php":"8.3.6","version":"3.76.0:v3.76.0#0e3c484cef0ae9314b0f85986a36296087432c40","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"hashes":{"src\/Helpers.php":"5736c281d8bb805826442682be38c1dc","src\/Enums\/TypeGroup.php":"2df34e8073d807a26f63cb5a92aa4466","src\/Enums\/Types.php":"4d5534dd1a0bbcf26c2f20dd4e7e0c9b","src\/Enums\/Fees.php":"ac38a4162fea543d56563c975360270a","src\/Identities\/Address.php":"17da781bf1b9c717670918fecce1bc7b","src\/Identities\/PrivateKey.php":"7259bbea2e5da198ee87bcde45661666","src\/Identities\/WIF.php":"09b3bf1f9077384e6e6c9b6661ca9152","src\/Identities\/PublicKey.php":"8cbe249d218989c54dde4ceb8eefc8e1","src\/Binary\/Hex\/Reader.php":"84c560f1a4210dcc04cf76e61b741681","src\/Binary\/Hex\/Writer.php":"1fda8dc1fda5769e71492375945421a6","src\/Binary\/Buffer\/Writer\/Buffer.php":"165a089ce688104a8db5941cf9ff6558","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"f53059caa2118b5f6a4960afbbcf2d73","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"6d3c042771c2fd307b216d45532a73a3","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"c2efefef99eefa7cf2c67649f97b7faf","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"484fea469ac07931d69f3c53e1fd09aa","src\/Binary\/Buffer\/Reader\/Buffer.php":"927b99c8047ccb9061e8193f8f144dc7","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3ee8fd0133cfbcaf15bd9c28a37a5be9","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"581d0559ed948f5feab6967c074892c0","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"02f2f4774316d2484fb2b57feb086ea1","src\/Binary\/Integer\/Reader.php":"fc382f0d5cb346069e87bdf57af42dd4","src\/Binary\/Integer\/Writer.php":"c95566b5f15e7440a357a400f4957557","src\/Binary\/UnsignedInteger\/Reader.php":"45f7182e4f5983c886ee8a589175f83a","src\/Binary\/UnsignedInteger\/Writer.php":"352dd6fbf6d6e6a96773bda8dbdc15b1","src\/Utils\/Slot.php":"415aefcc91d5ee4e5fb0ad58bb4c2242","src\/Utils\/Message.php":"9805c970ca9353cab3c5385055c4a6ae","src\/ByteBuffer\/LengthMap.php":"d992e88d544bfcd6d169a1632f3e3d05","src\/ByteBuffer\/Concerns\/Transformable.php":"4b9ded9d8a5b7005f3cbbace02315415","src\/ByteBuffer\/Concerns\/Positionable.php":"8fe18d603bcba8ad7ec525c5fea9122a","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"936ce2ebb44b67b39aeb2706f77b197c","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"4a06210be32a336cb06a642a2f772c26","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"45863cd3a3048e5d8e6523d3d7cffc07","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"e7bd39863ddb227ec17d44ef487579d5","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"4f08096933dcd65121bab249422f8d4c","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"d3c2432f4a3584750387451be2b069d0","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"e9e2946752da1ed0b71351028deb7eea","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"cb71d199dafd21c47c2aecb3a6d9b4b5","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"bbfe09b67301bb9b8ee003f7b153322b","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"82da46facba54107aceb630852447893","src\/ByteBuffer\/Concerns\/Initialisable.php":"1aa3c826684e71339aa6297582c7fcc3","src\/ByteBuffer\/Concerns\/Sizeable.php":"81c7fbf368a593bb92bf4c9f58a9f72d","src\/ByteBuffer\/Concerns\/Offsetable.php":"784a6f9b0aa7c7624d455da260480541","src\/ByteBuffer\/Concerns\/Readable.php":"1703e1781f4882cc7427ed5e3eab1b90","src\/ByteBuffer\/Concerns\/Writeable.php":"d809e2408af8e181ef5c3d3101fde0ad","src\/ByteBuffer\/ByteBuffer.php":"460fdd2bf51bacb8d5df479af9c3bac7","src\/ByteBuffer\/ByteOrder.php":"c183930b74c3f6216fce6af0ad547412","src\/Transactions\/Builder\/MultiSignatureRegistrationBuilder.php":"4fc820ea18d3844a7545bd182697842e","src\/Transactions\/Builder\/HtlcClaimBuilder.php":"26fa61beaf17a5dc5aa17270f48d02cf","src\/Transactions\/Builder\/IPFSBuilder.php":"c07a3cb80fcb3e23a38fab812d4516f6","src\/Transactions\/Builder\/TransferBuilder.php":"d62a16edd17aae91e9cd5c20b271ea83","src\/Transactions\/Builder\/MultiPaymentBuilder.php":"3befa6a0db1ba663a33f0934a2e3ed68","src\/Transactions\/Builder\/SecondSignatureRegistrationBuilder.php":"3e00a57bac43eb656a092a649740251f","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"b8c23d843ac1abfdd67f328487482dbc","src\/Transactions\/Builder\/DelegateResignationBuilder.php":"f0c849690575a8d158519d6319805e25","src\/Transactions\/Builder\/HtlcRefundBuilder.php":"172069a2c1744c7e1c26fc3d4506be33","src\/Transactions\/Builder\/DelegateRegistrationBuilder.php":"94b1cb6bd077a5b9771be530635ea1e2","src\/Transactions\/Builder\/VoteBuilder.php":"256a00c4888c2e04a6fa46b8305b034b","src\/Transactions\/Builder\/HtlcLockBuilder.php":"f9dff632706b6c63f3c1aade509c6301","src\/Transactions\/Types\/HtlcLock.php":"cce0b1037c17a6a5ca75fae86831b3b1","src\/Transactions\/Types\/SecondSignatureRegistration.php":"f9808925fe8103587d9d2c357ee5c5e8","src\/Transactions\/Types\/MultiSignatureRegistration.php":"c314aaa3f8add62a8abbbec9fe92ce7e","src\/Transactions\/Types\/Vote.php":"9932a1b40eca6b47cd67316f4f0b3aa9","src\/Transactions\/Types\/IPFS.php":"289389ba4072e543c4438cb95816d429","src\/Transactions\/Types\/MultiPayment.php":"dd7c11fd4a726a6f2e04890622c797ce","src\/Transactions\/Types\/HtlcClaim.php":"ca80737b8eb8de8af5b11a8f2584da45","src\/Transactions\/Types\/DelegateRegistration.php":"7d02c0b996e22c4c480b4bd704f54815","src\/Transactions\/Types\/Transfer.php":"fac76b00748e5b83819bfce8f0520a39","src\/Transactions\/Types\/HtlcRefund.php":"1a7c6aa917c84da527e8ba679342dd14","src\/Transactions\/Types\/DelegateResignation.php":"43d3b2784c388367154ea03b204eb9de","src\/Transactions\/Types\/Transaction.php":"80534e6f6d28c853d5f6ee16bf353189","src\/Transactions\/Serializer.php":"5663addddc99a09e0e60a8c2834872a2","src\/Transactions\/Deserializer.php":"1badd55a247238e0ba15fd7613abe668","src\/Configuration\/Fee.php":"009bd25096d57c05b8f76a42e3b1c1ed","src\/Configuration\/Network.php":"db39fa961d1f67dde1127324ebc29a88","src\/BLS\/HashToCurve\/G2HashToCurve.php":"104f044fbd0bfc2d871412caf6284306","src\/BLS\/ProofOfPossession.php":"f27d847ffcb5db3d5179367adadcb018","src\/BLS\/Fields\/Fp2.php":"7685c72b29900bef127170b812134086","src\/BLS\/Fields\/Fp.php":"415f741a7ae6e45436e54f3258b95363","src\/BLS\/EIP2333.php":"8ae983f54821a7d04a215ab109f240d8","src\/BLS\/Curves\/G2.php":"69e7f11b35b6f66c22265d1242b4cbed","src\/BLS\/Curves\/G1.php":"7dc863fe9fc87415120143b23bf3172b","src\/Networks\/Mainnet.php":"df2645844a8c6dfe8f99a471dc1d85f7","src\/Networks\/AbstractNetwork.php":"c774f58977a6f2ed3fbdba69d2489e4e","src\/Networks\/Devnet.php":"4f0097e6ec4d87f8c72f8bafeaee8892","src\/Networks\/Testnet.php":"5a1b266a1c176bcaf9a9ec6068c53b33","tests\/Unit\/Identities\/PrivateKeyTest.php":"a1f81695d6331d223ac6a3312a00b193","tests\/Unit\/Identities\/PublicKeyTest.php":"4cfded5f1e35c1083fed2ad7efeea615","tests\/Unit\/Identities\/AddressTest.php":"d7d375a29f37a4b9b772c75684c74b48","tests\/Unit\/Identities\/WIFTest.php":"b611511584dd0bfba84f113295365508","tests\/Unit\/Utils\/SlotTest.php":"e2e6bf33055513aeaff285e4904099a4","tests\/Unit\/Utils\/MessageTest.php":"a9a261798733199bf3c7f9f813181875","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"e2eae23b9c271db3191c07b1025640b1","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"09a667b97f0b5625bd2a267ae06b35ff","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"548c09489f87edce63066c196b4c35f2","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"4280210224bfe01b431348823fd37902","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"8617547d4052341646e500679de73dd8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"8bbe9a2d00b2c16e6f07d526ec86954e","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"4a0b5b96e2a1e4b849eebf1f3c8781c8","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"ec65fb8a8be71266fb0191449ae24173","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"69e5e34cf122bfa36a64602fd9df0127","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"5432d25fb0292b9e637f6e04af104745","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"21babc31150ab55f010c0709328bf92d","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"044f6a5480ac976533db063f28b3b0e3","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"28470f16ddf35d79384b866973652813","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"f3724a1f16a007a2d1a59001556d7cad","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"784101c1b5986dcdd939d47bc966684d","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"e6f2608e0921d2b2c25e3796e0e0a920","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"5951a16b75f5be22726c8f7db5bc9e17","tests\/Unit\/Transactions\/Builder\/DelegateRegistrationTest.php":"b4c0f10f2b10a91728e8352790f8f538","tests\/Unit\/Transactions\/Builder\/HtlcRefundTest.php":"e1113d28fa608fb7ff0ad4447a8b2f20","tests\/Unit\/Transactions\/Builder\/TransferTest.php":"70cdd71c9cbb57bfb51c3e4a1bd74e86","tests\/Unit\/Transactions\/Builder\/HtlcLockTest.php":"3c2c4fd37a0d14b006833fd1ac62663d","tests\/Unit\/Transactions\/Builder\/MultiSignatureRegistrationTest.php":"e5b48524e7e97683ec8a1f7c9b43ba8e","tests\/Unit\/Transactions\/Builder\/IPFSTest.php":"310d8ef8251e14a9a6498b03cdd0d912","tests\/Unit\/Transactions\/Builder\/DelegateResignationTest.php":"527f6988349a098d4fa6b92c78570954","tests\/Unit\/Transactions\/Builder\/VoteTest.php":"db91e16f8987dd6c050471bd0704523a","tests\/Unit\/Transactions\/Builder\/HtlcClaimTest.php":"619401dcbbee5dc4034429824bec865c","tests\/Unit\/Transactions\/Builder\/SecondSignatureRegistrationTest.php":"55f2fc9a05b4417820c3574aa828fdb3","tests\/Unit\/Transactions\/Builder\/MultiPaymentTest.php":"968a69c19596fbbba3f07e022c44ba12","tests\/Unit\/Transactions\/TransactionTest.php":"ac2e2e1de31db779f543a7d3f257822c","tests\/Unit\/Transactions\/Serializers\/DelegateRegistrationTest.php":"04d9dc16c57e35bed0f98cd305302e3b","tests\/Unit\/Transactions\/Serializers\/HtlcRefundTest.php":"7af106a7fd38c4cdc8c57ecf6e03ab9c","tests\/Unit\/Transactions\/Serializers\/TransferTest.php":"bbf565785bd31035aac40b0c61bb4d6a","tests\/Unit\/Transactions\/Serializers\/HtlcLockTest.php":"62d7af16064c66ced72b535ead234a8f","tests\/Unit\/Transactions\/Serializers\/MultiSignatureRegistrationTest.php":"d33995e48fe07147304a582454df446e","tests\/Unit\/Transactions\/Serializers\/IPFSTest.php":"9cbab01a748f824e2fa66a996268cf2e","tests\/Unit\/Transactions\/Serializers\/DelegateResignationTest.php":"17dcdb013d1a6b2d0dc02d077ec101e2","tests\/Unit\/Transactions\/Serializers\/VoteTest.php":"632138bad64d4a325a95447a133bf3ca","tests\/Unit\/Transactions\/Serializers\/HtlcClaimTest.php":"69759df1d1377a02216573ac4e0c7694","tests\/Unit\/Transactions\/Serializers\/SecondSignatureRegistrationTest.php":"7ffcc9bcfdf6ccde05c8d08b81b7273f","tests\/Unit\/Transactions\/Serializers\/MultiPaymentTest.php":"04c22b03bffce8c2a713880517b0b1ec","tests\/Unit\/Transactions\/Deserializers\/DelegateRegistrationTest.php":"9b0ce921e9b1c575f715ec028c5aec42","tests\/Unit\/Transactions\/Deserializers\/HtlcRefundTest.php":"22afd8ec2418d0406e4f42ee0e431b42","tests\/Unit\/Transactions\/Deserializers\/TransferTest.php":"0a7038846d256444b667fe80381698e0","tests\/Unit\/Transactions\/Deserializers\/HtlcLockTest.php":"cc70be6e68236f806f89b93bac7696ca","tests\/Unit\/Transactions\/Deserializers\/MultiSignatureRegistrationTest.php":"1eb49e69bccee286f928c156633711ab","tests\/Unit\/Transactions\/Deserializers\/IPFSTest.php":"53e714f862c3256e29660ab97ec6bf94","tests\/Unit\/Transactions\/Deserializers\/DelegateResignationTest.php":"8be75e4b6a9dd2072c7862dae1116b8e","tests\/Unit\/Transactions\/Deserializers\/VoteTest.php":"fc61b9e98d001ee47dc6d61e87dddc1b","tests\/Unit\/Transactions\/Deserializers\/HtlcClaimTest.php":"30cacd4874af19e6026bafb57ee78b0a","tests\/Unit\/Transactions\/Deserializers\/SecondSignatureRegistrationTest.php":"dfff4015d30f5e785a1933eb3475818d","tests\/Unit\/Transactions\/Deserializers\/MultiPaymentTest.php":"73b1d1ce139b3efac75814e4d13fedc0","tests\/Unit\/Configuration\/NetworkTest.php":"302b258b1f3ae05e0216d25929b69ea7","tests\/Unit\/Configuration\/FeeTest.php":"ce7f567b72dd0126683277b243fa9fc3","tests\/Unit\/BLS\/EIP2333Test.php":"a7cbb6d601453304110e6e429ba9488b","tests\/Unit\/BLS\/ProofOfPossessionTest.php":"95f666afb1e41a4160158a54cf972763","tests\/Unit\/Networks\/NetworkTestCase.php":"f529bc550cd6b9d68f1287d0181ae150","tests\/Unit\/Networks\/MainnetTest.php":"3307b4e256af4b9fd66437a5ebd0e8a2","tests\/Unit\/Networks\/TestnetTest.php":"a6984eb7fa87bc6cf693bc241188e698","tests\/Unit\/Networks\/DevnetTest.php":"17996bb8318d23a417339e72f330c3bd","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/TestCase.php":"8ad8b9b7b084dc0d2c28a247ac4a7988","tests\/Concerns\/Serialize.php":"134128506ad4e0f69949f773c1df3a70","tests\/Concerns\/Deserialize.php":"68b8f4b8877221e5052c9dd5f011aaa9","tests\/Concerns\/Fixtures.php":"a1cbc1ecf6e31bd07fdac1c230d7aa6f","tests\/Analysis\/AnalysisTest.php":"a9d0b7406e5a6894ce689229a4b939ff"}} \ No newline at end of file From 6d58243dc38ef3ccf7dd3e1e725916cfb30d1dc5 Mon Sep 17 00:00:00 2001 From: shahin-hq Date: Mon, 15 Jun 2026 09:28:02 +0000 Subject: [PATCH 20/27] style: resolve style guide violations --- .php-cs-fixer.cache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index bd1c9b88..90600cb7 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.3.6","version":"3.76.0:v3.76.0#0e3c484cef0ae9314b0f85986a36296087432c40","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"hashes":{"src\/Helpers.php":"5736c281d8bb805826442682be38c1dc","src\/Enums\/TypeGroup.php":"2df34e8073d807a26f63cb5a92aa4466","src\/Enums\/Types.php":"4d5534dd1a0bbcf26c2f20dd4e7e0c9b","src\/Enums\/Fees.php":"ac38a4162fea543d56563c975360270a","src\/Identities\/Address.php":"17da781bf1b9c717670918fecce1bc7b","src\/Identities\/PrivateKey.php":"7259bbea2e5da198ee87bcde45661666","src\/Identities\/WIF.php":"09b3bf1f9077384e6e6c9b6661ca9152","src\/Identities\/PublicKey.php":"8cbe249d218989c54dde4ceb8eefc8e1","src\/Binary\/Hex\/Reader.php":"84c560f1a4210dcc04cf76e61b741681","src\/Binary\/Hex\/Writer.php":"1fda8dc1fda5769e71492375945421a6","src\/Binary\/Buffer\/Writer\/Buffer.php":"165a089ce688104a8db5941cf9ff6558","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"f53059caa2118b5f6a4960afbbcf2d73","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"6d3c042771c2fd307b216d45532a73a3","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"c2efefef99eefa7cf2c67649f97b7faf","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"484fea469ac07931d69f3c53e1fd09aa","src\/Binary\/Buffer\/Reader\/Buffer.php":"927b99c8047ccb9061e8193f8f144dc7","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3ee8fd0133cfbcaf15bd9c28a37a5be9","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"581d0559ed948f5feab6967c074892c0","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"02f2f4774316d2484fb2b57feb086ea1","src\/Binary\/Integer\/Reader.php":"fc382f0d5cb346069e87bdf57af42dd4","src\/Binary\/Integer\/Writer.php":"c95566b5f15e7440a357a400f4957557","src\/Binary\/UnsignedInteger\/Reader.php":"45f7182e4f5983c886ee8a589175f83a","src\/Binary\/UnsignedInteger\/Writer.php":"352dd6fbf6d6e6a96773bda8dbdc15b1","src\/Utils\/Slot.php":"415aefcc91d5ee4e5fb0ad58bb4c2242","src\/Utils\/Message.php":"9805c970ca9353cab3c5385055c4a6ae","src\/ByteBuffer\/LengthMap.php":"d992e88d544bfcd6d169a1632f3e3d05","src\/ByteBuffer\/Concerns\/Transformable.php":"4b9ded9d8a5b7005f3cbbace02315415","src\/ByteBuffer\/Concerns\/Positionable.php":"8fe18d603bcba8ad7ec525c5fea9122a","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"936ce2ebb44b67b39aeb2706f77b197c","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"4a06210be32a336cb06a642a2f772c26","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"45863cd3a3048e5d8e6523d3d7cffc07","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"e7bd39863ddb227ec17d44ef487579d5","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"4f08096933dcd65121bab249422f8d4c","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"d3c2432f4a3584750387451be2b069d0","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"e9e2946752da1ed0b71351028deb7eea","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"cb71d199dafd21c47c2aecb3a6d9b4b5","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"bbfe09b67301bb9b8ee003f7b153322b","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"82da46facba54107aceb630852447893","src\/ByteBuffer\/Concerns\/Initialisable.php":"1aa3c826684e71339aa6297582c7fcc3","src\/ByteBuffer\/Concerns\/Sizeable.php":"81c7fbf368a593bb92bf4c9f58a9f72d","src\/ByteBuffer\/Concerns\/Offsetable.php":"784a6f9b0aa7c7624d455da260480541","src\/ByteBuffer\/Concerns\/Readable.php":"1703e1781f4882cc7427ed5e3eab1b90","src\/ByteBuffer\/Concerns\/Writeable.php":"d809e2408af8e181ef5c3d3101fde0ad","src\/ByteBuffer\/ByteBuffer.php":"460fdd2bf51bacb8d5df479af9c3bac7","src\/ByteBuffer\/ByteOrder.php":"c183930b74c3f6216fce6af0ad547412","src\/Transactions\/Builder\/MultiSignatureRegistrationBuilder.php":"4fc820ea18d3844a7545bd182697842e","src\/Transactions\/Builder\/HtlcClaimBuilder.php":"26fa61beaf17a5dc5aa17270f48d02cf","src\/Transactions\/Builder\/IPFSBuilder.php":"c07a3cb80fcb3e23a38fab812d4516f6","src\/Transactions\/Builder\/TransferBuilder.php":"d62a16edd17aae91e9cd5c20b271ea83","src\/Transactions\/Builder\/MultiPaymentBuilder.php":"3befa6a0db1ba663a33f0934a2e3ed68","src\/Transactions\/Builder\/SecondSignatureRegistrationBuilder.php":"3e00a57bac43eb656a092a649740251f","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"b8c23d843ac1abfdd67f328487482dbc","src\/Transactions\/Builder\/DelegateResignationBuilder.php":"f0c849690575a8d158519d6319805e25","src\/Transactions\/Builder\/HtlcRefundBuilder.php":"172069a2c1744c7e1c26fc3d4506be33","src\/Transactions\/Builder\/DelegateRegistrationBuilder.php":"94b1cb6bd077a5b9771be530635ea1e2","src\/Transactions\/Builder\/VoteBuilder.php":"256a00c4888c2e04a6fa46b8305b034b","src\/Transactions\/Builder\/HtlcLockBuilder.php":"f9dff632706b6c63f3c1aade509c6301","src\/Transactions\/Types\/HtlcLock.php":"cce0b1037c17a6a5ca75fae86831b3b1","src\/Transactions\/Types\/SecondSignatureRegistration.php":"f9808925fe8103587d9d2c357ee5c5e8","src\/Transactions\/Types\/MultiSignatureRegistration.php":"c314aaa3f8add62a8abbbec9fe92ce7e","src\/Transactions\/Types\/Vote.php":"9932a1b40eca6b47cd67316f4f0b3aa9","src\/Transactions\/Types\/IPFS.php":"289389ba4072e543c4438cb95816d429","src\/Transactions\/Types\/MultiPayment.php":"dd7c11fd4a726a6f2e04890622c797ce","src\/Transactions\/Types\/HtlcClaim.php":"ca80737b8eb8de8af5b11a8f2584da45","src\/Transactions\/Types\/DelegateRegistration.php":"7d02c0b996e22c4c480b4bd704f54815","src\/Transactions\/Types\/Transfer.php":"fac76b00748e5b83819bfce8f0520a39","src\/Transactions\/Types\/HtlcRefund.php":"1a7c6aa917c84da527e8ba679342dd14","src\/Transactions\/Types\/DelegateResignation.php":"43d3b2784c388367154ea03b204eb9de","src\/Transactions\/Types\/Transaction.php":"80534e6f6d28c853d5f6ee16bf353189","src\/Transactions\/Serializer.php":"5663addddc99a09e0e60a8c2834872a2","src\/Transactions\/Deserializer.php":"1badd55a247238e0ba15fd7613abe668","src\/Configuration\/Fee.php":"009bd25096d57c05b8f76a42e3b1c1ed","src\/Configuration\/Network.php":"db39fa961d1f67dde1127324ebc29a88","src\/BLS\/HashToCurve\/G2HashToCurve.php":"104f044fbd0bfc2d871412caf6284306","src\/BLS\/ProofOfPossession.php":"f27d847ffcb5db3d5179367adadcb018","src\/BLS\/Fields\/Fp2.php":"7685c72b29900bef127170b812134086","src\/BLS\/Fields\/Fp.php":"415f741a7ae6e45436e54f3258b95363","src\/BLS\/EIP2333.php":"8ae983f54821a7d04a215ab109f240d8","src\/BLS\/Curves\/G2.php":"69e7f11b35b6f66c22265d1242b4cbed","src\/BLS\/Curves\/G1.php":"7dc863fe9fc87415120143b23bf3172b","src\/Networks\/Mainnet.php":"df2645844a8c6dfe8f99a471dc1d85f7","src\/Networks\/AbstractNetwork.php":"c774f58977a6f2ed3fbdba69d2489e4e","src\/Networks\/Devnet.php":"4f0097e6ec4d87f8c72f8bafeaee8892","src\/Networks\/Testnet.php":"5a1b266a1c176bcaf9a9ec6068c53b33","tests\/Unit\/Identities\/PrivateKeyTest.php":"a1f81695d6331d223ac6a3312a00b193","tests\/Unit\/Identities\/PublicKeyTest.php":"4cfded5f1e35c1083fed2ad7efeea615","tests\/Unit\/Identities\/AddressTest.php":"d7d375a29f37a4b9b772c75684c74b48","tests\/Unit\/Identities\/WIFTest.php":"b611511584dd0bfba84f113295365508","tests\/Unit\/Utils\/SlotTest.php":"e2e6bf33055513aeaff285e4904099a4","tests\/Unit\/Utils\/MessageTest.php":"a9a261798733199bf3c7f9f813181875","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"e2eae23b9c271db3191c07b1025640b1","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"09a667b97f0b5625bd2a267ae06b35ff","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"548c09489f87edce63066c196b4c35f2","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"4280210224bfe01b431348823fd37902","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"8617547d4052341646e500679de73dd8","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"8bbe9a2d00b2c16e6f07d526ec86954e","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"4a0b5b96e2a1e4b849eebf1f3c8781c8","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"ec65fb8a8be71266fb0191449ae24173","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"69e5e34cf122bfa36a64602fd9df0127","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"5432d25fb0292b9e637f6e04af104745","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"21babc31150ab55f010c0709328bf92d","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"044f6a5480ac976533db063f28b3b0e3","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"28470f16ddf35d79384b866973652813","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"f3724a1f16a007a2d1a59001556d7cad","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"784101c1b5986dcdd939d47bc966684d","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"e6f2608e0921d2b2c25e3796e0e0a920","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"5951a16b75f5be22726c8f7db5bc9e17","tests\/Unit\/Transactions\/Builder\/DelegateRegistrationTest.php":"b4c0f10f2b10a91728e8352790f8f538","tests\/Unit\/Transactions\/Builder\/HtlcRefundTest.php":"e1113d28fa608fb7ff0ad4447a8b2f20","tests\/Unit\/Transactions\/Builder\/TransferTest.php":"70cdd71c9cbb57bfb51c3e4a1bd74e86","tests\/Unit\/Transactions\/Builder\/HtlcLockTest.php":"3c2c4fd37a0d14b006833fd1ac62663d","tests\/Unit\/Transactions\/Builder\/MultiSignatureRegistrationTest.php":"e5b48524e7e97683ec8a1f7c9b43ba8e","tests\/Unit\/Transactions\/Builder\/IPFSTest.php":"310d8ef8251e14a9a6498b03cdd0d912","tests\/Unit\/Transactions\/Builder\/DelegateResignationTest.php":"527f6988349a098d4fa6b92c78570954","tests\/Unit\/Transactions\/Builder\/VoteTest.php":"db91e16f8987dd6c050471bd0704523a","tests\/Unit\/Transactions\/Builder\/HtlcClaimTest.php":"619401dcbbee5dc4034429824bec865c","tests\/Unit\/Transactions\/Builder\/SecondSignatureRegistrationTest.php":"55f2fc9a05b4417820c3574aa828fdb3","tests\/Unit\/Transactions\/Builder\/MultiPaymentTest.php":"968a69c19596fbbba3f07e022c44ba12","tests\/Unit\/Transactions\/TransactionTest.php":"ac2e2e1de31db779f543a7d3f257822c","tests\/Unit\/Transactions\/Serializers\/DelegateRegistrationTest.php":"04d9dc16c57e35bed0f98cd305302e3b","tests\/Unit\/Transactions\/Serializers\/HtlcRefundTest.php":"7af106a7fd38c4cdc8c57ecf6e03ab9c","tests\/Unit\/Transactions\/Serializers\/TransferTest.php":"bbf565785bd31035aac40b0c61bb4d6a","tests\/Unit\/Transactions\/Serializers\/HtlcLockTest.php":"62d7af16064c66ced72b535ead234a8f","tests\/Unit\/Transactions\/Serializers\/MultiSignatureRegistrationTest.php":"d33995e48fe07147304a582454df446e","tests\/Unit\/Transactions\/Serializers\/IPFSTest.php":"9cbab01a748f824e2fa66a996268cf2e","tests\/Unit\/Transactions\/Serializers\/DelegateResignationTest.php":"17dcdb013d1a6b2d0dc02d077ec101e2","tests\/Unit\/Transactions\/Serializers\/VoteTest.php":"632138bad64d4a325a95447a133bf3ca","tests\/Unit\/Transactions\/Serializers\/HtlcClaimTest.php":"69759df1d1377a02216573ac4e0c7694","tests\/Unit\/Transactions\/Serializers\/SecondSignatureRegistrationTest.php":"7ffcc9bcfdf6ccde05c8d08b81b7273f","tests\/Unit\/Transactions\/Serializers\/MultiPaymentTest.php":"04c22b03bffce8c2a713880517b0b1ec","tests\/Unit\/Transactions\/Deserializers\/DelegateRegistrationTest.php":"9b0ce921e9b1c575f715ec028c5aec42","tests\/Unit\/Transactions\/Deserializers\/HtlcRefundTest.php":"22afd8ec2418d0406e4f42ee0e431b42","tests\/Unit\/Transactions\/Deserializers\/TransferTest.php":"0a7038846d256444b667fe80381698e0","tests\/Unit\/Transactions\/Deserializers\/HtlcLockTest.php":"cc70be6e68236f806f89b93bac7696ca","tests\/Unit\/Transactions\/Deserializers\/MultiSignatureRegistrationTest.php":"1eb49e69bccee286f928c156633711ab","tests\/Unit\/Transactions\/Deserializers\/IPFSTest.php":"53e714f862c3256e29660ab97ec6bf94","tests\/Unit\/Transactions\/Deserializers\/DelegateResignationTest.php":"8be75e4b6a9dd2072c7862dae1116b8e","tests\/Unit\/Transactions\/Deserializers\/VoteTest.php":"fc61b9e98d001ee47dc6d61e87dddc1b","tests\/Unit\/Transactions\/Deserializers\/HtlcClaimTest.php":"30cacd4874af19e6026bafb57ee78b0a","tests\/Unit\/Transactions\/Deserializers\/SecondSignatureRegistrationTest.php":"dfff4015d30f5e785a1933eb3475818d","tests\/Unit\/Transactions\/Deserializers\/MultiPaymentTest.php":"73b1d1ce139b3efac75814e4d13fedc0","tests\/Unit\/Configuration\/NetworkTest.php":"302b258b1f3ae05e0216d25929b69ea7","tests\/Unit\/Configuration\/FeeTest.php":"ce7f567b72dd0126683277b243fa9fc3","tests\/Unit\/BLS\/EIP2333Test.php":"a7cbb6d601453304110e6e429ba9488b","tests\/Unit\/BLS\/ProofOfPossessionTest.php":"95f666afb1e41a4160158a54cf972763","tests\/Unit\/Networks\/NetworkTestCase.php":"f529bc550cd6b9d68f1287d0181ae150","tests\/Unit\/Networks\/MainnetTest.php":"3307b4e256af4b9fd66437a5ebd0e8a2","tests\/Unit\/Networks\/TestnetTest.php":"a6984eb7fa87bc6cf693bc241188e698","tests\/Unit\/Networks\/DevnetTest.php":"17996bb8318d23a417339e72f330c3bd","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/TestCase.php":"8ad8b9b7b084dc0d2c28a247ac4a7988","tests\/Concerns\/Serialize.php":"134128506ad4e0f69949f773c1df3a70","tests\/Concerns\/Deserialize.php":"68b8f4b8877221e5052c9dd5f011aaa9","tests\/Concerns\/Fixtures.php":"a1cbc1ecf6e31bd07fdac1c230d7aa6f","tests\/Analysis\/AnalysisTest.php":"a9d0b7406e5a6894ce689229a4b939ff"}} \ No newline at end of file +{"php":"8.3.6","version":"3.95.1:v3.95.1#a9727678fbd12997f1d9de8f4a37824ed9df1065","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"ruleCustomisationPolicyVersion":"null-policy","hashes":{"src\/Binary\/Hex\/Writer.php":"590df3f3343c052d96d3cbbeb317f265","src\/Binary\/Buffer\/Writer\/Buffer.php":"80ab7029c26d83449a3529f4cee7a648","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"320937c99c2d66a2fe5c97396a994921","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"1f80863a79db7a412ed78fd647ff1cdf","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"2ffba9fbbc552cb15166b7c47e22cd0e","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"76f295b93cc3d1327bf799f57d5a978c","src\/Binary\/Buffer\/Reader\/Buffer.php":"ec09343504cca539cf6bf91aace82464","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3442407232a6093352c8e2b3146169f5","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"978f791a745c7b99d81032ef7f182558","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"6a2f2ea4c5839184a7715dc633a504bd","src\/Exceptions\/InvalidUsernameException.php":"d392da166f80b3be9bdf4ba13d1e7b89","src\/Helpers.php":"90816e6ab5e44ebcb4c31770b610fa3b","src\/Enums\/ContractAbiType.php":"6aeea79e287ad76d65dc4ad0fcdf10eb","src\/Enums\/AbiFunction.php":"ca8f4371bfc820c483514dfacc41159b","src\/Enums\/ContractAddresses.php":"31d97083e3ea21957e65ff4f5a5e7368","src\/Identities\/Address.php":"83f02a9f2e101ce9ed1748bd3c0a0aab","src\/Identities\/PrivateKey.php":"a4bd870539d13f97a21e714608310804","src\/Identities\/WIF.php":"60dd95da09bb6c240acd02cd3f52a6b8","src\/Identities\/PublicKey.php":"2deb4baddcc512f012a06ce5f3b39387","src\/Binary\/Hex\/Reader.php":"e28448b92fadb2979e1db484a6afca8d","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"169cc84b5e39930c7e168d7bdbbcd37d","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"ba4ebf613b130f41b0a531dbd07c43c5","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"6f717766d8775b349f0e474902f66511","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"f3797170755677f4776f1cefbda60cb6","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"68a9620949ef00f0b9676f2a1433d849","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"f3cc0a816b6e9469740bf59575363516","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"17238cbe09b4b870fa66b5704709f18e","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"9fa6cb50cebf03b7bf00e3b5337d9873","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"056b5c5b629a9fd0231becaded2f6973","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"3d29cc54a05f7c6a02973e5618f821ae","src\/Utils\/RlpEncoder.php":"3f12a6053f27f931d0fabbfb91e1a7cf","src\/Utils\/TransactionUtils.php":"6e5ec26cbe4b2125c59a37331083173a","src\/Utils\/TransactionTypeIdentifier.php":"b89b96a26412691b042f4b2f1586a01f","src\/Utils\/Abi\/ArgumentDecoder.php":"6430cb971aa8e5927b62270afdec0af6","src\/Utils\/UnitConverter.php":"d716c75d97fb21408dd1b2d86d18c75d","src\/Utils\/TransactionEncoder.php":"439eaab92539814629cd8e216634a937","src\/Utils\/AbiEncoder.php":"e0edf2b073a0b0efe07896731846535c","src\/ByteBuffer\/LengthMap.php":"2f62d17297dc7387a39466df38b8649b","src\/ByteBuffer\/Concerns\/Transformable.php":"3d1f8aa43854c9417538e51dfdcd106f","src\/ByteBuffer\/Concerns\/Positionable.php":"86e5bc94fc7389aed28ba6fec9d7d2c2","src\/Binary\/Integer\/Reader.php":"fbe1a1af3821a1c2ee79e996a254ef2a","src\/Binary\/Integer\/Writer.php":"e6dbdb22282670b0547c66202cf25abf","src\/Binary\/UnsignedInteger\/Reader.php":"e9d87277e9f0e8cd6f3a63b6caa95ad2","src\/Binary\/UnsignedInteger\/Writer.php":"c0443907d9a5c9b2c027eca99ae775f5","src\/Utils\/Address.php":"410b85d6c0ba3764293463b48c03da91","src\/Utils\/AbiBase.php":"772be753e59f052101bc7616ecc2ca6d","src\/Utils\/RlpDecoder.php":"3fbea35725a5194184db4c650239418c","src\/Utils\/AbiDecoder.php":"8bfbd3752176ffb1a2321f72f4f01dff","src\/Utils\/Slot.php":"9674e711b193645b0b769514ab1d5907","src\/Utils\/Message.php":"6dc3cf7e0fe73c86d1eaa54ae0052ce7","src\/ByteBuffer\/Concerns\/Initialisable.php":"96a9455179a83ec00139d937bcd58626","src\/ByteBuffer\/Concerns\/Sizeable.php":"6b03f909020b0d15bc4c35256d85c896","src\/ByteBuffer\/Concerns\/Offsetable.php":"68179b59de54fe5a6233eb7111f6dc79","src\/ByteBuffer\/Concerns\/Readable.php":"518d72f8d0f926461b3248336640abae","src\/ByteBuffer\/Concerns\/Writeable.php":"6970a6fb60370c572f3a3febe6c3df09","src\/ByteBuffer\/ByteBuffer.php":"466a031832de383903af0251fc88be93","src\/ByteBuffer\/ByteOrder.php":"36dff8aac67cf33c653ba15e906e2680","src\/Transactions\/Builder\/EvmCallBuilder.php":"60eeff1cdc6dc59528d216db71211e49","src\/Transactions\/Builder\/TransferBuilder.php":"96ff6d1443e60e6c7ae5a37ed400a62f","src\/Transactions\/Builder\/ValidatorResignationBuilder.php":"ca8561048ac8aa2a0d623b7c327a0afd","src\/Transactions\/Builder\/UsernameRegistrationBuilder.php":"c9bb1a7376cadda5152abd5e46f0be8c","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"c984b9b1efeb4b7e389e9b01a24b5628","src\/Transactions\/Builder\/TokenTransferBuilder.php":"5a48ac7df4a614009c4b063343157ee0","src\/Transactions\/Builder\/UnvoteBuilder.php":"a37b3c38a9ce5f663579e3ce28e16ff3","src\/Transactions\/Builder\/TokenApproveBuilder.php":"c95653c20511eb4e9ba309260491a34d","src\/Transactions\/Builder\/UsernameResignationBuilder.php":"44ddc136b094777b3fb105fef647db11","src\/Transactions\/Builder\/MultipaymentBuilder.php":"562c803fa9e19a6873951f7cd1bad1c8","src\/Transactions\/Builder\/VoteBuilder.php":"02426dd1b4042447e25a64eb78188fb7","src\/Transactions\/Builder\/ValidatorRegistrationBuilder.php":"306d0ae7b7b9c49660711707e22a95f1","src\/Transactions\/Types\/UsernameRegistration.php":"485b52c32da8b62826617708f3b4a6ec","src\/Transactions\/Types\/Vote.php":"90972b6a028a7652351655a1c1b08b34","src\/Transactions\/Types\/Multipayment.php":"b10ca169d3d37058ad7b940b48d11a8a","src\/Transactions\/Types\/EvmCall.php":"df3aa5b419b200b9eac9d5fc87d240c8","src\/Transactions\/Types\/ValidatorResignation.php":"090882c106dfa298a956bd8eeb49c447","src\/Transactions\/Types\/AbstractTransaction.php":"60222b9229ae21c646b2e30cc38b6871","src\/Transactions\/Types\/Transfer.php":"4d3a16aa308ccf80758b212eca33b669","src\/Transactions\/Types\/ValidatorRegistration.php":"676a366a714e258742b5d0bac8927ebc","src\/Transactions\/Types\/Unvote.php":"56b3c9b921f038639f4eac0d6239e437","src\/Transactions\/Types\/UsernameResignation.php":"68848e1cd4b4d341aa7ff831481ffe31","src\/Transactions\/Serializer.php":"54487af37809b3c134efdce4e26ed1b2","src\/Networks\/Mainnet.php":"3acffe72b51707db16ad4b1a78f050b1","src\/Networks\/AbstractNetwork.php":"5b1cb5aa9830faf93a7f68023614dc1c","src\/Networks\/Testnet.php":"60f72744f4691e2da852b66e9d85a5f0","tests\/Unit\/HelpersTest.php":"40826b23445858a4968985a8c27a7da0","tests\/Unit\/Enums\/AbiFunctionTest.php":"d9ff7604b7be95adad992489c7b0f3dc","tests\/Unit\/Identities\/PrivateKeyTest.php":"19275c459ca01885ae4bf73ffcbecd33","tests\/Unit\/Identities\/PublicKeyTest.php":"e406835540aa170e6e27d24a2a36c09a","tests\/Unit\/Identities\/AddressTest.php":"0e0b7cfefdec532df286f52ce9ddee0f","tests\/Unit\/Identities\/WIFTest.php":"5619ab75730edbb32603355767e5ff70","tests\/Unit\/Binary\/Hex\/WriterTest.php":"85dad01bc8693af66bc55c40a2e603c5","tests\/Unit\/Binary\/Hex\/ReaderTest.php":"f179cd6f729f0d866518038803446228","tests\/Unit\/Binary\/Buffer\/Writer\/BufferTest.php":"6372984efaf7d2a378a7c2ebc3019f3a","tests\/Unit\/Binary\/Buffer\/Reader\/BufferTest.php":"6c6996473bf7c7d8592e3639f5326dda","tests\/Unit\/Binary\/Integer\/WriterTest.php":"64a1f07dc16c4faf2c06a3e5092a107d","tests\/Unit\/Binary\/Integer\/ReaderTest.php":"599fef4860548866a39f64e3dbb44e7d","tests\/Unit\/Binary\/UnsignedInteger\/WriterTest.php":"c10138f97a2b9f34c80d6feae77e77cc","tests\/Unit\/Binary\/UnsignedInteger\/ReaderTest.php":"c88736b794a6320cae58e6554b2cd8bc","tests\/Unit\/Utils\/TransactionEncoderTest.php":"05a4891b1879354a9d69a8bc1b5cb827","tests\/Unit\/Utils\/TransactionUtilsTest.php":"01a1855eacb299b74a997d7dd5987774","tests\/Unit\/Utils\/AddressTest.php":"e2851e599dd5b442cbe83e9c1f28e4b9","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"d1a553d36f3fec95b857c839e2d834cb","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"e5124461e7a97a3e2d78e5b6f5469991","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"1abfe709a9e787f7b4e4718d5af0e65c","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"4f2ed9775cd92f3d136d9d6b1cd8f25c","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"9b45e3276289bb0c44faf94326d6ff76","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"6f591e8733550f1ad0d231f7809ad0a5","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"3b113ff1f80a9e15ab7af1a29161259b","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"01aa9304919af4fa3fa6aaef2f897679","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"cddc6997c7daf4c494b7a65b22823bc3","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"e4d5200763a77c3993047247d59b3488","tests\/Unit\/Utils\/AbiEncoderTest.php":"8e9601a7576c4e0590f9508267464ff6","tests\/Unit\/Utils\/RlpEncoderTest.php":"6710ec96e9603dbe073181e095674027","tests\/Unit\/Utils\/UnitConverterTest.php":"b4dfb4b2bdeac414b9c85b35a8e09d8c","tests\/Unit\/Utils\/AbiDecoderTest.php":"aff7a7433e0b9b27b4b3f724609968a3","tests\/Unit\/Utils\/SlotTest.php":"ed89ae0182409d977a4faab9ca1eea95","tests\/Unit\/Utils\/RlpDecoderTest.php":"12f50e696926077dbbc1f005cbae2ef2","tests\/Unit\/Utils\/TransactionTypeIdentifierTest.php":"f7ecc6168bdbf6b4223e0eb3b9da7a91","tests\/Unit\/Utils\/MessageTest.php":"71efee57f29dceda4e36e133169c5683","tests\/Unit\/Utils\/Abi\/ArgumentDecoderTest.php":"9e1fda36ecf2cde01b7db5c85658bc24","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"34237362a8d54d9c4d1610d59fedf7f8","src\/Transactions\/Deserializer.php":"5d77b8f779a3485de6caf6a08d4d5f3b","src\/Configuration\/Network.php":"d908336264d1b5c789e42fe7ba0cfe2c","src\/BLS\/HashToCurve\/G2HashToCurve.php":"104f044fbd0bfc2d871412caf6284306","src\/BLS\/ProofOfPossession.php":"f27d847ffcb5db3d5179367adadcb018","src\/BLS\/Fields\/Fp2.php":"7685c72b29900bef127170b812134086","src\/BLS\/Fields\/Fp.php":"415f741a7ae6e45436e54f3258b95363","src\/BLS\/EIP2333.php":"8ae983f54821a7d04a215ab109f240d8","src\/BLS\/Curves\/G2.php":"69e7f11b35b6f66c22265d1242b4cbed","src\/BLS\/Curves\/G1.php":"7dc863fe9fc87415120143b23bf3172b","src\/Networks\/NetworkInterface.php":"b0aff2a147eb231da8cee50012841830","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"344d7500a1776339f787c9f56be5b580","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"6230c022bbcada03e9e336e532b34b55","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"10004a8bf4ed76dc108dd5ae3db7596d","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"6888874a372bccc480c2c7ebee35c4cf","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"f9e38c617dea3bb087550a78fa333d2c","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"7e8c04fdf23a09c06c3c77aa7dfb037a","tests\/Unit\/Transactions\/Builder\/TokenApproveBuilderTest.php":"eefe09a0b5c68542c7a33d3c2250b94b","tests\/Unit\/Transactions\/Builder\/TransferBuilderTest.php":"90a7ca6fed95fde81fc4f0d053264003","tests\/Unit\/Transactions\/Builder\/ValidatorResignationBuilderTest.php":"c744298864255a9851f85878c91fd5a6","tests\/Unit\/Transactions\/Builder\/UsernameResignationBuilderTest.php":"c3443fe93b7b10b85f33b6e3e5b6477a","tests\/Unit\/Transactions\/Builder\/TokenTransferBuilderTest.php":"d0afe43a3065f8f6c279deb940930ef5","tests\/Unit\/Transactions\/Builder\/UnvoteBuilderTest.php":"eed8e8215db82abd4a5c2994453b9772","tests\/Unit\/Transactions\/Builder\/MultipaymentBuilderTest.php":"f6aded1988aacb3c15a70885340e08f7","tests\/Unit\/Transactions\/Builder\/EvmCallBuilderTest.php":"1d95fae15d239d2eea1ab245609397da","tests\/Unit\/Transactions\/Builder\/ValidatorRegistrationBuilderTest.php":"444cfc7a77f402d135bc0f5ac7d6d6a5","tests\/Unit\/Transactions\/Builder\/UsernameRegistrationBuilderTest.php":"baba0df21fdb5fdedf41084b35c02cb9","tests\/Unit\/Transactions\/Builder\/VoteBuilderTest.php":"d3ec709c1e626422fa8a86eb833ae0ea","tests\/Unit\/Transactions\/Types\/TransferTest.php":"71110444ac25ca571c6dc6f855625c13","tests\/Unit\/Transactions\/Types\/ValidatorResignationTest.php":"1817a13685810de64b15df1630b11e5d","tests\/Unit\/Transactions\/Types\/EvmCallTest.php":"b37cff6589fa63bc43a196626853c208","tests\/Analysis\/AnalysisTest.php":"3dd50256922f683ee5ac773e20397598","tests\/Unit\/BLS\/EIP2333Test.php":"a7cbb6d601453304110e6e429ba9488b","tests\/Unit\/BLS\/ProofOfPossessionTest.php":"95f666afb1e41a4160158a54cf972763","tests\/Unit\/Networks\/MainnetTest.php":"372a7750ae834599a0088b09a4fac760","tests\/Unit\/Networks\/TestnetTest.php":"c8dba3e353c84037c78d558548760872","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/TestCase.php":"4133b24901762dc409bb9a111c8c4853","tests\/Concerns\/Serialize.php":"5011734a689b042840e8c277c42b9a36","tests\/Concerns\/Deserialize.php":"f611e371aa76b5201c18886672185efd","tests\/Concerns\/Fixtures.php":"db5b42eaf5cf381b51f8440c66669efd","tests\/Unit\/Transactions\/Types\/UnvoteTest.php":"9b57057eb1b0c17e7c783506a96c287a","tests\/Unit\/Transactions\/Types\/ValidatorRegistrationTest.php":"7b8b5c37a358ed4958a9950ca559df6e","tests\/Unit\/Transactions\/Types\/MultipaymentTest.php":"27d691ef2e4da83f8f4ff09e4c31c702","tests\/Unit\/Transactions\/Types\/UsernameRegistrationTest.php":"b5200bbac887cdbafd894d1883a593eb","tests\/Unit\/Transactions\/Types\/UsernameResignationTest.php":"69477c3478261dfdf7d4fe4eb96e0cd6","tests\/Unit\/Transactions\/Types\/VoteTest.php":"f87adb812093d3b257edae1778428c3a","tests\/Unit\/Transactions\/DeserializerTest.php":"c69a20d6f44306c0f6c136d0c6dc322a","tests\/Unit\/Transactions\/TransactionTest.php":"251c1ec6920f5aed952bfb1297ef1b1f","tests\/Unit\/Transactions\/SerializerTest.php":"6bef82d199db0b3991c9004f55074879","tests\/Unit\/Configuration\/NetworkTest.php":"fda057f8eb08ceb6c89e26e44b1acba1"}} \ No newline at end of file From bae9fbd51c0f39fa1f8326f796fea89848ec26ba Mon Sep 17 00:00:00 2001 From: Shahin Safaraliyev Date: Mon, 15 Jun 2026 13:29:02 +0400 Subject: [PATCH 21/27] feat: add BLS implementation --- README.md | 2 +- composer.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index eb0455ad..c56d7459 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ ## Documentation -You can find installation instructions and detailed instructions on how to use this package at the [dedicated documentation site](https://ark.dev/docs/sdk/php/crypto/intro). +You can find installation instructions and detailed instructions on how to use this package at the [dedicated documentation site](https://docs.ark.io/sdk/cryptography/php.html). ## Security diff --git a/composer.json b/composer.json index 5b303007..37a39294 100755 --- a/composer.json +++ b/composer.json @@ -21,7 +21,8 @@ "brick/math": "^0.14.2", "kornrunner/keccak": "^1.1", "protonlabs/bitcoin": "^1.0", - "simplito/elliptic-php": "^1.0" + "simplito/elliptic-php": "^1.0", + "ext-gmp": "*" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.59", From 4a24a03baa63238a5a2369967bdd6c49efab80af Mon Sep 17 00:00:00 2001 From: Shahin Safaraliyev Date: Mon, 15 Jun 2026 13:29:33 +0400 Subject: [PATCH 22/27] feat: add BLS implementation --- tests/Concerns/Deserialize.php | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/tests/Concerns/Deserialize.php b/tests/Concerns/Deserialize.php index 9d9f64ce..ea9e7a44 100644 --- a/tests/Concerns/Deserialize.php +++ b/tests/Concerns/Deserialize.php @@ -53,16 +53,4 @@ protected function assertSameTransactions(array $expected, array $actual, array $this->assertSame($expected, $actual); } - - private function array_only(array $arr, array $keys): array - { - $returnArray = []; - foreach ($keys as $key) { - if (isset($arr[$key])) { - $returnArray[$key] = $arr[$key]; - } - } - - return $returnArray; - } } From aba0a21c621b271500a6c3dc69f774db853ce566 Mon Sep 17 00:00:00 2001 From: shahin-hq Date: Mon, 15 Jun 2026 09:29:53 +0000 Subject: [PATCH 23/27] style: resolve style guide violations --- .php-cs-fixer.cache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 90600cb7..f3d6d567 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.3.6","version":"3.95.1:v3.95.1#a9727678fbd12997f1d9de8f4a37824ed9df1065","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"ruleCustomisationPolicyVersion":"null-policy","hashes":{"src\/Binary\/Hex\/Writer.php":"590df3f3343c052d96d3cbbeb317f265","src\/Binary\/Buffer\/Writer\/Buffer.php":"80ab7029c26d83449a3529f4cee7a648","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"320937c99c2d66a2fe5c97396a994921","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"1f80863a79db7a412ed78fd647ff1cdf","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"2ffba9fbbc552cb15166b7c47e22cd0e","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"76f295b93cc3d1327bf799f57d5a978c","src\/Binary\/Buffer\/Reader\/Buffer.php":"ec09343504cca539cf6bf91aace82464","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3442407232a6093352c8e2b3146169f5","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"978f791a745c7b99d81032ef7f182558","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"6a2f2ea4c5839184a7715dc633a504bd","src\/Exceptions\/InvalidUsernameException.php":"d392da166f80b3be9bdf4ba13d1e7b89","src\/Helpers.php":"90816e6ab5e44ebcb4c31770b610fa3b","src\/Enums\/ContractAbiType.php":"6aeea79e287ad76d65dc4ad0fcdf10eb","src\/Enums\/AbiFunction.php":"ca8f4371bfc820c483514dfacc41159b","src\/Enums\/ContractAddresses.php":"31d97083e3ea21957e65ff4f5a5e7368","src\/Identities\/Address.php":"83f02a9f2e101ce9ed1748bd3c0a0aab","src\/Identities\/PrivateKey.php":"a4bd870539d13f97a21e714608310804","src\/Identities\/WIF.php":"60dd95da09bb6c240acd02cd3f52a6b8","src\/Identities\/PublicKey.php":"2deb4baddcc512f012a06ce5f3b39387","src\/Binary\/Hex\/Reader.php":"e28448b92fadb2979e1db484a6afca8d","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"169cc84b5e39930c7e168d7bdbbcd37d","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"ba4ebf613b130f41b0a531dbd07c43c5","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"6f717766d8775b349f0e474902f66511","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"f3797170755677f4776f1cefbda60cb6","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"68a9620949ef00f0b9676f2a1433d849","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"f3cc0a816b6e9469740bf59575363516","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"17238cbe09b4b870fa66b5704709f18e","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"9fa6cb50cebf03b7bf00e3b5337d9873","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"056b5c5b629a9fd0231becaded2f6973","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"3d29cc54a05f7c6a02973e5618f821ae","src\/Utils\/RlpEncoder.php":"3f12a6053f27f931d0fabbfb91e1a7cf","src\/Utils\/TransactionUtils.php":"6e5ec26cbe4b2125c59a37331083173a","src\/Utils\/TransactionTypeIdentifier.php":"b89b96a26412691b042f4b2f1586a01f","src\/Utils\/Abi\/ArgumentDecoder.php":"6430cb971aa8e5927b62270afdec0af6","src\/Utils\/UnitConverter.php":"d716c75d97fb21408dd1b2d86d18c75d","src\/Utils\/TransactionEncoder.php":"439eaab92539814629cd8e216634a937","src\/Utils\/AbiEncoder.php":"e0edf2b073a0b0efe07896731846535c","src\/ByteBuffer\/LengthMap.php":"2f62d17297dc7387a39466df38b8649b","src\/ByteBuffer\/Concerns\/Transformable.php":"3d1f8aa43854c9417538e51dfdcd106f","src\/ByteBuffer\/Concerns\/Positionable.php":"86e5bc94fc7389aed28ba6fec9d7d2c2","src\/Binary\/Integer\/Reader.php":"fbe1a1af3821a1c2ee79e996a254ef2a","src\/Binary\/Integer\/Writer.php":"e6dbdb22282670b0547c66202cf25abf","src\/Binary\/UnsignedInteger\/Reader.php":"e9d87277e9f0e8cd6f3a63b6caa95ad2","src\/Binary\/UnsignedInteger\/Writer.php":"c0443907d9a5c9b2c027eca99ae775f5","src\/Utils\/Address.php":"410b85d6c0ba3764293463b48c03da91","src\/Utils\/AbiBase.php":"772be753e59f052101bc7616ecc2ca6d","src\/Utils\/RlpDecoder.php":"3fbea35725a5194184db4c650239418c","src\/Utils\/AbiDecoder.php":"8bfbd3752176ffb1a2321f72f4f01dff","src\/Utils\/Slot.php":"9674e711b193645b0b769514ab1d5907","src\/Utils\/Message.php":"6dc3cf7e0fe73c86d1eaa54ae0052ce7","src\/ByteBuffer\/Concerns\/Initialisable.php":"96a9455179a83ec00139d937bcd58626","src\/ByteBuffer\/Concerns\/Sizeable.php":"6b03f909020b0d15bc4c35256d85c896","src\/ByteBuffer\/Concerns\/Offsetable.php":"68179b59de54fe5a6233eb7111f6dc79","src\/ByteBuffer\/Concerns\/Readable.php":"518d72f8d0f926461b3248336640abae","src\/ByteBuffer\/Concerns\/Writeable.php":"6970a6fb60370c572f3a3febe6c3df09","src\/ByteBuffer\/ByteBuffer.php":"466a031832de383903af0251fc88be93","src\/ByteBuffer\/ByteOrder.php":"36dff8aac67cf33c653ba15e906e2680","src\/Transactions\/Builder\/EvmCallBuilder.php":"60eeff1cdc6dc59528d216db71211e49","src\/Transactions\/Builder\/TransferBuilder.php":"96ff6d1443e60e6c7ae5a37ed400a62f","src\/Transactions\/Builder\/ValidatorResignationBuilder.php":"ca8561048ac8aa2a0d623b7c327a0afd","src\/Transactions\/Builder\/UsernameRegistrationBuilder.php":"c9bb1a7376cadda5152abd5e46f0be8c","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"c984b9b1efeb4b7e389e9b01a24b5628","src\/Transactions\/Builder\/TokenTransferBuilder.php":"5a48ac7df4a614009c4b063343157ee0","src\/Transactions\/Builder\/UnvoteBuilder.php":"a37b3c38a9ce5f663579e3ce28e16ff3","src\/Transactions\/Builder\/TokenApproveBuilder.php":"c95653c20511eb4e9ba309260491a34d","src\/Transactions\/Builder\/UsernameResignationBuilder.php":"44ddc136b094777b3fb105fef647db11","src\/Transactions\/Builder\/MultipaymentBuilder.php":"562c803fa9e19a6873951f7cd1bad1c8","src\/Transactions\/Builder\/VoteBuilder.php":"02426dd1b4042447e25a64eb78188fb7","src\/Transactions\/Builder\/ValidatorRegistrationBuilder.php":"306d0ae7b7b9c49660711707e22a95f1","src\/Transactions\/Types\/UsernameRegistration.php":"485b52c32da8b62826617708f3b4a6ec","src\/Transactions\/Types\/Vote.php":"90972b6a028a7652351655a1c1b08b34","src\/Transactions\/Types\/Multipayment.php":"b10ca169d3d37058ad7b940b48d11a8a","src\/Transactions\/Types\/EvmCall.php":"df3aa5b419b200b9eac9d5fc87d240c8","src\/Transactions\/Types\/ValidatorResignation.php":"090882c106dfa298a956bd8eeb49c447","src\/Transactions\/Types\/AbstractTransaction.php":"60222b9229ae21c646b2e30cc38b6871","src\/Transactions\/Types\/Transfer.php":"4d3a16aa308ccf80758b212eca33b669","src\/Transactions\/Types\/ValidatorRegistration.php":"676a366a714e258742b5d0bac8927ebc","src\/Transactions\/Types\/Unvote.php":"56b3c9b921f038639f4eac0d6239e437","src\/Transactions\/Types\/UsernameResignation.php":"68848e1cd4b4d341aa7ff831481ffe31","src\/Transactions\/Serializer.php":"54487af37809b3c134efdce4e26ed1b2","src\/Networks\/Mainnet.php":"3acffe72b51707db16ad4b1a78f050b1","src\/Networks\/AbstractNetwork.php":"5b1cb5aa9830faf93a7f68023614dc1c","src\/Networks\/Testnet.php":"60f72744f4691e2da852b66e9d85a5f0","tests\/Unit\/HelpersTest.php":"40826b23445858a4968985a8c27a7da0","tests\/Unit\/Enums\/AbiFunctionTest.php":"d9ff7604b7be95adad992489c7b0f3dc","tests\/Unit\/Identities\/PrivateKeyTest.php":"19275c459ca01885ae4bf73ffcbecd33","tests\/Unit\/Identities\/PublicKeyTest.php":"e406835540aa170e6e27d24a2a36c09a","tests\/Unit\/Identities\/AddressTest.php":"0e0b7cfefdec532df286f52ce9ddee0f","tests\/Unit\/Identities\/WIFTest.php":"5619ab75730edbb32603355767e5ff70","tests\/Unit\/Binary\/Hex\/WriterTest.php":"85dad01bc8693af66bc55c40a2e603c5","tests\/Unit\/Binary\/Hex\/ReaderTest.php":"f179cd6f729f0d866518038803446228","tests\/Unit\/Binary\/Buffer\/Writer\/BufferTest.php":"6372984efaf7d2a378a7c2ebc3019f3a","tests\/Unit\/Binary\/Buffer\/Reader\/BufferTest.php":"6c6996473bf7c7d8592e3639f5326dda","tests\/Unit\/Binary\/Integer\/WriterTest.php":"64a1f07dc16c4faf2c06a3e5092a107d","tests\/Unit\/Binary\/Integer\/ReaderTest.php":"599fef4860548866a39f64e3dbb44e7d","tests\/Unit\/Binary\/UnsignedInteger\/WriterTest.php":"c10138f97a2b9f34c80d6feae77e77cc","tests\/Unit\/Binary\/UnsignedInteger\/ReaderTest.php":"c88736b794a6320cae58e6554b2cd8bc","tests\/Unit\/Utils\/TransactionEncoderTest.php":"05a4891b1879354a9d69a8bc1b5cb827","tests\/Unit\/Utils\/TransactionUtilsTest.php":"01a1855eacb299b74a997d7dd5987774","tests\/Unit\/Utils\/AddressTest.php":"e2851e599dd5b442cbe83e9c1f28e4b9","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"d1a553d36f3fec95b857c839e2d834cb","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"e5124461e7a97a3e2d78e5b6f5469991","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"1abfe709a9e787f7b4e4718d5af0e65c","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"4f2ed9775cd92f3d136d9d6b1cd8f25c","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"9b45e3276289bb0c44faf94326d6ff76","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"6f591e8733550f1ad0d231f7809ad0a5","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"3b113ff1f80a9e15ab7af1a29161259b","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"01aa9304919af4fa3fa6aaef2f897679","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"cddc6997c7daf4c494b7a65b22823bc3","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"e4d5200763a77c3993047247d59b3488","tests\/Unit\/Utils\/AbiEncoderTest.php":"8e9601a7576c4e0590f9508267464ff6","tests\/Unit\/Utils\/RlpEncoderTest.php":"6710ec96e9603dbe073181e095674027","tests\/Unit\/Utils\/UnitConverterTest.php":"b4dfb4b2bdeac414b9c85b35a8e09d8c","tests\/Unit\/Utils\/AbiDecoderTest.php":"aff7a7433e0b9b27b4b3f724609968a3","tests\/Unit\/Utils\/SlotTest.php":"ed89ae0182409d977a4faab9ca1eea95","tests\/Unit\/Utils\/RlpDecoderTest.php":"12f50e696926077dbbc1f005cbae2ef2","tests\/Unit\/Utils\/TransactionTypeIdentifierTest.php":"f7ecc6168bdbf6b4223e0eb3b9da7a91","tests\/Unit\/Utils\/MessageTest.php":"71efee57f29dceda4e36e133169c5683","tests\/Unit\/Utils\/Abi\/ArgumentDecoderTest.php":"9e1fda36ecf2cde01b7db5c85658bc24","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"34237362a8d54d9c4d1610d59fedf7f8","src\/Transactions\/Deserializer.php":"5d77b8f779a3485de6caf6a08d4d5f3b","src\/Configuration\/Network.php":"d908336264d1b5c789e42fe7ba0cfe2c","src\/BLS\/HashToCurve\/G2HashToCurve.php":"104f044fbd0bfc2d871412caf6284306","src\/BLS\/ProofOfPossession.php":"f27d847ffcb5db3d5179367adadcb018","src\/BLS\/Fields\/Fp2.php":"7685c72b29900bef127170b812134086","src\/BLS\/Fields\/Fp.php":"415f741a7ae6e45436e54f3258b95363","src\/BLS\/EIP2333.php":"8ae983f54821a7d04a215ab109f240d8","src\/BLS\/Curves\/G2.php":"69e7f11b35b6f66c22265d1242b4cbed","src\/BLS\/Curves\/G1.php":"7dc863fe9fc87415120143b23bf3172b","src\/Networks\/NetworkInterface.php":"b0aff2a147eb231da8cee50012841830","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"344d7500a1776339f787c9f56be5b580","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"6230c022bbcada03e9e336e532b34b55","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"10004a8bf4ed76dc108dd5ae3db7596d","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"6888874a372bccc480c2c7ebee35c4cf","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"f9e38c617dea3bb087550a78fa333d2c","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"7e8c04fdf23a09c06c3c77aa7dfb037a","tests\/Unit\/Transactions\/Builder\/TokenApproveBuilderTest.php":"eefe09a0b5c68542c7a33d3c2250b94b","tests\/Unit\/Transactions\/Builder\/TransferBuilderTest.php":"90a7ca6fed95fde81fc4f0d053264003","tests\/Unit\/Transactions\/Builder\/ValidatorResignationBuilderTest.php":"c744298864255a9851f85878c91fd5a6","tests\/Unit\/Transactions\/Builder\/UsernameResignationBuilderTest.php":"c3443fe93b7b10b85f33b6e3e5b6477a","tests\/Unit\/Transactions\/Builder\/TokenTransferBuilderTest.php":"d0afe43a3065f8f6c279deb940930ef5","tests\/Unit\/Transactions\/Builder\/UnvoteBuilderTest.php":"eed8e8215db82abd4a5c2994453b9772","tests\/Unit\/Transactions\/Builder\/MultipaymentBuilderTest.php":"f6aded1988aacb3c15a70885340e08f7","tests\/Unit\/Transactions\/Builder\/EvmCallBuilderTest.php":"1d95fae15d239d2eea1ab245609397da","tests\/Unit\/Transactions\/Builder\/ValidatorRegistrationBuilderTest.php":"444cfc7a77f402d135bc0f5ac7d6d6a5","tests\/Unit\/Transactions\/Builder\/UsernameRegistrationBuilderTest.php":"baba0df21fdb5fdedf41084b35c02cb9","tests\/Unit\/Transactions\/Builder\/VoteBuilderTest.php":"d3ec709c1e626422fa8a86eb833ae0ea","tests\/Unit\/Transactions\/Types\/TransferTest.php":"71110444ac25ca571c6dc6f855625c13","tests\/Unit\/Transactions\/Types\/ValidatorResignationTest.php":"1817a13685810de64b15df1630b11e5d","tests\/Unit\/Transactions\/Types\/EvmCallTest.php":"b37cff6589fa63bc43a196626853c208","tests\/Analysis\/AnalysisTest.php":"3dd50256922f683ee5ac773e20397598","tests\/Unit\/BLS\/EIP2333Test.php":"a7cbb6d601453304110e6e429ba9488b","tests\/Unit\/BLS\/ProofOfPossessionTest.php":"95f666afb1e41a4160158a54cf972763","tests\/Unit\/Networks\/MainnetTest.php":"372a7750ae834599a0088b09a4fac760","tests\/Unit\/Networks\/TestnetTest.php":"c8dba3e353c84037c78d558548760872","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/TestCase.php":"4133b24901762dc409bb9a111c8c4853","tests\/Concerns\/Serialize.php":"5011734a689b042840e8c277c42b9a36","tests\/Concerns\/Deserialize.php":"f611e371aa76b5201c18886672185efd","tests\/Concerns\/Fixtures.php":"db5b42eaf5cf381b51f8440c66669efd","tests\/Unit\/Transactions\/Types\/UnvoteTest.php":"9b57057eb1b0c17e7c783506a96c287a","tests\/Unit\/Transactions\/Types\/ValidatorRegistrationTest.php":"7b8b5c37a358ed4958a9950ca559df6e","tests\/Unit\/Transactions\/Types\/MultipaymentTest.php":"27d691ef2e4da83f8f4ff09e4c31c702","tests\/Unit\/Transactions\/Types\/UsernameRegistrationTest.php":"b5200bbac887cdbafd894d1883a593eb","tests\/Unit\/Transactions\/Types\/UsernameResignationTest.php":"69477c3478261dfdf7d4fe4eb96e0cd6","tests\/Unit\/Transactions\/Types\/VoteTest.php":"f87adb812093d3b257edae1778428c3a","tests\/Unit\/Transactions\/DeserializerTest.php":"c69a20d6f44306c0f6c136d0c6dc322a","tests\/Unit\/Transactions\/TransactionTest.php":"251c1ec6920f5aed952bfb1297ef1b1f","tests\/Unit\/Transactions\/SerializerTest.php":"6bef82d199db0b3991c9004f55074879","tests\/Unit\/Configuration\/NetworkTest.php":"fda057f8eb08ceb6c89e26e44b1acba1"}} \ No newline at end of file +{"php":"8.3.6","version":"3.95.1:v3.95.1#a9727678fbd12997f1d9de8f4a37824ed9df1065","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"ruleCustomisationPolicyVersion":"null-policy","hashes":{"src\/Binary\/Hex\/Writer.php":"590df3f3343c052d96d3cbbeb317f265","src\/Binary\/Buffer\/Writer\/Buffer.php":"80ab7029c26d83449a3529f4cee7a648","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"320937c99c2d66a2fe5c97396a994921","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"1f80863a79db7a412ed78fd647ff1cdf","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"2ffba9fbbc552cb15166b7c47e22cd0e","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"76f295b93cc3d1327bf799f57d5a978c","src\/Binary\/Buffer\/Reader\/Buffer.php":"ec09343504cca539cf6bf91aace82464","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3442407232a6093352c8e2b3146169f5","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"978f791a745c7b99d81032ef7f182558","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"6a2f2ea4c5839184a7715dc633a504bd","src\/Exceptions\/InvalidUsernameException.php":"d392da166f80b3be9bdf4ba13d1e7b89","src\/Helpers.php":"90816e6ab5e44ebcb4c31770b610fa3b","src\/Enums\/ContractAbiType.php":"6aeea79e287ad76d65dc4ad0fcdf10eb","src\/Enums\/AbiFunction.php":"ca8f4371bfc820c483514dfacc41159b","src\/Enums\/ContractAddresses.php":"31d97083e3ea21957e65ff4f5a5e7368","src\/Identities\/Address.php":"83f02a9f2e101ce9ed1748bd3c0a0aab","src\/Identities\/PrivateKey.php":"a4bd870539d13f97a21e714608310804","src\/Identities\/WIF.php":"60dd95da09bb6c240acd02cd3f52a6b8","src\/Identities\/PublicKey.php":"2deb4baddcc512f012a06ce5f3b39387","src\/Binary\/Hex\/Reader.php":"e28448b92fadb2979e1db484a6afca8d","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"169cc84b5e39930c7e168d7bdbbcd37d","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"ba4ebf613b130f41b0a531dbd07c43c5","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"6f717766d8775b349f0e474902f66511","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"f3797170755677f4776f1cefbda60cb6","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"68a9620949ef00f0b9676f2a1433d849","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"f3cc0a816b6e9469740bf59575363516","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"17238cbe09b4b870fa66b5704709f18e","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"9fa6cb50cebf03b7bf00e3b5337d9873","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"056b5c5b629a9fd0231becaded2f6973","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"3d29cc54a05f7c6a02973e5618f821ae","src\/Utils\/RlpEncoder.php":"3f12a6053f27f931d0fabbfb91e1a7cf","src\/Utils\/TransactionUtils.php":"6e5ec26cbe4b2125c59a37331083173a","src\/Utils\/TransactionTypeIdentifier.php":"b89b96a26412691b042f4b2f1586a01f","src\/Utils\/Abi\/ArgumentDecoder.php":"6430cb971aa8e5927b62270afdec0af6","src\/Utils\/UnitConverter.php":"d716c75d97fb21408dd1b2d86d18c75d","src\/Utils\/TransactionEncoder.php":"439eaab92539814629cd8e216634a937","src\/Utils\/AbiEncoder.php":"e0edf2b073a0b0efe07896731846535c","src\/ByteBuffer\/LengthMap.php":"2f62d17297dc7387a39466df38b8649b","src\/ByteBuffer\/Concerns\/Transformable.php":"3d1f8aa43854c9417538e51dfdcd106f","src\/ByteBuffer\/Concerns\/Positionable.php":"86e5bc94fc7389aed28ba6fec9d7d2c2","src\/Binary\/Integer\/Reader.php":"fbe1a1af3821a1c2ee79e996a254ef2a","src\/Binary\/Integer\/Writer.php":"e6dbdb22282670b0547c66202cf25abf","src\/Binary\/UnsignedInteger\/Reader.php":"e9d87277e9f0e8cd6f3a63b6caa95ad2","src\/Binary\/UnsignedInteger\/Writer.php":"c0443907d9a5c9b2c027eca99ae775f5","src\/Utils\/Address.php":"410b85d6c0ba3764293463b48c03da91","src\/Utils\/AbiBase.php":"772be753e59f052101bc7616ecc2ca6d","src\/Utils\/RlpDecoder.php":"3fbea35725a5194184db4c650239418c","src\/Utils\/AbiDecoder.php":"8bfbd3752176ffb1a2321f72f4f01dff","src\/Utils\/Slot.php":"9674e711b193645b0b769514ab1d5907","src\/Utils\/Message.php":"6dc3cf7e0fe73c86d1eaa54ae0052ce7","src\/ByteBuffer\/Concerns\/Initialisable.php":"96a9455179a83ec00139d937bcd58626","src\/ByteBuffer\/Concerns\/Sizeable.php":"6b03f909020b0d15bc4c35256d85c896","src\/ByteBuffer\/Concerns\/Offsetable.php":"68179b59de54fe5a6233eb7111f6dc79","src\/ByteBuffer\/Concerns\/Readable.php":"518d72f8d0f926461b3248336640abae","src\/ByteBuffer\/Concerns\/Writeable.php":"6970a6fb60370c572f3a3febe6c3df09","src\/ByteBuffer\/ByteBuffer.php":"466a031832de383903af0251fc88be93","src\/ByteBuffer\/ByteOrder.php":"36dff8aac67cf33c653ba15e906e2680","src\/Transactions\/Builder\/EvmCallBuilder.php":"60eeff1cdc6dc59528d216db71211e49","src\/Transactions\/Builder\/TransferBuilder.php":"96ff6d1443e60e6c7ae5a37ed400a62f","src\/Transactions\/Builder\/ValidatorResignationBuilder.php":"ca8561048ac8aa2a0d623b7c327a0afd","src\/Transactions\/Builder\/UsernameRegistrationBuilder.php":"c9bb1a7376cadda5152abd5e46f0be8c","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"c984b9b1efeb4b7e389e9b01a24b5628","src\/Transactions\/Builder\/TokenTransferBuilder.php":"5a48ac7df4a614009c4b063343157ee0","src\/Transactions\/Builder\/UnvoteBuilder.php":"a37b3c38a9ce5f663579e3ce28e16ff3","src\/Transactions\/Builder\/TokenApproveBuilder.php":"c95653c20511eb4e9ba309260491a34d","src\/Transactions\/Builder\/UsernameResignationBuilder.php":"44ddc136b094777b3fb105fef647db11","src\/Transactions\/Builder\/MultipaymentBuilder.php":"562c803fa9e19a6873951f7cd1bad1c8","src\/Transactions\/Builder\/VoteBuilder.php":"02426dd1b4042447e25a64eb78188fb7","src\/Transactions\/Builder\/ValidatorRegistrationBuilder.php":"306d0ae7b7b9c49660711707e22a95f1","src\/Transactions\/Types\/UsernameRegistration.php":"485b52c32da8b62826617708f3b4a6ec","src\/Transactions\/Types\/Vote.php":"90972b6a028a7652351655a1c1b08b34","src\/Transactions\/Types\/Multipayment.php":"b10ca169d3d37058ad7b940b48d11a8a","src\/Transactions\/Types\/EvmCall.php":"df3aa5b419b200b9eac9d5fc87d240c8","src\/Transactions\/Types\/ValidatorResignation.php":"090882c106dfa298a956bd8eeb49c447","src\/Transactions\/Types\/AbstractTransaction.php":"60222b9229ae21c646b2e30cc38b6871","src\/Transactions\/Types\/Transfer.php":"4d3a16aa308ccf80758b212eca33b669","src\/Transactions\/Types\/ValidatorRegistration.php":"676a366a714e258742b5d0bac8927ebc","src\/Transactions\/Types\/Unvote.php":"56b3c9b921f038639f4eac0d6239e437","src\/Transactions\/Types\/UsernameResignation.php":"68848e1cd4b4d341aa7ff831481ffe31","src\/Transactions\/Serializer.php":"54487af37809b3c134efdce4e26ed1b2","src\/Networks\/Mainnet.php":"3acffe72b51707db16ad4b1a78f050b1","src\/Networks\/AbstractNetwork.php":"5b1cb5aa9830faf93a7f68023614dc1c","src\/Networks\/Testnet.php":"60f72744f4691e2da852b66e9d85a5f0","tests\/Unit\/HelpersTest.php":"40826b23445858a4968985a8c27a7da0","tests\/Unit\/Enums\/AbiFunctionTest.php":"d9ff7604b7be95adad992489c7b0f3dc","tests\/Unit\/Identities\/PrivateKeyTest.php":"19275c459ca01885ae4bf73ffcbecd33","tests\/Unit\/Identities\/PublicKeyTest.php":"e406835540aa170e6e27d24a2a36c09a","tests\/Unit\/Identities\/AddressTest.php":"0e0b7cfefdec532df286f52ce9ddee0f","tests\/Unit\/Identities\/WIFTest.php":"5619ab75730edbb32603355767e5ff70","tests\/Unit\/Binary\/Hex\/WriterTest.php":"85dad01bc8693af66bc55c40a2e603c5","tests\/Unit\/Binary\/Hex\/ReaderTest.php":"f179cd6f729f0d866518038803446228","tests\/Unit\/Binary\/Buffer\/Writer\/BufferTest.php":"6372984efaf7d2a378a7c2ebc3019f3a","tests\/Unit\/Binary\/Buffer\/Reader\/BufferTest.php":"6c6996473bf7c7d8592e3639f5326dda","tests\/Unit\/Binary\/Integer\/WriterTest.php":"64a1f07dc16c4faf2c06a3e5092a107d","tests\/Unit\/Binary\/Integer\/ReaderTest.php":"599fef4860548866a39f64e3dbb44e7d","tests\/Unit\/Binary\/UnsignedInteger\/WriterTest.php":"c10138f97a2b9f34c80d6feae77e77cc","tests\/Unit\/Binary\/UnsignedInteger\/ReaderTest.php":"c88736b794a6320cae58e6554b2cd8bc","tests\/Unit\/Utils\/TransactionEncoderTest.php":"05a4891b1879354a9d69a8bc1b5cb827","tests\/Unit\/Utils\/TransactionUtilsTest.php":"01a1855eacb299b74a997d7dd5987774","tests\/Unit\/Utils\/AddressTest.php":"e2851e599dd5b442cbe83e9c1f28e4b9","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"d1a553d36f3fec95b857c839e2d834cb","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"e5124461e7a97a3e2d78e5b6f5469991","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"1abfe709a9e787f7b4e4718d5af0e65c","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"4f2ed9775cd92f3d136d9d6b1cd8f25c","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"9b45e3276289bb0c44faf94326d6ff76","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"6f591e8733550f1ad0d231f7809ad0a5","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"3b113ff1f80a9e15ab7af1a29161259b","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"01aa9304919af4fa3fa6aaef2f897679","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"cddc6997c7daf4c494b7a65b22823bc3","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"e4d5200763a77c3993047247d59b3488","tests\/Unit\/Utils\/AbiEncoderTest.php":"8e9601a7576c4e0590f9508267464ff6","tests\/Unit\/Utils\/RlpEncoderTest.php":"6710ec96e9603dbe073181e095674027","tests\/Unit\/Utils\/UnitConverterTest.php":"b4dfb4b2bdeac414b9c85b35a8e09d8c","tests\/Unit\/Utils\/AbiDecoderTest.php":"aff7a7433e0b9b27b4b3f724609968a3","tests\/Unit\/Utils\/SlotTest.php":"ed89ae0182409d977a4faab9ca1eea95","tests\/Unit\/Utils\/RlpDecoderTest.php":"12f50e696926077dbbc1f005cbae2ef2","tests\/Unit\/Utils\/TransactionTypeIdentifierTest.php":"f7ecc6168bdbf6b4223e0eb3b9da7a91","tests\/Unit\/Utils\/MessageTest.php":"71efee57f29dceda4e36e133169c5683","tests\/Unit\/Utils\/Abi\/ArgumentDecoderTest.php":"9e1fda36ecf2cde01b7db5c85658bc24","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"34237362a8d54d9c4d1610d59fedf7f8","src\/Transactions\/Deserializer.php":"5d77b8f779a3485de6caf6a08d4d5f3b","src\/Configuration\/Network.php":"d908336264d1b5c789e42fe7ba0cfe2c","src\/BLS\/HashToCurve\/G2HashToCurve.php":"104f044fbd0bfc2d871412caf6284306","src\/BLS\/ProofOfPossession.php":"f27d847ffcb5db3d5179367adadcb018","src\/BLS\/Fields\/Fp2.php":"7685c72b29900bef127170b812134086","src\/BLS\/Fields\/Fp.php":"415f741a7ae6e45436e54f3258b95363","src\/BLS\/EIP2333.php":"8ae983f54821a7d04a215ab109f240d8","src\/BLS\/Curves\/G2.php":"69e7f11b35b6f66c22265d1242b4cbed","src\/BLS\/Curves\/G1.php":"7dc863fe9fc87415120143b23bf3172b","src\/Networks\/NetworkInterface.php":"b0aff2a147eb231da8cee50012841830","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"344d7500a1776339f787c9f56be5b580","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"6230c022bbcada03e9e336e532b34b55","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"10004a8bf4ed76dc108dd5ae3db7596d","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"6888874a372bccc480c2c7ebee35c4cf","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"f9e38c617dea3bb087550a78fa333d2c","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"7e8c04fdf23a09c06c3c77aa7dfb037a","tests\/Unit\/Transactions\/Builder\/TokenApproveBuilderTest.php":"eefe09a0b5c68542c7a33d3c2250b94b","tests\/Unit\/Transactions\/Builder\/TransferBuilderTest.php":"90a7ca6fed95fde81fc4f0d053264003","tests\/Unit\/Transactions\/Builder\/ValidatorResignationBuilderTest.php":"c744298864255a9851f85878c91fd5a6","tests\/Unit\/Transactions\/Builder\/UsernameResignationBuilderTest.php":"c3443fe93b7b10b85f33b6e3e5b6477a","tests\/Unit\/Transactions\/Builder\/TokenTransferBuilderTest.php":"d0afe43a3065f8f6c279deb940930ef5","tests\/Unit\/Transactions\/Builder\/UnvoteBuilderTest.php":"eed8e8215db82abd4a5c2994453b9772","tests\/Unit\/Transactions\/Builder\/MultipaymentBuilderTest.php":"f6aded1988aacb3c15a70885340e08f7","tests\/Unit\/Transactions\/Builder\/EvmCallBuilderTest.php":"1d95fae15d239d2eea1ab245609397da","tests\/Unit\/Transactions\/Builder\/ValidatorRegistrationBuilderTest.php":"444cfc7a77f402d135bc0f5ac7d6d6a5","tests\/Unit\/Transactions\/Builder\/UsernameRegistrationBuilderTest.php":"baba0df21fdb5fdedf41084b35c02cb9","tests\/Unit\/Transactions\/Builder\/VoteBuilderTest.php":"d3ec709c1e626422fa8a86eb833ae0ea","tests\/Unit\/Transactions\/Types\/TransferTest.php":"71110444ac25ca571c6dc6f855625c13","tests\/Unit\/Transactions\/Types\/ValidatorResignationTest.php":"1817a13685810de64b15df1630b11e5d","tests\/Unit\/Transactions\/Types\/EvmCallTest.php":"b37cff6589fa63bc43a196626853c208","tests\/Analysis\/AnalysisTest.php":"3dd50256922f683ee5ac773e20397598","tests\/Unit\/BLS\/EIP2333Test.php":"a7cbb6d601453304110e6e429ba9488b","tests\/Unit\/BLS\/ProofOfPossessionTest.php":"95f666afb1e41a4160158a54cf972763","tests\/Unit\/Networks\/MainnetTest.php":"372a7750ae834599a0088b09a4fac760","tests\/Unit\/Networks\/TestnetTest.php":"c8dba3e353c84037c78d558548760872","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/TestCase.php":"4133b24901762dc409bb9a111c8c4853","tests\/Concerns\/Serialize.php":"5011734a689b042840e8c277c42b9a36","tests\/Concerns\/Deserialize.php":"d59555dc433a75a3e75d4483219c5e41","tests\/Concerns\/Fixtures.php":"db5b42eaf5cf381b51f8440c66669efd","tests\/Unit\/Transactions\/Types\/UnvoteTest.php":"9b57057eb1b0c17e7c783506a96c287a","tests\/Unit\/Transactions\/Types\/ValidatorRegistrationTest.php":"7b8b5c37a358ed4958a9950ca559df6e","tests\/Unit\/Transactions\/Types\/MultipaymentTest.php":"27d691ef2e4da83f8f4ff09e4c31c702","tests\/Unit\/Transactions\/Types\/UsernameRegistrationTest.php":"b5200bbac887cdbafd894d1883a593eb","tests\/Unit\/Transactions\/Types\/UsernameResignationTest.php":"69477c3478261dfdf7d4fe4eb96e0cd6","tests\/Unit\/Transactions\/Types\/VoteTest.php":"f87adb812093d3b257edae1778428c3a","tests\/Unit\/Transactions\/DeserializerTest.php":"c69a20d6f44306c0f6c136d0c6dc322a","tests\/Unit\/Transactions\/TransactionTest.php":"251c1ec6920f5aed952bfb1297ef1b1f","tests\/Unit\/Transactions\/SerializerTest.php":"6bef82d199db0b3991c9004f55074879","tests\/Unit\/Configuration\/NetworkTest.php":"fda057f8eb08ceb6c89e26e44b1acba1"}} \ No newline at end of file From 87609b2bd788c590d778b3cf9a385251b3a5428e Mon Sep 17 00:00:00 2001 From: Shahin Safaraliyev Date: Tue, 16 Jun 2026 13:57:17 +0400 Subject: [PATCH 24/27] feat: add BLS implementation --- tests/Unit/BLS/ProofOfPossessionTest.php | 2 +- tests/fixtures/bls-keys.json | 600 +++++++++++------------ 2 files changed, 301 insertions(+), 301 deletions(-) diff --git a/tests/Unit/BLS/ProofOfPossessionTest.php b/tests/Unit/BLS/ProofOfPossessionTest.php index 7fdcd4e7..b27c1235 100644 --- a/tests/Unit/BLS/ProofOfPossessionTest.php +++ b/tests/Unit/BLS/ProofOfPossessionTest.php @@ -89,7 +89,7 @@ $blsDataset = []; foreach (json_decode(file_get_contents(__DIR__.'/../../fixtures/bls-keys.json'), true) as $lang => $vectors) { foreach ($vectors as $i => $vector) { - $blsDataset["{$lang} #{$i}"] = $vector; + $blsDataset["{$lang} #{$i}"] = array_values($vector); } } diff --git a/tests/fixtures/bls-keys.json b/tests/fixtures/bls-keys.json index bec5d5b3..7c97867d 100644 --- a/tests/fixtures/bls-keys.json +++ b/tests/fixtures/bls-keys.json @@ -1,322 +1,322 @@ { "czech": [ - [ - "dosud cuketa tygr dorost masopust setba krach kadet lodivod pomalu znalost riziko odeslat munice trpce pianista maminka holub zeptat pevnina klacek obvinit laso zprostit", - "6834f4387994a217c3ba3ad687cb46f8bc9c28502f5497b4439fc79fd320aeb9", - "a84752120641d97fcc6b0c3af4bd17b6e5739b3f202c2441617dae8da5a87802ab5660d95d481deb997b68a72d2031d7", - "a67e820787c28d9cb21f9cdd64733d3004388e746bb139f2d2d77b3749f514e6390d61ea797788fc2cb5d01887859ada006d6f365e472ed548df5adcf76755f8e61deb4dc8df5b9840d13c12e718dc4152c4498ffd858d85951926480e772410" - ], - [ - "deska lusk situace chechtat muzikant nedaleko ubrousek parodie grep bolest kovboj doutnat pozor buchta najmout butik porucha dosah rotunda penalta krovka rozloha naprosto ostuda", - "62608d58c460cc9f890763b2cec165777696fe3e70ed0858b1470b8ee7368ce1", - "ac200a7ea53ba6d421b03bcdef418ff9b5f2d6a33eb9013ee7bc9eb5d31b69998e9fe845119a91db0be6eb33dc31cf41", - "b55f40f7e80e7e83e06722557d2570ca3a2bc188e98eeb525d67b1035b2b71c30e7b8a25eec02bf32cf2e8af102092af0faeaf6498cb5594d9cceb740bd86319fa5b74eeb1ffe14bb0b4639fd7abcf9b22d2379418b39943d4232831724e236c" - ], - [ - "hoblina pokles trest rostlina bodlina kapybara odvolat nelibost nutnost kapota mohyla carevna alkohol bytovka zpomalit odebrat asfalt kolize smilstvo havran palanda doleva kytka pocit", - "2cef134b7035b2402706f16502781e6de2b08af6642f7c0f6faeb6a6409609d3", - "b48b244b78e0d448a3594c7c9e7b8ddb623b2713a3e13eec482f06b9fc909feba802cd110e05981715b13dc132c693c5", - "8649c1f0084b5846affb89c1d2d19731ad3c8b9082eb6e792507eba7c27f0f19392b8d4f814366f92f1cdf580f82c73802ce54ae9cb5c9befe7b7f6534cc25fcb0074ac6d95afd9fdd6775b701bb46dfa44991a8331561236848e89d7287a6ca" - ], - [ - "sranda vyklopit obhajoba fajfka prsten chov starosta oslovit myslivec svodidlo tykev odezva vnucovat koalice freska fantazie nikterak strach karotka aspirace zahrada pahorek exkurze zarazit", - "3b1d6a4c3bef5246dd7816e241e25dcf6eeffca8a8eb2adfe3219cc17606d160", - "a9990ab73c9bf33216b23b41d47d10a64ec22b52f26ab143e7890c02a90fb55c94870cd6df4539ba59b4f206f5e5abe1", - "840033fd926846b5ef169160940eed6ccbc22298e81a1c8e7191bec7e527bd3e2936c2b4b0607254e00b2b1cfc6ae350158ec4f913a92093b72f9b6aeb5819c38a982c32d37823784a710f9c5b62fa3583493529399f7ca1dd8bad12186aa8ce" - ], - [ - "skripta mluvit bohatost hodovat kondice tamhle bourat rozruch videohra chirurg disk ovanout posoudit citrus nuget nikl bulva hezky pejsek veterina vyklopit sklo zamotat astma", - "484bb2c756d66e7d7e40766c4a51ca3aa2d36f55b73ba60ca9a9689400536f89", - "85aa7b5e380a5c92828a537fce80f8027803ce0c3b1d3f10d93c3b7748a080954f688da8905ba13ee9c59aaf99d6b324", - "8b00f0d89cebcfd8b688b126cc376d40544562c9eb2471b1c0cf6163cece6dfede76e1f02eaaa4cbb0a56fdc91d896401108fa4d992415c9797a15622c1b19dbc4a91322c2034c738957f3e5ad1f53e39d542b604bae053bbfdf3a9880ec2b8c" - ] + { + "mnemonic": "najisto kazivost vpravo namluvit exkurze lord hladovka svoboda obejmout ukazatel pustina srpen metr ohrozit autobus pobyt omeleta bledule cizost petrolej nikl celkem jelen poezie", + "validatorPrivateKey": "6521a909bed1652044b99809b0a3c6999a9bd3a9c760e27e30fbda5931fa76a5", + "validatorPublicKey": "0x86e47e024116003fcf4a6b9150de36964d6590eb11b0f4a1607b89e11d99a4f8609e234eb8185ecf2c77edade1c95309", + "validatorPop": "0xae1f97166e6e444101184825116f03d1607d4387fcd3c0bc71c4a3d125858a8f236d948cab97c6bc1f9f8b6c487ed8f31439ec47e16321e090989bd20b9a4bab069a807935b2c141c221a04422a8ebe2fe84da839fc10dd665db170e24692069" + }, + { + "mnemonic": "louskat seshora hledat zahrada buvol vyrazit opravdu munice strom vyhledat barva vyrazit prorok lord manko hojnost zmizet dovozce lidojed bojovat nikdy hodiny spousta manko", + "validatorPrivateKey": "43aafbb031406eec46f79604a5615806c0880e0d8b2d6e722f03d7eba86db4e6", + "validatorPublicKey": "0x875032037e45a884e58629825c57d9e381e45ed0df3250b324aaf767fbc5a47a69a06a89af8998ed90a5c061e4cfbe20", + "validatorPop": "0xb4d356027006865734b10e05d4b943f3cde3628ca9763f719434a8d99e6f3ce5fae367c9806bfb7e9cdd5784f1b89afc160828fa4ff74ad0496453b7a83dfebf657ac016e601454146458c88fb7b4a5f123d18677f4200cdfa83eb63eee9100a" + }, + { + "mnemonic": "pastelka makak panna boubel pazourek zimnice louka prodej videohra chrlit referent smrk bulva varan smilstvo spis vztah potvora postava astma vystavit rampouch odpor duha", + "validatorPrivateKey": "3f941bba361aa5273e560cd4de20e747586e430efcb27fe14556f442808a477b", + "validatorPublicKey": "0x9684cc2ca48aca7f5827d1bdc33c1e6c8986c390309855221be1a74695986f9d7a9f8fa56e86027ab3e332b6f2a7a34e", + "validatorPop": "0x84b871933fe3a610000e581aa3d77c4d168ebc64691cf7ac702541b4eab54b5d0ac790c73e7675e52535274734a5e71b11f2bb16dcc8d366575450bedef56e32e1d4cf584f2795cdb2d4ea773a8931db739905ef91c5bb9db85a63848d3a23cf" + }, + { + "mnemonic": "dort okno zajatec tykev komando mlha lucifer astma malina puklina tendence starosta bacil baret mobil odjet propad zjemnit obava petrolej mezera baculka piha hadr", + "validatorPrivateKey": "3f09d1651e7a6d1d5f869db241fc94e578b1f3926977985ac96206225e047a3a", + "validatorPublicKey": "0xa774065223115fda52052087df0e792a17ba5ae3a1dddddafcd06c347f5905ac9dba5873e24df920c772d9ebe6a1548c", + "validatorPop": "0x8dda28ddf6c5589afc42c6cd3cf497e4f6da95343fafb1278154350338528cc624a3389bcc612bc7ecdc6a7fb2c6f4d511a3904170e4ca9fc371949fdbdbec3186dde06fc18644ba41c758a79f3aa4a55c544f550d56799d5f37434a71f21b4b" + }, + { + "mnemonic": "levitace truhlice otop ledvina buchta hala madlo jinoch doplnit baterka podzim dareba sluha cejn objasnit zastavit meditace mezera ulovit osten znalost exkurze plivat lucifer", + "validatorPrivateKey": "48bf069ca2917eeeee612e6fd50a1f6fb2c28af9167ee04cdd03c21240336d6d", + "validatorPublicKey": "0x858055545004fc6ef228bb4f23e2db530949d606f5e91620752a92d330dd59ef455bcb4214a64817adeb543aa2ea1287", + "validatorPop": "0xa79748c76577bf84f7ad4003c432bf69896cebcce9da6ba1802025d037b2622db015ba297d34b9677255baafe29b31560acb47d606105a8245c71dbcaefe1bcec10c75995b293d86c1ec72b2dd552ef153e8da890a952908ba0a14628cfdce88" + } ], "chinese_simplified": [ - [ - "颗 慌 省 厉 讲 款 杜 丢 虫 再 章 其 霞 解 钟 别 引 样 铃 性 柬 西 咱 送", - "5833336652ecc03a9d5de40d0344db24e18de5e9abb4f8d4a08fc2d629eda575", - "8407695a74ce6aad86997b3a329a1f70f90703766aeef3046994f901a94fc7ffa6f306f9b3ae1327707e1ebee2eb90e7", - "b071b6c07d90db9ce6897dc871ad232941a1ea8d440d68d61507930ab7701f89e1a48fb2836513fd1647f0ae9e0fbfeb128062aef7616044691710dcf08e201828036bd55f81a7f040f83f9688be0fef770f936a73f4162e39af2658f6c26a62" - ], - [ - "抬 练 催 律 锋 盛 抗 沟 税 宿 氧 坦 盗 冒 抬 线 沸 货 皇 泪 废 罚 钱 产", - "3ef02b613ad659b201875f5cb97642baefafc9abdf6d7c6fcc74024fd1b67c49", - "94a1246ba3259861c810d0c5e78999ba9157c27a0f5fc38b28dae69632f506bf5fb824743ac92d6a4770ca4f57df19b4", - "aaac5f11d77f4f4bb6d238b115d5c8989fecf08b8f25092c2e3fc2489cfae6362048a5a929497ed63343b5258e3a655617ccf8fabc8e91af06ac441ad33dc235febf003b2ec474d7da14ed806a90c4c6608a8b903f7869e67cd9e998d1ae4950" - ], - [ - "起 昆 必 统 寨 习 科 献 把 毛 受 阻 扩 辑 意 青 兵 庭 牺 炎 番 塘 克 双", - "61dbf20a9dd0f95753293a5227efd0465e57719d5ce592d9ad4b4e313c10cfa3", - "87144288d15eacb30602a24788aab2084d5a89dcba0742fa6493bce78690e5df3ae9a8d015ce4bd2c04c4cb2e69aadf3", - "93848b2c7ce03f2dcb52eacc376f9d379acdc11d596c10557bb771cbd71bfc44e1b5384b525ad2b8335dbef68e628bbc10cb027b760ea3f98dfe570e41f99093b89196ab05727578a6a921badc797c8c64e23d2610ae968876e90fa0851fa02f" - ], - [ - "银 脏 腹 太 迹 驳 销 偿 借 勃 纸 挥 歌 骨 障 够 研 旦 浆 闹 骑 涂 盾 狱", - "65af76f6c95c1ffe018bb564906d9e0a577baf27a79ecad71b81e86e2db92cbb", - "8d354de1fb257a2d8128e66ba14f40fadd0e5cf3dbec09c6ab3f518b3f8315f03c0f7ab54cd9b2d579304125b8175a17", - "a349f4538521b05e8232c878e6db8ce74bf313a3a47da1132c339a4a20d95bfaf4b84951f1d9339ee1777716add6dc400cc0ac49f4336e9db25762fa246d43063d78849029492571bdec0984c8b6acf0041204c712baa4bc1b13528c1d011f58" - ], - [ - "妈 季 我 温 歪 哲 先 范 凡 比 姑 马 惜 淀 疗 邀 落 彻 辉 杀 太 枪 卷 罢", - "6fa27b24bb66eeb5dfc845757ad4116d03f9784297a92b466d7b5f693c1d2c91", - "969c0f5c33d4bd4dab45dabcbb07b29a731a91096d924f767bce9bf06dbd92b9949f4ff23e615a9626c6e389d040b21a", - "aea409cd88da1482b886fb06578906dea410195a4a016e8044039a0fd91ac93252da8c03e5a4e58f97f04008ad3428c108af494c361994633fcc0aab5842faa8b14d3de2c2f496f9e313cc7335764556bb6217c891d44f3d10245949f9ee1c6c" - ] + { + "mnemonic": "法 何 又 莫 策 崇 须 裁 牲 者 阳 内 勇 逻 业 规 爆 院 葡 的 疑 传 面 运", + "validatorPrivateKey": "3f8e1457866e218d380add85494fddd6ae348e5cdae18b41394921e33baaad71", + "validatorPublicKey": "0xa5d586adc473d892ba361823b4a37380da77d1b9e4f44af76550a19270b88fefd4cf6bc1fefeb6d57b65b0d979facc0d", + "validatorPop": "0xb87264f324798a225770fc5a25189edaec7e048d686c068051717da80b7b4f35816473ef122612b090b473087f0d1d320208561ed58c2b2b421404fa4e1da101effbe174e3de1faaa780bac43c8c7919d806bcae56daf4022a221c05b1b24949" + }, + { + "mnemonic": "脚 哩 衡 片 阁 窗 众 辽 预 韩 普 腐 辅 惨 无 日 氨 罐 方 羊 齐 准 尚 纹", + "validatorPrivateKey": "024404c9af88605fbb2ec501d1406a55e087d57d4d0f92e9292ebd88183a472e", + "validatorPublicKey": "0x8ba06b7f5a72a2a11f6b314e3575b4924838e613cccc5d9583c92a9707d19ada047ca241e4307655be7e22669ac95c56", + "validatorPop": "0x8d32cbb32984ec2a67f16bbd4a6059052c6bd68a1a1541ee06427dc01544f5916c8799984c408f5e52661b31e3c79c910eec0d580a00ba87b1ca1028ea2c59b5396a867ec18d9dd8e0d06d925019e4376fb78f57c124869085f22eb224f3846b" + }, + { + "mnemonic": "萄 丝 鲁 剥 稍 礼 妥 湘 役 曲 洲 欲 岗 端 速 邓 逻 团 又 磁 内 烦 寿 闲", + "validatorPrivateKey": "35219fbe53eda1b8745d7c59464f3d3c43f47d0bb48d2343bea4cd76b782ab51", + "validatorPublicKey": "0x936ce7f333977bcb0895374a5f286832575be4f57a4a624614024cc5167d3b7eee4844b9eb927cdd0d0d89aa30e27837", + "validatorPop": "0xa95043477e03abac2e23aa360b2bda57f3d32f1ea7fbcb62be5e0a6d1a504731be10a07449d08452110c553de4d5746510afdebf224955537a65d39f0dbf203303b9786c122c9c246e07a8e11f1df881819bb79990c0af8f60f22c5974dcfc2b" + }, + { + "mnemonic": "谋 死 只 版 韩 睡 释 逐 凤 知 春 氯 足 滩 蜡 整 叹 丰 沙 游 填 核 屋 砂", + "validatorPrivateKey": "133c8941693353846ddacdc1bf25a2425797ae75cf05a5cc641df97cf09e0ce3", + "validatorPublicKey": "0x8bf91fdd97b7e318ffa40a9554eef55101c2af60ce3e9a82cc0a5a5349b73b45293fd8fb4c5c1b038230bfd8eda17af6", + "validatorPop": "0xb3660b201bcb7c631b08beeef26ab9c5150528446a9bca206b31a5d0ad5a62c0321cbd4fb140624312ebc1785df7bd2616875e2ba1e285b6129420aa0ce4459dd74b6bee51e8f8f048736a407b006256d23e1371b81c66566ddfd8ba6bb5bed8" + }, + { + "mnemonic": "颜 郎 情 冬 煤 既 库 绝 汁 元 泽 涉 嘛 票 风 筛 隆 突 滴 神 临 壮 爷 晶", + "validatorPrivateKey": "1c7e0331a7d2a695a1603a85ed2844a9270a53001f4095d30295f612cd2c2628", + "validatorPublicKey": "0xa497a5851a04f16167587807a3f2e9ea4764ecda9b434e041b4c1086466370e99f88754c429359b5e8f3f9fcf3727e86", + "validatorPop": "0x8874968b524621ccc090d595481eae97b9e5ec2404d4fa50466565c27d8b9b130ec38c12881898c1713bcf93a1ea50740378c70bacf49fdfadcd9172a0ccc4256baa2a9fc12b37c9330a2fa5c283f59f4860f726244bc2749db32e81273e3966" + } ], "chinese_traditional": [ - [ - "刻 終 連 份 頁 厲 袁 示 烯 曾 鎮 磁 賞 悟 監 織 子 輔 緩 病 序 地 僑 寒", - "1256fad8037078f14d24a4311137ac2b8671a8ef54111476e21244d2c25b24d2", - "b7d17e9b7245f2f36d243f03b813f2472cafdb7c96c6e4d712ac0fb082a11b636e47ce6088008fdeebab2899ab7c288d", - "82d98f480d0faf2b866d5ca3611dd3fac3a3e93db138d0175c8f1395ef31ff55bdf72322af9f231b5d96a21e0888f39e03c225f441cd427e281ef7f5481e73bdf765997db0adf3f64f0e8786a65cb3a21554955526e1386961a073bc94fa1e1a" - ], - [ - "質 裁 二 終 侵 緣 鉤 門 巴 紅 展 且 厚 無 漁 意 就 濕 峽 欺 之 層 伐 貧", - "193e791be009b8e2348106f608eadf65bcd16b61c9f2ff2d89b4b69c4265eaa2", - "b843132b802354a3e0c3c6e1095f417090ab57ed2d3bc9e9c44ee75a0beb0e95534e4ec3694ada16c26537d996fd734c", - "b9d2b000c0af62682099c8124267c1e947c211c4cf1b3c993226e06974a50e30d49d68dc922a3d5a593acf9ecc2391eb0a19fb89baa8dc4c3e7e940f6b9268b912f703800228252e72917df5dbb16c7b30832a0826932951be4d75f43365c65d" - ], - [ - "布 漫 營 陽 績 仗 洪 雷 品 奧 牧 絡 影 義 庭 弦 拜 序 禦 鐵 協 粗 帽 皮", - "51253227321c9a38b596dd19a943920ce420e7401646bdd2a0a00bf40213517f", - "898c87287603d466acb25c8ff3b9c3e35f3cb8d6fc16d9787e308acb9e4a41b911ef1fd1e855a675bf28f4140ebc9919", - "91bd87d3dff627fabf471c0ff9ceedda90eaa7c7034c085ce0541f52eb209440185fbeba9ce5506a08e2cdb33a687e010fa5d3c9c1cc626083173b05cbcbccfc82948c9ad46ae699b209b95b9f4f8ae2fa7d5f6b952acb94e2fcabbf662ead39" - ], - [ - "略 航 富 糧 磨 任 助 浪 丁 都 型 辨 濱 隱 鼓 觀 喬 擾 膽 和 鍋 至 損 舟", - "17aef98e48cb791f1cea6a366b80f215192ae4464faabf41feb68936e4c0a283", - "ad10effb26041d2594912579e580b2c4754f3c7c0ea9c35962d1e40e76f640f04185acca73d774b307b944729d9ca13a", - "a2efdeb86985d6645ce006feee479efda96b26b400c399991a97099b4c7aec45aa10aad98aaf5606167ee67f771ba8fd135d391168911ffffa3537302d019972d4b68ab278f5b2843ceb2428c5e654c4b27fe1edbaaa3bb71675fa48b28e1620" - ], - [ - "霞 音 屏 典 規 午 宮 王 丟 鄰 沸 峰 吐 隙 泛 若 方 壓 地 派 務 餅 坑 鐵", - "1d39b476b29e9f348cf276be475f61663986d330839f2e6d17281191b8723433", - "872522ce44a84e86031b8180418c0ee722ef7d9f4eec2fe50742b10c7e990d1272bb006d018e41c6f7c711b1d13c4ea1", - "ab478f08d40195ae523a0da974f57994abe95415651e5040394f09ad2bb720f26861806a4aa1ccafc081b28752043617012b871845825a2df491d2e55e8c4bc8b573767a3223860c9e87b54d01d928591b0b9d9fd02fbf9b11a34c0559a32d08" - ] + { + "mnemonic": "銷 鑽 隔 責 雅 丁 來 旋 爐 轉 害 睡 狂 太 善 馮 集 籌 蓮 爐 懸 生 試 盜", + "validatorPrivateKey": "0602d2cfb5a77b14aa98a996242583148f14ee8043b50cf8cece083a81cc0221", + "validatorPublicKey": "0x96cec279ae8aaad8d78f7367532b864d17b129bf3e9019a5581427f10812f32911eb3e3c795eb4bfcfd58d85b6dabdbd", + "validatorPop": "0xa08fc77623fe2aa660cb6f16a6c211313bb85ac9a355af579fd9e252cfa26abddf7d112d823a0aded9916a2bf38db83e1752d34f6fb653e8847a3ddd8b075dcb864eb88d09e0c429c35157501672d15ec5dc274fdd2ff6da216d28f271a11bc2" + }, + { + "mnemonic": "序 付 撞 盆 憶 汗 幕 懲 會 氏 殿 忍 皺 累 躺 酯 全 陸 起 拜 芳 闊 舊 耐", + "validatorPrivateKey": "55458f5510a4eaa27c354efb5e02d24e153af112e19c94c43d559f717cd7f617", + "validatorPublicKey": "0xb2ec5958b2ac4f7762e5c131187d39dddbcbeecc3d42cf29778eddf2073d3858e88ae74360973a869d8e3856708bc7b5", + "validatorPop": "0xa1bc5c22ee93bc49a60421faa3d81395005f94fb9cb42156aea21c2cb5eac2f12c39356565600cd559ed9e96d37dcad202eb93d1067a8cb08bd98868f4ed236805c2560a4bd7496ce2d5c2696f175e0cd1a1cd70b617ecf47b55cdfa161e8cab" + }, + { + "mnemonic": "很 造 衰 姿 整 慘 扇 代 糞 器 蘭 沒 其 啟 半 取 界 績 拍 太 慶 利 調 巧", + "validatorPrivateKey": "5c699b7e942eb59dc13fb39a4d704087de03daf9018b6b321f3818a668a8a3a7", + "validatorPublicKey": "0xa81d874c17a6ee136782c009414a06bfa2465943b30f450fd0a40e287fbc25617f28a5c5cf02b7b0e847aff8fe32edbf", + "validatorPop": "0x92e9fcc48841568ec6501093f88af0964cb0f716d90ce60c748ba4ecc2568cd091ce6fa640ebef0c97c81db9320586ab126681e58921eab1fff2688ff81e5bd51ef199892199e03a424fa1a842920ac161a01276702c2535675c080563c005f3" + }, + { + "mnemonic": "砂 宗 哪 鬧 忙 討 播 胺 赤 朋 底 訪 僚 新 握 卵 曰 察 訂 尖 輯 恆 止 忘", + "validatorPrivateKey": "12d39f9a39757c7dd5be3bad73e3471962f548633de68df90f6d01a111670425", + "validatorPublicKey": "0x885a2e7c0bcac2c36ab54808056bb5ba924c35313d5363eb05af7f1fefb412bae5c905cf45522f3cb3fdf96a88e748a7", + "validatorPop": "0xab5d6fb58af1411574c34421a5bb99ac7811e8d2d7d35751ce531a92aabf020094e4beb322bf366914d615386d0cb542137472076cb1dbb85f6f3ca1157f11e19be6ae1a7d7b0097d627015bd94b0d3129b79697f0ae2179a5e16ddd8cad620c" + }, + { + "mnemonic": "少 割 宋 誰 潮 爺 稱 報 訊 遺 協 專 騰 恨 手 賴 誣 裂 素 洗 節 線 霍 含", + "validatorPrivateKey": "25624f9a90c7d545ba7a69fc74c82ea598ea4cb60b877814468d74b3efd10aff", + "validatorPublicKey": "0x8da1045c92f7bc2379017b20520fb9608f2c91de52c7727a3b1b7e882ee6859dcc113a645fcaf21b3f4d2f705edae7a5", + "validatorPop": "0x97768e349b4f81ddc46c569d83f0d8c549a19c171d8a25c5850fc5181e5801df39dbf547f81b6a23605ef1d43146568c0dc4ed7752b20ac551763ec0eee7765fff727f21acd4a2fd63e3270ff2f29fa651289343645511425bde1e5048cd3614" + } ], "korean": [ - [ - "에어컨 만남 시험 마중 주민 심판 자가용 마찬가지 어쩐지 간섭 부동산 메일 왼발 눈썹 기업 초여름 씨앗 교양 후반 연극 박사 열차 연세 금강산", - "72526354c85351d66e8649ae90935b5ccb9416fc5d7efbf24ad6a51048ea2b00", - "8eecc1efe579aef85781d8f81d2869c3011f84024c1bdf6d9d08c6d99ed73e8a728e95d6209405948ccab984e653802a", - "acd3695a8f595ddf5e6d3f449f4b632483ae54af2f735fb701027b56ca5bb6b1302eabea132f025146fd25985ae80c2f0f794866e22813879a774e102c363ae516aee3fe69b5a415dcbce384ac5f8e1bcb0930d802d2545fae61b9a4a8da1586" - ], - [ - "복숭아 빨간색 공휴일 적용 깨소금 목사 유물 이대로 가능 발톱 설날 오랫동안 농장 갈색 목사 생물 전달 웃음 일정 외갓집 침실 중계방송 능력 무덤", - "5f5c61c3a769d26d4881cbd835d80c6d80cb0f20b5ebe91f34a517021a4589bc", - "8a7b986954d0e4637018d5d29e5bb3c8145fcaafec0ca8bd58e52d18643e39f361f842e775bedc61e5102c7d75e3080a", - "822cbbe0a34c4ad6bb535dbcad09b1cdfe2f6aeadaf53aefb1ec20deb476d952f8aee4b1afaa4ae1fa11db750a973b8006d7f4c1d54bb57e8510933309d1134eab09b5e10a59314d4255b6251dd6b9a211b31114b39f8c0baa41a5548939eb1d" - ], - [ - "가정 다양성 명칭 종류 약국 수업 보편적 비판 일기 연인 편히 봉사 상점 이슬 항공 일등 의외로 행복 그룹 수시로 채널 하여튼 실체 장학금", - "5b3572efd2af40ec727f82dd954690fa8050d65ad6f7e9f47438c67a6ac9e8d4", - "82435085b9640830e178f7c14849bed59c542888817eefced809acd452e3b77c7456149237eb4b236e9c665a31915c4c", - "8627efc19bf244e5eb595a3f7e38d07daaa5e02eda1e59deb090fd3bd2d5f43dfc4de4f0cd27f5b0f7f48ff2a53ad7de094845197db5d3c72737f1cf065d9c9ea1bf31e3473d488b917569cdc5e33d2e19778920e65281bcbffaef771dddd611" - ], - [ - "한동안 수시로 단위 시점 전철 어젯밤 송편 김치 기쁨 안주 막내 소설 중부 골짜기 상표 종종 사모님 설명 조각 각자 김포공항 각자 언덕 지우개", - "585b4aad585f9e843358e1d11e471dc89f222891dd6e73e8d70f27ae2f69fcd6", - "b47d880bce0032ea0a7dee19a1d5b98a87d220fe9e9100c743edb11f7652219d1c788f4f8f4641add2871b34ff7d4984", - "aad0b3a9c618f89b8fa6f9f8858f5217df7f4064024c451d5bfab972fc89a44f1730b03eb0ed259995236adebd03dcec1277edcd268bd65c21266f0d53cbc28d0882b27e8faa7f1032808560fbc7f315c92affe528d1d6481b9270e2442c9eb7" - ], - [ - "충고 액수 도중 경험 이야기 식구 발목 먹이 종종 수컷 명령 차량 양주 환자 사물 염려 넥타이 보자기 선물 손톱 나란히 마이크 왠지 사전", - "6c2c4c579c623be50c293dba87bc5923e8a580a5e75f667c45436e230c8281ba", - "939f78fda45726ba25a8154e0dbe0cbb2abe181ed0b8b84aac24b65a57e26cdbfa7688a54bb31724aa340ed49dea704c", - "8b8a6485807aa343920aa79782188cfca5448fbc32f1f700b33f2563dbac25ef79586e3a1e92d86472b83d8db752bced18fe05d7e841a65379c7cc5a1911fd0fd2f68e8215dca597758dd484f25c0d7af600b94c6f008d1893723b8a8a393bb6" - ] + { + "mnemonic": "국왕 연설 혜택 호랑이 막걸리 이월 손길 말기 민주 해안 먹이 특징 여섯 가끔 증상 먹이 곡식 산책 본래 회전 잠자리 오염 매번 행동", + "validatorPrivateKey": "6f216814b1b9fcfe5b8185d5b517653e15e4d5ee754deaf4bff7b211063550d6", + "validatorPublicKey": "0xaeee5e065035c25b6266592bfc229178bdcb191deda7181127c9d29627c66a9b7fa3719e38baaefc0f531a053e70d206", + "validatorPop": "0x81ff1c7b3bb928a0b15122dd07b1399baf41609a00c323e55d72a67db9805ddea637b4bd6bfaf2184f532bdead2e7cdd0888d3b964473945adade0c9816701c699980755e42c313d834beccec56ee4c2e15427af92a9a4d1bb231d7273e0caa7" + }, + { + "mnemonic": "소용 수염 대도시 매일 실시 강조 살짝 청년 시청 문화 열정 호남 염려 학기 감소 본질 선풍기 인연 고전 모퉁이 직장 심사 무척 약간", + "validatorPrivateKey": "3ca9d88bfb7ab349245fe2bb84c5afd4432644cfdae91721c971c7d5e527e1f4", + "validatorPublicKey": "0xa6ec74718fe6a26e9f2a9b2796afd35a1166a4af0d1abaab16934e15132ef470e30d2934d1bf5f7f5aca1310bdab9301", + "validatorPop": "0x8e11d01913d4eaee2e1b12b23a8cbb9acf77bf524c17fc4d65e7c97fb132e7757292bf0b8fadf9eae3ce381659f407d004766389f8e0a38f4c14fc0133983a9d98e4e2b6420bd3e30f7c1134c0a84ac86953297ebcb1c9db48ea113b4e76bc16" + }, + { + "mnemonic": "스튜디오 감자 막상 튀김 자율 횟수 선풍기 약수 볶음 현대 손질 카메라 패션 살인 합격 이틀 여인 국수 국제 광경 수면 법률 성함 대출", + "validatorPrivateKey": "0813cdaac3b3caf757b9042b2d1a41c9056230319a104884f7380e1a31edeec8", + "validatorPublicKey": "0xa83902896fb8d0537a0f5336fbd458085724ce7c6cdb01eb4c12c937922ed8769a2064492075f834f96274d2b27dac90", + "validatorPop": "0xb2e530a339c934fc3825145b24df71870f1d1c6e5a4df3bace09001034f1691f8e8186bd6cbe49aaeb1f26a802e6304d124d4f2aa4bc0bc356ec4cd9a851c80e1470f743ce241d4b56908cc9421f15ca676f338308a4ad54f56ef4146a27a81c" + }, + { + "mnemonic": "민간 장기간 반발 김밥 구속 도대체 부인 흥미 목표 특별 예선 방문 모양 팝송 시장 체력 국내 바람 한때 실천 채점 답변 서점 설탕", + "validatorPrivateKey": "4713625e63a40c9d8be9bf5fd1435fea867b8cd2d7d613f510327a5549b4e176", + "validatorPublicKey": "0x8d27677ece4df09c45b9d691ca3a48cfa911ddc57b2c65ad4a66497ba4cea2b0b3a47f93d81b44580e58c50bf5b04727", + "validatorPop": "0xa154a481d6d6a55a91dd3907503a69d31a30af91fdf7a3592eb9123740ed788dfb9e580d1d3219970b2b7412332af72202f8042a2ae4aaa408c733612299e9cd95ede7590948e96ccb698d39ae03b0e433a14a023cb912d290d1339a368e6ce3" + }, + { + "mnemonic": "빨간색 회전 서비스 악수 역사 기독교 주장 예절 승객 간접 청소 횟수 게시판 점차 잠자리 늑대 변동 전기 눈썹 성인 정성 예정 하룻밤 장인", + "validatorPrivateKey": "10f0db181425ee01de0a3df528464ac7182f11754eb7737611c2892ee695b80b", + "validatorPublicKey": "0x8f06ed86dc6361843cf2ebbf47571e145452e64f41967d43822cf8cab109e665d5183c3c508d9d88893d475113d3e2b8", + "validatorPop": "0x96c2f4684047651ae40f26a436ef676502d85929c3cdee8d4e6619204db7f3a977acacbb5f4bc18e93c5e108ade4a317070c98b78789b092d985f91c4cc569a727338a0764d6078b11d00c4b17ac93a196dc770ad0690403a036629e45e943b3" + } ], "french": [ - [ - "pépite pelle vague glaive frelon trafic gronder ogive frère mythique onirique ethnie murène union ennemi pollen endiguer intuitif vorace fléau valable vaillant sincère bidule", - "46aae75e4e089c6b52d317950673f4d12a69a20a9b682249772832b7f8516c24", - "85142d769af987dd6e08f47bd90b6dce697e2891fe9c4a3e7541da19241a47d8ffd42b7d893e48a0036c0085e1b88d88", - "93dcf1d436cc927ff31edfe32650ff26ff6ccedb186db325d4c975795eb3ad41e8426d738d1184175316cad880d24ff6115239593d61b1aefadf1585ff42ba2856aa8d58f244208285d5b00eb859a0eddff0fb9482630d623913488ea94589a5" - ], - [ - "finir parvenir armure méconnu excuse cocasse appuyer épatant phoque sextuple plateau fissure pouce sérum boire tortue migrer ornement lutter novice unifier éluder anarchie impérial", - "5be2a4fbb7a54bf196f969a7085a6a363f89c734356eb808c3d86a518137ec7c", - "8a19e0afab17d4aaa1705997e61c27b7dd5cde9364fe1564c2cd148d7c8024e6ecd035146556da7931c3dca899f658a4", - "802599ed4d4cb9cced3a01439f6f4a7886e02e9a8e8dbf9258caaaa683dd83ce4863e380a190671faf16378a50fe567e17355ad39568e965ba6ec0cdc21b45b7f04d322a0be9f432428cccb18ed178bbab0ae519673fc4514d0d84ec0d35029f" - ], - [ - "décaler douanier nickel grand recruter ajuster édifier infusion berline ruelle réticule numéro grenat mascotte draper mouche créditer victoire brusque bulletin figure intuitif nocif cantine", - "6a9b72e614c46cf69c39ed9c697c08188867cbf5ba6f07d88db04daea8b75d42", - "ad0d220c36c52caa0e3fa8e39a563ed9515b41e646f32373d0466ace39c7ab9fb3554ab5c3216cdc5c32a0389f78f83a", - "9351de80c1cad5f2f4a10d71e9b2b2a1b3baaf9ed203596cf8d779d7bbe648b69e633a3fee1ef37152c4cc80e4ce0a6c0ba2ce57ba55ea56ffc94c6f79a27e82e22fc20b500ded9791f604f8783bc16f530df3faa2369aa66dce1a239e0104e2" - ], - [ - "union encadrer joueur pénétrer cendrier obscur ruisseau juteux indice largeur farouche élaborer proverbe axial fiasco bonheur cubique charbon miroiter éthique niche ultrason nocif annuel", - "4f2c0808e65dfbac9636213ffab156492ab6624c421b3b4b00df4a0660d0882f", - "87ef9cf982a51130c310824657c64483d066b791942ad02a68bcd7cc2effed8576f25d99b4b857b70ec2daad02c0ca8c", - "a81cd058c758f813aa1f784746d68e079973ef9ed0255ce33b6eb671ddde1612257119ba69a7ad4893cbb07b017daab60f4c297c6326d2f3bdbd2ba7ad0873b79c8156425949e2e61d881ec420e2bde58f5199a6670a655eccf3cadcb5312f57" - ], - [ - "amour unitaire durcir silicium largeur coton ajuster pensif alvéole talonner bafouer salade épatant caviar puceron mixte buvette plaque entraver gendarme réticule tissu coton taupe", - "3d9f85c62fd0f206cdf5211d80bea293e3205e6438976086b3941e6c57be0b0f", - "a81107175dee2b15f23f920b39dc9ce54892ca0c119b43374731f3b796f5268a1b44d2da83d667a50279bf9df2180d77", - "ad1b19adf3e79dadfdb1b57245596da0073914448bec3712fe3422bdcbd18205ceaad535f53a038acdb9f13aa7bb06b0049f271aca30bd570a2c74db7e98cd5175b0285184d12e40b9ac04c56af6a6e77a79b755874d94b63205c550b64b90d9" - ] + { + "mnemonic": "symbole calepin gicler brioche rouge cabanon carbone hurler serein butoir opportun cocasse défrayer cirer butoir frivole bagage néfaste rejeter galaxie vexer aliéner donateur menacer", + "validatorPrivateKey": "107192d3dc98087153d457970bc9a4d4699e103767134574d4af7dade62814ff", + "validatorPublicKey": "0x8d1c3cfe91046e6b94da25ac219452c0f9abaccf281e355d4ee761c28c8cc87f8de376b151d291bddb8f98801af9b271", + "validatorPop": "0xb7f306dc033e2a329a62dd84fc753e73ad1e05a5a485a14d7e389eb93c8ebcf0fbe085c3816f416c130384e35e7cdd430c51d6e48bc32a24bf20761856557dbb58844e01978fc8693574905f37da3aade681f33c28d6a2a41a4aa9f236f6a403" + }, + { + "mnemonic": "grimper effigie divertir draper cabanon chapitre prudence nuire branche émission sénateur atome cumuler perte élaborer ajuster chien gardien déborder héron belote essence affiche frégate", + "validatorPrivateKey": "62c55a8f78e0a1361135d2796153edb4c492c0a64f337d5ed9940caa139cfdec", + "validatorPublicKey": "0x89e0159d10ac7d9b8a1b44363cc22af0a8686e7259b5404a0990b49fd6f14870293dc00612dabc4fbc664c36b2e09d37", + "validatorPop": "0x96b2f03b164e2ef2c785d421e5be35af588f2239fac3e09e026f655666f4d9bfcf5bb7e82a347869e14076f606683faf178b32e654c51ce96a15a8fab3c0a23af3dd00783a3b7f5c80915e4aab0e7baaad34ee49b14eb70a06037723c6c42869" + }, + { + "mnemonic": "toboggan atelier photon allouer prologue usage dosage onctueux stipuler grogner culminer rivière période horrible simple digne chute désert curseur hérisson abrasif nocturne employer facette", + "validatorPrivateKey": "63beff3c9b144e4657b0a8c7e06bcb8dbdb6129f87b1bf7e9b088e086f753c72", + "validatorPublicKey": "0x815eb470bdf93279f329b2c6cb9cc562bb48a5e00b9feafdd1d20dc50a3b5c2d2b58c5fc2b988fc119fb58e8b41a38ea", + "validatorPop": "0xa1ccd9e855b5ef39bb0e69bdf05f4f01aea431e490fc5647469db76554433d368b0b09991d4ee522d48712a6442b939d0b5162422512cd2933738b90cf64e2d9902ed928c339f14809568671dcedb7e083e0ee01a6d52112eb1916c8d1129e45" + }, + { + "mnemonic": "malice rentrer étoffer fluctuer broder solitude infusion éjecter chocolat jupon bolide opprimer peser éduquer sottise muraille ultrason épilogue relief scélérat épuisant trésor loyal avril", + "validatorPrivateKey": "508d83d6facf5c975c026eaf935e6752bf8e4bad2c27060a347b21f40c995211", + "validatorPublicKey": "0x983fc5e5b106fbc4e1743b5fc2bcfe1c0a480606332c8f2399c4b7836ef7bb48d52cf966a1ed8188c33ff337cf0fc298", + "validatorPop": "0xa3ef835b102095d71526d8b389fbdb21382acb4a3699eda3c3c45fab373c8692c71c666581f4149002dc8a1e89055409077d4d26573f4a8db803f654260b263fa4a8b113bba3876572e8853be6ba6b10c5b825d106fa3c8ddec8019f414166a7" + }, + { + "mnemonic": "puzzle article fourmi groupe silicium voile amovible instinct tablier baril lessive lugubre grutier peigne respect public riposter sucre samedi dresser bilan censurer badge fiole", + "validatorPrivateKey": "68901c71a048ad1e0a6e173d99431209765274ccb44a424cf2b37812bcb8cb32", + "validatorPublicKey": "0xb6d31016d62701a79dd96355f170ac4ead35fe69d5c495fe66a51cd3ba6614701e1bb20dc4b66342bf0cac0cf962ccb3", + "validatorPop": "0x95f191017d80db3594edf7f89ecd5cb14df38315a5cdadebd26972472a82ed51ec61f2f298b9b67f2ec8aec8a780bd52075570349306257db974f548768f74a4fb68852b5b014418bb6ddb88abd4516bdc733ed3e20d9902ad38df817604b5fd" + } ], "italian": [ - [ - "turchino falco allusivo mastino alimento volere baraonda sviluppo zitto malumore ruga esagono rapina china sclerare smottato titubante gonfio cerume sella testato dolce rinomato fucilata", - "2e5e245890ed215911defc8b84339fd2f203ae7d4c184ab60cea3148a845744e", - "903754291d71b035c3e80fe6438817b6ee45b7f3530cc559459fac70144565e7e8e9deae12e18ce5174d828fd3d90d4f", - "b0d2e4d7098166f095e13409f6449f80d80b304e9a305387306f63339d8c5b541969a300f62c98a261a574baa563c3ac0768283db8a6d691dce22c0cf8dc8fe24eaa57d707f07a11475dc9700a1afe29a9dfaaf85603bd973ac106a9ccd34ff3" - ], - [ - "nastrare lastra cucire scodella starnuto esoso sapido placebo corsia baraonda scippo bisonte amico ologramma ametista colposo padella trifoglio fune fenomeno frugale miele zulu riportare", - "2ca8ae4033f62068e8ea43847257d184f10cb0f359eb02e610d74136781b3a48", - "a0f0ad5b7f21d45efe745aeb0d6d38bc73c032c2b00743ff36f675c2e4f5467e2d33d93a42f0206c8c2147f90b31479b", - "a51ca8839885ee1a311bda44b1684e1240dcc1bacf2c68f1a08728405d2e12d66dcb77ace657b55bf896fb9eee59614e06ad2ba9b52db240e340ae90fa11e0c4ec326921b2912cc89f2be1f2309664d45f312779b14707bdb09f293554d46c71" - ], - [ - "anonimo inflitto sfarzoso cesoia battuto zelante valletta bretella solido sbavare venato ametista regresso diedro scolpito russare arso fisico asciutto rivolto tossire somma ovino fenomeno", - "17737d0a7dd1a14504d19f27e741f4002e5af0ca24ba1d407e444782972b242e", - "ac6c7994774fd677dabf2dd2b800280f5f2a4db9e25afc182e0500b67f6d3d6cf20d86eacd1112eeca63f58b0a0c53ed", - "88a47c329aae366db7ce580e096911e849e1b4cce08c20f3472cd311f6af7f842f36bce5b2ec844cdeae22e4635a681a148b7b934fee35bc7fe21571f204fb7ddb8103e9b50baaf3b096528a74a333fbeaf9bac44b447324cf4e42f9de595576" - ], - [ - "asepsi mattone targato irrigato cantina sbrinare meschino massaia orma decennio nodo incisivo rinvenire sbrinare difeso tensione gallina desumere divorato saluto fantasma oliva omega esame", - "3f00653fd48d4adb8b086cc9c6d988d60c95dd91dcd0f4896176dd83d8a7c4f5", - "86dd16c8ce646d8c6f65dd8ab841a6cc95c08d354586b8f872040b094603ff42cb719bebc8d0a0703942f5b212b506be", - "8897900391d694ef5700d09865b2cea01d5e08c6e69485b705ec5971223d6e346dc30b34184a5ff5d8d04b1f87f5a0e51134be1c41563ba32733e4ff2398158144db8adbf1d9ff4385aea9d8e704c614634dc555335cd0c95737b8353a837694" - ], - [ - "tramonto chela manubrio fobico flemma fosso litigio patologia sierra onorevole nevrotico divorato crusca dono azione fumetto dado sfinge decreto miscela andrea sentire davanti rimanere", - "32de069caa6ee0071f80bf9f7ff8454ca210866abfd31ceb958a8793709b7527", - "85d064a57e7968f42cfb97769814eb92495bd7a015c4f654fd1cd65e7389d077e98b6e8a320af6fcc1e77f74d3effe20", - "aa891b266869f77cb922aa52bca79d638d2341988e8170ee11b901abd9c710861672044d8b35b4eb13f02bde55a6dd3d07890b8e227ab18cccb3345c2e45b67995521500775b390b90cde5f87d28fb0719f803edafd38015e51364311ac4e9b7" - ] + { + "mnemonic": "assaggio deciso esito muscolo usanza fetta velina umorismo pratica dote arsenico volpe gasdotto delirio risibile scelto vapore verticale ricordo principe ausilio frana superbo vivido", + "validatorPrivateKey": "3d2cc5cffcf54dde9103d4d27484a8a1f2bcf3e6e2f46ac6f17abda8c14034e0", + "validatorPublicKey": "0x89f7c0f46c2c4d773bdb3af22d5395536cb5cd206ed54f5ed4568372c61e30f831999eb07ae2ac302ed67609af5093b9", + "validatorPop": "0x8e4b9a844a6ad22a4fd0ca3bcf5a420a647fc23b7415479be677eaee123f7f3e882fc51460c4fba20bb0f4aae3dd12f9163c360e5cea304cf209bd9ba850f0af6718cf77703d8a28a9c30e3153fa0a183254c09f3490ae6bdc9b3bdac23dc50b" + }, + { + "mnemonic": "addebito cellulare rassegna ferro selettivo sciroppo pineta sonda sfruttato nessuno veduto proposta pesatore daniela tariffa tizzone modello doblone cosmico rappreso pretesto ambito dentro frugale", + "validatorPrivateKey": "38a2c784846063065c35d4b20fbb58e0c94d933914bae7bd0179f8e4b681ed7f", + "validatorPublicKey": "0x8bfadd64382716c5dc45bd603ad47486563ca6bb1c628c428c7fc74e417063f1c839ef2c398bbf58aa5d477543427900", + "validatorPop": "0xa6587fed763a6d3a31fcc4615ef5da33420cc8f56041031b9b99584b16f1ea6998e804225a803a748a6d40fbe76210b501ae74756233b7fbb80f51287b905a885a6c617ebd3c888a6787b6762a57f30c10d2fbabea5acf65de976ae6ff5f4384" + }, + { + "mnemonic": "accusato peloso atono ingrosso drago ingaggio filo frugale legale bordo giocare merenda unicorno sillaba lentezza meschino nuvola invalido incluso lievito cronaca bruno pronome folclore", + "validatorPrivateKey": "6d1e23229f017876a276802df01e3b296d26e94ea3b20020a0539a8ad2dfc32e", + "validatorPublicKey": "0x8cba3304e81996eb5a4f054b621a7b69a8e100b0a0f6db862786c9353a6c5a42d35322b4fd18de84cca6dbfa4284874c", + "validatorPop": "0xb4f914d4990c00c45f96400b00a2b94954a4a9fe2f3b85b553650ef8c50387fe9806400a429d0a1e1ebcaeec3e2986430bb853b0d2c68126be66417f0c3bf786ce7eb22a605482f7d420e9163133a7f667bfb2aa4c037bbd03952a1abe66e11a" + }, + { + "mnemonic": "fisico briglia rimorchio dividere risata circa rizoma ammonito civetta orefice toccare pigro notturno plenario cedibile tacciare cardo affetto trachea delirio salgemma peccato orma rivincita", + "validatorPrivateKey": "4d760c6bdfdb94485e0632710029973d309ec39eb36f72ed299b7ee8760772e8", + "validatorPublicKey": "0xb0a15d79475eaf64f6b3fa0eb04baaeb6b45eba1fd416b6d41d886f31848a2103f743d41d81701e0ee924d07096d0c7f", + "validatorPop": "0x8dba6dcb0f9a51911a66c3b0896cec639f370ea40b8a854b234faca680f7b4362d863fc2b628794a485ef4c1892e291d04805b7560b449e6860ebca2560a5847f58406bb7eca0729a042bb1b0aab2afb57cb17e1af6048bff5d97f3cdf40b9b5" + }, + { + "mnemonic": "perdonato dormire brama golf laddove globulo pioggia piattino europa mittente disgelo rigettato udire pargolo rastrello oggetto incubo ausilio stirpe sfera croce solido accusato steppa", + "validatorPrivateKey": "5a983ba66a4e971c277cb34e44f7c8c6b6f4c689d7b3e9360b743b446dff3b56", + "validatorPublicKey": "0xb396b51daef875a1cdb81cf02d4049d13855e713698db8041b54d784927702f92ef09f0806da788162bbb6cb87ba24a3", + "validatorPop": "0x905e66bcdb09c30760bb74640e567984f976ad840321f84f4b8ba50651dfe5eba151464e6a11d8cf60bfcfa6bd2a511c0b95945b34c5326fd68bea8c0e6ce11195ace9e2cba5805e3b537ff3aa54b2660ceb897ba1b7fd5760f81d51d6883647" + } ], "spanish": [ - [ - "élite camello cabra sonido cómodo roble codo negro grasa codo tronco correr salmón goteo jugo tigre sorpresa grada ilegal mover folio colmo nota resto", - "0d3649cb4f8d5fff356eac35e0d423a1684f0ee1a6e6af70f0ed9deab96764b8", - "98cbc5d32843b4fad640a4a0278f5cd8085b3227140ae670b05ccab8c6216f4956ba57ee604a462cbead7b64eba2a87c", - "88f1e5f6124bd64dfde5dde1bf85659c4e6c09462c3efe2f7fcba0fe3631d3c0728339b354eab0b2afa4ef6ac61d7ac916bd1a57f54334e7305b4a3eba3baa362fc348a4b284efab336623b404ab225e799cf6576ff0fcbadebfb2405392fc6f" - ], - [ - "utopía pista gallo nave cromo úlcera jurar triste antojo situar gordo grano mañana piojo bonito entero unidad sermón aceptar remar harina ascenso fachada célebre", - "2f1be777b5c4579935a9bc987690b68ab873b3009764eba6b600a5e175b7e5bc", - "b64da0edb1e3617438bfb1f31522a9066fef78baa8527826358da3131619ed436d5d8b5a08aa75150ae037760192c213", - "9496edec7d395f9e9034cfc05a61076c47a14107ea250b54d3fd3a1aff31f8ef84fe3049458ee1a9871d62926ff0fcfa0387f1c23d08256a1cc5ce1c5cd55a627263c893bf7f272b6a008d3e29854d41674271f57589720881091d36b1fa18e0" - ], - [ - "talar verja tosco inerte rígido huerta teléfono rojo dilema osadía erizo silbar obvio técnica novio gesto asesor moneda sauna edad suceso ocaso alteza columna", - "59021216132305577c9e6fd50fa5d0ce3a15d2d636e126fdf5fc5298f8d45b12", - "b00bca1e6e53e3f5a3b6acc3df7d68a222da7113d98f4bd3ffa754964ad3f48d16cdb79bb4d5720201cfbfd291d397cb", - "ab23f9dac36c7c961ab164b46eb08563a7bf301d7d0972ce4b3b2cc01726995fc6ce21392c4af42a3939b8e1bf8a7bc6158c97e22843291847bc1db26f1a67f7300ef4f41e086f595291cda7da7fafa2175cf0fd71ba40d4d20d328ee03f9d91" - ], - [ - "rígido ancho prado rasgo sostén radical baúl abrazo cuesta enfermo ceder etnia siesta enfado apio diseño burro agosto sanear colina alma negar rosa encía", - "1881bcfc5f7a8994eb114b62345995057e4e363448952fe6cf5771c55ff6cd4c", - "a2f602d27ab7b7383d444e369f0770d03ed6a77ebd8897dd4b295c33266227340bc60930778be816138390467bcfe8ba", - "a2b22b8ffb21dfa758180cbc05bb52a656176f8813917d4d1b80facae51c8922c0a671a8026bec69186590fa3468ba8e0b2f1a232c25565582b493dc5cec7a59607e81c346249138f37a5e620905b47825b1b1e7381e7ed087400a45f366b254" - ], - [ - "oscuro tarot lector lote oponer litio empeño espejo permiso antojo taza remo cebolla tuerto primo miedo parar rueda suceso oponer boina línea pésimo lienzo", - "0d25600951084748a4318b7f7b20ecb29921627201ca1843f315e217e884a8a3", - "8da89c05af150d06e6d4bc820977ab39836af47416339cd2a7195b560c80e0f9517345a71245b51548a34ee3327facdb", - "a4524d78544e0ec9f38c60ead1d3a477e737f6e69bcd1f9eaf4d58146d104fc8435e037ff73630338e8f6e06435b0b5b0437160e2bb5acb7c89ce011b423f01fb3541e8de33744b7c63ad04f014d4f9f73de6093756b6072da607cdac8ac68e6" - ] + { + "mnemonic": "maíz encía sujeto pera tango espada atleta grueso cara abuso nómina elevar fracaso nieto género lino digno fábula oruga oriente pedir vitamina cinco tabla", + "validatorPrivateKey": "70b405bad8b30b77d4aff33adddc2c3821a8b30c08bfe99c115abaf08a8ccf6e", + "validatorPublicKey": "0xae4fbc7edb17c70d9aa22f3b4fae4866dc53c8c542b2a9049b11f466d63ccf8ed0bd08476b4bcaf1c80403120d8889c0", + "validatorPop": "0xa29fd2327fd5950eefb5c592772bdf25b7b8dd4536a7294d6dbabe08263af1080c2c318c791452b43664aeb60da78f761334dd1bb56130382107b7fe504e10d23b2f937c8f5a3cdc51134262ee0c370dc5d6e270d07e5f27f0a4e7419553f0ac" + }, + { + "mnemonic": "autor aseo jamón acción flor matar vulgar tejer nuera ronda apoyo mente agua kilo tapete pupa baño astro mazorca útil apoyo bestia ámbar uno", + "validatorPrivateKey": "15215ea82f34fbf37eb3ceec76daaf94b0d321e8c07d6c5fb5dcf084ee23cb8e", + "validatorPublicKey": "0x8e60ce19dc8ee0ca6dd7f6490cd8d313b0718b92c8784c4f2b6ffcf67e930a3b61ce516963d4138cb49275272e9c847a", + "validatorPop": "0xb143f1293a110c0ad56d2425a93ff271ac148a18c7dd63b8cb73984f0ecc32ab41789a9b0e1eea2c299b9147e345fdda08ef72b4ccf95110905d101aadae3e0843918552a244b79ea7792a570e6eafbf4ca1d8ee534cd872ab0286d68f311045" + }, + { + "mnemonic": "acné duque palpar abuelo evento tos torpedo fogata islote tocino huida usar observar potro lugar ronco padre lucir hogar fijar hígado evento pago motivo", + "validatorPrivateKey": "57a26f91b6d86457c0c7602d259c09e2bbf8e4da7cc79e61719d4910c63425b6", + "validatorPublicKey": "0xb9109ecf95afb9e483a44651db450a6a521a260401b53b7b558d25cf25f3cc9218b75200a47c1e3dba93a2b9a8d4d946", + "validatorPop": "0x970c2b22e5d3f2c66cf4a039d74eb3a60dcc1e309280f476d9e1c2cdec1d9934871cf20d90a225aa38e79f6bb6cc36dc01cb25ccb4e8dfa17227c9d0930e768643586c6ea8a21950d53b3154a3e22c866c5ac70281f0633aaadae6e10fb5240b" + }, + { + "mnemonic": "metro alejar máximo globo usar favor fracaso mes salón realidad sexo elipse margen superar asalto acelga anciano paquete lata cereza rico regreso fatiga fogata", + "validatorPrivateKey": "1a22998fffc2d23527c8de6e1f71c87b4fa8a12c3661839d1777e950aaf3ed26", + "validatorPublicKey": "0xabc04b56022055f74c91aa321f1bce9cd914f01e67ed3008b2448b0d9041074156d4cf944f502dd975bf9649ae7c9d0e", + "validatorPop": "0xb42dc75c320a3a0129f53b54ad8e6002dd8a95b484dcad02a95bcbc47b01d0a8820625c07fd963e32beb634b515383c602eeb074d20ca235778931d2efafb6d505c2196bf4f14dc1c946d88be912e9d22a5eed732bea12958950d6715088a08d" + }, + { + "mnemonic": "blanco escribir carbón arder llenar elipse seta opuesto sostén quemar vivir parar percha capitán acabar iris emoción laurel trauma joven seguir ropa lazo haz", + "validatorPrivateKey": "06b710058066d5e3b26a4c1891877a7b333a93bb8491d846bd322b77e1f94925", + "validatorPublicKey": "0xa1ab26d0ea3ff3d80764b10c5f5afb729457b37c07f4edf86d069148cb132bf7994ed27273fa4a5498d046e43822426f", + "validatorPop": "0x8c4400bee02a36e88476a45218cc391fc63c8cd93492d40a6ef9083fbbeed4ffb149d3c7e3761e97fb62426f1d0c08aa1225ed19ef8ddb80b3fe41ee7b7d63a9564f9435b2d292d692806cdecf999409a8ca9a51a331d719d3fee15297404050" + } ], "japanese": [ - [ - "うらぐち ぬくもり こうはい でんあつ むかう かがし ちょさくけん あまい おもう ぐんて きねん えのぐ けんげん はぶらし たいねつ むえき おちつく だいひょう あんてい とのさま ちへいせん にきび こせき へこむ", - "06eafc5fc339d668592a575e21864987c8a3123fe89a15db1b6e389aa6db6563", - "ac24567f375be868870b95f6acfbb9136a51dd9e624dc8a5facad473a5b4af0c85703cbc3f893470a110ebaab8610fb4", - "9540ea1efaf643955e88a2785f0b4d52fb09a0805f49c83158c0b579bd995bd4e9d5f1895604f9ce99318c96a5b10ce5092bbc38529a181b281066a155131cec6065c2ec2f8b58b4ecd008dbdf7eabad36f5ae27a68c5e5de2f29ca105b43e09" - ], - [ - "まなぶ せめる すめし そぼく しほう がいこう ほそい まよう たいそう みうち かあつ おじぎ こまつな すてき しほん ろうじん きせつ もどる むしば いこう わしつ そとがわ おしゃれ げんぶつ", - "69c1f48087135fd98acbc3ba03eb3a7d8a102a8bad9b947384876ccc928687ad", - "a8b5999d08b83447f35ac64dd97d3810b08157eb633ea2d4cb1eb9e823bf1cedc050c81e8d629d88d1fab015d935f899", - "893e567a27eae306c64ef550428315750c27ecf4c2740802b63b2dc0441679aad3cddf6687019142f9406b94a67a76600b83f088a318821d3119f4d2a8f5961cd81a52e71182fbacc466264a2be267ef32934dec5748421512ba04c11ef29482" - ], - [ - "きおん でんわ くちさき てつづき となえる えらい けねん ふのう さうな いてざ さつまいも ねんざ さんみ せもたれ はんえい きおう みつかる でんわ だむる きぼう だいどころ とくい ひんぱん らたい", - "68e63d2b9b2bcf7c0c60bccdbf20e62fb1e620833cc86143ea6f6bfed31b0fea", - "a04d06a2f3b96a9e02ff34fec9a5e44df632048b3ce317f9284230d5cf33950feba24f1f1aebf6d63767c726b43eb2ea", - "951d817e55ad883b154cc4610b05b28f033693c88d9b875c97b176e45df3b1415f14cb9b7856c0a18b9bf19bc3daf57108df3cdbc6b519c661c41c140c844d0ea8aeedc050e47c5e86469eacb282e572a2560d40b1af9e8f95697f76f7635068" - ], - [ - "おぎなう さとし してき ろじうら てんめつ せんよう しやくしょ しゃこ たいざい つもる たのしみ きふく ときおり ねんおし けんとう ほうそう つける おさえる けみかる がいき たろっと けむり すあげ たりる", - "2a249d3aa20e3e999cfeea2b2617108569aef894b153ff31641996c0d9de9e1d", - "a4a50a19c4468541f602ac1c0e2821a21fad719415801bc07a8f94200976bc42d934461afa058e1a2c09c09963bee1c1", - "975365d89798642a44013d2bd7fc99f2452eb5d13f6b8dc801eb6b9708d5673297e99d9bfd6642d4b2fc0d84ffe56ffe0e32f99f0027f8d0efd531d0c0095133f45ca145d651817f29760380046ac4dfdd13ecc317296e2a963760ca02f0cbea" - ], - [ - "てつや むかい だんあつ ぐあい ねみみ つかれる こっか のべる あらためる ばいばい けなす むしあつい むかえ くしょう みんか つとめる みっか てふだ しゃりん ほけん せつめい にせもの めんせき ぷうたろう", - "627a2914207209f1c92b9c9b8b79bcfcb1d41737a4cd9beccd139474c768da74", - "80a15a4371c0b2474494e4ce3c00c2d6aefa4051d4a749f02828cb6d05b29a8bd9bc33d05db6542ef78582374e87ebf5", - "a9d5c130bbbf23cefd839b0fab32859efbbfbf8cb59466a41262b38fd8fdc19ae15a0d70fc45909b621e6f1f8835b95d037132df452a7d6ea0dc137193e275519fe103f148faf84ae8719969d392e047b77155333946b0b3b15b3ee04568918e" - ] + { + "mnemonic": "いはん ことし いじょう はんい りれき てらす きない ふかい けいろ ぐうせい かいふく そっかん そまる ごうまん おおや だむる たぬき せんれい ろじうら くうぼ ことし たいおう しほう こふう", + "validatorPrivateKey": "1a051c7dddd9997f5175c50a19688e50774ea71beecbda2755f1a3ed72251573", + "validatorPublicKey": "0xa6ac75b094f23b3abb2d53ba413dcc3555e0f114fd6f43f3f461ba5ae1c4d0237ed86ee7ca26b2f6ad3f8830739c8148", + "validatorPop": "0x97262119a8a4ba92fe41b50ba19d09a0124c3910bf0f8f063b4784a389129b916a16f95d357541c5b72c11dce8d048b100a03bb7eb242b4101202b27cbc9d20e04937d265dfffc7da71a08313957224d7a5f2d410137f1a24bcb3c9c33ef4a27" + }, + { + "mnemonic": "ひんかく くふう にっけい うぶげ ゆそう やすたろう あんがい てつや ちあい いはつ あわせる ほかん ちりょう ひまん せびろ さうな さくら うやまう さばく ますく じむしょ みかん てのひら せんきょ", + "validatorPrivateKey": "2e3127928e4132fc4a2dcaa545793c8dddce684184a7eb6608d651f2a16db7fb", + "validatorPublicKey": "0xaad5e939d95ee279c215d6754064cbfb273753a7b455af53df76fb7c40c443dc97e55d8f32865d65a3db25bd9521c1ae", + "validatorPop": "0xabb1ed2deb2c0a4309d9535b38577f5696233bc938a745dc64f072dcf25658d11e60abb127faa74d2553dd21d7a0bda10fc066c52db7e41d011ff0c5c69f31f360f01b883bae752f9a519cd1c5fb93b78a72b05355fd84fe509971fe68dfe626" + }, + { + "mnemonic": "たべる ならび ひまん ひめじし ななおし ひしょ れいぞうこ けまり うえき みつかる ちつじょ めいえん しょうかい こおり けいれき だんち しゃたい つくる ていか まぬけ もんく つめたい おろす りれき", + "validatorPrivateKey": "4d1c867862ad583d3bb2d2d0c0a2ae0545654d17647bbe212f5ebedb7ca42d91", + "validatorPublicKey": "0x89ecf8433fb87c0a9be2e8fc634849150335ebe456fc5d9c9bd5c7fa3509b3188c84b0a85f80b6faf99db53794ac0aa7", + "validatorPop": "0xb396c3837230d6fbeb092d314e53f726705dff9ad0eb65719308ad81df19e74a5facc0808c53f0a827679fa5b97d1914068942744ac92554bca4ca7c1cc7c99a7113fb556155c5eebe8d0d5bc8fbdb31385ed60711f8e8d86e8e2612f794ed31" + }, + { + "mnemonic": "すぼん あつかう さとおや けなみ とおる だっしゅつ てんてき といれ いんよう きくらげ ふせい とおく たれる とおい こむぎこ おたがい にくまん ぎっちり そこそこ そっと わしつ にしき いろえんぴつ るすばん", + "validatorPrivateKey": "43e6f36d626653ace495db7ec22594bbd4263d41d027b63391022eb4e06f7bd0", + "validatorPublicKey": "0x93b14985bdbc07562b00a65af6b2aae357f0db463e74b3074427f7d671a1bc1bb93feff91308846a23d6e31d243e14d1", + "validatorPop": "0x860ba861cdb76dda0a61b634fec9f5421f69a66a49b1b92eeafd6ab23d712fe1d831c133749df1bbf7f28bef4a469f55149854a5a70761432c1db15d981834f6f16679c406f61c483439b8bad47907952b173e4261c0f4a7397570553f086fc4" + }, + { + "mnemonic": "ほっさ ふんしつ いわい せんさい せまい はやし みてい まんぞく ちいさい なまえ ざつがく てあみ こんれい はいち おろす たいえき くどく いたずら まねく こたつ がっこう おかえり てんめつ せんちょう", + "validatorPrivateKey": "6e651b09fb37b34f167fbef154b02c21df3b0befa628123a5ca5892b3096482e", + "validatorPublicKey": "0x88755c8f172438ee524351f3fbc7df85a536bb6b6a15a0cfcda60ce63eb3003c5cfbb3f7161021500cb6afe08b845fbd", + "validatorPop": "0x8a5867a775ee373be5f706dc6619f1527dd2f0ceef0103100a614617deec9d72b2e5d8559599dede83bdc4b044592597055fcf761a2d06fde89c6f817be3d539e5ca39dcb4fad6a48bfc96d3e8ebf873e2a244a039354bfbd642c89f5d9f5f21" + } ], "portuguese": [ - [ - "pinote alertar nativa consumir postal rapel peitoral servo acaso merecer siri lavrador boneco espiga nobreza mosquete limitar desafio resumir gaiato lasanha ginasta inicial traseiro", - "26e91e1a0e783ec329a174d740c5012ebfe84782bbff87020a2d9c6da3242dac", - "94e30165b3ead644abfd6a52029ad7e0665c473094842e301de6721a867f7581e5e395074c50a2a653eb87be97d8defc", - "96726ed176f5d3f2ef47ae3aac4da50c86e86b8ddf10ca441abef112146190166c3135af94e7b9f2ab05fd3d875d8c48078190d867fe358be6724827ba9c8ae2b89a1f04f8c5a9e7e8470bf27d657009c6cdc77ff68b437db9914765eeee379d" - ], - [ - "imersivo amistoso comando letivo lanche cabrito garoupa acenar zombar fofocar rebolar flora salgado folheto saxofone agrupar dobrador arame piedade fluxo restante plumagem arsenal budismo", - "2a7b6ff012300acb580e5155b4e187075f6298d715bb45553db0dc8a471327dd", - "95b51634ed89105de5681b096908f9f7e507d8c2cc50ba49629843d43a01821bbd9298293f87fb38276d23f74f120c56", - "b494b645d01cc82f674a82c1e65da81542b7417f6a878d7d0d7aa481ec1b42941f767907975d5533ad816cce1b173f0703267b21b5cdcc046bc6eb563d2ac0ef3d3bf4a3cb5604ab46b64f4b91d1270088083bf33882d26e578150f7a189e05c" - ], - [ - "iogurte morena pactuar simpatia renovado afivelar farpa fralda videira meiga brasa anel grisalho envergar tremer lanche fuligem presilha laranja charme furioso zebu gaivota albergue", - "375428b52ff683d66dd9be32d99d6177ebcc2814fcdf3903f5bfbf5c0acf902c", - "a046a2c66486d68229531434cc531965bc6113d65f1ab72c84a067086d8faf7d056fd39eea3579481b52429429b3e7a5", - "87855a00848b15190682b4dfc86db832629c6e2803ab91527c5cd8810a2c5b32ea87d4a5c0bb7d3a746503c3627daada03362004c8045bcf0e9e899f7dd3138b371b37ae5eedeeef34211f2eeaef849ede1db740467d321da1e87f0ac9058394" - ], - [ - "calmante golfe enjoar veludo trova tigela nivelar canguru couve lontra esfumado errata global bobagem hino vigente secular trilogia abrigar libido sugador imprensa entidade hiato", - "11be4189327d63f3ec9e37c63bb2235b038a8d4b24ca306de8863e489f43d4f8", - "b1e3d5fc733a2570b627810de43a24dc60a5d127485162860118ec495777c6dd3dfb0abe1831b776389e80c948fad23a", - "b3025302f3af43e3675a140747c9c0202a03ae4f1292aafe33a29e78277dd49070f45be06906e6330500ddaa03b33e1f0aba67494e24f3570ab7189373be412536098f831095fd58ba18d73ba635a3e0afeb6ecc110b4dfea323607476727f64" - ], - [ - "janeiro barulho patente loteria carneiro picado cinto ficar remendo decalque queda ideia dueto saliva testado limoeiro sono geologia errata sabor artigo pescado caneta acervo", - "022dedd507fe6585cf64f44327e9c41104f8cdb88bd63b1f8fc274665aa47f13", - "8b83cf444d4d5147ea792f4f069a26003c6b09df845d55509f610fa3b401c2f479311d04155d912d233e49c2ac510194", - "9432734faa08fe4f968226a0d170c6cbb835e8dc654f0092812314314ccf398fff90e39aeea643fdd2506bd8476451d6112e96a5584b4d449d0e8727dbe64a48d3853ffef2219d21f6669c669ba6498d8088e12d3c93f4a44f53d79d2ec8c043" - ] + { + "mnemonic": "empurrar jangada bajular cratera imenso hidratar prensar outono oriental pires carreira tamborim amolador mexer tinteiro produto tenente pedestre advogado rupestre grelhar populoso indutor igreja", + "validatorPrivateKey": "6cd1e26fe4b60cdacec4fbbf4a69be53084ac1bf776f982d5bc3b5ddb1191620", + "validatorPublicKey": "0x855fb0ffd9d7c8d97c94093eaba87e31a9ee496a2234c02448d6b2004958306c1d5b9582adc1f982f4ea931569af460e", + "validatorPop": "0xa2e75834a16c982391bd423ecd3985eeac8e368507e6038fee8ec8191fe97269e0db822660dd70e353bf960c5fc320d61059366e2d16e2a2a2d9c271026030dec6af4e29f8c446f60b637c33fa7e7322cc6e2a0683831aad96ea37165e4a9bc1" + }, + { + "mnemonic": "damasco visto duelar cruzeiro repleto avulso esteira magreza quimono esfumado sono guarani prece pasmo enfeite atarefar selvagem vigorar vestido sinal foguete silicone apanhado focal", + "validatorPrivateKey": "5343c9ca5f432b8adb57295480e40e2768ee81ac4bed1c00003314cae960f9a7", + "validatorPublicKey": "0x80ec1e2fe666acc1fb58727f71ca59599cf7444266d953de513c893bb242854c72b615bfd7335cc621963f57a62c739f", + "validatorPop": "0xadb86bf20d58a9930dac234b49104f51fcdf4264bd504ed7afc735a89830fa3d0590e5255631938af8944d094e16d79e0a514f33c1eee477d377289bc11280c9c12805839b47467b36e1a1cc48e6ab75f2e6d5b0016e9a05b43827acd490f788" + }, + { + "mnemonic": "medida genoma solda deboche corvo lucidez ciente genoma papelada muralha atracar expandir honesto guiar donativo careca surdina pantanal carbono vigorar triplo toxina peculiar piranha", + "validatorPrivateKey": "0206938e176266422b3c1f21c904e707653f299e516482717ef5f0e566a19ae8", + "validatorPublicKey": "0xb0665a81085b96a6c0c459e5dab927a49878c18aaa6e7086efcaeb6f53c5590636d2b41c0834af4884ddc5afc6d9c5c8", + "validatorPop": "0xa828d7b90866bb764113b4b669d71328225250d21725b7c4942500c41b41367418511b0dbbc86b17baa171552e218fdf01740d3f1a9fb608dfe42c3a456d85dd588f8b29eeb45440348e4d0b29d31b239383d607a3f4df0ce99bba8053f9be41" + }, + { + "mnemonic": "firmeza bovino captador sovado roncar pupilo gralha raiva edital relativo voar ventre censo ilustrar aclive membro negativa copeiro copiador patamar incenso sozinho chover refogar", + "validatorPrivateKey": "71195017204610b004b5030d0cee33ac0c7d0bd95b33d89f93c7b61746812936", + "validatorPublicKey": "0x813c929f451a522de69e36ff7e94ca3c6d34123e3050110e1a47a215e0beeae8e0eaf438a5dc8851f0a748c4587821b8", + "validatorPop": "0xb486b3bd7e6ef57a186b798dbb446e3102fdc396a98b18acad0d2b31eb957925c3b067511755ebedd5705a1ed3fa28ad1883be3d9511f7a691d3e5672590ad665e838968cc0c2f6ba28204683eb1719833fa84cd2e90c6b5eae6fea8b9adfdfa" + }, + { + "mnemonic": "abaixo louvar navio matutar duelar cirurgia notar infrator noiva esponja afastar moqueca viveiro envergar litoral tijolo coquetel arara ambiente germinar emulador enlatar esfolar veicular", + "validatorPrivateKey": "2d5aa4d2cbfc4c85f889a55b7be68b5d36c7c3d5a960509fa6b809bd319c4a87", + "validatorPublicKey": "0xa4670f07064f089d9157197cb6357bd58f099ba81db516cbb8e3642e433e529de843937896463845d615edf009223c4b", + "validatorPop": "0xa23094dce8e0af71a400344cfa63fd46735e9db1ca7bd0a0ec034ae1313dbba15f59cb21728852b07f4c956af2982db6116ea39de2e4db3500684f4d822859ab9ee55d6ed84da54e8c5b4fcb20f70fe431fecf0d414cfbd1bcc66516438d1acc" + } ], "english": [ - [ - "ring dial addict filter frequent kiss service wheat once body pet parent run obscure flat enroll snake casino grocery sustain caught course reform system", - "6effd99803ace32ccc4c723fc613378ec12c8a312d38ecc1cdb13628f84c6502", - "aba2cac749a29680e3b797c46a045a4abd2d620c94116aa0ac02fcc00f45d94be07f236e0f4f5c255ab80af770ac9b55", - "b6e81aed6798769fe066d6de64d732907016bad169106a08a21c9906dd0848415ef3c2040e2ca4c4e64b62c043dd34ef0937021e18acf7fc46657df6ad832a41503c2450283dab0a5ab824eeb0b93fbe4f60253770fdbbd77c0adc894f14ba54" - ], - [ - "soccer engage scissors deny wonder surprise figure vast absent crowd evidence rain duck foil sport list abuse donkey sail air cereal gallery vessel miracle", - "67fc9578aee0ac04c0d195e89b2faa68def770f4c6362f2c570bcc0e206c5e43", - "a6d06668b357e97a07372f4be80e24af3467a9088bb2e6c4b420241a69f5863286329239bd3acfcc778ef501d903f9f7", - "a3121f81b084d8350ed318107e832e080d29180b321b8f2978994a336854e01c1b644c180cab52cd1831fd5d6ad3213d03f78e711382e5300fbdb82d3bbc48466931d89f5ecddf65567657494a0faa4e48a31fe259070ae3f6e279af140fb433" - ], - [ - "jealous sail enhance mimic demise thumb pig cargo coil elevator better scan ring rib cause eye sun tube elevator wonder employ hold chimney pill", - "460d2ea780a564a16b474be68974e656231d85e561e90550f0117acafe2bd305", - "b044f0f1ebb1c4ba832f946fc0ee232dd6c8506459219056e7cc6b05ac41bcd1a51019cf6108be7370a80b4e5b96340d", - "b5ef5002297cda57dfceceaec30ad51d6931786c5d505f5f147f1a92c4edec47f151da272547210203adc0e8ec9ad1c70c47b6d7be336a9915c318d02281a0e5ede3902f2f025597b35a18bc978fb0a383ac8b1117fe3fa70c01c0946d128e4f" - ], - [ - "age eight left cruise deal combine combine letter poverty voice thumb tooth ramp age enlist pave lunar nice allow sugar talk spider labor frequent", - "5f83f4a497e501abefc97d7577ef380e542bf6b984c4a30e9244aa6078b686b0", - "93ad4e345789b51f5c11ead839cd309dde1694ad82ea1a860e3d6c4437acc496669fd20ff5a9226821a0de492ab27978", - "b48c07816cecffd6d1aa47f99287f66e71356cd55019ddbdb7d55e9efaa576b7872feaee17b6033725001f1ccac80a6f0ab1ff54b65dee440b07fcd02572c63cc5a9d1b24216c327499c58d61698cd263cc065b02ad30add39fbd254d0a57d94" - ], - [ - "inherit bench bulb crime clarify category glad civil thought reflect cute nothing hedgehog square bike antique mango dizzy swamp pelican only hint margin equal", - "5a1b2b55eb01aaeafb1b27adebeaa7ab97a5581240f7b682e309e77f5ddda676", - "8898a1f93c547ab67a147ed55992c7bcd24d1a4fe8421160ef7ea7b102303c358809a729c222495b1b25ddebbc981df1", - "935cd97384897400687482a71af7a3c1d379618bf366ed25fbac9980a45b2cd6de3d13d31a454177535775d44bb13fb60be663e63da196e8f5719066eb964648077e03019cf3e40cd91954140262254575a9c32cb86b201fc1109bdea14ada1c" - ] + { + "mnemonic": "know blame layer barrel achieve wrap crystal attack mystery manual fragile decline grab tennis model lift hen slush memory wear hobby soup major fluid", + "validatorPrivateKey": "16c24bbc9fb2741f47a7ed5f37aeb59ef9444fbadaa3008eecb7964659899099", + "validatorPublicKey": "0xaa52febae59e6068a1d9527733553ed9427eee40b42d5ac745371dcc4618c47f11b811cba6beed1fed575fc401a89ba4", + "validatorPop": "0xa763308ba9149bca48e7cccd6047e970c249cdaae339f355c60667497a5a803e51749c162bea375edd94574447a7396d0df9c4ef57245bc105f1c9375f79f0dfccfa8df76b9e524529bf556b17bd81e0576fbaa4806355c3629f26f47d01295d" + }, + { + "mnemonic": "device cart aware icon joke taste inject goose degree various oven menu obey ride enemy find flush ribbon orbit thank zero protect tail fresh", + "validatorPrivateKey": "13f4a2433ac8c56eafd74a242f34ab650c4756bb4ce01fd4cc79d7889777e374", + "validatorPublicKey": "0xaf835876f9a6578b6e8fd9dc811d42927eab7fd426a3094d4c98203280137117381857d4d6d083caa2dce34e98c85a91", + "validatorPop": "0x8676e292790d03a51f59fc94d86dd572c5d5c0d4ffc8beeb434e0f6e31053631b5076d02ddc544cfbf1f0d1547cf8e1c105f60afd0f9c4dcb1cd96be39259999dabeecf2b60df77ca31e0bc3b406d049ad82ef89e9bd8b4af57547150d3483a5" + }, + { + "mnemonic": "during menu novel beach project total place embrace language pumpkin bag trap survey afraid maze gorilla vast bacon hole poverty recipe treat jewel sustain", + "validatorPrivateKey": "55bff2f1883b1bbc4a34c8e145af725cf0f93da28edb11f104bd1a688872d9cb", + "validatorPublicKey": "0x95f332e9b984babbd76c2d573b6dda8c1ab44732ed078b1a9e7760925c885acb023ec9a58041f6142068320d976a2c2e", + "validatorPop": "0xaa23783e6a5a2e03d6db9fe746072fd48834bd6d06b5e22f696b58f4badd6bb9eb1feb92df67f8d0d256cca678f41a970591a9d56fc00e8ebf8866bc775af86caca7ebbbf44d98f36ffb6ffc82c866f471fea1c21c3a75ec128eb42fd4591563" + }, + { + "mnemonic": "purse wrist scissors matter blanket stumble square notice dirt bounce cross table earn hockey retreat ridge lake wage comfort truly write select buffalo place", + "validatorPrivateKey": "53b0a649d988a38e074596a052a613abd35ca3b0c8dd98d6da4e4765162933f3", + "validatorPublicKey": "0xb92f8b7a2c83a9a508039e98caa647f17ef42585b8140b8e2b542b5c32806730e03402d767b2e19f629b90981f6a1020", + "validatorPop": "0xb0349a73f2cf56dae41d5b72b2136926c988b43fb3dd89de7248b74eb1ed0463b06de3f7c6bb367b734c0360022946261763c43f7817ab34dc25e043c2209993f1d47495a324c01bc7fb783388dd984be955937ba150cb07c555c1d3529d036f" + }, + { + "mnemonic": "salmon bunker faint disagree cruise spin soon spider number pudding drift super behind melody slot top leopard odor cheese tomato roof wonder off filter", + "validatorPrivateKey": "3e12e7627f215132fd14003f996844de67f90f51ad5e5c98374f684cb77e0717", + "validatorPublicKey": "0x8253ba7a64fbea2746e04274ffbead5c19492af8fb6aecfc84a8348b8d116fb59d9e125d2e713fa73f02b1d9037ab5aa", + "validatorPop": "0xa0f8cb0113f6975a434fb1d8e30f15ad3c8d8c9a3862f648f227cb5b5d168843bbae3f3bec10f0db81d1038266891eee0e8261c5e5689098a83cdf86d5fbf3afe1eb1b511bf8c7aea224b1856940471923a223fded43919b01f44c2b85b33005" + } ] } From da808fb375ca07e83eee92dfa9cfa783d235cbc9 Mon Sep 17 00:00:00 2001 From: shahin-hq Date: Tue, 16 Jun 2026 09:57:53 +0000 Subject: [PATCH 25/27] style: resolve style guide violations --- .php-cs-fixer.cache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index f3d6d567..7ade02ec 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.3.6","version":"3.95.1:v3.95.1#a9727678fbd12997f1d9de8f4a37824ed9df1065","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"ruleCustomisationPolicyVersion":"null-policy","hashes":{"src\/Binary\/Hex\/Writer.php":"590df3f3343c052d96d3cbbeb317f265","src\/Binary\/Buffer\/Writer\/Buffer.php":"80ab7029c26d83449a3529f4cee7a648","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"320937c99c2d66a2fe5c97396a994921","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"1f80863a79db7a412ed78fd647ff1cdf","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"2ffba9fbbc552cb15166b7c47e22cd0e","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"76f295b93cc3d1327bf799f57d5a978c","src\/Binary\/Buffer\/Reader\/Buffer.php":"ec09343504cca539cf6bf91aace82464","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3442407232a6093352c8e2b3146169f5","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"978f791a745c7b99d81032ef7f182558","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"6a2f2ea4c5839184a7715dc633a504bd","src\/Exceptions\/InvalidUsernameException.php":"d392da166f80b3be9bdf4ba13d1e7b89","src\/Helpers.php":"90816e6ab5e44ebcb4c31770b610fa3b","src\/Enums\/ContractAbiType.php":"6aeea79e287ad76d65dc4ad0fcdf10eb","src\/Enums\/AbiFunction.php":"ca8f4371bfc820c483514dfacc41159b","src\/Enums\/ContractAddresses.php":"31d97083e3ea21957e65ff4f5a5e7368","src\/Identities\/Address.php":"83f02a9f2e101ce9ed1748bd3c0a0aab","src\/Identities\/PrivateKey.php":"a4bd870539d13f97a21e714608310804","src\/Identities\/WIF.php":"60dd95da09bb6c240acd02cd3f52a6b8","src\/Identities\/PublicKey.php":"2deb4baddcc512f012a06ce5f3b39387","src\/Binary\/Hex\/Reader.php":"e28448b92fadb2979e1db484a6afca8d","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"169cc84b5e39930c7e168d7bdbbcd37d","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"ba4ebf613b130f41b0a531dbd07c43c5","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"6f717766d8775b349f0e474902f66511","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"f3797170755677f4776f1cefbda60cb6","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"68a9620949ef00f0b9676f2a1433d849","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"f3cc0a816b6e9469740bf59575363516","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"17238cbe09b4b870fa66b5704709f18e","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"9fa6cb50cebf03b7bf00e3b5337d9873","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"056b5c5b629a9fd0231becaded2f6973","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"3d29cc54a05f7c6a02973e5618f821ae","src\/Utils\/RlpEncoder.php":"3f12a6053f27f931d0fabbfb91e1a7cf","src\/Utils\/TransactionUtils.php":"6e5ec26cbe4b2125c59a37331083173a","src\/Utils\/TransactionTypeIdentifier.php":"b89b96a26412691b042f4b2f1586a01f","src\/Utils\/Abi\/ArgumentDecoder.php":"6430cb971aa8e5927b62270afdec0af6","src\/Utils\/UnitConverter.php":"d716c75d97fb21408dd1b2d86d18c75d","src\/Utils\/TransactionEncoder.php":"439eaab92539814629cd8e216634a937","src\/Utils\/AbiEncoder.php":"e0edf2b073a0b0efe07896731846535c","src\/ByteBuffer\/LengthMap.php":"2f62d17297dc7387a39466df38b8649b","src\/ByteBuffer\/Concerns\/Transformable.php":"3d1f8aa43854c9417538e51dfdcd106f","src\/ByteBuffer\/Concerns\/Positionable.php":"86e5bc94fc7389aed28ba6fec9d7d2c2","src\/Binary\/Integer\/Reader.php":"fbe1a1af3821a1c2ee79e996a254ef2a","src\/Binary\/Integer\/Writer.php":"e6dbdb22282670b0547c66202cf25abf","src\/Binary\/UnsignedInteger\/Reader.php":"e9d87277e9f0e8cd6f3a63b6caa95ad2","src\/Binary\/UnsignedInteger\/Writer.php":"c0443907d9a5c9b2c027eca99ae775f5","src\/Utils\/Address.php":"410b85d6c0ba3764293463b48c03da91","src\/Utils\/AbiBase.php":"772be753e59f052101bc7616ecc2ca6d","src\/Utils\/RlpDecoder.php":"3fbea35725a5194184db4c650239418c","src\/Utils\/AbiDecoder.php":"8bfbd3752176ffb1a2321f72f4f01dff","src\/Utils\/Slot.php":"9674e711b193645b0b769514ab1d5907","src\/Utils\/Message.php":"6dc3cf7e0fe73c86d1eaa54ae0052ce7","src\/ByteBuffer\/Concerns\/Initialisable.php":"96a9455179a83ec00139d937bcd58626","src\/ByteBuffer\/Concerns\/Sizeable.php":"6b03f909020b0d15bc4c35256d85c896","src\/ByteBuffer\/Concerns\/Offsetable.php":"68179b59de54fe5a6233eb7111f6dc79","src\/ByteBuffer\/Concerns\/Readable.php":"518d72f8d0f926461b3248336640abae","src\/ByteBuffer\/Concerns\/Writeable.php":"6970a6fb60370c572f3a3febe6c3df09","src\/ByteBuffer\/ByteBuffer.php":"466a031832de383903af0251fc88be93","src\/ByteBuffer\/ByteOrder.php":"36dff8aac67cf33c653ba15e906e2680","src\/Transactions\/Builder\/EvmCallBuilder.php":"60eeff1cdc6dc59528d216db71211e49","src\/Transactions\/Builder\/TransferBuilder.php":"96ff6d1443e60e6c7ae5a37ed400a62f","src\/Transactions\/Builder\/ValidatorResignationBuilder.php":"ca8561048ac8aa2a0d623b7c327a0afd","src\/Transactions\/Builder\/UsernameRegistrationBuilder.php":"c9bb1a7376cadda5152abd5e46f0be8c","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"c984b9b1efeb4b7e389e9b01a24b5628","src\/Transactions\/Builder\/TokenTransferBuilder.php":"5a48ac7df4a614009c4b063343157ee0","src\/Transactions\/Builder\/UnvoteBuilder.php":"a37b3c38a9ce5f663579e3ce28e16ff3","src\/Transactions\/Builder\/TokenApproveBuilder.php":"c95653c20511eb4e9ba309260491a34d","src\/Transactions\/Builder\/UsernameResignationBuilder.php":"44ddc136b094777b3fb105fef647db11","src\/Transactions\/Builder\/MultipaymentBuilder.php":"562c803fa9e19a6873951f7cd1bad1c8","src\/Transactions\/Builder\/VoteBuilder.php":"02426dd1b4042447e25a64eb78188fb7","src\/Transactions\/Builder\/ValidatorRegistrationBuilder.php":"306d0ae7b7b9c49660711707e22a95f1","src\/Transactions\/Types\/UsernameRegistration.php":"485b52c32da8b62826617708f3b4a6ec","src\/Transactions\/Types\/Vote.php":"90972b6a028a7652351655a1c1b08b34","src\/Transactions\/Types\/Multipayment.php":"b10ca169d3d37058ad7b940b48d11a8a","src\/Transactions\/Types\/EvmCall.php":"df3aa5b419b200b9eac9d5fc87d240c8","src\/Transactions\/Types\/ValidatorResignation.php":"090882c106dfa298a956bd8eeb49c447","src\/Transactions\/Types\/AbstractTransaction.php":"60222b9229ae21c646b2e30cc38b6871","src\/Transactions\/Types\/Transfer.php":"4d3a16aa308ccf80758b212eca33b669","src\/Transactions\/Types\/ValidatorRegistration.php":"676a366a714e258742b5d0bac8927ebc","src\/Transactions\/Types\/Unvote.php":"56b3c9b921f038639f4eac0d6239e437","src\/Transactions\/Types\/UsernameResignation.php":"68848e1cd4b4d341aa7ff831481ffe31","src\/Transactions\/Serializer.php":"54487af37809b3c134efdce4e26ed1b2","src\/Networks\/Mainnet.php":"3acffe72b51707db16ad4b1a78f050b1","src\/Networks\/AbstractNetwork.php":"5b1cb5aa9830faf93a7f68023614dc1c","src\/Networks\/Testnet.php":"60f72744f4691e2da852b66e9d85a5f0","tests\/Unit\/HelpersTest.php":"40826b23445858a4968985a8c27a7da0","tests\/Unit\/Enums\/AbiFunctionTest.php":"d9ff7604b7be95adad992489c7b0f3dc","tests\/Unit\/Identities\/PrivateKeyTest.php":"19275c459ca01885ae4bf73ffcbecd33","tests\/Unit\/Identities\/PublicKeyTest.php":"e406835540aa170e6e27d24a2a36c09a","tests\/Unit\/Identities\/AddressTest.php":"0e0b7cfefdec532df286f52ce9ddee0f","tests\/Unit\/Identities\/WIFTest.php":"5619ab75730edbb32603355767e5ff70","tests\/Unit\/Binary\/Hex\/WriterTest.php":"85dad01bc8693af66bc55c40a2e603c5","tests\/Unit\/Binary\/Hex\/ReaderTest.php":"f179cd6f729f0d866518038803446228","tests\/Unit\/Binary\/Buffer\/Writer\/BufferTest.php":"6372984efaf7d2a378a7c2ebc3019f3a","tests\/Unit\/Binary\/Buffer\/Reader\/BufferTest.php":"6c6996473bf7c7d8592e3639f5326dda","tests\/Unit\/Binary\/Integer\/WriterTest.php":"64a1f07dc16c4faf2c06a3e5092a107d","tests\/Unit\/Binary\/Integer\/ReaderTest.php":"599fef4860548866a39f64e3dbb44e7d","tests\/Unit\/Binary\/UnsignedInteger\/WriterTest.php":"c10138f97a2b9f34c80d6feae77e77cc","tests\/Unit\/Binary\/UnsignedInteger\/ReaderTest.php":"c88736b794a6320cae58e6554b2cd8bc","tests\/Unit\/Utils\/TransactionEncoderTest.php":"05a4891b1879354a9d69a8bc1b5cb827","tests\/Unit\/Utils\/TransactionUtilsTest.php":"01a1855eacb299b74a997d7dd5987774","tests\/Unit\/Utils\/AddressTest.php":"e2851e599dd5b442cbe83e9c1f28e4b9","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"d1a553d36f3fec95b857c839e2d834cb","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"e5124461e7a97a3e2d78e5b6f5469991","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"1abfe709a9e787f7b4e4718d5af0e65c","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"4f2ed9775cd92f3d136d9d6b1cd8f25c","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"9b45e3276289bb0c44faf94326d6ff76","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"6f591e8733550f1ad0d231f7809ad0a5","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"3b113ff1f80a9e15ab7af1a29161259b","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"01aa9304919af4fa3fa6aaef2f897679","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"cddc6997c7daf4c494b7a65b22823bc3","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"e4d5200763a77c3993047247d59b3488","tests\/Unit\/Utils\/AbiEncoderTest.php":"8e9601a7576c4e0590f9508267464ff6","tests\/Unit\/Utils\/RlpEncoderTest.php":"6710ec96e9603dbe073181e095674027","tests\/Unit\/Utils\/UnitConverterTest.php":"b4dfb4b2bdeac414b9c85b35a8e09d8c","tests\/Unit\/Utils\/AbiDecoderTest.php":"aff7a7433e0b9b27b4b3f724609968a3","tests\/Unit\/Utils\/SlotTest.php":"ed89ae0182409d977a4faab9ca1eea95","tests\/Unit\/Utils\/RlpDecoderTest.php":"12f50e696926077dbbc1f005cbae2ef2","tests\/Unit\/Utils\/TransactionTypeIdentifierTest.php":"f7ecc6168bdbf6b4223e0eb3b9da7a91","tests\/Unit\/Utils\/MessageTest.php":"71efee57f29dceda4e36e133169c5683","tests\/Unit\/Utils\/Abi\/ArgumentDecoderTest.php":"9e1fda36ecf2cde01b7db5c85658bc24","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"34237362a8d54d9c4d1610d59fedf7f8","src\/Transactions\/Deserializer.php":"5d77b8f779a3485de6caf6a08d4d5f3b","src\/Configuration\/Network.php":"d908336264d1b5c789e42fe7ba0cfe2c","src\/BLS\/HashToCurve\/G2HashToCurve.php":"104f044fbd0bfc2d871412caf6284306","src\/BLS\/ProofOfPossession.php":"f27d847ffcb5db3d5179367adadcb018","src\/BLS\/Fields\/Fp2.php":"7685c72b29900bef127170b812134086","src\/BLS\/Fields\/Fp.php":"415f741a7ae6e45436e54f3258b95363","src\/BLS\/EIP2333.php":"8ae983f54821a7d04a215ab109f240d8","src\/BLS\/Curves\/G2.php":"69e7f11b35b6f66c22265d1242b4cbed","src\/BLS\/Curves\/G1.php":"7dc863fe9fc87415120143b23bf3172b","src\/Networks\/NetworkInterface.php":"b0aff2a147eb231da8cee50012841830","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"344d7500a1776339f787c9f56be5b580","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"6230c022bbcada03e9e336e532b34b55","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"10004a8bf4ed76dc108dd5ae3db7596d","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"6888874a372bccc480c2c7ebee35c4cf","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"f9e38c617dea3bb087550a78fa333d2c","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"7e8c04fdf23a09c06c3c77aa7dfb037a","tests\/Unit\/Transactions\/Builder\/TokenApproveBuilderTest.php":"eefe09a0b5c68542c7a33d3c2250b94b","tests\/Unit\/Transactions\/Builder\/TransferBuilderTest.php":"90a7ca6fed95fde81fc4f0d053264003","tests\/Unit\/Transactions\/Builder\/ValidatorResignationBuilderTest.php":"c744298864255a9851f85878c91fd5a6","tests\/Unit\/Transactions\/Builder\/UsernameResignationBuilderTest.php":"c3443fe93b7b10b85f33b6e3e5b6477a","tests\/Unit\/Transactions\/Builder\/TokenTransferBuilderTest.php":"d0afe43a3065f8f6c279deb940930ef5","tests\/Unit\/Transactions\/Builder\/UnvoteBuilderTest.php":"eed8e8215db82abd4a5c2994453b9772","tests\/Unit\/Transactions\/Builder\/MultipaymentBuilderTest.php":"f6aded1988aacb3c15a70885340e08f7","tests\/Unit\/Transactions\/Builder\/EvmCallBuilderTest.php":"1d95fae15d239d2eea1ab245609397da","tests\/Unit\/Transactions\/Builder\/ValidatorRegistrationBuilderTest.php":"444cfc7a77f402d135bc0f5ac7d6d6a5","tests\/Unit\/Transactions\/Builder\/UsernameRegistrationBuilderTest.php":"baba0df21fdb5fdedf41084b35c02cb9","tests\/Unit\/Transactions\/Builder\/VoteBuilderTest.php":"d3ec709c1e626422fa8a86eb833ae0ea","tests\/Unit\/Transactions\/Types\/TransferTest.php":"71110444ac25ca571c6dc6f855625c13","tests\/Unit\/Transactions\/Types\/ValidatorResignationTest.php":"1817a13685810de64b15df1630b11e5d","tests\/Unit\/Transactions\/Types\/EvmCallTest.php":"b37cff6589fa63bc43a196626853c208","tests\/Analysis\/AnalysisTest.php":"3dd50256922f683ee5ac773e20397598","tests\/Unit\/BLS\/EIP2333Test.php":"a7cbb6d601453304110e6e429ba9488b","tests\/Unit\/BLS\/ProofOfPossessionTest.php":"95f666afb1e41a4160158a54cf972763","tests\/Unit\/Networks\/MainnetTest.php":"372a7750ae834599a0088b09a4fac760","tests\/Unit\/Networks\/TestnetTest.php":"c8dba3e353c84037c78d558548760872","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/TestCase.php":"4133b24901762dc409bb9a111c8c4853","tests\/Concerns\/Serialize.php":"5011734a689b042840e8c277c42b9a36","tests\/Concerns\/Deserialize.php":"d59555dc433a75a3e75d4483219c5e41","tests\/Concerns\/Fixtures.php":"db5b42eaf5cf381b51f8440c66669efd","tests\/Unit\/Transactions\/Types\/UnvoteTest.php":"9b57057eb1b0c17e7c783506a96c287a","tests\/Unit\/Transactions\/Types\/ValidatorRegistrationTest.php":"7b8b5c37a358ed4958a9950ca559df6e","tests\/Unit\/Transactions\/Types\/MultipaymentTest.php":"27d691ef2e4da83f8f4ff09e4c31c702","tests\/Unit\/Transactions\/Types\/UsernameRegistrationTest.php":"b5200bbac887cdbafd894d1883a593eb","tests\/Unit\/Transactions\/Types\/UsernameResignationTest.php":"69477c3478261dfdf7d4fe4eb96e0cd6","tests\/Unit\/Transactions\/Types\/VoteTest.php":"f87adb812093d3b257edae1778428c3a","tests\/Unit\/Transactions\/DeserializerTest.php":"c69a20d6f44306c0f6c136d0c6dc322a","tests\/Unit\/Transactions\/TransactionTest.php":"251c1ec6920f5aed952bfb1297ef1b1f","tests\/Unit\/Transactions\/SerializerTest.php":"6bef82d199db0b3991c9004f55074879","tests\/Unit\/Configuration\/NetworkTest.php":"fda057f8eb08ceb6c89e26e44b1acba1"}} \ No newline at end of file +{"php":"8.3.6","version":"3.95.1:v3.95.1#a9727678fbd12997f1d9de8f4a37824ed9df1065","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"ruleCustomisationPolicyVersion":"null-policy","hashes":{"src\/Binary\/Hex\/Writer.php":"590df3f3343c052d96d3cbbeb317f265","src\/Binary\/Buffer\/Writer\/Buffer.php":"80ab7029c26d83449a3529f4cee7a648","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"320937c99c2d66a2fe5c97396a994921","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"1f80863a79db7a412ed78fd647ff1cdf","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"2ffba9fbbc552cb15166b7c47e22cd0e","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"76f295b93cc3d1327bf799f57d5a978c","src\/Binary\/Buffer\/Reader\/Buffer.php":"ec09343504cca539cf6bf91aace82464","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3442407232a6093352c8e2b3146169f5","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"978f791a745c7b99d81032ef7f182558","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"6a2f2ea4c5839184a7715dc633a504bd","src\/Exceptions\/InvalidUsernameException.php":"d392da166f80b3be9bdf4ba13d1e7b89","src\/Helpers.php":"90816e6ab5e44ebcb4c31770b610fa3b","src\/Enums\/ContractAbiType.php":"6aeea79e287ad76d65dc4ad0fcdf10eb","src\/Enums\/AbiFunction.php":"07ae22bd4ede5b6e9f83eb49a1bbd463","src\/Enums\/ContractAddresses.php":"06e2508d6640ce4572565eadbd390a20","src\/Identities\/Address.php":"83f02a9f2e101ce9ed1748bd3c0a0aab","src\/Identities\/PrivateKey.php":"a4bd870539d13f97a21e714608310804","src\/Identities\/WIF.php":"60dd95da09bb6c240acd02cd3f52a6b8","src\/Identities\/PublicKey.php":"2deb4baddcc512f012a06ce5f3b39387","src\/Binary\/Hex\/Reader.php":"e28448b92fadb2979e1db484a6afca8d","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"169cc84b5e39930c7e168d7bdbbcd37d","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"ba4ebf613b130f41b0a531dbd07c43c5","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"6f717766d8775b349f0e474902f66511","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"f3797170755677f4776f1cefbda60cb6","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"68a9620949ef00f0b9676f2a1433d849","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"f3cc0a816b6e9469740bf59575363516","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"17238cbe09b4b870fa66b5704709f18e","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"9fa6cb50cebf03b7bf00e3b5337d9873","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"056b5c5b629a9fd0231becaded2f6973","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"3d29cc54a05f7c6a02973e5618f821ae","src\/Utils\/RlpEncoder.php":"3f12a6053f27f931d0fabbfb91e1a7cf","src\/Utils\/TransactionUtils.php":"6e5ec26cbe4b2125c59a37331083173a","src\/Utils\/TransactionTypeIdentifier.php":"b89b96a26412691b042f4b2f1586a01f","src\/Utils\/Abi\/ArgumentDecoder.php":"6430cb971aa8e5927b62270afdec0af6","src\/Utils\/UnitConverter.php":"d716c75d97fb21408dd1b2d86d18c75d","src\/Utils\/TransactionEncoder.php":"439eaab92539814629cd8e216634a937","src\/Utils\/AbiEncoder.php":"e0edf2b073a0b0efe07896731846535c","src\/ByteBuffer\/LengthMap.php":"2f62d17297dc7387a39466df38b8649b","src\/ByteBuffer\/Concerns\/Transformable.php":"3d1f8aa43854c9417538e51dfdcd106f","src\/ByteBuffer\/Concerns\/Positionable.php":"86e5bc94fc7389aed28ba6fec9d7d2c2","src\/Binary\/Integer\/Reader.php":"fbe1a1af3821a1c2ee79e996a254ef2a","src\/Binary\/Integer\/Writer.php":"e6dbdb22282670b0547c66202cf25abf","src\/Binary\/UnsignedInteger\/Reader.php":"e9d87277e9f0e8cd6f3a63b6caa95ad2","src\/Binary\/UnsignedInteger\/Writer.php":"c0443907d9a5c9b2c027eca99ae775f5","src\/Utils\/Address.php":"410b85d6c0ba3764293463b48c03da91","src\/Utils\/AbiBase.php":"772be753e59f052101bc7616ecc2ca6d","src\/Utils\/RlpDecoder.php":"3fbea35725a5194184db4c650239418c","src\/Utils\/AbiDecoder.php":"8bfbd3752176ffb1a2321f72f4f01dff","src\/Utils\/Slot.php":"9674e711b193645b0b769514ab1d5907","src\/Utils\/Message.php":"6dc3cf7e0fe73c86d1eaa54ae0052ce7","src\/ByteBuffer\/Concerns\/Initialisable.php":"96a9455179a83ec00139d937bcd58626","src\/ByteBuffer\/Concerns\/Sizeable.php":"6b03f909020b0d15bc4c35256d85c896","src\/ByteBuffer\/Concerns\/Offsetable.php":"68179b59de54fe5a6233eb7111f6dc79","src\/ByteBuffer\/Concerns\/Readable.php":"518d72f8d0f926461b3248336640abae","src\/ByteBuffer\/Concerns\/Writeable.php":"6970a6fb60370c572f3a3febe6c3df09","src\/ByteBuffer\/ByteBuffer.php":"466a031832de383903af0251fc88be93","src\/ByteBuffer\/ByteOrder.php":"36dff8aac67cf33c653ba15e906e2680","src\/Transactions\/Builder\/EvmCallBuilder.php":"60eeff1cdc6dc59528d216db71211e49","src\/Transactions\/Builder\/TransferBuilder.php":"96ff6d1443e60e6c7ae5a37ed400a62f","src\/Transactions\/Builder\/ValidatorResignationBuilder.php":"ca8561048ac8aa2a0d623b7c327a0afd","src\/Transactions\/Builder\/UsernameRegistrationBuilder.php":"c9bb1a7376cadda5152abd5e46f0be8c","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"c984b9b1efeb4b7e389e9b01a24b5628","src\/Transactions\/Builder\/TokenTransferBuilder.php":"5a48ac7df4a614009c4b063343157ee0","src\/Transactions\/Builder\/UnvoteBuilder.php":"a37b3c38a9ce5f663579e3ce28e16ff3","src\/Transactions\/Builder\/TokenApproveBuilder.php":"c95653c20511eb4e9ba309260491a34d","src\/Transactions\/Builder\/UsernameResignationBuilder.php":"44ddc136b094777b3fb105fef647db11","src\/Transactions\/Builder\/MultipaymentBuilder.php":"562c803fa9e19a6873951f7cd1bad1c8","src\/Transactions\/Builder\/VoteBuilder.php":"02426dd1b4042447e25a64eb78188fb7","src\/Transactions\/Builder\/ValidatorRegistrationBuilder.php":"306d0ae7b7b9c49660711707e22a95f1","src\/Transactions\/Types\/UsernameRegistration.php":"485b52c32da8b62826617708f3b4a6ec","src\/Transactions\/Types\/Vote.php":"90972b6a028a7652351655a1c1b08b34","src\/Transactions\/Types\/Multipayment.php":"b10ca169d3d37058ad7b940b48d11a8a","src\/Transactions\/Types\/EvmCall.php":"df3aa5b419b200b9eac9d5fc87d240c8","src\/Transactions\/Types\/ValidatorResignation.php":"090882c106dfa298a956bd8eeb49c447","src\/Transactions\/Types\/AbstractTransaction.php":"60222b9229ae21c646b2e30cc38b6871","src\/Transactions\/Types\/Transfer.php":"4d3a16aa308ccf80758b212eca33b669","src\/Transactions\/Types\/ValidatorRegistration.php":"676a366a714e258742b5d0bac8927ebc","src\/Transactions\/Types\/Unvote.php":"56b3c9b921f038639f4eac0d6239e437","src\/Transactions\/Types\/UsernameResignation.php":"68848e1cd4b4d341aa7ff831481ffe31","src\/Transactions\/Serializer.php":"54487af37809b3c134efdce4e26ed1b2","src\/Networks\/Mainnet.php":"3acffe72b51707db16ad4b1a78f050b1","src\/Networks\/AbstractNetwork.php":"5b1cb5aa9830faf93a7f68023614dc1c","src\/Networks\/Testnet.php":"60f72744f4691e2da852b66e9d85a5f0","tests\/Unit\/HelpersTest.php":"40826b23445858a4968985a8c27a7da0","tests\/Unit\/Enums\/AbiFunctionTest.php":"d9ff7604b7be95adad992489c7b0f3dc","tests\/Unit\/Identities\/PrivateKeyTest.php":"19275c459ca01885ae4bf73ffcbecd33","tests\/Unit\/Identities\/PublicKeyTest.php":"e406835540aa170e6e27d24a2a36c09a","tests\/Unit\/Identities\/AddressTest.php":"0e0b7cfefdec532df286f52ce9ddee0f","tests\/Unit\/Identities\/WIFTest.php":"5619ab75730edbb32603355767e5ff70","tests\/Unit\/Binary\/Hex\/WriterTest.php":"85dad01bc8693af66bc55c40a2e603c5","tests\/Unit\/Binary\/Hex\/ReaderTest.php":"f179cd6f729f0d866518038803446228","tests\/Unit\/Binary\/Buffer\/Writer\/BufferTest.php":"6372984efaf7d2a378a7c2ebc3019f3a","tests\/Unit\/Binary\/Buffer\/Reader\/BufferTest.php":"6c6996473bf7c7d8592e3639f5326dda","tests\/Unit\/Binary\/Integer\/WriterTest.php":"64a1f07dc16c4faf2c06a3e5092a107d","tests\/Unit\/Binary\/Integer\/ReaderTest.php":"599fef4860548866a39f64e3dbb44e7d","tests\/Unit\/Binary\/UnsignedInteger\/WriterTest.php":"c10138f97a2b9f34c80d6feae77e77cc","tests\/Unit\/Binary\/UnsignedInteger\/ReaderTest.php":"c88736b794a6320cae58e6554b2cd8bc","tests\/Unit\/Utils\/TransactionEncoderTest.php":"05a4891b1879354a9d69a8bc1b5cb827","tests\/Unit\/Utils\/TransactionUtilsTest.php":"01a1855eacb299b74a997d7dd5987774","tests\/Unit\/Utils\/AddressTest.php":"e2851e599dd5b442cbe83e9c1f28e4b9","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"d1a553d36f3fec95b857c839e2d834cb","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"e5124461e7a97a3e2d78e5b6f5469991","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"1abfe709a9e787f7b4e4718d5af0e65c","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"4f2ed9775cd92f3d136d9d6b1cd8f25c","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"9b45e3276289bb0c44faf94326d6ff76","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"6f591e8733550f1ad0d231f7809ad0a5","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"3b113ff1f80a9e15ab7af1a29161259b","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"01aa9304919af4fa3fa6aaef2f897679","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"cddc6997c7daf4c494b7a65b22823bc3","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"e4d5200763a77c3993047247d59b3488","tests\/Unit\/Utils\/AbiEncoderTest.php":"8e9601a7576c4e0590f9508267464ff6","tests\/Unit\/Utils\/RlpEncoderTest.php":"6710ec96e9603dbe073181e095674027","tests\/Unit\/Utils\/UnitConverterTest.php":"b4dfb4b2bdeac414b9c85b35a8e09d8c","tests\/Unit\/Utils\/AbiDecoderTest.php":"aff7a7433e0b9b27b4b3f724609968a3","tests\/Unit\/Utils\/SlotTest.php":"ed89ae0182409d977a4faab9ca1eea95","tests\/Unit\/Utils\/RlpDecoderTest.php":"12f50e696926077dbbc1f005cbae2ef2","tests\/Unit\/Utils\/TransactionTypeIdentifierTest.php":"f7ecc6168bdbf6b4223e0eb3b9da7a91","tests\/Unit\/Utils\/MessageTest.php":"71efee57f29dceda4e36e133169c5683","tests\/Unit\/Utils\/Abi\/ArgumentDecoderTest.php":"9e1fda36ecf2cde01b7db5c85658bc24","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"34237362a8d54d9c4d1610d59fedf7f8","src\/Transactions\/Deserializer.php":"5d77b8f779a3485de6caf6a08d4d5f3b","src\/Configuration\/Network.php":"d908336264d1b5c789e42fe7ba0cfe2c","src\/BLS\/HashToCurve\/G2HashToCurve.php":"104f044fbd0bfc2d871412caf6284306","src\/BLS\/ProofOfPossession.php":"f27d847ffcb5db3d5179367adadcb018","src\/BLS\/Fields\/Fp2.php":"7685c72b29900bef127170b812134086","src\/BLS\/Fields\/Fp.php":"415f741a7ae6e45436e54f3258b95363","src\/BLS\/EIP2333.php":"8ae983f54821a7d04a215ab109f240d8","src\/BLS\/Curves\/G2.php":"69e7f11b35b6f66c22265d1242b4cbed","src\/BLS\/Curves\/G1.php":"7dc863fe9fc87415120143b23bf3172b","src\/Networks\/NetworkInterface.php":"b0aff2a147eb231da8cee50012841830","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"344d7500a1776339f787c9f56be5b580","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"6230c022bbcada03e9e336e532b34b55","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"10004a8bf4ed76dc108dd5ae3db7596d","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"6888874a372bccc480c2c7ebee35c4cf","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"f9e38c617dea3bb087550a78fa333d2c","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"7e8c04fdf23a09c06c3c77aa7dfb037a","tests\/Unit\/Transactions\/Builder\/TokenApproveBuilderTest.php":"eefe09a0b5c68542c7a33d3c2250b94b","tests\/Unit\/Transactions\/Builder\/TransferBuilderTest.php":"90a7ca6fed95fde81fc4f0d053264003","tests\/Unit\/Transactions\/Builder\/ValidatorResignationBuilderTest.php":"c744298864255a9851f85878c91fd5a6","tests\/Unit\/Transactions\/Builder\/UsernameResignationBuilderTest.php":"c3443fe93b7b10b85f33b6e3e5b6477a","tests\/Unit\/Transactions\/Builder\/TokenTransferBuilderTest.php":"d0afe43a3065f8f6c279deb940930ef5","tests\/Unit\/Transactions\/Builder\/UnvoteBuilderTest.php":"eed8e8215db82abd4a5c2994453b9772","tests\/Unit\/Transactions\/Builder\/MultipaymentBuilderTest.php":"f6aded1988aacb3c15a70885340e08f7","tests\/Unit\/Transactions\/Builder\/EvmCallBuilderTest.php":"1d95fae15d239d2eea1ab245609397da","tests\/Unit\/Transactions\/Builder\/ValidatorRegistrationBuilderTest.php":"444cfc7a77f402d135bc0f5ac7d6d6a5","tests\/Unit\/Transactions\/Builder\/UsernameRegistrationBuilderTest.php":"baba0df21fdb5fdedf41084b35c02cb9","tests\/Unit\/Transactions\/Builder\/VoteBuilderTest.php":"d3ec709c1e626422fa8a86eb833ae0ea","tests\/Unit\/Transactions\/Types\/TransferTest.php":"71110444ac25ca571c6dc6f855625c13","tests\/Unit\/Transactions\/Types\/ValidatorResignationTest.php":"1817a13685810de64b15df1630b11e5d","tests\/Unit\/Transactions\/Types\/EvmCallTest.php":"b37cff6589fa63bc43a196626853c208","tests\/Analysis\/AnalysisTest.php":"3dd50256922f683ee5ac773e20397598","tests\/Unit\/BLS\/EIP2333Test.php":"a7cbb6d601453304110e6e429ba9488b","tests\/Unit\/BLS\/ProofOfPossessionTest.php":"b45605f5ab254133f62f3b9a5da3fab0","tests\/Unit\/Networks\/MainnetTest.php":"372a7750ae834599a0088b09a4fac760","tests\/Unit\/Networks\/TestnetTest.php":"c8dba3e353c84037c78d558548760872","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/TestCase.php":"4133b24901762dc409bb9a111c8c4853","tests\/Concerns\/Serialize.php":"5011734a689b042840e8c277c42b9a36","tests\/Concerns\/Deserialize.php":"d59555dc433a75a3e75d4483219c5e41","tests\/Concerns\/Fixtures.php":"db5b42eaf5cf381b51f8440c66669efd","tests\/Unit\/Transactions\/Types\/UnvoteTest.php":"9b57057eb1b0c17e7c783506a96c287a","tests\/Unit\/Transactions\/Types\/ValidatorRegistrationTest.php":"7b8b5c37a358ed4958a9950ca559df6e","tests\/Unit\/Transactions\/Types\/MultipaymentTest.php":"27d691ef2e4da83f8f4ff09e4c31c702","tests\/Unit\/Transactions\/Types\/UsernameRegistrationTest.php":"b5200bbac887cdbafd894d1883a593eb","tests\/Unit\/Transactions\/Types\/UsernameResignationTest.php":"69477c3478261dfdf7d4fe4eb96e0cd6","tests\/Unit\/Transactions\/Types\/VoteTest.php":"f87adb812093d3b257edae1778428c3a","tests\/Unit\/Transactions\/DeserializerTest.php":"c69a20d6f44306c0f6c136d0c6dc322a","tests\/Unit\/Transactions\/TransactionTest.php":"251c1ec6920f5aed952bfb1297ef1b1f","tests\/Unit\/Transactions\/SerializerTest.php":"6bef82d199db0b3991c9004f55074879","tests\/Unit\/Configuration\/NetworkTest.php":"fda057f8eb08ceb6c89e26e44b1acba1","src\/Identities\/LegacyAddress.php":"ddad24a8b70ed876c05032137d42b56a","src\/Transactions\/Builder\/BatchTransferBuilder.php":"61667bcef4d1bbdfce39d78721dbccc6","tests\/Unit\/Identities\/LegacyAddressTest.php":"061562efb8005bac42f41899d70f6a8e","tests\/Unit\/Transactions\/Builder\/BatchTransferBuilderTest.php":"c0961fd9bb26d6d6b0f23f2999c4ac5a"}} \ No newline at end of file From 04aca8ac334aa01ba26e1f2f50b4714b00210387 Mon Sep 17 00:00:00 2001 From: Shahin Safaraliyev Date: Tue, 16 Jun 2026 14:07:54 +0400 Subject: [PATCH 26/27] feat: add BLS implementation --- tests/Unit/BLS/ProofOfPossessionTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Unit/BLS/ProofOfPossessionTest.php b/tests/Unit/BLS/ProofOfPossessionTest.php index b27c1235..7bcefd3a 100644 --- a/tests/Unit/BLS/ProofOfPossessionTest.php +++ b/tests/Unit/BLS/ProofOfPossessionTest.php @@ -97,6 +97,6 @@ expect(bin2hex(EIP2333::deriveBlsPrivateKey($mnemonic)))->toBe($expectedSk); $result = ProofOfPossession::fromMnemonic($mnemonic); - expect($result['pk'])->toBe($expectedPk) - ->and($result['pop'])->toBe($expectedPop); + expect($result['pk'])->toBe(substr($expectedPk, 2)) + ->and($result['pop'])->toBe(substr($expectedPop, 2)); })->with($blsDataset); From 4cd94bcc76d22c591e254fece26c2336c2b93402 Mon Sep 17 00:00:00 2001 From: shahin-hq Date: Tue, 16 Jun 2026 10:08:36 +0000 Subject: [PATCH 27/27] style: resolve style guide violations --- .php-cs-fixer.cache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 7ade02ec..8c415f89 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.3.6","version":"3.95.1:v3.95.1#a9727678fbd12997f1d9de8f4a37824ed9df1065","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"ruleCustomisationPolicyVersion":"null-policy","hashes":{"src\/Binary\/Hex\/Writer.php":"590df3f3343c052d96d3cbbeb317f265","src\/Binary\/Buffer\/Writer\/Buffer.php":"80ab7029c26d83449a3529f4cee7a648","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"320937c99c2d66a2fe5c97396a994921","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"1f80863a79db7a412ed78fd647ff1cdf","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"2ffba9fbbc552cb15166b7c47e22cd0e","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"76f295b93cc3d1327bf799f57d5a978c","src\/Binary\/Buffer\/Reader\/Buffer.php":"ec09343504cca539cf6bf91aace82464","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3442407232a6093352c8e2b3146169f5","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"978f791a745c7b99d81032ef7f182558","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"6a2f2ea4c5839184a7715dc633a504bd","src\/Exceptions\/InvalidUsernameException.php":"d392da166f80b3be9bdf4ba13d1e7b89","src\/Helpers.php":"90816e6ab5e44ebcb4c31770b610fa3b","src\/Enums\/ContractAbiType.php":"6aeea79e287ad76d65dc4ad0fcdf10eb","src\/Enums\/AbiFunction.php":"07ae22bd4ede5b6e9f83eb49a1bbd463","src\/Enums\/ContractAddresses.php":"06e2508d6640ce4572565eadbd390a20","src\/Identities\/Address.php":"83f02a9f2e101ce9ed1748bd3c0a0aab","src\/Identities\/PrivateKey.php":"a4bd870539d13f97a21e714608310804","src\/Identities\/WIF.php":"60dd95da09bb6c240acd02cd3f52a6b8","src\/Identities\/PublicKey.php":"2deb4baddcc512f012a06ce5f3b39387","src\/Binary\/Hex\/Reader.php":"e28448b92fadb2979e1db484a6afca8d","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"169cc84b5e39930c7e168d7bdbbcd37d","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"ba4ebf613b130f41b0a531dbd07c43c5","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"6f717766d8775b349f0e474902f66511","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"f3797170755677f4776f1cefbda60cb6","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"68a9620949ef00f0b9676f2a1433d849","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"f3cc0a816b6e9469740bf59575363516","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"17238cbe09b4b870fa66b5704709f18e","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"9fa6cb50cebf03b7bf00e3b5337d9873","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"056b5c5b629a9fd0231becaded2f6973","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"3d29cc54a05f7c6a02973e5618f821ae","src\/Utils\/RlpEncoder.php":"3f12a6053f27f931d0fabbfb91e1a7cf","src\/Utils\/TransactionUtils.php":"6e5ec26cbe4b2125c59a37331083173a","src\/Utils\/TransactionTypeIdentifier.php":"b89b96a26412691b042f4b2f1586a01f","src\/Utils\/Abi\/ArgumentDecoder.php":"6430cb971aa8e5927b62270afdec0af6","src\/Utils\/UnitConverter.php":"d716c75d97fb21408dd1b2d86d18c75d","src\/Utils\/TransactionEncoder.php":"439eaab92539814629cd8e216634a937","src\/Utils\/AbiEncoder.php":"e0edf2b073a0b0efe07896731846535c","src\/ByteBuffer\/LengthMap.php":"2f62d17297dc7387a39466df38b8649b","src\/ByteBuffer\/Concerns\/Transformable.php":"3d1f8aa43854c9417538e51dfdcd106f","src\/ByteBuffer\/Concerns\/Positionable.php":"86e5bc94fc7389aed28ba6fec9d7d2c2","src\/Binary\/Integer\/Reader.php":"fbe1a1af3821a1c2ee79e996a254ef2a","src\/Binary\/Integer\/Writer.php":"e6dbdb22282670b0547c66202cf25abf","src\/Binary\/UnsignedInteger\/Reader.php":"e9d87277e9f0e8cd6f3a63b6caa95ad2","src\/Binary\/UnsignedInteger\/Writer.php":"c0443907d9a5c9b2c027eca99ae775f5","src\/Utils\/Address.php":"410b85d6c0ba3764293463b48c03da91","src\/Utils\/AbiBase.php":"772be753e59f052101bc7616ecc2ca6d","src\/Utils\/RlpDecoder.php":"3fbea35725a5194184db4c650239418c","src\/Utils\/AbiDecoder.php":"8bfbd3752176ffb1a2321f72f4f01dff","src\/Utils\/Slot.php":"9674e711b193645b0b769514ab1d5907","src\/Utils\/Message.php":"6dc3cf7e0fe73c86d1eaa54ae0052ce7","src\/ByteBuffer\/Concerns\/Initialisable.php":"96a9455179a83ec00139d937bcd58626","src\/ByteBuffer\/Concerns\/Sizeable.php":"6b03f909020b0d15bc4c35256d85c896","src\/ByteBuffer\/Concerns\/Offsetable.php":"68179b59de54fe5a6233eb7111f6dc79","src\/ByteBuffer\/Concerns\/Readable.php":"518d72f8d0f926461b3248336640abae","src\/ByteBuffer\/Concerns\/Writeable.php":"6970a6fb60370c572f3a3febe6c3df09","src\/ByteBuffer\/ByteBuffer.php":"466a031832de383903af0251fc88be93","src\/ByteBuffer\/ByteOrder.php":"36dff8aac67cf33c653ba15e906e2680","src\/Transactions\/Builder\/EvmCallBuilder.php":"60eeff1cdc6dc59528d216db71211e49","src\/Transactions\/Builder\/TransferBuilder.php":"96ff6d1443e60e6c7ae5a37ed400a62f","src\/Transactions\/Builder\/ValidatorResignationBuilder.php":"ca8561048ac8aa2a0d623b7c327a0afd","src\/Transactions\/Builder\/UsernameRegistrationBuilder.php":"c9bb1a7376cadda5152abd5e46f0be8c","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"c984b9b1efeb4b7e389e9b01a24b5628","src\/Transactions\/Builder\/TokenTransferBuilder.php":"5a48ac7df4a614009c4b063343157ee0","src\/Transactions\/Builder\/UnvoteBuilder.php":"a37b3c38a9ce5f663579e3ce28e16ff3","src\/Transactions\/Builder\/TokenApproveBuilder.php":"c95653c20511eb4e9ba309260491a34d","src\/Transactions\/Builder\/UsernameResignationBuilder.php":"44ddc136b094777b3fb105fef647db11","src\/Transactions\/Builder\/MultipaymentBuilder.php":"562c803fa9e19a6873951f7cd1bad1c8","src\/Transactions\/Builder\/VoteBuilder.php":"02426dd1b4042447e25a64eb78188fb7","src\/Transactions\/Builder\/ValidatorRegistrationBuilder.php":"306d0ae7b7b9c49660711707e22a95f1","src\/Transactions\/Types\/UsernameRegistration.php":"485b52c32da8b62826617708f3b4a6ec","src\/Transactions\/Types\/Vote.php":"90972b6a028a7652351655a1c1b08b34","src\/Transactions\/Types\/Multipayment.php":"b10ca169d3d37058ad7b940b48d11a8a","src\/Transactions\/Types\/EvmCall.php":"df3aa5b419b200b9eac9d5fc87d240c8","src\/Transactions\/Types\/ValidatorResignation.php":"090882c106dfa298a956bd8eeb49c447","src\/Transactions\/Types\/AbstractTransaction.php":"60222b9229ae21c646b2e30cc38b6871","src\/Transactions\/Types\/Transfer.php":"4d3a16aa308ccf80758b212eca33b669","src\/Transactions\/Types\/ValidatorRegistration.php":"676a366a714e258742b5d0bac8927ebc","src\/Transactions\/Types\/Unvote.php":"56b3c9b921f038639f4eac0d6239e437","src\/Transactions\/Types\/UsernameResignation.php":"68848e1cd4b4d341aa7ff831481ffe31","src\/Transactions\/Serializer.php":"54487af37809b3c134efdce4e26ed1b2","src\/Networks\/Mainnet.php":"3acffe72b51707db16ad4b1a78f050b1","src\/Networks\/AbstractNetwork.php":"5b1cb5aa9830faf93a7f68023614dc1c","src\/Networks\/Testnet.php":"60f72744f4691e2da852b66e9d85a5f0","tests\/Unit\/HelpersTest.php":"40826b23445858a4968985a8c27a7da0","tests\/Unit\/Enums\/AbiFunctionTest.php":"d9ff7604b7be95adad992489c7b0f3dc","tests\/Unit\/Identities\/PrivateKeyTest.php":"19275c459ca01885ae4bf73ffcbecd33","tests\/Unit\/Identities\/PublicKeyTest.php":"e406835540aa170e6e27d24a2a36c09a","tests\/Unit\/Identities\/AddressTest.php":"0e0b7cfefdec532df286f52ce9ddee0f","tests\/Unit\/Identities\/WIFTest.php":"5619ab75730edbb32603355767e5ff70","tests\/Unit\/Binary\/Hex\/WriterTest.php":"85dad01bc8693af66bc55c40a2e603c5","tests\/Unit\/Binary\/Hex\/ReaderTest.php":"f179cd6f729f0d866518038803446228","tests\/Unit\/Binary\/Buffer\/Writer\/BufferTest.php":"6372984efaf7d2a378a7c2ebc3019f3a","tests\/Unit\/Binary\/Buffer\/Reader\/BufferTest.php":"6c6996473bf7c7d8592e3639f5326dda","tests\/Unit\/Binary\/Integer\/WriterTest.php":"64a1f07dc16c4faf2c06a3e5092a107d","tests\/Unit\/Binary\/Integer\/ReaderTest.php":"599fef4860548866a39f64e3dbb44e7d","tests\/Unit\/Binary\/UnsignedInteger\/WriterTest.php":"c10138f97a2b9f34c80d6feae77e77cc","tests\/Unit\/Binary\/UnsignedInteger\/ReaderTest.php":"c88736b794a6320cae58e6554b2cd8bc","tests\/Unit\/Utils\/TransactionEncoderTest.php":"05a4891b1879354a9d69a8bc1b5cb827","tests\/Unit\/Utils\/TransactionUtilsTest.php":"01a1855eacb299b74a997d7dd5987774","tests\/Unit\/Utils\/AddressTest.php":"e2851e599dd5b442cbe83e9c1f28e4b9","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"d1a553d36f3fec95b857c839e2d834cb","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"e5124461e7a97a3e2d78e5b6f5469991","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"1abfe709a9e787f7b4e4718d5af0e65c","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"4f2ed9775cd92f3d136d9d6b1cd8f25c","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"9b45e3276289bb0c44faf94326d6ff76","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"6f591e8733550f1ad0d231f7809ad0a5","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"3b113ff1f80a9e15ab7af1a29161259b","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"01aa9304919af4fa3fa6aaef2f897679","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"cddc6997c7daf4c494b7a65b22823bc3","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"e4d5200763a77c3993047247d59b3488","tests\/Unit\/Utils\/AbiEncoderTest.php":"8e9601a7576c4e0590f9508267464ff6","tests\/Unit\/Utils\/RlpEncoderTest.php":"6710ec96e9603dbe073181e095674027","tests\/Unit\/Utils\/UnitConverterTest.php":"b4dfb4b2bdeac414b9c85b35a8e09d8c","tests\/Unit\/Utils\/AbiDecoderTest.php":"aff7a7433e0b9b27b4b3f724609968a3","tests\/Unit\/Utils\/SlotTest.php":"ed89ae0182409d977a4faab9ca1eea95","tests\/Unit\/Utils\/RlpDecoderTest.php":"12f50e696926077dbbc1f005cbae2ef2","tests\/Unit\/Utils\/TransactionTypeIdentifierTest.php":"f7ecc6168bdbf6b4223e0eb3b9da7a91","tests\/Unit\/Utils\/MessageTest.php":"71efee57f29dceda4e36e133169c5683","tests\/Unit\/Utils\/Abi\/ArgumentDecoderTest.php":"9e1fda36ecf2cde01b7db5c85658bc24","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"34237362a8d54d9c4d1610d59fedf7f8","src\/Transactions\/Deserializer.php":"5d77b8f779a3485de6caf6a08d4d5f3b","src\/Configuration\/Network.php":"d908336264d1b5c789e42fe7ba0cfe2c","src\/BLS\/HashToCurve\/G2HashToCurve.php":"104f044fbd0bfc2d871412caf6284306","src\/BLS\/ProofOfPossession.php":"f27d847ffcb5db3d5179367adadcb018","src\/BLS\/Fields\/Fp2.php":"7685c72b29900bef127170b812134086","src\/BLS\/Fields\/Fp.php":"415f741a7ae6e45436e54f3258b95363","src\/BLS\/EIP2333.php":"8ae983f54821a7d04a215ab109f240d8","src\/BLS\/Curves\/G2.php":"69e7f11b35b6f66c22265d1242b4cbed","src\/BLS\/Curves\/G1.php":"7dc863fe9fc87415120143b23bf3172b","src\/Networks\/NetworkInterface.php":"b0aff2a147eb231da8cee50012841830","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"344d7500a1776339f787c9f56be5b580","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"6230c022bbcada03e9e336e532b34b55","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"10004a8bf4ed76dc108dd5ae3db7596d","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"6888874a372bccc480c2c7ebee35c4cf","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"f9e38c617dea3bb087550a78fa333d2c","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"7e8c04fdf23a09c06c3c77aa7dfb037a","tests\/Unit\/Transactions\/Builder\/TokenApproveBuilderTest.php":"eefe09a0b5c68542c7a33d3c2250b94b","tests\/Unit\/Transactions\/Builder\/TransferBuilderTest.php":"90a7ca6fed95fde81fc4f0d053264003","tests\/Unit\/Transactions\/Builder\/ValidatorResignationBuilderTest.php":"c744298864255a9851f85878c91fd5a6","tests\/Unit\/Transactions\/Builder\/UsernameResignationBuilderTest.php":"c3443fe93b7b10b85f33b6e3e5b6477a","tests\/Unit\/Transactions\/Builder\/TokenTransferBuilderTest.php":"d0afe43a3065f8f6c279deb940930ef5","tests\/Unit\/Transactions\/Builder\/UnvoteBuilderTest.php":"eed8e8215db82abd4a5c2994453b9772","tests\/Unit\/Transactions\/Builder\/MultipaymentBuilderTest.php":"f6aded1988aacb3c15a70885340e08f7","tests\/Unit\/Transactions\/Builder\/EvmCallBuilderTest.php":"1d95fae15d239d2eea1ab245609397da","tests\/Unit\/Transactions\/Builder\/ValidatorRegistrationBuilderTest.php":"444cfc7a77f402d135bc0f5ac7d6d6a5","tests\/Unit\/Transactions\/Builder\/UsernameRegistrationBuilderTest.php":"baba0df21fdb5fdedf41084b35c02cb9","tests\/Unit\/Transactions\/Builder\/VoteBuilderTest.php":"d3ec709c1e626422fa8a86eb833ae0ea","tests\/Unit\/Transactions\/Types\/TransferTest.php":"71110444ac25ca571c6dc6f855625c13","tests\/Unit\/Transactions\/Types\/ValidatorResignationTest.php":"1817a13685810de64b15df1630b11e5d","tests\/Unit\/Transactions\/Types\/EvmCallTest.php":"b37cff6589fa63bc43a196626853c208","tests\/Analysis\/AnalysisTest.php":"3dd50256922f683ee5ac773e20397598","tests\/Unit\/BLS\/EIP2333Test.php":"a7cbb6d601453304110e6e429ba9488b","tests\/Unit\/BLS\/ProofOfPossessionTest.php":"b45605f5ab254133f62f3b9a5da3fab0","tests\/Unit\/Networks\/MainnetTest.php":"372a7750ae834599a0088b09a4fac760","tests\/Unit\/Networks\/TestnetTest.php":"c8dba3e353c84037c78d558548760872","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/TestCase.php":"4133b24901762dc409bb9a111c8c4853","tests\/Concerns\/Serialize.php":"5011734a689b042840e8c277c42b9a36","tests\/Concerns\/Deserialize.php":"d59555dc433a75a3e75d4483219c5e41","tests\/Concerns\/Fixtures.php":"db5b42eaf5cf381b51f8440c66669efd","tests\/Unit\/Transactions\/Types\/UnvoteTest.php":"9b57057eb1b0c17e7c783506a96c287a","tests\/Unit\/Transactions\/Types\/ValidatorRegistrationTest.php":"7b8b5c37a358ed4958a9950ca559df6e","tests\/Unit\/Transactions\/Types\/MultipaymentTest.php":"27d691ef2e4da83f8f4ff09e4c31c702","tests\/Unit\/Transactions\/Types\/UsernameRegistrationTest.php":"b5200bbac887cdbafd894d1883a593eb","tests\/Unit\/Transactions\/Types\/UsernameResignationTest.php":"69477c3478261dfdf7d4fe4eb96e0cd6","tests\/Unit\/Transactions\/Types\/VoteTest.php":"f87adb812093d3b257edae1778428c3a","tests\/Unit\/Transactions\/DeserializerTest.php":"c69a20d6f44306c0f6c136d0c6dc322a","tests\/Unit\/Transactions\/TransactionTest.php":"251c1ec6920f5aed952bfb1297ef1b1f","tests\/Unit\/Transactions\/SerializerTest.php":"6bef82d199db0b3991c9004f55074879","tests\/Unit\/Configuration\/NetworkTest.php":"fda057f8eb08ceb6c89e26e44b1acba1","src\/Identities\/LegacyAddress.php":"ddad24a8b70ed876c05032137d42b56a","src\/Transactions\/Builder\/BatchTransferBuilder.php":"61667bcef4d1bbdfce39d78721dbccc6","tests\/Unit\/Identities\/LegacyAddressTest.php":"061562efb8005bac42f41899d70f6a8e","tests\/Unit\/Transactions\/Builder\/BatchTransferBuilderTest.php":"c0961fd9bb26d6d6b0f23f2999c4ac5a"}} \ No newline at end of file +{"php":"8.3.6","version":"3.95.1:v3.95.1#a9727678fbd12997f1d9de8f4a37824ed9df1065","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align","=>":"align"}},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"braces":true,"cast_spaces":true,"class_attributes_separation":{"elements":{"const":"one","method":"one","property":"one"}},"class_definition":true,"concat_space":{"spacing":"none"},"constant_case":{"case":"lower"},"declare_equal_normalize":true,"declare_strict_types":true,"echo_tag_syntax":{"format":"long"},"elseif":true,"encoding":true,"final_internal_class":true,"full_opening_tag":true,"fully_qualified_strict_types":true,"function_declaration":true,"function_typehint_space":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"linebreak_after_opening_tag":true,"line_ending":true,"lowercase_cast":true,"lowercase_keywords":true,"lowercase_static_reference":true,"magic_method_casing":true,"magic_constant_casing":true,"method_argument_space":true,"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["extra","throw","use","use_trait"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":{"positions":["inside"]},"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","return","switch_case","yield"]},"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_else":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_class_elements":true,"ordered_imports":{"sort_algorithm":"alpha"},"php_unit_strict":true,"php_unit_test_class_requires_covers":true,"phpdoc_add_missing_param_annotation":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":{"ignored_tags":["var"]},"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr_autoloading":true,"self_accessor":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"simplified_null_return":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":{"elements":["const","property"]},"single_import_per_statement":true,"single_line_after_imports":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":true,"standardize_not_equals":true,"strict_comparison":true,"strict_param":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline":{"elements":["arrays"]},"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method","const"]},"whitespace_after_comma_in_array":true},"ruleCustomisationPolicyVersion":"null-policy","hashes":{"src\/Binary\/Hex\/Writer.php":"590df3f3343c052d96d3cbbeb317f265","src\/Binary\/Buffer\/Writer\/Buffer.php":"80ab7029c26d83449a3529f4cee7a648","src\/Binary\/Buffer\/Writer\/Concerns\/Hex.php":"320937c99c2d66a2fe5c97396a994921","src\/Binary\/Buffer\/Writer\/Concerns\/Integer.php":"1f80863a79db7a412ed78fd647ff1cdf","src\/Binary\/Buffer\/Writer\/Concerns\/UnsignedInteger.php":"2ffba9fbbc552cb15166b7c47e22cd0e","src\/Binary\/Buffer\/Writer\/Concerns\/Generic.php":"76f295b93cc3d1327bf799f57d5a978c","src\/Binary\/Buffer\/Reader\/Buffer.php":"ec09343504cca539cf6bf91aace82464","src\/Binary\/Buffer\/Reader\/Concerns\/Hex.php":"3442407232a6093352c8e2b3146169f5","src\/Binary\/Buffer\/Reader\/Concerns\/Integer.php":"978f791a745c7b99d81032ef7f182558","src\/Binary\/Buffer\/Reader\/Concerns\/UnsignedInteger.php":"6a2f2ea4c5839184a7715dc633a504bd","src\/Exceptions\/InvalidUsernameException.php":"d392da166f80b3be9bdf4ba13d1e7b89","src\/Helpers.php":"90816e6ab5e44ebcb4c31770b610fa3b","src\/Enums\/ContractAbiType.php":"6aeea79e287ad76d65dc4ad0fcdf10eb","src\/Enums\/AbiFunction.php":"07ae22bd4ede5b6e9f83eb49a1bbd463","src\/Enums\/ContractAddresses.php":"06e2508d6640ce4572565eadbd390a20","src\/Identities\/Address.php":"83f02a9f2e101ce9ed1748bd3c0a0aab","src\/Identities\/PrivateKey.php":"a4bd870539d13f97a21e714608310804","src\/Identities\/WIF.php":"60dd95da09bb6c240acd02cd3f52a6b8","src\/Identities\/PublicKey.php":"2deb4baddcc512f012a06ce5f3b39387","src\/Binary\/Hex\/Reader.php":"e28448b92fadb2979e1db484a6afca8d","src\/ByteBuffer\/Concerns\/Writes\/Hex.php":"169cc84b5e39930c7e168d7bdbbcd37d","src\/ByteBuffer\/Concerns\/Writes\/Strings.php":"ba4ebf613b130f41b0a531dbd07c43c5","src\/ByteBuffer\/Concerns\/Writes\/Integer.php":"6f717766d8775b349f0e474902f66511","src\/ByteBuffer\/Concerns\/Writes\/Floats.php":"f3797170755677f4776f1cefbda60cb6","src\/ByteBuffer\/Concerns\/Writes\/UnsignedInteger.php":"68a9620949ef00f0b9676f2a1433d849","src\/ByteBuffer\/Concerns\/Reads\/Hex.php":"f3cc0a816b6e9469740bf59575363516","src\/ByteBuffer\/Concerns\/Reads\/Strings.php":"17238cbe09b4b870fa66b5704709f18e","src\/ByteBuffer\/Concerns\/Reads\/Integer.php":"9fa6cb50cebf03b7bf00e3b5337d9873","src\/ByteBuffer\/Concerns\/Reads\/Floats.php":"056b5c5b629a9fd0231becaded2f6973","src\/ByteBuffer\/Concerns\/Reads\/UnsignedInteger.php":"3d29cc54a05f7c6a02973e5618f821ae","src\/Utils\/RlpEncoder.php":"3f12a6053f27f931d0fabbfb91e1a7cf","src\/Utils\/TransactionUtils.php":"6e5ec26cbe4b2125c59a37331083173a","src\/Utils\/TransactionTypeIdentifier.php":"b89b96a26412691b042f4b2f1586a01f","src\/Utils\/Abi\/ArgumentDecoder.php":"6430cb971aa8e5927b62270afdec0af6","src\/Utils\/UnitConverter.php":"d716c75d97fb21408dd1b2d86d18c75d","src\/Utils\/TransactionEncoder.php":"439eaab92539814629cd8e216634a937","src\/Utils\/AbiEncoder.php":"e0edf2b073a0b0efe07896731846535c","src\/ByteBuffer\/LengthMap.php":"2f62d17297dc7387a39466df38b8649b","src\/ByteBuffer\/Concerns\/Transformable.php":"3d1f8aa43854c9417538e51dfdcd106f","src\/ByteBuffer\/Concerns\/Positionable.php":"86e5bc94fc7389aed28ba6fec9d7d2c2","src\/Binary\/Integer\/Reader.php":"fbe1a1af3821a1c2ee79e996a254ef2a","src\/Binary\/Integer\/Writer.php":"e6dbdb22282670b0547c66202cf25abf","src\/Binary\/UnsignedInteger\/Reader.php":"e9d87277e9f0e8cd6f3a63b6caa95ad2","src\/Binary\/UnsignedInteger\/Writer.php":"c0443907d9a5c9b2c027eca99ae775f5","src\/Utils\/Address.php":"410b85d6c0ba3764293463b48c03da91","src\/Utils\/AbiBase.php":"772be753e59f052101bc7616ecc2ca6d","src\/Utils\/RlpDecoder.php":"3fbea35725a5194184db4c650239418c","src\/Utils\/AbiDecoder.php":"8bfbd3752176ffb1a2321f72f4f01dff","src\/Utils\/Slot.php":"9674e711b193645b0b769514ab1d5907","src\/Utils\/Message.php":"6dc3cf7e0fe73c86d1eaa54ae0052ce7","src\/ByteBuffer\/Concerns\/Initialisable.php":"96a9455179a83ec00139d937bcd58626","src\/ByteBuffer\/Concerns\/Sizeable.php":"6b03f909020b0d15bc4c35256d85c896","src\/ByteBuffer\/Concerns\/Offsetable.php":"68179b59de54fe5a6233eb7111f6dc79","src\/ByteBuffer\/Concerns\/Readable.php":"518d72f8d0f926461b3248336640abae","src\/ByteBuffer\/Concerns\/Writeable.php":"6970a6fb60370c572f3a3febe6c3df09","src\/ByteBuffer\/ByteBuffer.php":"466a031832de383903af0251fc88be93","src\/ByteBuffer\/ByteOrder.php":"36dff8aac67cf33c653ba15e906e2680","src\/Transactions\/Builder\/EvmCallBuilder.php":"60eeff1cdc6dc59528d216db71211e49","src\/Transactions\/Builder\/TransferBuilder.php":"96ff6d1443e60e6c7ae5a37ed400a62f","src\/Transactions\/Builder\/ValidatorResignationBuilder.php":"ca8561048ac8aa2a0d623b7c327a0afd","src\/Transactions\/Builder\/UsernameRegistrationBuilder.php":"c9bb1a7376cadda5152abd5e46f0be8c","src\/Transactions\/Builder\/AbstractTransactionBuilder.php":"c984b9b1efeb4b7e389e9b01a24b5628","src\/Transactions\/Builder\/TokenTransferBuilder.php":"5a48ac7df4a614009c4b063343157ee0","src\/Transactions\/Builder\/UnvoteBuilder.php":"a37b3c38a9ce5f663579e3ce28e16ff3","src\/Transactions\/Builder\/TokenApproveBuilder.php":"c95653c20511eb4e9ba309260491a34d","src\/Transactions\/Builder\/UsernameResignationBuilder.php":"44ddc136b094777b3fb105fef647db11","src\/Transactions\/Builder\/MultipaymentBuilder.php":"562c803fa9e19a6873951f7cd1bad1c8","src\/Transactions\/Builder\/VoteBuilder.php":"02426dd1b4042447e25a64eb78188fb7","src\/Transactions\/Builder\/ValidatorRegistrationBuilder.php":"306d0ae7b7b9c49660711707e22a95f1","src\/Transactions\/Types\/UsernameRegistration.php":"485b52c32da8b62826617708f3b4a6ec","src\/Transactions\/Types\/Vote.php":"90972b6a028a7652351655a1c1b08b34","src\/Transactions\/Types\/Multipayment.php":"b10ca169d3d37058ad7b940b48d11a8a","src\/Transactions\/Types\/EvmCall.php":"df3aa5b419b200b9eac9d5fc87d240c8","src\/Transactions\/Types\/ValidatorResignation.php":"090882c106dfa298a956bd8eeb49c447","src\/Transactions\/Types\/AbstractTransaction.php":"60222b9229ae21c646b2e30cc38b6871","src\/Transactions\/Types\/Transfer.php":"4d3a16aa308ccf80758b212eca33b669","src\/Transactions\/Types\/ValidatorRegistration.php":"676a366a714e258742b5d0bac8927ebc","src\/Transactions\/Types\/Unvote.php":"56b3c9b921f038639f4eac0d6239e437","src\/Transactions\/Types\/UsernameResignation.php":"68848e1cd4b4d341aa7ff831481ffe31","src\/Transactions\/Serializer.php":"54487af37809b3c134efdce4e26ed1b2","src\/Networks\/Mainnet.php":"3acffe72b51707db16ad4b1a78f050b1","src\/Networks\/AbstractNetwork.php":"5b1cb5aa9830faf93a7f68023614dc1c","src\/Networks\/Testnet.php":"60f72744f4691e2da852b66e9d85a5f0","tests\/Unit\/HelpersTest.php":"40826b23445858a4968985a8c27a7da0","tests\/Unit\/Enums\/AbiFunctionTest.php":"d9ff7604b7be95adad992489c7b0f3dc","tests\/Unit\/Identities\/PrivateKeyTest.php":"19275c459ca01885ae4bf73ffcbecd33","tests\/Unit\/Identities\/PublicKeyTest.php":"e406835540aa170e6e27d24a2a36c09a","tests\/Unit\/Identities\/AddressTest.php":"0e0b7cfefdec532df286f52ce9ddee0f","tests\/Unit\/Identities\/WIFTest.php":"5619ab75730edbb32603355767e5ff70","tests\/Unit\/Binary\/Hex\/WriterTest.php":"85dad01bc8693af66bc55c40a2e603c5","tests\/Unit\/Binary\/Hex\/ReaderTest.php":"f179cd6f729f0d866518038803446228","tests\/Unit\/Binary\/Buffer\/Writer\/BufferTest.php":"6372984efaf7d2a378a7c2ebc3019f3a","tests\/Unit\/Binary\/Buffer\/Reader\/BufferTest.php":"6c6996473bf7c7d8592e3639f5326dda","tests\/Unit\/Binary\/Integer\/WriterTest.php":"64a1f07dc16c4faf2c06a3e5092a107d","tests\/Unit\/Binary\/Integer\/ReaderTest.php":"599fef4860548866a39f64e3dbb44e7d","tests\/Unit\/Binary\/UnsignedInteger\/WriterTest.php":"c10138f97a2b9f34c80d6feae77e77cc","tests\/Unit\/Binary\/UnsignedInteger\/ReaderTest.php":"c88736b794a6320cae58e6554b2cd8bc","tests\/Unit\/Utils\/TransactionEncoderTest.php":"05a4891b1879354a9d69a8bc1b5cb827","tests\/Unit\/Utils\/TransactionUtilsTest.php":"01a1855eacb299b74a997d7dd5987774","tests\/Unit\/Utils\/AddressTest.php":"e2851e599dd5b442cbe83e9c1f28e4b9","tests\/Unit\/ByteBuffer\/Concerns\/SizeableTest.php":"d1a553d36f3fec95b857c839e2d834cb","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/IntegerTest.php":"e5124461e7a97a3e2d78e5b6f5469991","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/HexTest.php":"1abfe709a9e787f7b4e4718d5af0e65c","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/UnsignedIntegerTest.php":"4f2ed9775cd92f3d136d9d6b1cd8f25c","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/FloatsTest.php":"9b45e3276289bb0c44faf94326d6ff76","tests\/Unit\/ByteBuffer\/Concerns\/Writes\/StringsTest.php":"6f591e8733550f1ad0d231f7809ad0a5","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/IntegerTest.php":"3b113ff1f80a9e15ab7af1a29161259b","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/HexTest.php":"01aa9304919af4fa3fa6aaef2f897679","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/UnsignedIntegerTest.php":"cddc6997c7daf4c494b7a65b22823bc3","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/FloatsTest.php":"e4d5200763a77c3993047247d59b3488","tests\/Unit\/Utils\/AbiEncoderTest.php":"8e9601a7576c4e0590f9508267464ff6","tests\/Unit\/Utils\/RlpEncoderTest.php":"6710ec96e9603dbe073181e095674027","tests\/Unit\/Utils\/UnitConverterTest.php":"b4dfb4b2bdeac414b9c85b35a8e09d8c","tests\/Unit\/Utils\/AbiDecoderTest.php":"aff7a7433e0b9b27b4b3f724609968a3","tests\/Unit\/Utils\/SlotTest.php":"ed89ae0182409d977a4faab9ca1eea95","tests\/Unit\/Utils\/RlpDecoderTest.php":"12f50e696926077dbbc1f005cbae2ef2","tests\/Unit\/Utils\/TransactionTypeIdentifierTest.php":"f7ecc6168bdbf6b4223e0eb3b9da7a91","tests\/Unit\/Utils\/MessageTest.php":"71efee57f29dceda4e36e133169c5683","tests\/Unit\/Utils\/Abi\/ArgumentDecoderTest.php":"9e1fda36ecf2cde01b7db5c85658bc24","tests\/Unit\/ByteBuffer\/ByteBufferTest.php":"34237362a8d54d9c4d1610d59fedf7f8","src\/Transactions\/Deserializer.php":"5d77b8f779a3485de6caf6a08d4d5f3b","src\/Configuration\/Network.php":"d908336264d1b5c789e42fe7ba0cfe2c","src\/BLS\/HashToCurve\/G2HashToCurve.php":"104f044fbd0bfc2d871412caf6284306","src\/BLS\/ProofOfPossession.php":"f27d847ffcb5db3d5179367adadcb018","src\/BLS\/Fields\/Fp2.php":"7685c72b29900bef127170b812134086","src\/BLS\/Fields\/Fp.php":"415f741a7ae6e45436e54f3258b95363","src\/BLS\/EIP2333.php":"8ae983f54821a7d04a215ab109f240d8","src\/BLS\/Curves\/G2.php":"69e7f11b35b6f66c22265d1242b4cbed","src\/BLS\/Curves\/G1.php":"7dc863fe9fc87415120143b23bf3172b","src\/Networks\/NetworkInterface.php":"b0aff2a147eb231da8cee50012841830","tests\/Unit\/ByteBuffer\/Concerns\/Reads\/StringsTest.php":"344d7500a1776339f787c9f56be5b580","tests\/Unit\/ByteBuffer\/Concerns\/TransformableTest.php":"6230c022bbcada03e9e336e532b34b55","tests\/Unit\/ByteBuffer\/Concerns\/PositionableTest.php":"10004a8bf4ed76dc108dd5ae3db7596d","tests\/Unit\/ByteBuffer\/Concerns\/OffsetableTest.php":"6888874a372bccc480c2c7ebee35c4cf","tests\/Unit\/ByteBuffer\/Concerns\/InitialisableTest.php":"f9e38c617dea3bb087550a78fa333d2c","tests\/Unit\/ByteBuffer\/LengthMapTest.php":"7e8c04fdf23a09c06c3c77aa7dfb037a","tests\/Unit\/Transactions\/Builder\/TokenApproveBuilderTest.php":"eefe09a0b5c68542c7a33d3c2250b94b","tests\/Unit\/Transactions\/Builder\/TransferBuilderTest.php":"90a7ca6fed95fde81fc4f0d053264003","tests\/Unit\/Transactions\/Builder\/ValidatorResignationBuilderTest.php":"c744298864255a9851f85878c91fd5a6","tests\/Unit\/Transactions\/Builder\/UsernameResignationBuilderTest.php":"c3443fe93b7b10b85f33b6e3e5b6477a","tests\/Unit\/Transactions\/Builder\/TokenTransferBuilderTest.php":"d0afe43a3065f8f6c279deb940930ef5","tests\/Unit\/Transactions\/Builder\/UnvoteBuilderTest.php":"eed8e8215db82abd4a5c2994453b9772","tests\/Unit\/Transactions\/Builder\/MultipaymentBuilderTest.php":"f6aded1988aacb3c15a70885340e08f7","tests\/Unit\/Transactions\/Builder\/EvmCallBuilderTest.php":"1d95fae15d239d2eea1ab245609397da","tests\/Unit\/Transactions\/Builder\/ValidatorRegistrationBuilderTest.php":"444cfc7a77f402d135bc0f5ac7d6d6a5","tests\/Unit\/Transactions\/Builder\/UsernameRegistrationBuilderTest.php":"baba0df21fdb5fdedf41084b35c02cb9","tests\/Unit\/Transactions\/Builder\/VoteBuilderTest.php":"d3ec709c1e626422fa8a86eb833ae0ea","tests\/Unit\/Transactions\/Types\/TransferTest.php":"71110444ac25ca571c6dc6f855625c13","tests\/Unit\/Transactions\/Types\/ValidatorResignationTest.php":"1817a13685810de64b15df1630b11e5d","tests\/Unit\/Transactions\/Types\/EvmCallTest.php":"b37cff6589fa63bc43a196626853c208","tests\/Analysis\/AnalysisTest.php":"3dd50256922f683ee5ac773e20397598","tests\/Unit\/BLS\/EIP2333Test.php":"a7cbb6d601453304110e6e429ba9488b","tests\/Unit\/BLS\/ProofOfPossessionTest.php":"3e807b274f0d61f6f26ad98402163206","tests\/Unit\/Networks\/MainnetTest.php":"372a7750ae834599a0088b09a4fac760","tests\/Unit\/Networks\/TestnetTest.php":"c8dba3e353c84037c78d558548760872","tests\/Pest.php":"f56068e0b3ed7b33d7200c0d7684d2b4","tests\/Helpers.php":"362fa87b858b91ed6cb4112224fba1c2","tests\/TestCase.php":"4133b24901762dc409bb9a111c8c4853","tests\/Concerns\/Serialize.php":"5011734a689b042840e8c277c42b9a36","tests\/Concerns\/Deserialize.php":"d59555dc433a75a3e75d4483219c5e41","tests\/Concerns\/Fixtures.php":"db5b42eaf5cf381b51f8440c66669efd","tests\/Unit\/Transactions\/Types\/UnvoteTest.php":"9b57057eb1b0c17e7c783506a96c287a","tests\/Unit\/Transactions\/Types\/ValidatorRegistrationTest.php":"7b8b5c37a358ed4958a9950ca559df6e","tests\/Unit\/Transactions\/Types\/MultipaymentTest.php":"27d691ef2e4da83f8f4ff09e4c31c702","tests\/Unit\/Transactions\/Types\/UsernameRegistrationTest.php":"b5200bbac887cdbafd894d1883a593eb","tests\/Unit\/Transactions\/Types\/UsernameResignationTest.php":"69477c3478261dfdf7d4fe4eb96e0cd6","tests\/Unit\/Transactions\/Types\/VoteTest.php":"f87adb812093d3b257edae1778428c3a","tests\/Unit\/Transactions\/DeserializerTest.php":"c69a20d6f44306c0f6c136d0c6dc322a","tests\/Unit\/Transactions\/TransactionTest.php":"251c1ec6920f5aed952bfb1297ef1b1f","tests\/Unit\/Transactions\/SerializerTest.php":"6bef82d199db0b3991c9004f55074879","tests\/Unit\/Configuration\/NetworkTest.php":"fda057f8eb08ceb6c89e26e44b1acba1","src\/Identities\/LegacyAddress.php":"ddad24a8b70ed876c05032137d42b56a","src\/Transactions\/Builder\/BatchTransferBuilder.php":"61667bcef4d1bbdfce39d78721dbccc6","tests\/Unit\/Identities\/LegacyAddressTest.php":"061562efb8005bac42f41899d70f6a8e","tests\/Unit\/Transactions\/Builder\/BatchTransferBuilderTest.php":"c0961fd9bb26d6d6b0f23f2999c4ac5a"}} \ No newline at end of file