erlang_rb 2.0.2 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7c202a75795a723e4ee552594d2b5c14bf274e4a999fefc5a8adf84ca4d5a699
4
- data.tar.gz: 5c78a367d1d9e2cd4cd71963a65c386042efb60873962bb7a89881669e79f818
3
+ metadata.gz: 82fd795948db72df73625ab7cef0f407018800b88d25e99a9a9a7a09d7ffbe8b
4
+ data.tar.gz: 1a049d6f1d488f86ef89450c5d258d389d25de4c7bdfb8bf7eb66802e36728fd
5
5
  SHA512:
6
- metadata.gz: 6726cef202d976c0e01fcf44dab37107177e3ecc547eba1594da000d135dbb99407d6182ed8fbfd164d95e9bb3e8bb9362a9c0c145058291574ddcabe8534ce4
7
- data.tar.gz: 2324c081c4bc295c1df4a9c11929e0de0c8d5303c922a607ca29867fe73271a2022de32b33fc3f804322bf996f90c02e1599554b9e452046e1ab1ea7144f21cb
6
+ metadata.gz: c843ced9e5875d4439495a8fb9b193f2ea4672cfc86a682c4da2b23c6079d72920c607da8cc8c2afcc0b935da683f2ec2dc5fcfc5c2d30d03744c742dd084de5
7
+ data.tar.gz: 3497c55537d5a02e8aca60c3d54e733721370e011775f3425240aed59739b112a31551cf54a23cb31cd2a541b53ea505e15cd839c82fba7da6bbdf5f0229ad06
checksums.yaml.gz.sig CHANGED
Binary file
data/README.markdown CHANGED
@@ -1,9 +1,9 @@
1
- Erlang Binary Term Format for Ruby
2
- ==================================
1
+ Erlang External Term Format for Ruby
2
+ ====================================
3
3
 
