ecash-lib 4.3.2 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -100,3 +100,5 @@ console.log(toHex(rawTx));
100
100
  - 4.3.0 - Export a Tx.toHex() method [D18396](https://reviews.bitcoinabc.org/D18396)
101
101
  - 4.3.1 - Modify union type of payment outputs to include ecash-wallet template OP_RETURN [D18403](https://reviews.bitcoinabc.org/D18403)
102
102
  - 4.3.2 - Export additional token types [D18548](https://reviews.bitcoinabc.org/D18548)
103
+ - 4.3.3 - Modify payment.GenesisAction to support minting NFTs (SLP_TOKEN_TYPE_NFT1_CHILD genesis txs) [D18557](https://reviews.bitcoinabc.org/D18557)
104
+ - 4.4.0 - Add `parse` methods to support parsing of OP_RETURN outputScript strings as returned by chronik-client [D18659](https://reviews.bitcoinabc.org/D18659)
@@ -728,7 +728,7 @@ ByAQNwKYASAHIAg2ApQBIAcgCTYCkAEgB0HYAGogCBCPASAHKAJYIQIgBygCXCEBIAcgCDYCyAkg
728
728
  ByABNgK4CSABIAhHDQRBACEBIAghCgNAIAoEQCABIAJqIAEgCWooAgBBf3M2AgAgCkEBayEKIAFB
729
729
  BGohAQwBBQsLIAIgAigCAEEBcjYCACAIQQV0IgogDEYNBiACIAhBAnRqQQRrIgFFDQUgASABKAIA
730
730
  QX8gCiAMa3ZxNgIAIAwgCmshAQNAIAFFDQcgAiAIIAkgCBCeAg0IIAFBAWohAQwACwALIAkgCEEC
731
- dBDMAQwICyANIAhBkKbAABDDAQALQZC6wABBJkGcu8AAEOwBAAtBjtDAAEErIAdBzAlqQdi4wABB
731
+ dBDMAQwICyANIAhBkKbAABDDAQALQZC6wABBJkGcu8AAEOwBAAtBjtDAAEErIAdBzAlqQfy3wABB
732
732
  rLvAABCvAQALIAdBADYCzAkgB0HICWogB0G4CWogB0HMCWpB7MHAABDQAgALQcaKwABBK0H8wcAA
733
733
  EOwBAAtBfyEBA0AgAUEBaiIBIAhGBEBBBSEBIAghCgNAIAFFDQQgB0HQAGogAiAKIAdBkAFqEKUB
734
734
  IAFBAWshASAHKAJUIQogBygCUCECDAALAAULIAIgCCAJIAgQngJFDQALC0HQw8AAQShB2LLAABDs
@@ -1463,17 +1463,17 @@ ACABIABBAXI2AgQgACABaiAANgIADwsgAEH4AXFBgPbAAGohAgJ/QYj4wAAoAgAiA0EBIABBA3Z0
1463
1463
  IgBxRQRAQYj4wAAgACADcjYCACACDAEFCyACKAIICyEAIAIgATYCCCAAIAE2AgwgASACNgIMIAEg
1464
1464
  ADYCCA8LQfj1wAAoAgAiAQRAA0AgAEEBaiEAIAEoAggiAQ0ACwULQbD4wAAgAEH/HyAAQf8fSxs2
1465
1465
  AgAgAyAETw0AQaj4wABBfzYCAAsLngUCCn8BfiMAQaAQayIIJAAgCEEcaiIGQQBBgBD8CwAgCEEQ
1466
- aiAFQQF0IAZBgARBvLvAABCjAiAIQQhqIAUgCCgCECIKIAgoAhQiCUHgucAAEKMCIAgoAgxBAnQh
1466
+ aiAFQQF0IAZBgARBvLvAABCjAiAIQQhqIAUgCCgCECIKIAgoAhQiCUGEucAAEKMCIAgoAgxBAnQh
1467
1467
  ByAIKAIIIQYDQCAHBEAgBkEANgIAIAdBBGshByAGQQRqIQYMAQULCyAJIAUgBSAJSxshDCAKIAVB
1468
- AnQiDmohD0EAIQcgBSELIAkhBgJAA0AgByAORg0BIAIgB2ooAgAhDSAIIAUgByAKaiAGQfC5wAAQ
1468
+ AnQiDmohD0EAIQcgBSELIAkhBgJAA0AgByAORg0BIAIgB2ooAgAhDSAIIAUgByAKaiAGQZS5wAAQ
1469
1469
  owIgCCgCACABIA0gBRCuASENIAYgDEcEQCAHIA9qIA02AgAgC0EBaiELIAZBAWshBiAHQQRqIQcM
1470
- AQULCyALIAlBgLrAABDDAQALIAAhBiAKIQAgBUUgBUEBdCAJR3IEf0EABSAFQQJ0IQkgBCgCACEK
1470
+ AQULCyALIAlBpLnAABDDAQALIAAhBiAKIQAgBUUgBUEBdCAJR3IEf0EABSAFQQJ0IQkgBCgCACEK
1471
1471
  IAAhASAFIQJBACEEA0AgAgRAIAEgCWoiCyABIAMgASgCACAKbCAFEK4BIARqIgcgCygCACILaiIM
1472
1472
  NgIAIAQgB0EAR3IgCyAMT3EhBCABQQRqIQEgAkEBayECDAEFAkAgBiAAIAVBAnRqIgE1AgAgAzUC
1473
1473
  AH0iED4CACAGQQRqIQAgA0EEaiEDIAVBASAFQQFLG0EBayECIAFBBGohCQNAIBBCIIinQQFxIQog
1474
1474
  AkUNASAAIAk1AgAgAzUCACAKrXx9IhA+AgAgAkEBayECIABBBGohACAJQQRqIQkgA0EEaiEDDAAL
1475
1475
  AAsLCyAEIAprIgBBf3MhAgN/IAUEfyAGIAAgASgCAHEgBigCACACcXI2AgAgAUEANgIAIAZBBGoh
1476
- BiABQQRqIQEgBUEBayEFDAEFQQELCwtBAUcEQEGO0MAAQSsgCEGfEGpB2LjAAEHQucAAEK8BAAUL
1476
+ BiABQQRqIQEgBUEBayEFDAEFQQELCwtBAUcEQEGO0MAAQSsgCEGfEGpB/LfAAEH0uMAAEK8BAAUL
1477
1477
  IAhBoBBqJAALyAUBBn8jAEGwAWsiBiQAIAZBEGogARD9ASAGKAIUIQkgBkEIaiACIAMQ6AEgBigC
1478
1478
  DCEDIAYoAgghCiAGIAQgBRDoASAGKAIEIQQgBigCACEFIAZBjAFqIAogAxBmAkAgBi0AjAFBAUYE
1479
1479
  QCAGQSRqIAZBmAFqKAIANgIAIAYgBikCkAE3AhwgBkEBNgIYDAEFCyAGQTBqIAZBlQFqIgEpAAA3
@@ -2355,7 +2355,7 @@ KAIAIAEQUQsOAEHX1MAAQc8AEPICAAsLACAAIAFBCBCYAgsLACAAIAFBEBCYAgsMACAAKAIAIAEQ
2355
2355
  6gILDQAgAEHEksAAIAEQOAsKACAAIAFBARAHCwoAIAAgAUEBEAYLCQAgACABEAEACw0AIAFBudDA
2356
2356
  AEECEBoLCwAgACABIAEQ+QILDgAgAEHkxsAAIAEQiAELDgAgAEGUysAAIAEQiAELCwAgACAAIAAQ
2357
2357
  3QILDAAgACABKQIANwMACwsAIAAgASACENwCCwsAIAAgAUEwEJkCCwsAIAAgASABENwCCwsAIAAg
2358
- AUEgEJkCCwwAIABBwIjAABCFAgsMACAAQfSOwAAQhQILCQAgAEEANgIACwcAIAAoAgALC7VvLgBB
2358
+ AUEgEJkCCwwAIABBwIjAABCFAgsMACAAQfSOwAAQhQILCQAgAEEANgIACwcAIAAoAgALC7hvLgBB
2359
2359
  gIDAAAuhCS9hcHAvbW9kdWxlcy9lY2FzaC1zZWNwMjU2azEvc3JjL2VjZHNhL3NlcmlhbGl6ZWRf
2360
2360
  c2lnbmF0dXJlLnJzAABIAAAAYXR0ZW1wdCB0byBzZXQgbGVuZ3RoIHRvICBidXQgdGhlIG1heGlt
2361
2361
  dW0gaXMgAAAARAAQABkAAABdABAAFAAAAAAAEAA+AAAAtQAAAAkAAABmZmkgcmV0dXJuZWQgaW52
@@ -2467,7 +2467,7 @@ EABhAAAAuAAAAFgAAAB3FxAAYQAAAN8AAAAXAAAAdxcQAGEAAADhAAAAHgAAAGFzc2VydGlvbiBm
2467
2467
  YWlsZWQ6IHBhZGRpbmcuaXRlcigpLmFsbCh8JmJ8IGIgPT0gMCkAAAB3FxAAYQAAAOIAAAAFAAAA
2468
2468
  UEtDUzFkaWdlc3RfYWxnZGlnZXN0aW5mb19wcmVmaXjIGRAAxBMQAA8AAAAAAAAADAAAAAQAAAA3
2469
2469
  AAAAOAAAADkAAABsGBAAeBgQAAAIAABYJhAA0xMQABMAAACcGBAAeBgQAAAIAADwJhAA5hMQABMA
2470
- AAC0GBAAeBgQAAAIAAAAHBAA+RMQABMAAADMGBAAeBgQAAAIAAAvdXNyL2xvY2FsL2NhcmdvL3Jl
2470
+ AAC0GBAAeBgQAAAIAAC4HBAA+RMQABMAAADMGBAAeBgQAAAIAAAvdXNyL2xvY2FsL2NhcmdvL3Jl
2471
2471
  Z2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yaW5nLTAuMTcuMTQv
2472
2472
  c3JjL2FyaXRobWV0aWMvYmlnaW50LnJz5BgQAGQAAABdAAAAEwAAAOQYEABkAAAANAMAAAUAAADk
2473
2473
  GBAAZAAAADsDAAArAAAA5BgQAGQAAAA8AwAAKAAAAOQYEABkAAAAPQMAACcAQaCzwAALQAEAAAA0
@@ -2480,136 +2480,136 @@ cnMAgBoQAGsAAAAWAAAALAAAAC91c3IvbG9jYWwvY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNy
2480
2480
  YXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JpbmctMC4xNy4xNC9zcmMvZGlnZXN0L2R5bnN0YXRl
2481
2481
  LnJzAAD8GhAAYgAAADkAAAANAAAA/BoQAGIAAABKAAAADQAAAPwaEABiAAAAWwAAAA0AAAAvdXNy
2482
2482
  L2xvY2FsL2NhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3
2483
- Zi9yaW5nLTAuMTcuMTQvc3JjL2RpZ2VzdC5ycwAAAJAbEABZAAAAGAIAAA8AQYi4wAALSwjJvPNn
2484
- 5glqO6fKhIWuZ7sr+JT+cvNuPPE2HV869U+l0YLmrX9SDlEfbD4rjGgFm2u9Qfur2YMfeSF+ExnN
2485
- 4Fs7AAAAQAAAAANAgABB4LjAAAuADAEAAAA0AAAAL3Vzci9sb2NhbC9jYXJnby9yZWdpc3RyeS9z
2486
- cmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmluZy0wLjE3LjE0L3NyYy9hcml0
2487
- aG1ldGljL21vbnRnb21lcnkucnNoHBAAaAAAABgBAAAGAAAAaBwQAGgAAAAlAQAABgAAAGgcEABo
2488
- AAAAKAEAACYAAABoHBAAaAAAACcBAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogbWluX2JpdHMgPj0g
2489
- TUlOX0JJVFMvdXNyL2xvY2FsL2NhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0
2490
- OWNmOGM2YjViNTU3Zi9yaW5nLTAuMTcuMTQvc3JjL3JzYS9wdWJsaWNfbW9kdWx1cy5ycwA2HRAA
2491
- ZQAAAD4AAAAJAAAANh0QAGUAAABBAAAADgAAAGgcEABoAAAA6wAAAB8AAABVbnNwZWNpZmllZAAi
2492
- rijXmC+KQs1l7yORRDdxLztN7M/7wLW824mBpdu16Ti1SPNbwlY5GdAFtvER8VmbTxmvpII/khiB
2493
- bdrVXhyrQgIDo5iqB9i+b3BFAVuDEoyy5E6+hTEk4rT/1cN9DFVviXvydF2+crGWFjv+sd6ANRLH
2494
- JacG3JuUJmnPdPGbwdJK8Z7BaZvk4yVPOIZHvu+11YyLxp3BD2WcrHfMoQwkdQIrWW8s6S2D5KZu
2495
- qoR0StT7Qb3cqbBctVMRg9qI+Xar32buUlE+mBAytC1txjGoPyH7mMgnA7DkDu++x39Zv8KPqD3z
2496
- C+DGJacKk0eRp9VvggPgUWPKBnBuDgpnKSkU/C/SRoUKtycmySZcOCEbLu0qxFr8bSxN37OVnRMN
2497
- OFPeY6+LVHMKZaiydzy7Cmp25q7tRy7JwoE7NYIUhSxykmQD8Uyh6L+iATBCvEtmGqiRl/jQcItL
2498
- wjC+VAajUWzHGFLv1hnoktEQqWVVJAaZ1iogcVeFNQ70uNG7MnCgahDI0NK4FsGkGVOrQVEIbDce
2499
- meuO30x3SCeoSJvhtbywNGNaycWzDBw5y4pB40qq2E5z42N3T8qcW6O4stbzby5o/LLvXe6Cj3Rg
2500
- LxdDb2OleHKr8KEUeMiE7DlkGggCx4woHmMj+v++kOm9gt7rbFCkFXnGsvej+b4rU3Lj8nhxxpxh
2501
- JurOPifKB8LAIce4htEe6+DN1n3a6njRbu5/T331um8Xcqpn8AammMiixX1jCq4N+b4EmD8RG0cc
2502
- EzULcRuEfQQj9XfbKJMkx0B7q8oyvL7JFQq+njxMDRCcxGcdQ7ZCPsu+1MVMKn5l/Jwpf1ns+tY6
2503
- q2/LXxdYR0qMGURsTCIQAJwjEAAvdXNyL2xvY2FsL2NhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5j
2504
- cmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yaW5nLTAuMTcuMTQvc3JjL2FyaXRobWV0aWMvYmln
2505
- aW50L21vZHVsdXMucnNgIBAAbAAAAFwAAAAuAAAAYCAQAGwAAABiAAAAJgAAAGAgEABsAAAAkwAA
2506
- AAkAAABgIBAAbAAAAKQAAAAdAAAAL3Vzci9sb2NhbC9jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXgu
2507
- Y3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmluZy0wLjE3LjE0L3NyYy9lYy9zdWl0ZV9iL29w
2508
- cy5ycwAAAAwhEABhAAAABgEAADQAAAAMIRAAYQAAAAYBAAAeAAAADCEQAGEAAAANAQAANAAAAAwh
2509
- EABhAAAADQEAAB4AAAAMIRAAYQAAABQBAAA0AAAADCEQAGEAAAAUAQAAHgAAAGludGVybmFsIGVy
2510
- cm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGVhc3NlcnRpb24gZmFpbGVkOiAhc2VsZi5zY2Fs
2511
- YXJfb3BzLmNvbW1vbi5pc196ZXJvKGEpDCEQAGEAAADYAQAACQAAAAwhEABhAAAAYQIAAAUAAAA8
2512
- AAAAPQAAAP///////////////wBB7MTAAAsIAQAAAP////8AQYTFwAALHQMAAAAAAAAA//////v/
2513
- ///+//////////3///8EAEG0xcAACyBRJWP8wsq584SeF6et+ua8//////////8AAAAA/////wBB
2514
- 5MXAAAsN/P//////////////AwBB/MXAAAsIBAAAAPz///8AQZTGwAALIN+9xCli35zYkDCEeM0F
2515
- 8KzWLiH3qyCi5TRIhwQdBjDcAEHIxsAAC0RMIhAAPgAAAD8AAABAAAAAQQAAAEwiEABCAAAAXCMQ
2516
- AEMAAACi7nm+lUwkg6ZvvUmceZlGWexrKzmyRSggVtnzlC3hZgBBnMfAAAtZHAAAAB0AAAD/////
2517
- AAAAAAAAAAD//////v////////////////////////////////////////8BAAAA/v///wAAAAAC
2518
- AAAAAAAAAP7///8AAAAAAgAAAAEAQYTIwAALsARzKcXMahns7HqnsEiyDRpY3y039IFNY8f/////
2519
- ///////////////////////////8////AwAAAAAAAAD8////+///////////////////////////
2520
- ///////////////MLUGdcYgRCOwyTHrYrSn3LgIgGZsg8nfiipOU7ks345QgAh/0ISu2+b9PYEsR
2521
- CM0BAAAAKLXASWZ10D04ztag4njjIG5NG1T8OpyH/w6jWYSGVGQr3k5hI/cvgRMVninCrTpN/qQD
2522
- S609BCOsqbR7v6i/oVCwgy5W562L2f/0aBlSw8ZAqGk5JgKA3enFFVrCq3grnCMQAEQAAABFAAAA
2523
- RgAAAEcAAACcIxAASAAAAAwlEABJAAAAqQm0GSSbMS0ZpBrf5YE9/0cpuPw6SD68xRyrShdJDdSV
2524
- aCYoeluwPyG/OSsB7oQML3Vzci9sb2NhbC9jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVz
2525
- LmlvLTE5NDljZjhjNmI1YjU1N2YvcmluZy0wLjE3LjE0L3NyYy9lYy9zdWl0ZV9iL29wcy9wMzg0
2526
- LnJzAABMJRAAZgAAAAgBAAA8AAAAAgEGAwMBBQEFBAQFCgcDAgUABAUEBAUGBAYEBwUFCgYJBgQF
2527
- BgQDAAcFBwIFAwUHBQUEBQUDAwEHAQYFBAIDAQQBBAEGAgUCBQICAQQAAABcIxAAWCAQAEoAAABL
2528
- AAAArtqcAz01Rgx7YehYUwUZQwBB2MzAAAskAQAAAGfmCWqFrme7cvNuPDr1T6V/Ug5RjGgFm6vZ
2529
- gx8ZzeBbAEGgzcAACzhMAAAAIAAAAAEgQAAAAAAADCUQAFwgEABNAAAATgAAAIzWOjOW5hMThVhP
2530
- t0zy5acf0sgLfrKcOABB+M3AAAv/CNieBcFdnbvLB9V8NiopmmIX3XAwWgFZkTlZDvfY7C8VMQvA
2531
- /2cmM2cRFVhoh0q0jqeP+WQNLgzbpE/6vh1ItUc7AAAAQAAAAAIwgAAAAAAAFCYQAFgmEABPAAAA
2532
- AAAAABQmEADwJhAATwAAAAIAAACwJhAAWCYQAE8AAAADAAAAsCYQAPAmEABPAAAABAAAAEVDRFNB
2533
- X1AyNTZfU0hBMjU2X0FTTjFFQ0RTQV9QMjU2X1NIQTI1Nl9GSVhFREVDRFNBX1AyNTZfU0hBMzg0
2534
- X0FTTjFFQ0RTQV9QMzg0X1NIQTI1Nl9BU04xRUNEU0FfUDM4NF9TSEEzODRfQVNOMUVDRFNBX1Az
2535
- ODRfU0hBMzg0X0ZJWEVEY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1
2536
- ZSgpL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGlicmFy
2537
- eS9jb3JlL3NyYy9zbGljZS9pdGVyLnJzAAAAOygQAE4AAACDBwAAEQAAAC9ydXN0Yy8xNzA2N2U5
2538
- YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmlu
2539
- Zy5ycwCcKBAASwAAAH0FAAAbAAAA3CkQAFAAAAAuAgAAEQAAAC9ydXN0L2RlcHMvZGxtYWxsb2Mt
2540
- MC4yLjcvc3JjL2RsbWFsbG9jLnJzYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPj0gc2l6ZSArIG1p
2541
- bl9vdmVyaGVhZAAIKRAAKQAAAKgEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6
2542
- ZSArIG1heF9vdmVyaGVhZAAACCkQACkAAACuBAAADQAAAFRyaWVkIHRvIHNocmluayB0byBhIGxh
2543
- cmdlciBjYXBhY2l0ebApEAAkAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRl
2544
- NTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnPcKRAAUAAAALkCAAAJ
2545
- AAAAbnVsbCBwb2ludGVyIHBhc3NlZCB0byBydXN0cmVjdXJzaXZlIHVzZSBvZiBhbiBvYmplY3Qg
2546
- ZGV0ZWN0ZWQgd2hpY2ggd291bGQgbGVhZCB0byB1bnNhZmUgYWxpYXNpbmcgaW4gcnVzdC91c3Iv
2547
- bG9jYWwvY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdm
2548
- L3dhc20tYmluZGdlbi0wLjIuOTIvc3JjL2NvbnZlcnQvc2xpY2VzLnJzAACmKhAAaAAAAN4AAAAB
2549
- AAAABAAAAAYAAAAGAAAABgAAAAoAAAApGhAALRoQADMaEAA5GhAAPxoQABYAAAAXAAAAFgAAABYA
2550
- AAAWAAAAFwAAAIgnEACeJxAAtScQAMsnEADhJxAA9ycQAEGA18AAC5gBUSVj/MLKufOEnhenrfrm
2551
- vP//////////AAAAAP////9PvADuqsjRzAAAAAAAAAAA/////wAAAAAAAAAA//////7/////////
2552
- ////////////////////////////////cynFzGoZ7Ox6p7BIsg0aWN8tN/SBTWPH////////////
2553
- ////////////////////RdyP6Ilg1G4AQaPYwAALMoAAAAAAAAAAgP///3//////////////////
2554
- ////////////////////////fwEAAAABAEHg2MAACxEBAAAA//////////8AAAAAAQBBkNnAAAsB
2555
- AQBBnNnAAAueD/////////////////7///8AAAAAPBSpGNQw53kBtu1f/JW6dRAlYncrc/t5xlU3
2556
- pXZfkBgKVpXOV1Py3VzkGbrkuEqLJfMh3YiG6NKFXYglGP9xhbvSoBbFL5JPmTRiGmzBXA2LLMZX
2557
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- QHqNK2mE4R7uLk80w5t0MJFCVuNaDbFCpUgnG0lVKnMQs2WmnEbBTBpfUh1ZKT+YT7hrW2/n4YRf
2572
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- w+6sbp0204IhpsKClESS3N+CNddsXVbSL34va4eKF7UiAQq0BFEI/5b/UXaf8hSrMQsF5tSHX4uy
2583
- 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
- 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
- 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
- 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
2587
- PrQRqzfOktJZUqnxfwqG8YSPIQIbhROt+t7qKyKnRJEKK+x4rKLFWfryUUACWjjOR2Gl7NGRkMYq
2588
- vCPVlL4PGux5/a6NLZecs8791rw7lRr2WPxfV/UgtPetxIbZ27ee8xUUiKqBbJeNufX84m59cS/P
2589
- XUdlVNC7YGjE0ySOBAQEBAQEAQEEBABB8OnAAAsJUQAAAAAAAABSAEGI6sAAC80DUQAAAAAAAABJ
2590
- bnZhbGlkIGZsYWdzAGN0eCAhPSBzZWNwMjU2azFfY29udGV4dF9ub19wcmVjb21wAHNlbGYgdGVz
2591
- dCBmYWlsZWQARm9yIHRoaXMgc2FtcGxlLCB0aGlzIDYzLWJ5dGUgc3RyaW5nIHdpbGwgYmUgdXNl
2592
- ZCBhcyBpbnB1dCBkYXRhAChmbGFncyAmIFNFQ1AyNTZLMV9GTEFHU19UWVBFX01BU0spID09IFNF
2593
- Q1AyNTZLMV9GTEFHU19UWVBFX0NPTVBSRVNTSU9OAHJlY2lkID49IDAgJiYgcmVjaWQgPD0gMwBz
2594
- ZWNwMjU2azFfZWNtdWx0X2NvbnRleHRfaXNfYnVpbHQoJmN0eC0+ZWNtdWx0X2N0eCkAc2VjcDI1
2595
- NmsxX2VjbXVsdF9nZW5fY29udGV4dF9pc19idWlsdCgmY3R4LT5lY211bHRfZ2VuX2N0eCkAIXNl
2596
- Y3AyNTZrMV9mZV9pc196ZXJvKCZnZS0+eCkAKm91dHB1dGxlbiA+PSAoKGZsYWdzICYgU0VDUDI1
2597
- NksxX0ZMQUdTX0JJVF9DT01QUkVTU0lPTikgPyAzM3UgOiA2NXUpAFIAAAAAAAAAUAAAAFAAQeDt
2598
- wAALEEVDRFNBK0RFUiAgICAgICAAQZjuwAALAQEAQcDuwAALEEVDRFNBK1JlY292ZXJ5ICAAQeDu
2599
- wAALbvCKeMu67ggrBSrgcI8y+h5QxcQhqncrpdu0BqLqa+NCmBf4FluBAgCflY3i3LINAPybAgcL
2600
- hw4AXCkGWsW6CwDc+X5mvnkAALjUEPuP0AcAxJlBVWiKBAC0F/2oCBEOAMC/T9pVRgwAoyZ32jpI
2601
- AEHg78AACzBUaGUgc2NhbGFyIGZvciB0aGlzIHggaXMgdW5rbm93bgAAAAAAAAAAL/z///7///8A
2602
- QanwwAALEAEAAAAAAADPytot4vbHJwcAQeDwwAALFO66yS9yoQ0AAkT8dQuVAQAjUUUBAEGI8cAA
2603
- C0BBQTbQjF4CAP27A4r0ag4A3K66/v//DwD///////8PAP///////wAAQUE20Ixe0j/ugCK9mnO7
2604
- Kuv/////////AEHR8cAACxgBAAAAAAAAwU53qpkA8jQAAQAAAAAAAAEAQZDywAALAQEAQcDywAAL
2605
- AYAAQYDzwAALEMPkvwqpf1RvKIgOAdZ+Q+QAQaDzwAALpgEsVrE9qM1l1200dAfFCiiK/v//////
2606
- /////////////zGw20WaIJPof8rocRSKqj0V64SS5JBs6M1r1Kch0oYwcX/Eiq60cRXGBvWdrAgS
2607
- IsTkvwqpf1RvKIgOAdZ+Q+RyvSMbfJYC33hmgSDqIi4SWmQSiAIcJqXgMFzATK1jU+4BlXEobAkA
2608
- E1yZWC9RBwBJ8JzpNDQMAOp5ROYGcQAAfGUraul6AEHQ9MAACxBTY2hub3JyK1NIQTI1NiAgAEHk
2609
- 9MAACwNANBAAKgRuYW1lASMB6QIfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgCIAQlw
2610
- cm9kdWNlcnMCCGxhbmd1YWdlAgRSdXN0AANDOTkADHByb2Nlc3NlZC1ieQQFcnVzdGMdMS44Ny4w
2611
- ICgxNzA2N2U5YWMgMjAyNS0wNS0wOSkMRGViaWFuIGNsYW5nBjE0LjAuNgZ3YWxydXMGMC4yMC4z
2612
- DHdhc20tYmluZGdlbgYwLjIuOTIAaw90YXJnZXRfZmVhdHVyZXMGKw9tdXRhYmxlLWdsb2JhbHMr
2613
- E25vbnRyYXBwaW5nLWZwdG9pbnQrC2J1bGstbWVtb3J5KwhzaWduLWV4dCsPcmVmZXJlbmNlLXR5
2614
- cGVzKwptdWx0aXZhbHVl
2483
+ Zi9yaW5nLTAuMTcuMTQvc3JjL2RpZ2VzdC5ycwAAAJAbEABZAAAAGAIAAA8AQYS4wAALrQEBAAAA
2484
+ NAAAAC91c3IvbG9jYWwvY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4
2485
+ YzZiNWI1NTdmL3JpbmctMC4xNy4xNC9zcmMvYXJpdGhtZXRpYy9tb250Z29tZXJ5LnJzDBwQAGgA
2486
+ AAAYAQAABgAAAAwcEABoAAAAJQEAAAYAAAAMHBAAaAAAACgBAAAmAAAADBwQAGgAAAAnAQAACQBB
2487
+ wLnAAAugCwjJvPNn5glqO6fKhIWuZ7sr+JT+cvNuPPE2HV869U+l0YLmrX9SDlEfbD4rjGgFm2u9
2488
+ Qfur2YMfeSF+ExnN4Fs7AAAAQAAAAANAgAAAAAAAYXNzZXJ0aW9uIGZhaWxlZDogbWluX2JpdHMg
2489
+ Pj0gTUlOX0JJVFMvdXNyL2xvY2FsL2NhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8t
2490
+ MTk0OWNmOGM2YjViNTU3Zi9yaW5nLTAuMTcuMTQvc3JjL3JzYS9wdWJsaWNfbW9kdWx1cy5ycwA2
2491
+ HRAAZQAAAD4AAAAJAAAANh0QAGUAAABBAAAADgAAAAwcEABoAAAA6wAAAB8AAABVbnNwZWNpZmll
2492
+ ZAAirijXmC+KQs1l7yORRDdxLztN7M/7wLW824mBpdu16Ti1SPNbwlY5GdAFtvER8VmbTxmvpII/
2493
+ khiBbdrVXhyrQgIDo5iqB9i+b3BFAVuDEoyy5E6+hTEk4rT/1cN9DFVviXvydF2+crGWFjv+sd6A
2494
+ NRLHJacG3JuUJmnPdPGbwdJK8Z7BaZvk4yVPOIZHvu+11YyLxp3BD2WcrHfMoQwkdQIrWW8s6S2D
2495
+ 5KZuqoR0StT7Qb3cqbBctVMRg9qI+Xar32buUlE+mBAytC1txjGoPyH7mMgnA7DkDu++x39Zv8KP
2496
+ qD3zC+DGJacKk0eRp9VvggPgUWPKBnBuDgpnKSkU/C/SRoUKtycmySZcOCEbLu0qxFr8bSxN37OV
2497
+ nRMNOFPeY6+LVHMKZaiydzy7Cmp25q7tRy7JwoE7NYIUhSxykmQD8Uyh6L+iATBCvEtmGqiRl/jQ
2498
+ cItLwjC+VAajUWzHGFLv1hnoktEQqWVVJAaZ1iogcVeFNQ70uNG7MnCgahDI0NK4FsGkGVOrQVEI
2499
+ bDcemeuO30x3SCeoSJvhtbywNGNaycWzDBw5y4pB40qq2E5z42N3T8qcW6O4stbzby5o/LLvXe6C
2500
+ j3RgLxdDb2OleHKr8KEUeMiE7DlkGggCx4woHmMj+v++kOm9gt7rbFCkFXnGsvej+b4rU3Lj8nhx
2501
+ xpxhJurOPifKB8LAIce4htEe6+DN1n3a6njRbu5/T331um8Xcqpn8AammMiixX1jCq4N+b4EmD8R
2502
+ G0ccEzULcRuEfQQj9XfbKJMkx0B7q8oyvL7JFQq+njxMDRCcxGcdQ7ZCPsu+1MVMKn5l/Jwpf1ns
2503
+ +tY6q2/LXxdYR0qMGURsTCIQAJwjEAAvdXNyL2xvY2FsL2NhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRl
2504
+ eC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yaW5nLTAuMTcuMTQvc3JjL2FyaXRobWV0aWMv
2505
+ YmlnaW50L21vZHVsdXMucnNgIBAAbAAAAFwAAAAuAAAAYCAQAGwAAABiAAAAJgAAAGAgEABsAAAA
2506
+ kwAAAAkAAABgIBAAbAAAAKQAAAAdAAAAL3Vzci9sb2NhbC9jYXJnby9yZWdpc3RyeS9zcmMvaW5k
2507
+ ZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmluZy0wLjE3LjE0L3NyYy9lYy9zdWl0ZV9i
2508
+ L29wcy5ycwAAAAwhEABhAAAABgEAADQAAAAMIRAAYQAAAAYBAAAeAAAADCEQAGEAAAANAQAANAAA
2509
+ AAwhEABhAAAADQEAAB4AAAAMIRAAYQAAABQBAAA0AAAADCEQAGEAAAAUAQAAHgAAAGludGVybmFs
2510
+ IGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGVhc3NlcnRpb24gZmFpbGVkOiAhc2VsZi5z
2511
+ Y2FsYXJfb3BzLmNvbW1vbi5pc196ZXJvKGEpDCEQAGEAAADYAQAACQAAAAwhEABhAAAAYQIAAAUA
2512
+ AAA8AAAAPQAAAP///////////////wBB7MTAAAsIAQAAAP////8AQYTFwAALHQMAAAAAAAAA////
2513
+ //v////+//////////3///8EAEG0xcAACyBRJWP8wsq584SeF6et+ua8//////////8AAAAA////
2514
+ /wBB5MXAAAsN/P//////////////AwBB/MXAAAsIBAAAAPz///8AQZTGwAALIN+9xCli35zYkDCE
2515
+ eM0F8KzWLiH3qyCi5TRIhwQdBjDcAEHIxsAAC0RMIhAAPgAAAD8AAABAAAAAQQAAAEwiEABCAAAA
2516
+ XCMQAEMAAACi7nm+lUwkg6ZvvUmceZlGWexrKzmyRSggVtnzlC3hZgBBnMfAAAtZHAAAAB0AAAD/
2517
+ ////AAAAAAAAAAD//////v////////////////////////////////////////8BAAAA/v///wAA
2518
+ AAACAAAAAAAAAP7///8AAAAAAgAAAAEAQYTIwAALsARzKcXMahns7HqnsEiyDRpY3y039IFNY8f/
2519
+ ///////////////////////////////8////AwAAAAAAAAD8////+///////////////////////
2520
+ ///////////////////MLUGdcYgRCOwyTHrYrSn3LgIgGZsg8nfiipOU7ks345QgAh/0ISu2+b9P
2521
+ YEsRCM0BAAAAKLXASWZ10D04ztag4njjIG5NG1T8OpyH/w6jWYSGVGQr3k5hI/cvgRMVninCrTpN
2522
+ /qQDS609BCOsqbR7v6i/oVCwgy5W562L2f/0aBlSw8ZAqGk5JgKA3enFFVrCq3grnCMQAEQAAABF
2523
+ AAAARgAAAEcAAACcIxAASAAAAAwlEABJAAAAqQm0GSSbMS0ZpBrf5YE9/0cpuPw6SD68xRyrShdJ
2524
+ DdSVaCYoeluwPyG/OSsB7oQML3Vzci9sb2NhbC9jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3Jh
2525
+ dGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmluZy0wLjE3LjE0L3NyYy9lYy9zdWl0ZV9iL29wcy9w
2526
+ Mzg0LnJzAABMJRAAZgAAAAgBAAA8AAAAAgEGAwMBBQEFBAQFCgcDAgUABAUEBAUGBAYEBwUFCgYJ
2527
+ BgQFBgQDAAcFBwIFAwUHBQUEBQUDAwEHAQYFBAIDAQQBBAEGAgUCBQICAQQAAABcIxAAWCAQAEoA
2528
+ AABLAAAArtqcAz01Rgx7YehYUwUZQwBB2MzAAAskAQAAAGfmCWqFrme7cvNuPDr1T6V/Ug5RjGgF
2529
+ m6vZgx8ZzeBbAEGgzcAACzhMAAAAIAAAAAEgQAAAAAAADCUQAFwgEABNAAAATgAAAIzWOjOW5hMT
2530
+ hVhPt0zy5acf0sgLfrKcOABB+M3AAAv/CNieBcFdnbvLB9V8NiopmmIX3XAwWgFZkTlZDvfY7C8V
2531
+ MQvA/2cmM2cRFVhoh0q0jqeP+WQNLgzbpE/6vh1ItUc7AAAAQAAAAAIwgAAAAAAAFCYQAFgmEABP
2532
+ AAAAAAAAABQmEADwJhAATwAAAAIAAACwJhAAWCYQAE8AAAADAAAAsCYQAPAmEABPAAAABAAAAEVD
2533
+ RFNBX1AyNTZfU0hBMjU2X0FTTjFFQ0RTQV9QMjU2X1NIQTI1Nl9GSVhFREVDRFNBX1AyNTZfU0hB
2534
+ Mzg0X0FTTjFFQ0RTQV9QMzg0X1NIQTI1Nl9BU04xRUNEU0FfUDM4NF9TSEEzODRfQVNOMUVDRFNB
2535
+ X1AzODRfU0hBMzg0X0ZJWEVEY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2
2536
+ YWx1ZSgpL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5NDRlNTQ1MTg4ZDIzNTkvbGli
2537
+ cmFyeS9jb3JlL3NyYy9zbGljZS9pdGVyLnJzAAAAOygQAE4AAACDBwAAEQAAAC9ydXN0Yy8xNzA2
2538
+ N2U5YWM2ZDdlY2I3MGU1MGY5MmMxOTQ0ZTU0NTE4OGQyMzU5L2xpYnJhcnkvYWxsb2Mvc3JjL3N0
2539
+ cmluZy5ycwCcKBAASwAAAH0FAAAbAAAA3CkQAFAAAAAuAgAAEQAAAC9ydXN0L2RlcHMvZGxtYWxs
2540
+ b2MtMC4yLjcvc3JjL2RsbWFsbG9jLnJzYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPj0gc2l6ZSAr
2541
+ IG1pbl9vdmVyaGVhZAAIKRAAKQAAAKgEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0g
2542
+ c2l6ZSArIG1heF9vdmVyaGVhZAAACCkQACkAAACuBAAADQAAAFRyaWVkIHRvIHNocmluayB0byBh
2543
+ IGxhcmdlciBjYXBhY2l0ebApEAAkAAAAL3J1c3RjLzE3MDY3ZTlhYzZkN2VjYjcwZTUwZjkyYzE5
2544
+ NDRlNTQ1MTg4ZDIzNTkvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnPcKRAAUAAAALkC
2545
+ AAAJAAAAbnVsbCBwb2ludGVyIHBhc3NlZCB0byBydXN0cmVjdXJzaXZlIHVzZSBvZiBhbiBvYmpl
2546
+ Y3QgZGV0ZWN0ZWQgd2hpY2ggd291bGQgbGVhZCB0byB1bnNhZmUgYWxpYXNpbmcgaW4gcnVzdC91
2547
+ c3IvbG9jYWwvY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1
2548
+ NTdmL3dhc20tYmluZGdlbi0wLjIuOTIvc3JjL2NvbnZlcnQvc2xpY2VzLnJzAACmKhAAaAAAAN4A
2549
+ AAABAAAABAAAAAYAAAAGAAAABgAAAAoAAAApGhAALRoQADMaEAA5GhAAPxoQABYAAAAXAAAAFgAA
2550
+ ABYAAAAWAAAAFwAAAIgnEACeJxAAtScQAMsnEADhJxAA9ycQAEGA18AAC5gBUSVj/MLKufOEnhen
2551
+ rfrmvP//////////AAAAAP////9PvADuqsjRzAAAAAAAAAAA/////wAAAAAAAAAA//////7/////
2552
+ ////////////////////////////////////cynFzGoZ7Ox6p7BIsg0aWN8tN/SBTWPH////////
2553
+ ////////////////////////RdyP6Ilg1G4AQaPYwAALMoAAAAAAAAAAgP///3//////////////
2554
+ ////////////////////////////fwEAAAABAEHg2MAACxEBAAAA//////////8AAAAAAQBBkNnA
2555
+ AAsBAQBBnNnAAAueD/////////////////7///8AAAAAPBSpGNQw53kBtu1f/JW6dRAlYncrc/t5
2556
+ xlU3pXZfkBgKVpXOV1Py3VzkGbrkuEqLJfMh3YiG6NKFXYglGP9xhbvSoBbFL5JPmTRiGmzBXA2L
2557
+ LMZXOs9Bkn9mG/1haV4vlxeg9QvHFVySYZVgTbQgPVLbHwc3G5EEew9vjRb5SPa8uzfhR2hWnuwL
2558
+ aoqeRjTkYzTXeWEnxLEVAD0ThQK+Wqt9TMB8g6qSBwwmQ0yfPVc3zOZ4YhWTDINzb2tbcruUJQni
2559
+ v0TCqGJn6NyPw5rBkWNwON3VpZZa9iTTIdSH1WHqc3GjonN26GWLd1MIgIQjPrS6BR5E+BC+7yFG
2560
+ Ev4R+v2fsSwrH4kcIzySsVuNugGOysWKZz3Qtty+Ex9MsG5YCe3oJ+XGNQzi7RkYPKOBHvpSxlbA
2561
+ 1o8nEU+GcAis1RnVM7XSNHdXYsDdvaH2ijtnk8Kep5p8flexZrLDUeZtu7NZUrY6MOnngHQ60NOv
2562
+ oNYn/Dyb0YOsxZu5GF2aYbRgHKrlGuE4ar1YNudJK2W3uO2HX+4UABMLzf/rrrInD51VCnN6MUaS
2563
+ yjrIu90vW5WccZoBrODfwQeNxG41bVZKJGqx+PQOQfhWaiZ7xP4aJJfBh5xtjmtAChurQs0CPj+A
2564
+ aezbBKgJA39f0Lo794U7qH8Zjq1zcgnGwa1nUA5El8A0q3nD8lZqhNH4HYSLBu6o72hsF1lEMSAw
2565
+ H1+R1TKv8VC9dV0xdcOZvGcv97r/fIM/ctdIGKQTBosc1OIw8dAjK1q+1SXik+3G8zRZg5nnb/xv
2566
+ YiImCRRDaiGQedm0u1A+xn7lxpGBN7LNHRhALEJl9uA2ApsJqEHDSf4BGAEQK5MVOZvFtWj8/HCC
2567
+ WaL1hcO73JrRqvNEcQyu+4OZiVXd9C+4dI6LuJPJNOdxQDzg0ioywEOvnnqaQWCdFFHF5Ob+IeyA
2568
+ /kvhX4K+VcJqEc72Z11KLwdavJivY37bSHHS+rMFqymstsCQ5holTjyoqTd93qrCdch9CoQaDp/j
2569
+ fTh31w1spUnMnh50bAhG2PzPpc6uBfUIFHqPfsTwvsCFe7OPag7M5LaWNSOPOGu/S239Tu+cw/pT
2570
+ pKvVKPb5yFoTnL74yJWUchwKv2LzO4DEYSms1GPfA4RBngDp7JHL+QnBBVeUWNCV0MLAhevdlj0I
2571
+ uZtEQHqNK2mE4R7uLk80w5t0MJFCVuNaDbFCpUgnG0lVKnMQs2WmnEbBTBpfUh1ZKT+YT7hrW2/n
2572
+ 4YRfn0Hvfr6JobqAltQAEiwz7xgfVXZjmlFHQQKGKCDwcrMmrB6Y0MjrhafKp9Sp6Vjf2w3FU9mP
2573
+ D1n9zGFjnRfJ5kRrYulyz2TrIhBh2X/ziLKefrs+hjQ95rAx7udPq0/lqXIFYPSktefVNDNJwDFI
2574
+ 1QaS+4mFOlWDZcz1cKrlSVbiSgl5CFJGBBAHRZDMTxxUAm1psOuZ2ok7wKC6qyJAKLie1/Km6AUc
2575
+ uGJ4hCdjTeUFWUt6M0p59yENUGc8YX9tfbcFcCDo1s8EgTdaCtb7wvTV4GUNz0k1bQ/lM9ReZs36
2576
+ b2kzb7T8Ec6s/VtpYJh8r1LiDoEsu1lx4Q9FZXs1i3W+vt/3cuqf1nR+BStFF3OSenGF1Gl2P+i7
2577
+ aR/Oa32HcoKu+AmNJ0QyVK5IlZzBwuPeVXcgRRnvb9lhvYfDKC2x7zyBGKpk33LW0byfDbBUceVe
2578
+ 3EhUMZr0nkYP75ouK26VpYU+nEqSqh7sqkUZR56gyN8Sqh2f9k0ncvImc17/oizI5OBE3am3c87Y
2579
+ uQGpjORzbgNs8FNxpOEh5OHJGASSeTtsuHJ2XXCHzr2Td5q3ypPnWvIMnYZto5QxH2TChkmCyFWd
2580
+ XpRuCaNe+0k+CtsTU+a4OUqz0DXAe0Hjp8Ang2s4C0TRYgOsLSa3j0P5zeBMEUEssaCVrfHOpSti
2581
+ Q9VnqDebwMmG5AHSzdYml5L/Qr96RyDSZwq8QRsSD4okTUQKdtRiN0ebZR1PBA6otAslZeP9CIfy
2582
+ i4Taw+6sbp0204IhpsKClESS3N+CNddsXVbSL34va4eKF7UiAQq0BFEI/5b/UXaf8hSrMQsF5tSH
2583
+ X4uyq4QKeXCCn0Pt1Wv044WdtWwtEiIebBtc9XVAVmUXZ29D5W1Z65rMXpbCtJI8AucD6gFhOQEu
2584
+ trQER2ejXpA//agMYSsbVUI6UpIGzQ85nKi3Hj6mkgO+0vHnMwzbTWSi3JZImDMVDiEcI42Md3Do
2585
+ KHrocOFWaWHmHZ0LnLArOMnDSn2YmGlRBb4Z1vQJrsR2I4s9kz8aZbfgHfQFl+PHlA04HcMxjEuV
2586
+ hTYMGvJbAD1TaMmex3VuYtcLVJ3GQkd1F8qy29L2/9puzBidShe9jA396HhFqpOHXofmLKucE6d2
2587
+ qduhPrQRqzfOktJZUqnxfwqG8YSPIQIbhROt+t7qKyKnRJEKK+x4rKLFWfryUUACWjjOR2Gl7NGR
2588
+ kMYqvCPVlL4PGux5/a6NLZecs8791rw7lRr2WPxfV/UgtPetxIbZ27ee8xUUiKqBbJeNufX84m59
2589
+ cS/PXUdlVNC7YGjE0ySOBAQEBAQEAQEEBABB8OnAAAsJUQAAAAAAAABSAEGI6sAAC80DUQAAAAAA
2590
+ AABJbnZhbGlkIGZsYWdzAGN0eCAhPSBzZWNwMjU2azFfY29udGV4dF9ub19wcmVjb21wAHNlbGYg
2591
+ dGVzdCBmYWlsZWQARm9yIHRoaXMgc2FtcGxlLCB0aGlzIDYzLWJ5dGUgc3RyaW5nIHdpbGwgYmUg
2592
+ dXNlZCBhcyBpbnB1dCBkYXRhAChmbGFncyAmIFNFQ1AyNTZLMV9GTEFHU19UWVBFX01BU0spID09
2593
+ IFNFQ1AyNTZLMV9GTEFHU19UWVBFX0NPTVBSRVNTSU9OAHJlY2lkID49IDAgJiYgcmVjaWQgPD0g
2594
+ MwBzZWNwMjU2azFfZWNtdWx0X2NvbnRleHRfaXNfYnVpbHQoJmN0eC0+ZWNtdWx0X2N0eCkAc2Vj
2595
+ cDI1NmsxX2VjbXVsdF9nZW5fY29udGV4dF9pc19idWlsdCgmY3R4LT5lY211bHRfZ2VuX2N0eCkA
2596
+ IXNlY3AyNTZrMV9mZV9pc196ZXJvKCZnZS0+eCkAKm91dHB1dGxlbiA+PSAoKGZsYWdzICYgU0VD
2597
+ UDI1NksxX0ZMQUdTX0JJVF9DT01QUkVTU0lPTikgPyAzM3UgOiA2NXUpAFIAAAAAAAAAUAAAAFAA
2598
+ QeDtwAALEEVDRFNBK0RFUiAgICAgICAAQZjuwAALAQEAQcDuwAALEEVDRFNBK1JlY292ZXJ5ICAA
2599
+ QeDuwAALbvCKeMu67ggrBSrgcI8y+h5QxcQhqncrpdu0BqLqa+NCmBf4FluBAgCflY3i3LINAPyb
2600
+ AgcLhw4AXCkGWsW6CwDc+X5mvnkAALjUEPuP0AcAxJlBVWiKBAC0F/2oCBEOAMC/T9pVRgwAoyZ3
2601
+ 2jpIAEHg78AACzBUaGUgc2NhbGFyIGZvciB0aGlzIHggaXMgdW5rbm93bgAAAAAAAAAAL/z///7/
2602
+ //8AQanwwAALEAEAAAAAAADPytot4vbHJwcAQeDwwAALFO66yS9yoQ0AAkT8dQuVAQAjUUUBAEGI
2603
+ 8cAAC0BBQTbQjF4CAP27A4r0ag4A3K66/v//DwD///////8PAP///////wAAQUE20Ixe0j/ugCK9
2604
+ mnO7Kuv/////////AEHR8cAACxgBAAAAAAAAwU53qpkA8jQAAQAAAAAAAAEAQZDywAALAQEAQcDy
2605
+ wAALAYAAQYDzwAALEMPkvwqpf1RvKIgOAdZ+Q+QAQaDzwAALpgEsVrE9qM1l1200dAfFCiiK/v//
2606
+ /////////////////zGw20WaIJPof8rocRSKqj0V64SS5JBs6M1r1Kch0oYwcX/Eiq60cRXGBvWd
2607
+ rAgSIsTkvwqpf1RvKIgOAdZ+Q+RyvSMbfJYC33hmgSDqIi4SWmQSiAIcJqXgMFzATK1jU+4BlXEo
2608
+ bAkAE1yZWC9RBwBJ8JzpNDQMAOp5ROYGcQAAfGUraul6AEHQ9MAACxBTY2hub3JyK1NIQTI1NiAg
2609
+ AEHk9MAACwNANBAAKgRuYW1lASMB6QIfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgCI
2610
+ AQlwcm9kdWNlcnMCCGxhbmd1YWdlAgRSdXN0AANDOTkADHByb2Nlc3NlZC1ieQQFcnVzdGMdMS44
2611
+ Ny4wICgxNzA2N2U5YWMgMjAyNS0wNS0wOSkMRGViaWFuIGNsYW5nBjE0LjAuNgZ3YWxydXMGMC4y
2612
+ MC4zDHdhc20tYmluZGdlbgYwLjIuOTIAaw90YXJnZXRfZmVhdHVyZXMGKw9tdXRhYmxlLWdsb2Jh
2613
+ bHMrE25vbnRyYXBwaW5nLWZwdG9pbnQrC2J1bGstbWVtb3J5KwhzaWduLWV4dCsPcmVmZXJlbmNl
2614
+ LXR5cGVzKwptdWx0aXZhbHVl
2615
2615
  `;
package/dist/index.d.ts CHANGED
@@ -26,5 +26,6 @@ export * from './token/common.js';
26
26
  export * from './token/empp.js';
27
27
  export * from './token/slp.js';
28
28
  export * from './token/slp.parse.js';
29
+ export * from './parse/opreturn.js';
29
30
  export * as payment from './payment';
30
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -58,5 +58,6 @@ __exportStar(require("./token/common.js"), exports);
58
58
  __exportStar(require("./token/empp.js"), exports);
59
59
  __exportStar(require("./token/slp.js"), exports);
60
60
  __exportStar(require("./token/slp.parse.js"), exports);
61
+ __exportStar(require("./parse/opreturn.js"), exports);
61
62
  exports.payment = __importStar(require("./payment"));
62
63
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtE,8CAA4B;AAC5B,2CAAyB;AACzB,4CAA0B;AAC1B,0CAAwB;AACxB,8CAA4B;AAC5B,8CAA4B;AAC5B,gDAA8B;AAC9B,gDAA8B;AAC9B,gDAA8B;AAC9B,uDAAqC;AACrC,mDAAiC;AACjC,0CAAwB;AACxB,iDAA+B;AAC/B,kDAAgC;AAChC,gDAA8B;AAC9B,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,kDAAgC;AAChC,iDAA+B;AAC/B,sDAAoC;AACpC,uDAAqC;AACrC,iDAA+B;AAC/B,uDAAqC;AACrC,oDAAkC;AAClC,kDAAgC;AAChC,iDAA+B;AAC/B,uDAAqC;AACrC,qDAAqC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtE,8CAA4B;AAC5B,2CAAyB;AACzB,4CAA0B;AAC1B,0CAAwB;AACxB,8CAA4B;AAC5B,8CAA4B;AAC5B,gDAA8B;AAC9B,gDAA8B;AAC9B,gDAA8B;AAC9B,uDAAqC;AACrC,mDAAiC;AACjC,0CAAwB;AACxB,iDAA+B;AAC/B,kDAAgC;AAChC,gDAA8B;AAC9B,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,kDAAgC;AAChC,iDAA+B;AAC/B,sDAAoC;AACpC,uDAAqC;AACrC,iDAA+B;AAC/B,uDAAqC;AACrC,oDAAkC;AAClC,kDAAgC;AAChC,iDAA+B;AAC/B,uDAAqC;AACrC,sDAAoC;AACpC,qDAAqC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Convert an OP_RETURN outputScript into an array of pushes
3
+ * @param outputScript - An OP_RETURN output script, e.g. 6a042e7865630003333333150076458db0ed96fe9863fc1ccec9fa2cfab884b0f6
4
+ * @returns An array of hex pushes, e.g. ['2e786563', '00', '333333', '0076458db0ed96fe9863fc1ccec9fa2cfab884b0f6']
5
+ * @throws Error if outputScript is not a valid OP_RETURN outputScript
6
+ */
7
+ export declare function getStackArray(outputScript: string): string[];
8
+ /**
9
+ * Swap endianness of a hex string
10
+ * @param hexString a string of hex bytes, e.g. 04000000
11
+ * @returns a string of hex bytes with swapped endianness, e.g. for 04000000, returns 00000004
12
+ */
13
+ export declare function swapEndianness(hexString: string): string;
14
+ /**
15
+ * Consume a specified number of bytes from a stack object
16
+ * @param stack an object containing a hex string outputScript of an eCash tx, e.g. {remainingHex: '6a...'}
17
+ * @param byteCount integer
18
+ * @returns consumed, a hex string of byteCount bytes
19
+ * The stack object is modified in place so that consumed bytes are removed
20
+ */
21
+ export declare function consume(stack: {
22
+ remainingHex: string;
23
+ }, byteCount: number): string;
24
+ /**
25
+ * Parse, decode and consume the data push from the top of the stack.
26
+ * If the stack does not start with a valid push, it raises an error and the stack is left untouched.
27
+ * @param stack an object containing a hex string outputScript of an eCash tx, e.g. {remainingHex: '4d...'}
28
+ * @returns {data, pushedWith}
29
+ * stack is modified in place so that the push is removed
30
+ */
31
+ export declare function consumeNextPush(stack: {
32
+ remainingHex: string;
33
+ }): {
34
+ data: string;
35
+ pushedWith: string;
36
+ };
37
+ //# sourceMappingURL=opreturn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opreturn.d.ts","sourceRoot":"","sources":["../../src/parse/opreturn.ts"],"names":[],"mappings":"AAgCA;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAiC5D;AAmCD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA4BxD;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CACnB,KAAK,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,EAC/B,SAAS,EAAE,MAAM,GAClB,MAAM,CAmCR;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACtB,CAyDA"}
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+ // Copyright (c) 2025 The Bitcoin developers
3
+ // Distributed under the MIT software license, see the accompanying
4
+ // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.consumeNextPush = exports.consume = exports.swapEndianness = exports.getStackArray = void 0;
7
+ const consts_js_1 = require("../consts.js");
8
+ const hex_js_1 = require("../io/hex.js");
9
+ const opcode_js_1 = require("../opcode.js");
10
+ /**
11
+ * Convert an OP_RETURN outputScript into an array of pushes
12
+ * @param outputScript - An OP_RETURN output script, e.g. 6a042e7865630003333333150076458db0ed96fe9863fc1ccec9fa2cfab884b0f6
13
+ * @returns An array of hex pushes, e.g. ['2e786563', '00', '333333', '0076458db0ed96fe9863fc1ccec9fa2cfab884b0f6']
14
+ * @throws Error if outputScript is not a valid OP_RETURN outputScript
15
+ */
16
+ function getStackArray(outputScript) {
17
+ const opReturnHex = (0, hex_js_1.toHex)(new Uint8Array([opcode_js_1.OP_RETURN]));
18
+ // Validate for OP_RETURN outputScript
19
+ if (typeof outputScript !== 'string' ||
20
+ !outputScript.startsWith(opReturnHex)) {
21
+ throw new Error(`outputScript must be a string that starts with ${opReturnHex}`);
22
+ }
23
+ if (outputScript.length > 2 * consts_js_1.OP_RETURN_MAX_BYTES) {
24
+ throw new Error(`Invalid eCash OP_RETURN size: ${outputScript.length / 2} bytes. eCash OP_RETURN outputs cannot exceed ${consts_js_1.OP_RETURN_MAX_BYTES} bytes.`);
25
+ }
26
+ // Create stack, the input object required by consumeNextPush
27
+ const stack = {
28
+ remainingHex: outputScript.slice(opReturnHex.length),
29
+ };
30
+ // Initialize stackArray
31
+ const stackArray = [];
32
+ while (stack.remainingHex.length > 0) {
33
+ stackArray.push(consumeNextPush(stack).data);
34
+ }
35
+ return stackArray;
36
+ }
37
+ exports.getStackArray = getStackArray;
38
+ /**
39
+ * One-byte stack additions that can be pushed to OP_RETURN in isolation
40
+ */
41
+ const ONE_BYTE_STACK_ADDS = [
42
+ opcode_js_1.OP_0,
43
+ opcode_js_1.OP_1NEGATE,
44
+ opcode_js_1.OP_RESERVED,
45
+ opcode_js_1.OP_1,
46
+ opcode_js_1.OP_2,
47
+ opcode_js_1.OP_3,
48
+ opcode_js_1.OP_4,
49
+ opcode_js_1.OP_5,
50
+ opcode_js_1.OP_6,
51
+ opcode_js_1.OP_7,
52
+ opcode_js_1.OP_8,
53
+ opcode_js_1.OP_9,
54
+ opcode_js_1.OP_10,
55
+ opcode_js_1.OP_11,
56
+ opcode_js_1.OP_12,
57
+ opcode_js_1.OP_13,
58
+ opcode_js_1.OP_14,
59
+ opcode_js_1.OP_15,
60
+ opcode_js_1.OP_16,
61
+ ];
62
+ /**
63
+ * One-byte pushdata opcodes (0x01-0x4b)
64
+ */
65
+ const ONE_BYTE_PUSHDATAS = [];
66
+ for (let i = 1; i <= 0x4b; i++) {
67
+ ONE_BYTE_PUSHDATAS.push(i);
68
+ }
69
+ /**
70
+ * Swap endianness of a hex string
71
+ * @param hexString a string of hex bytes, e.g. 04000000
72
+ * @returns a string of hex bytes with swapped endianness, e.g. for 04000000, returns 00000004
73
+ */
74
+ function swapEndianness(hexString) {
75
+ const byteLength = 2;
76
+ if (hexString.length % byteLength === 1) {
77
+ throw new Error(`Invalid input length ${hexString.length}: hexString must be divisible by bytes, i.e. have an even length.`);
78
+ }
79
+ // Check if input contains only hex characters
80
+ if (!/^[\da-f]+$/i.test(hexString)) {
81
+ throw new Error(`Invalid input. ${hexString} contains non-hexadecimal characters.`);
82
+ }
83
+ let swappedEndianHexString = '';
84
+ let remainingHex = hexString;
85
+ while (remainingHex.length > 0) {
86
+ // Get the last byte on the string
87
+ const thisByte = remainingHex.slice(-byteLength);
88
+ // Add thisByte to swappedEndianHexString in swapped-endian order
89
+ swappedEndianHexString += thisByte;
90
+ // Remove thisByte from remainingHex
91
+ remainingHex = remainingHex.slice(0, -byteLength);
92
+ }
93
+ return swappedEndianHexString;
94
+ }
95
+ exports.swapEndianness = swapEndianness;
96
+ /**
97
+ * Consume a specified number of bytes from a stack object
98
+ * @param stack an object containing a hex string outputScript of an eCash tx, e.g. {remainingHex: '6a...'}
99
+ * @param byteCount integer
100
+ * @returns consumed, a hex string of byteCount bytes
101
+ * The stack object is modified in place so that consumed bytes are removed
102
+ */
103
+ function consume(stack, byteCount) {
104
+ // Validation for stack
105
+ if (typeof stack !== 'object' || typeof stack.remainingHex !== 'string') {
106
+ throw new Error('Invalid input. Stack must be an object with string stored at key remainingHex.');
107
+ }
108
+ if (stack.remainingHex.length % 2 === 1) {
109
+ throw new Error('Invalid input: stack.remainingHex must be divisible by bytes, i.e. have an even length.');
110
+ }
111
+ // Throw an error if byteCount input is not an integer
112
+ if (!Number.isInteger(byteCount)) {
113
+ throw new Error(`byteCount must be an integer, received ${byteCount}`);
114
+ }
115
+ // One byte is 2 characters of a hex string
116
+ const byteLength = 2;
117
+ // Get byte slice size
118
+ const byteSliceSize = byteCount * byteLength;
119
+ // Throw an error if byteCount is greater than consumable hex bytes in outputScript
120
+ if (byteSliceSize > stack.remainingHex.length) {
121
+ throw new Error(`consume called with byteCount (${byteCount}) greater than remaining bytes in outputScript (${stack.remainingHex.length / byteLength})`);
122
+ }
123
+ // Get consumed bytes
124
+ const consumed = stack.remainingHex.slice(0, byteSliceSize);
125
+ // Remove consumed from the stack
126
+ stack.remainingHex = stack.remainingHex.slice(byteSliceSize);
127
+ return consumed;
128
+ }
129
+ exports.consume = consume;
130
+ /**
131
+ * Parse, decode and consume the data push from the top of the stack.
132
+ * If the stack does not start with a valid push, it raises an error and the stack is left untouched.
133
+ * @param stack an object containing a hex string outputScript of an eCash tx, e.g. {remainingHex: '4d...'}
134
+ * @returns {data, pushedWith}
135
+ * stack is modified in place so that the push is removed
136
+ */
137
+ function consumeNextPush(stack) {
138
+ // Clone stack in case you have an error and wish to leave it unmodified
139
+ const clonedStack = structuredClone(stack);
140
+ // Get the first byte on the stack
141
+ const pushOpCodeHex = consume(clonedStack, 1);
142
+ const pushOpCode = parseInt(pushOpCodeHex, 16);
143
+ if (ONE_BYTE_STACK_ADDS.includes(pushOpCode)) {
144
+ // If this is a one-byte push, consume stack and return the byte
145
+ stack.remainingHex = clonedStack.remainingHex;
146
+ return { data: pushOpCodeHex, pushedWith: pushOpCodeHex };
147
+ }
148
+ // Initialize variables
149
+ let pushBytecountHex;
150
+ // Apply conditional checks to determine the size of this push
151
+ if (ONE_BYTE_PUSHDATAS.includes(pushOpCode)) {
152
+ // If the first byte on the stack is 0x01-0x4b, then this is pushedBytesHex
153
+ pushBytecountHex = pushOpCodeHex;
154
+ }
155
+ else if (pushOpCode === opcode_js_1.OP_PUSHDATA1) {
156
+ // The next byte contains the number of bytes to be pushed onto the stack.
157
+ pushBytecountHex = consume(clonedStack, 1);
158
+ }
159
+ else if (pushOpCode === opcode_js_1.OP_PUSHDATA2) {
160
+ // The next two bytes contain the number of bytes to be pushed onto the stack in little endian order.
161
+ pushBytecountHex = consume(clonedStack, 2);
162
+ }
163
+ else if (pushOpCode === opcode_js_1.OP_PUSHDATA4) {
164
+ // The next four bytes contain the number of bytes to be pushed onto the stack in little endian order.
165
+ pushBytecountHex = consume(clonedStack, 4);
166
+ }
167
+ else {
168
+ throw new Error(`${pushOpCodeHex} is invalid pushdata`);
169
+ }
170
+ // Now that you know how many bytes are in the push, get the pushed data
171
+ const data = consume(clonedStack, parseInt(swapEndianness(pushBytecountHex), 16));
172
+ // If no error, consume stack
173
+ stack.remainingHex = clonedStack.remainingHex;
174
+ /*
175
+ Return {data, pushedWith}
176
+ Note that if the first byte on the stack is 0x01-0x4b,
177
+ this is both pushOpCode and pushBytecountHex
178
+
179
+ You don't want to return '0404' for e.g. '042e786563'
180
+ Conditionally remove pushBytecountHex for this case
181
+ */
182
+ return {
183
+ data,
184
+ pushedWith: `${pushOpCodeHex}${pushOpCodeHex !== pushBytecountHex ? pushBytecountHex : ''}`,
185
+ };
186
+ }
187
+ exports.consumeNextPush = consumeNextPush;
188
+ //# sourceMappingURL=opreturn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opreturn.js","sourceRoot":"","sources":["../../src/parse/opreturn.ts"],"names":[],"mappings":"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"}