4
- [![Build Status](https://secure.travis-ci.org/okeuday/erlang_rb.png?branch=master)](http://travis-ci.org/okeuday/erlang_rb)
5
4
 
6
- Provides all encoding and decoding for the Erlang Binary Term Format
5
+
6
+ Provides all encoding and decoding for the Erlang External Term Format
7
7
  (as defined at [http://erlang.org/doc/apps/erts/erl_ext_dist.html](http://erlang.org/doc/apps/erts/erl_ext_dist.html))
8
8
  in a single Ruby module.
9
9
 
data/lib/erlang.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # MIT License
5
5
  #
6
- # Copyright (c) 2011-2019 Michael Truog <mjtruog at protonmail dot com>
6
+ # Copyright (c) 2011-2022 Michael Truog <mjtruog at protonmail dot com>
7
7
  #
8
8
  # Permission is hereby granted, free of charge, to any person obtaining a
9
9
  # copy of this software and associated documentation files (the "Software"),
@@ -25,11 +25,14 @@
25
25
  #
26
26
 
27
27
  require 'zlib'
28
+ require 'set'
28
29
 
29
30
  # Erlang term classes listed alphabetically
30
31
 
31
32
  module Erlang
32
33
 
34
+ @@UNDEFINED = 'undefined' # Change with set_undefined
35
+
33
36
  class OtpErlangAtom
34
37
  def initialize(value)
35
38
  @value = value
@@ -52,6 +55,8 @@ module Erlang
52
55
  raise OutputException, 'uint16 overflow', caller
53
56
  end
54
57
  else
58
+ # deprecated
59
+ # (not used in Erlang/OTP 26, i.e., minor_version 2)
55
60
  if length <= 255
56
61
  return "#{TAG_SMALL_ATOM_EXT.chr}#{length.chr}#{@value}"
57
62
  elsif length <= 65535
@@ -76,7 +81,7 @@ module Erlang
76
81
  end
77
82
  alias eql? ==
78
83
  end
79
-
84
+
80
85
  class OtpErlangBinary
81
86
  def initialize(value, bits = 8)
82
87
  @value = value
@@ -112,7 +117,7 @@ module Erlang
112
117
  end
113
118
  alias eql? ==
114
119
  end
115
-
120
+
116
121
  class OtpErlangFunction
117
122
  def initialize(tag, value)
118
123
  @tag = tag
@@ -134,7 +139,7 @@ module Erlang
134
139
  end
135
140
  alias eql? ==
136
141
  end
137
-
142
+
138
143
  class OtpErlangList
139
144
  def initialize(value, improper = false)
140
145
  @value = value
@@ -216,7 +221,7 @@ module Erlang
216
221
  end
217
222
  alias eql? ==
218
223
  end
219
-
224
+
220
225
  class OtpErlangPort
221
226
  def initialize(node, id, creation)
222
227
  @node = node
@@ -250,7 +255,7 @@ module Erlang
250
255
  end
251
256
  alias eql? ==
252
257
  end
253
-
258
+
254
259
  class OtpErlangReference
255
260
  def initialize(node, id, creation)
256
261
  @node = node
@@ -295,7 +300,7 @@ module Erlang
295
300
  end
296
301
 
297
302
  # core functionality
298
-
303
+
299
304
  def self.binary_to_term(data)
300
305
  size = data.bytesize
301
306
  if size <= 1
@@ -318,7 +323,7 @@ module Erlang
318
323
  raise ParseException, 'missing data', e.backtrace
319
324
  end
320
325
  end
321
-
326
+
322
327
  def self.term_to_binary(term, compressed = false)
323
328
  data_uncompressed = term_to_binary_(term)
324
329
  if compressed == false
@@ -341,11 +346,16 @@ module Erlang
341
346
  "#{size_uncompressed_packed}#{data_compressed}"
342
347
  end
343
348
  end
344
-
349
+
350
+ # Elixir use can set to 'nil'
351
+ def self.set_undefined(value)
352
+ @@UNDEFINED = value
353
+ end
354
+
345
355
  private
346
-
356
+
347
357
  # binary_to_term implementation functions
348
-
358
+
349
359
  def self.binary_to_term_(i, data)
350
360
  tag = data[i].ord
351
361
  i += 1
@@ -370,17 +380,7 @@ module Erlang
370
380
  elsif tag == TAG_FLOAT_EXT
371
381
  value = data[i,31].partition(0.chr)[0].to_f
372
382
  return [i + 31, value]
373
- elsif tag == TAG_ATOM_EXT
374
- j = data[i,2].unpack('n')[0]
375
- i += 2
376
- atom_name = data[i,j].force_encoding('ISO-8859-1')
377
- if atom_name.valid_encoding?
378
- return [i + j, atom_name.to_sym]
379
- else
380
- raise ParseException, 'invalid atom_name latin1', caller
381
- end
382
- elsif tag == TAG_NEW_PORT_EXT or \
383
- tag == TAG_REFERENCE_EXT or tag == TAG_PORT_EXT
383
+ elsif Set[TAG_NEW_PORT_EXT,TAG_REFERENCE_EXT,TAG_PORT_EXT].include?(tag)
384
384
  result = binary_to_atom(i, data)
385
385
  i = result[0]; node = result[1]
386
386
  id = data[i,4]
@@ -397,7 +397,7 @@ module Erlang
397
397
  end
398
398
  # tag == TAG_NEW_PORT_EXT or tag == TAG_PORT_EXT
399
399
  return [i, OtpErlangPort.new(node, id, creation)]
400
- elsif tag == TAG_NEW_PID_EXT or tag == TAG_PID_EXT
400
+ elsif Set[TAG_NEW_PID_EXT, TAG_PID_EXT].include?(tag)
401
401
  result = binary_to_atom(i, data)
402
402
  i = result[0]; node = result[1]
403
403
  id = data[i,4]
@@ -412,7 +412,7 @@ module Erlang
412
412
  i += 1
413
413
  end
414
414
  return [i, OtpErlangPid.new(node, id, serial, creation)]
415
- elsif tag == TAG_SMALL_TUPLE_EXT or tag == TAG_LARGE_TUPLE_EXT
415
+ elsif Set[TAG_SMALL_TUPLE_EXT, TAG_LARGE_TUPLE_EXT].include?(tag)
416
416
  if tag == TAG_SMALL_TUPLE_EXT
417
417
  length = data[i].ord
418
418
  i += 1
@@ -447,7 +447,7 @@ module Erlang
447
447
  j = data[i,4].unpack('N')[0]
448
448
  i += 4
449
449
  return [i + j, OtpErlangBinary.new(data[i,j], 8)]
450
- elsif tag == TAG_SMALL_BIG_EXT or tag == TAG_LARGE_BIG_EXT
450
+ elsif Set[TAG_SMALL_BIG_EXT, TAG_LARGE_BIG_EXT].include?(tag)
451
451
  if tag == TAG_SMALL_BIG_EXT
452
452
  j = data[i].ord
453
453
  i += 1
@@ -482,7 +482,7 @@ module Erlang
482
482
  #arity = data[i].ord
483
483
  i += 1
484
484
  return [i, OtpErlangFunction.new(tag, data[old_i,i - old_i])]
485
- elsif tag == TAG_NEWER_REFERENCE_EXT or tag == TAG_NEW_REFERENCE_EXT
485
+ elsif Set[TAG_NEWER_REFERENCE_EXT, TAG_NEW_REFERENCE_EXT].include?(tag)
486
486
  j = data[i,2].unpack('n')[0] * 4
487
487
  i += 2
488
488
  result = binary_to_atom(i, data)
@@ -496,22 +496,6 @@ module Erlang
496
496
  end
497
497
  id = data[i,j]
498
498
  return [i + j, OtpErlangReference.new(node, id, creation)]
499
- elsif tag == TAG_SMALL_ATOM_EXT
500
- j = data[i,1].ord
501
- i += 1
502
- atom_name = data[i,j].force_encoding('ISO-8859-1')
503
- if atom_name.valid_encoding?
504
- if atom_name == 'true'
505
- tmp = true
506
- elsif atom_name == 'false'
507
- tmp = false
508
- else
509
- tmp = atom_name.to_sym
510
- end
511
- return [i + j, tmp]
512
- else
513
- raise ParseException, 'invalid atom_name latin1', caller
514
- end
515
499
  elsif tag == TAG_MAP_EXT
516
500
  length = data[i,4].unpack('N')[0]
517
501
  i += 4
@@ -539,23 +523,61 @@ module Erlang
539
523
  result = binary_to_term_sequence(i, numfree, data)
540
524
  i = result[0]#; free = result[1]
541
525
  return [i, OtpErlangFunction.new(tag, data[old_i,i - old_i])]
542
- elsif tag == TAG_ATOM_UTF8_EXT
526
+ elsif Set[TAG_ATOM_UTF8_EXT, TAG_ATOM_EXT].include?(tag)
543
527
  j = data[i,2].unpack('n')[0]
544
528
  i += 2
545
- atom_name = data[i,j].force_encoding('UTF-8')
546
- if atom_name.valid_encoding?
547
- return [i + j, OtpErlangAtom.new(atom_name)]
529
+ atom_name = data[i,j]
530
+ i = i + j
531
+ if atom_name == 'true'
532
+ return [i, true]
533
+ elsif atom_name == 'false'
534
+ return [i, false]
535
+ elsif atom_name == @@UNDEFINED
536
+ return [i, nil]
548
537
  else
549
- raise ParseException, 'invalid atom_name unicode', caller
538
+ if tag == TAG_ATOM_UTF8_EXT
539
+ atom_name = atom_name.force_encoding('UTF-8')
540
+ if atom_name.valid_encoding?
541
+ return [i, atom_name.to_sym]
542
+ else
543
+ raise ParseException, 'invalid atom_name unicode', caller
544
+ end
545
+ else
546
+ atom_name = atom_name.force_encoding('ISO-8859-1')
547
+ if atom_name.valid_encoding?
548
+ return [i, OtpErlangAtom.new(atom_name)]
549
+ else
550
+ raise ParseException, 'invalid atom_name latin1', caller
551
+ end
552
+ end
550
553
  end
551
- elsif tag == TAG_SMALL_ATOM_UTF8_EXT
554
+ elsif Set[TAG_SMALL_ATOM_UTF8_EXT, TAG_SMALL_ATOM_EXT].include?(tag)
552
555
  j = data[i,1].ord
553
556
  i += 1
554
- atom_name = data[i,j].force_encoding('UTF-8')
555
- if atom_name.valid_encoding?
556
- return [i + j, OtpErlangAtom.new(atom_name)]
557
+ atom_name = data[i,j]
558
+ i = i + j
559
+ if atom_name == 'true'
560
+ return [i, true]
561
+ elsif atom_name == 'false'
562
+ return [i, false]
563
+ elsif atom_name == @@UNDEFINED
564
+ return [i, nil]
557
565
  else
558
- raise ParseException, 'invalid atom_name unicode', caller
566
+ if tag == TAG_SMALL_ATOM_UTF8_EXT
567
+ atom_name = atom_name.force_encoding('UTF-8')
568
+ if atom_name.valid_encoding?
569
+ return [i, atom_name.to_sym]
570
+ else
571
+ raise ParseException, 'invalid atom_name unicode', caller
572
+ end
573
+ else
574
+ atom_name = atom_name.force_encoding('ISO-8859-1')
575
+ if atom_name.valid_encoding?
576
+ return [i, OtpErlangAtom.new(atom_name)]
577
+ else
578
+ raise ParseException, 'invalid atom_name latin1', caller
579
+ end
580
+ end
559
581
  end
560
582
  elsif tag == TAG_COMPRESSED_ZLIB
561
583
  size_uncompressed = data[i,4].unpack('N')[0]
@@ -579,7 +601,7 @@ module Erlang
579
601
  raise ParseException, 'invalid tag', caller
580
602
  end
581
603
  end
582
-
604
+
583
605
  def self.binary_to_term_sequence(i, length, data)
584
606
  sequence = []
585
607
  (0...length).each do |length_index|
@@ -591,7 +613,7 @@ module Erlang
591
613
  end
592
614
 
593
615
  # (binary_to_term Erlang term primitive type functions)
594
-
616
+
595
617
  def self.binary_to_integer(i, data)
596
618
  tag = data[i].ord
597
619
  i += 1
@@ -607,7 +629,7 @@ module Erlang
607
629
  raise ParseException, 'invalid integer tag', caller
608
630
  end
609
631
  end
610
-
632
+
611
633
  def self.binary_to_pid(i, data)
612
634
  tag = data[i].ord
613
635
  i += 1
@@ -635,7 +657,7 @@ module Erlang
635
657
  raise ParseException, 'invalid pid tag', caller
636
658
  end
637
659
  end
638
-
660
+
639
661
  def self.binary_to_atom(i, data)
640
662
  tag = data[i].ord
641
663
  i += 1
@@ -671,9 +693,9 @@ module Erlang
671
693
  raise ParseException, 'invalid atom tag', caller
672
694
  end
673
695
  end
674
-
696
+
675
697
  # term_to_binary implementation functions
676
-
698
+
677
699
  def self.term_to_binary_(term)
678
700
  if term.kind_of?(String)
679
701
  return string_to_binary(term)
@@ -689,15 +711,15 @@ module Erlang
689
711
  return OtpErlangAtom.new(term.to_s).binary
690
712
  elsif term.kind_of?(TrueClass)
691
713
  return OtpErlangAtom.new(
692
- 'true'.force_encoding('ISO-8859-1')
714
+ 'true'.force_encoding('UTF-8')
693
715
  ).binary
694
716
  elsif term.kind_of?(FalseClass)
695
717
  return OtpErlangAtom.new(
696
- 'false'.force_encoding('ISO-8859-1')
718
+ 'false'.force_encoding('UTF-8')
697
719
  ).binary
698
720
  elsif term.nil?
699
721
  return OtpErlangAtom.new(
700
- 'undefined'.force_encoding('ISO-8859-1')
722
+ @@UNDEFINED.force_encoding('UTF-8')
701
723
  ).binary
702
724
  elsif term.kind_of?(OtpErlangAtom)
703
725
  return term.binary
@@ -719,7 +741,7 @@ module Erlang
719
741
  end
720
742
 
721
743
  # (term_to_binary Erlang term composite type functions)
722
-
744
+
723
745
  def self.string_to_binary(term)
724
746
  length = term.bytesize
725
747
  if length == 0
@@ -738,7 +760,7 @@ module Erlang
738
760
  raise OutputException, 'uint32 overflow', caller
739
761
  end
740
762
  end
741
-
763
+
742
764
  def self.tuple_to_binary(term)
743
765
  length = term.length
744
766
  term_packed = term.map{ |element|
@@ -753,7 +775,7 @@ module Erlang
753
775
  raise OutputException, 'uint32 overflow', caller
754
776
  end
755
777
  end
756
-
778
+
757
779
  def self.hash_to_binary(term)
758
780
  length = term.length
759
781
  if length <= 4294967295
@@ -781,7 +803,7 @@ module Erlang
781
803
  return bignum_to_binary(term)
782
804
  end
783
805
  end
784
-
806
+
785
807
  def self.bignum_to_binary(term)
786
808
  bignum = term.abs
787
809
  if term < 0
@@ -811,7 +833,7 @@ module Erlang
811
833
  end
812
834
 
813
835
  # Exception classes listed alphabetically
814
-
836
+
815
837
  class InputException < ArgumentError
816
838
  end
817
839
 
@@ -820,7 +842,7 @@ module Erlang
820
842
 
821
843
  class ParseException < SyntaxError
822
844
  end
823
-
845
+
824
846
  # tag values here http://www.erlang.org/doc/apps/erts/erl_ext_dist.html
825
847
  TAG_VERSION = 131
826
848
  TAG_COMPRESSED_ZLIB = 80
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # MIT License
6
6
  #
7
- # Copyright (c) 2014-2019 Michael Truog <mjtruog at protonmail dot com>
7
+ # Copyright (c) 2014-2022 Michael Truog <mjtruog at protonmail dot com>
8
8
  # Copyright (c) 2009-2013 Dmitry Vasiliev <dima@hlabs.org>
9
9
  #
10
10
  # Permission is hereby granted, free of charge, to any person obtaining a
@@ -119,18 +119,26 @@ class DecodeTestCase < Test::Unit::TestCase
119
119
  assert_raise(Erlang::ParseException){
120
120
  Erlang::binary_to_term("\x83d\0\1")
121
121
  }
122
- assert_equal(:'', Erlang::binary_to_term("\x83d\0\0"))
123
- assert_equal(:'', Erlang::binary_to_term("\x83s\0"))
124
- assert_equal(:test, Erlang::binary_to_term("\x83d\0\4test"))
125
- assert_equal(:test, Erlang::binary_to_term("\x83s\4test"))
122
+ assert_equal(:'', Erlang::binary_to_term("\x83v\0\0"))
123
+ assert_equal(:'', Erlang::binary_to_term("\x83w\0"))
124
+ assert_equal(:test, Erlang::binary_to_term("\x83v\0\4test"))
125
+ assert_equal(:test, Erlang::binary_to_term("\x83w\4test"))
126
126
  end
127
127
  def test_binary_to_term_predefined_atoms
128
128
  assert_equal(true,
129
129
  Erlang::binary_to_term("\x83s\4true"))
130
130
  assert_equal(false,
131
131
  Erlang::binary_to_term("\x83s\5false"))
132
- assert_equal(:undefined,
132
+ assert_equal(false,
133
+ Erlang::binary_to_term("\x83w\5false"))
134
+ assert_equal(nil,
135
+ Erlang::binary_to_term("\x83s\11undefined"))
136
+ assert_equal(nil,
137
+ Erlang::binary_to_term("\x83w\11undefined"))
138
+ assert_equal(nil,
133
139
  Erlang::binary_to_term("\x83d\0\11undefined"))
140
+ assert_equal(nil,
141
+ Erlang::binary_to_term("\x83v\0\11undefined"))
134
142
  end
135
143
  def test_binary_to_term_empty_list
136
144
  assert_equal(Erlang::OtpErlangList.new([]),
@@ -175,7 +183,7 @@ class DecodeTestCase < Test::Unit::TestCase
175
183
  assert_raise(Erlang::ParseException){
176
184
  Erlang::binary_to_term("\x83l\0\0\0\0k")
177
185
  }
178
- lst = Erlang::binary_to_term("\x83l\0\0\0\1jd\0\4tail")
186
+ lst = Erlang::binary_to_term("\x83l\0\0\0\1jv\0\4tail")
179
187
  assert(lst.kind_of?(Erlang::OtpErlangList))
180
188
  assert_equal([Erlang::OtpErlangList.new([]), :tail], lst.value)
181
189
  assert_equal(true, lst.improper)
@@ -586,9 +594,9 @@ class EncodeTestCase < Test::Unit::TestCase
586
594
  Erlang::term_to_binary('test'))
587
595
  end
588
596
  def test_term_to_binary_predefined_atom
589
- assert_equal("\x83s\4true", Erlang::term_to_binary(true))
590
- assert_equal("\x83s\5false", Erlang::term_to_binary(false))
591
- assert_equal("\x83s\x09undefined", Erlang::term_to_binary(nil))
597
+ assert_equal("\x83w\4true", Erlang::term_to_binary(true))
598
+ assert_equal("\x83w\5false", Erlang::term_to_binary(false))
599
+ assert_equal("\x83w\x09undefined", Erlang::term_to_binary(nil))
592
600
  end
593
601
  def test_term_to_binary_short_integer
594
602
  assert_equal("\x83a\0", Erlang::term_to_binary(0))
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: erlang_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Truog
@@ -11,32 +11,32 @@ cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
13
  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
- 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
- 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
- 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
- 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
- ixcKuCiUF8nvV58DrFxd8ZYvYMk9GDoU95zIu/brrn6KeFP/nd10vtx46hSlGgeE
19
- 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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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
- 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
- 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
- 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
36
36
  -----END CERTIFICATE-----
37
- date: 2021-05-27 00:00:00.000000000 Z
37
+ date: 2022-10-12 00:00:00.000000000 Z
38
38
  dependencies: []
39
- description: Erlang Binary Term Format for Ruby
39
+ description: Erlang External Term Format for Ruby
40
40
  email: mjtruog@protonmail.com
41
41
  executables: []
42
42
  extensions: []
metadata.gz.sig CHANGED
Binary file