guix-more/more/packages/binary.scm

binary.scm

1
;;; GNU Guix --- Functional package management for GNU
2
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
3
;;;
4
;;; This file is part of GNU Guix.
5
;;;
6
;;; GNU Guix is free software; you can redistribute it and/or modify it
7
;;; under the terms of the GNU General Public License as published by
8
;;; the Free Software Foundation; either version 3 of the License, or (at
9
;;; your option) any later version.
10
;;;
11
;;; GNU Guix is distributed in the hope that it will be useful, but
12
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
;;; GNU General Public License for more details.
15
;;;
16
;;; You should have received a copy of the GNU General Public License
17
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
18
19
(define-module (more packages binary)
20
  #:use-module ((guix licenses) #:prefix license:)
21
  #:use-module (gnu packages)
22
  #:use-module (guix packages)
23
  #:use-module (guix download)
24
  #:use-module (guix git-download)
25
  #:use-module (guix utils)
26
  #:use-module (guix build-system cmake)
27
  #:use-module (guix build-system gnu)
28
  #:use-module (guix build-system python)
29
  #:use-module (gnu packages check)
30
  #:use-module (gnu packages compression)
31
  #:use-module (gnu packages glib)
32
  #:use-module (gnu packages libffi)
33
  #:use-module (gnu packages multiprecision)
34
  #:use-module (gnu packages pkg-config)
35
  #:use-module (gnu packages python)
36
  #:use-module (gnu packages python-xyz)
37
  #:use-module (gnu packages python-crypto)
38
  #:use-module (gnu packages qt)
39
  #:use-module (gnu packages tls)
40
  #:use-module (more packages python)
41
  #:use-module (more packages smt))
42
43
(define-public python-pyelftools
44
  (package
45
    (name "python-pyelftools")
46
    (version "0.24")
47
    (source (origin
48
              (method url-fetch)
49
              (uri (string-append "https://github.com/eliben/pyelftools/archive/v"
50
                                  version ".tar.gz"))
51
              (file-name (string-append name "-" version ".tar.gz"))
52
              (sha256
53
               (base32
54
                "1iw47b20brg0ah86s9a2dn1f70qfmdv20p04q131vmnwa9g066f4"))))
55
    (build-system python-build-system)
56
    (native-inputs
57
     `(("utils" ,python-utils)))
58
    (arguments
59
     `(#:tests? #f))
60
    (home-page "https://github.com/eliben/pyelftools")
61
    (synopsis "Parsing and analyzing ELF files and DWARF debugging information")
62
    (description
63
      "Python library for parsing and analyzing ELF files and DWARF debugging information.")
64
    (license license:public-domain)))
65
66
(define-public python2-pyelftools
67
  (package
68
    (inherit (package-with-python2 python-pyelftools))
69
    (arguments
70
     `(#:tests? #t
71
       #:python ,python-2))))
72
    
73
;; rc required by python2-angr
74
(define-public capstone
75
  (package
76
    (name "capstone")
77
    (version "3.0.5-rc2")
78
    (source (origin
79
              (method url-fetch)
80
              (uri (string-append "https://github.com/aquynh/capstone/archive/"
81
                                  version ".tar.gz"))
82
              (file-name (string-append name "-" version ".tar.gz"))
83
              (sha256
84
               (base32
85
                "1cqms9r2p43aiwp5spd84zaccp16ih03r7sjhrv16nddahj0jz2q"))))
86
    (build-system gnu-build-system)
87
    (arguments
88
     `(#:tests? #f
89
       #:make-flags (list (string-append "PREFIX=" %output)
90
                          "CC=gcc")
91
       #:phases
92
       (modify-phases %standard-phases
93
         (delete 'configure)
94
         (add-before 'build 'fix-cstool-ldflags
95
           (lambda* (#:key outputs #:allow-other-keys)
96
             (substitute* "cstool/Makefile"
97
               (("LDFLAGS =")
98
                (string-append "LDFLAGS = -Wl,-rpath=" (assoc-ref outputs "out")
99
                               "/lib"))))))))
100
    (home-page "http://www.capstone-engine.org")
101
    (synopsis "Disassembler")
102
    (description
103
     "Capstone can disassemble machine code for many supported architectures
104
such as x86, x86_64, arm, arm64, mips, ppc, sparc, sysz and xcore.  It provides
105
bindings for Python, Java, OCaml and more.")
106
    (license (list license:bsd-3 license:expat))))
107
108
;; This package has a timestamp embedded in
109
;; lib/python3.5/site-packages/capstone/__pycache__/__iti__.cpython-35.pyc
110
(define-public python-capstone
111
  (package
112
    (inherit capstone)
113
    (name "python-capstone")
114
    (propagated-inputs
115
     `(("capstone" ,capstone)))
116
    (build-system python-build-system)
117
    (arguments
118
     `(#:tests? #f
119
       #:phases
120
       (modify-phases %standard-phases
121
         (add-after 'unpack 'chdir-and-fix-setup-py
122
           (lambda _
123
             (chdir "bindings/python")
124
             (substitute* "setup.py" ((".*   build_libraries.*") ""))
125
             (substitute* "capstone/__init__.py"
126
               (("pkg_resources.resource_filename.*")
127
                (string-append "'" (assoc-ref %build-inputs "capstone") "/lib',\n")))
128
             #t)))))))
129
130
(define-public python2-capstone
131
  (package-with-python2 python-capstone))
132
133
(define-public capstone-git
134
  (package
135
    (inherit capstone)
136
    (version "3.0.5-rc2")
137
    (name "capstone-git")
138
    (source (origin
139
              (method git-fetch)
140
              (uri (git-reference (url "https://github.com/aquynh/capstone.git")
141
                                  (commit "b6c4c3f5c79684b02d0672b50b4db494f6ce60f9")))
142
              (file-name (string-append name "-" version))
143
              (sha256
144
               (base32
145
                "0kqdfp0flx5czzwr490pzn9mzsxcw8qpcfz4y7bpf2cklsr4mh25"))))
146
    (arguments
147
     `(#:tests? #f
148
       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
149
                          "CC=gcc")
150
       #:phases
151
       (modify-phases %standard-phases
152
         (delete 'configure)
153
         (add-before 'build 'fix-cstool
154
           (lambda* (#:key outputs #:allow-other-keys)
155
             (substitute* "cstool/Makefile"
156
               (("LDFLAGS =")
157
                (string-append "LDFLAGS = -Wl,-rpath=" (assoc-ref outputs "out") "/lib"))))))))))
158
159
(define-public python-capstone-git
160
  (package
161
    (inherit capstone-git)
162
    (name "python-capstone-git")
163
    (propagated-inputs
164
     `(("capstone" ,capstone-git)))
165
    (build-system python-build-system)
166
    (arguments
167
     `(#:tests? #f
168
       #:phases
169
       (modify-phases %standard-phases
170
         (add-after 'unpack 'chdir-and-fix-setup-py
171
           (lambda _
172
             (chdir "bindings/python")
173
             (substitute* "setup.py" (("   *build_libraries.*") "\n"))
174
             (substitute* "capstone/__init__.py"
175
               (("pkg_resources.resource_filename.*")
176
                (string-append "\"" (assoc-ref %build-inputs "capstone") "/lib\",\n")))
177
             #t)))))))
178
179
(define-public python2-capstone-git
180
  (package-with-python2 python-capstone-git))
181
182
 
183
(define-public python-pefile
184
  (package
185
    (name "python-pefile")
186
    (version "2017.11.5")
187
    (source
188
      (origin
189
        (method url-fetch)
190
        (uri (pypi-uri "pefile" version))
191
        (sha256
192
         (base32
193
          "0m2q0bdjdlf6lbidb33y43k3ikzjgy58vx6jh2gdnxqn1vp3ap37"))))
194
    (build-system python-build-system)
195
    (arguments
196
     `(#:tests? #f)); no test
197
    (home-page "https://github.com/erocarrera/pefile")
198
    (synopsis "Parse and work with Portable Executable (aka PE) files")
199
    (description "Pefile is a multi-platform Python module to parse and work
200
with Portable Executable (aka PE) files.  Most of the information contained in
201
the PE headers is accessible as well as all sections' details and their data.
202
The structures defined in the Windows header files will be accessible as
203
attributes in the PE instance.  The naming of fields/attributes will try to
204
adhere to the naming scheme in those headers.  Only shortcuts added for
205
convenience will depart from that convention.")
206
    (license license:expat)))
207
208
(define-public python2-pefile
209
  (package-with-python2 python-pefile))
210
211
(define-public python2-archinfo
212
  (package
213
    (name "python2-archinfo")
214
    (version "7.7.12.16")
215
    (source (origin
216
              (method url-fetch)
217
              (uri (pypi-uri "archinfo" version))
218
              (sha256
219
               (base32
220
                "0xlgq1qnsrqywv43ij54k6ciyxmwf0krygsqdq13x3a6gd02a85l"))))
221
    (build-system python-build-system)
222
    (arguments
223
     `(#:python ,python-2))
224
    (home-page "https://github.com/angr/archinfo")
225
    (synopsis "Collection of classes that contain architecture-specific information")
226
    (description "Archinfo is a collection of classes that contain
227
architecture-specific information.  It is useful for cross-architecture tools
228
(such as pyvex).")
229
    (license license:bsd-2)))
230
231
(define-public angr-vex
232
  (package
233
    (name "angr-vex")
234
    (version "0.20180104")
235
    (source (origin
236
              (method git-fetch)
237
              (uri (git-reference
238
                    (url "https://github.com/angr/vex.git")
239
                    (commit "7394e917fc86c8f042d8ce51a609810a97c20fd7")))
240
              (sha256
241
               (base32
242
                "1fw97l9wqirny0p2x0d1xr475b05s4zbq0hd0sip7q7f15claiy0"))
243
              (file-name (string-append name "-" version))))
244
    (build-system gnu-build-system)
245
    (arguments
246
     `(#:make-flags
247
       (list "CC=gcc" "CC_NATIVE=gcc")
248
       #:tests? #f
249
       #:phases
250
       (modify-phases %standard-phases
251
         (delete 'configure)
252
         (add-before 'build 'get-Makefile
253
           (lambda _
254
             (copy-file "Makefile-gcc" "Makefile")))
255
         (replace 'install
256
           (lambda* (#:key outputs #:allow-other-keys)
257
             (let* ((out (assoc-ref outputs "out"))
258
                   (lib (string-append out "/lib"))
259
                   (include (string-append out "/include")))
260
               (mkdir-p lib)
261
               (mkdir-p include)
262
               (copy-recursively "pub" include)
263
               (copy-file "libvex.a" (string-append lib "/libvex.a"))))))))
264
    (home-page "https://github.com/angr/vex")
265
    (synopsis "Fork of libVEX for PyVEX")
266
    (description "This is a mirror of libVEX (of the Valgrind project:
267
valgrind.org) for use with PyVEX.")
268
    (license license:gpl2+)))
269
270
(define-public python2-pyvex
271
  (package
272
    (name "python2-pyvex")
273
    (version "7.7.12.16")
274
    (source (origin
275
              (method url-fetch)
276
              (uri (pypi-uri "pyvex" version))
277
              (sha256
278
               (base32
279
                "1jn4ivs75vs2x7fsmbyy0pbcspjff0h1vlw463kz9qf9ppr7fshc"))))
280
    (build-system python-build-system)
281
    (inputs `(("angr-vex" ,angr-vex)))
282
    (propagated-inputs
283
     `(("archinfo" ,python2-archinfo)
284
       ("pycparser" ,python2-pycparser)
285
       ("cffi" ,python2-cffi)))
286
    (native-inputs
287
     `(("python2-bitstring" ,python2-bitstring)))
288
    (arguments
289
     `(#:python ,python-2
290
       #:phases
291
       (modify-phases %standard-phases
292
         (add-before 'build 'fix-setup.py
293
           (lambda* (#:key inputs #:allow-other-keys)
294
             (substitute* "setup.py"
295
               (("VEX_PATH = .*")
296
                (string-append "VEX_PATH = '" (assoc-ref inputs "angr-vex") "'"))
297
               ((".*self.execute\\(_build_vex.*")
298
                "")
299
               (("e\\['VEX_LIB_PATH'\\] = .*")
300
                "e['VEX_LIB_PATH'] = os.path.join(VEX_PATH, 'lib')\n")
301
               (("'pub'")
302
                "'include'")))))))
303
    (home-page "https://github.com/angr/pyvex")
304
    (synopsis "PyVEX exposes VEX into Python")
305
    (description "VEX is an intermediate representation that is useful to carry
306
analyses on binary.  PyVEX exposes VEX into Python.")
307
    (license license:bsd-2)))
308
309
(define-public unicorn
310
  (package
311
    (name "unicorn")
312
    (version "1.0.1")
313
    (source (origin
314
              (method url-fetch)
315
              (uri (string-append "https://github.com/unicorn-engine/unicorn/archive/"
316
                                  version ".tar.gz"))
317
              (file-name (string-append name "-" version ".tar.gz"))
318
              (sha256
319
               (base32
320
                "0z01apwmvhvdldm372ww9pjfn45awkw3m90c0h4v0nj0ihmlysis"))))
321
    (build-system gnu-build-system)
322
    (arguments
323
     `(#:phases
324
       (modify-phases %standard-phases
325
         (delete 'configure))
326
       #:tests? #f
327
       #:make-flags
328
       (list "CC=gcc"
329
             (string-append "PREFIX=" (assoc-ref %outputs "out")))))
330
    (native-inputs
331
     `(("python" ,python-2)
332
       ("pkg-config" ,pkg-config)))
333
    (home-page "http://www.unicorn-engine.org/")
334
    (synopsis "CPU emulator")
335
    (description "Unicorn is a lightweight multi-platform, multi-architecture
336
CPU emulator framework.")
337
    (license (list license:gpl2 license:lgpl2.0))))
338
339
;; Not reproducible
340
(define-public python-unicorn
341
  (package
342
    (inherit unicorn)
343
    (name "python-unicorn")
344
    (propagated-inputs
345
     `(("unicorn" ,unicorn)))
346
    (build-system python-build-system)
347
    (arguments
348
     `(#:phases (modify-phases %standard-phases
349
                  (add-after 'unpack 'chdir-and-fix-setup-py
350
                    (lambda _
351
                      (chdir "bindings/python")
352
                      (substitute* "setup.py" (("build_libraries\\(\\)\n") "\n"))
353
                      (substitute* "unicorn/unicorn.py"
354
                        (("'',")
355
                         (string-append "'"
356
                                        (assoc-ref %build-inputs "unicorn")
357
                                        "/lib',")))
358
                      #t)))))))
359
360
(define-public python2-unicorn
361
  (package
362
    (inherit (package-with-python2 python-unicorn))
363
    (propagated-inputs
364
     `(("unicorn" ,unicorn)
365
       ("pyvex" ,python2-pyvex)))))
366
367
(define-public python2-simuvex
368
  (package
369
    (name "python2-simuvex")
370
    (version "7.7.9.8")
371
    (source (origin
372
              (method url-fetch)
373
              (uri (pypi-uri "simuvex" version))
374
              (sha256
375
               (base32
376
                "02485bb8cl3q2yrd42mgd6nnbx915y8xqz7fmb03wkj7alzm58pr"))
377
              (modules '((guix build utils)))
378
              (snippet
379
               '(substitute* "setup.py"
380
                  (("dpkt-fix") "dpkt")))))
381
    (build-system python-build-system)
382
    (native-inputs
383
     `(("pkg-config" ,pkg-config)
384
       ("enum34" ,python2-enum34)))
385
    (propagated-inputs
386
     `(("pyvex" ,python2-pyvex)
387
       ("bintrees" ,python2-bintrees)
388
       ("dpkt" ,python2-dpkt)
389
       ("cooldict" ,python2-cooldict)
390
       ("cachetools" ,python2-cachetools)
391
       ("claripy" ,python2-claripy)
392
       ("unicorn" ,python2-unicorn)
393
       ("glib" ,glib)))
394
    (inputs
395
     `(("zlib" ,zlib)))
396
    (arguments
397
     `(#:python ,python-2
398
       ;; Simuvex requires angr to be tested
399
       #:tests? #f))
400
    (home-page "https://github.com/angr/cle")
401
    (synopsis "Abstraction of process memory")
402
    (description "CLE loads binaries and their associated libraries, resolves
403
imports and provides an abstraction of process memory the same way as if it was
404
loaded by the OS's loader.")
405
    (license license:bsd-2)))
406
407
(define-public python2-cle
408
  (package
409
    (name "python2-cle")
410
    (version "7.7.12.16")
411
    (source (origin
412
              (method url-fetch)
413
              (uri (pypi-uri "cle" version))
414
              (sha256
415
               (base32
416
                "04q15iflmapvm47vx4wblvmnj4hzg69hn2zd6h5wzkccgnkchb25"))
417
              (modules '((guix build utils)))
418
              (snippet
419
               '(substitute* "setup.py"
420
                  (("'idalink',") ""))))); Idalink is not acceptable
421
    (build-system python-build-system)
422
    (propagated-inputs
423
     `(("pyelftools" ,python2-pyelftools)
424
       ("cffi" ,python2-cffi)
425
       ("archinfo" ,python2-archinfo)
426
       ("future" ,python2-future)
427
       ("pyvex" ,python2-pyvex)
428
       ("pefile" ,python2-pefile)))
429
    (native-inputs
430
     `(("python2-bitstring" ,python2-bitstring)))
431
    (arguments
432
     `(#:python ,python-2))
433
    (home-page "https://github.com/angr/cle")
434
    (synopsis "Abstraction of process memory")
435
    (description "CLE loads binaries and their associated libraries, resolves
436
imports and provides an abstraction of process memory the same way as if it was
437
loaded by the OS's loader.")
438
    (license license:bsd-2)))
439
440
(define-public python2-angr
441
  (package
442
    (name "python2-angr")
443
    (version "7.7.12.16")
444
    (source (origin
445
              (method url-fetch)
446
              (uri (pypi-uri "angr" version))
447
              (sha256
448
               (base32
449
                "177z45ki580dphmrpsv2ln1249n8jcjf7mjl8ymjcki5yzan26yy"))))
450
    (build-system python-build-system)
451
    (arguments
452
     `(#:python ,python-2
453
       ;; Tests require pygit 0.1
454
       #:tests? #f))
455
    (propagated-inputs
456
     `(("python2-bitstring" ,python2-bitstring)
457
       ("python2-cle" ,python2-cle)
458
       ("python2-capstone" ,python2-capstone)
459
       ("python2-six" ,python2-six)
460
       ("python2-utils" ,python2-utils)
461
       ("python2-mulpyplexer" ,python2-mulpyplexer)
462
       ("python2-rpyc" ,python2-rpyc)
463
       ("python2-enum34" ,python2-enum34)
464
       ("python2-networkx" ,python2-networkx)
465
       ("python2-futures" ,python2-futures)
466
       ("python2-progressbar" ,python2-progressbar2)
467
       ("python2-simuvex" ,python2-simuvex)))
468
    (home-page "https://github.com/angr/angr")
469
    (synopsis "Angr is a python framework for analyzing binaries")
470
    (description "angr is a python framework for analyzing binaries.  It
471
focuses on both static and dynamic symbolic (\"concolic\") analysis, making it
472
applicable to a variety of tasks.")
473
    (license license:bsd-2)))
474
475
(define-public sandsifter
476
  (package
477
    (name "sandsifter")
478
    (version "0")
479
    (source (origin
480
              (method git-fetch)
481
              (uri (git-reference
482
                     (url "https://github.com/xoreaxeaxeax/sandsifter")
483
                     (commit "dff63246fed84d90118441b8ba5b5d3bdd094427")))
484
              (sha256
485
               (base32
486
                "1f4hfdhqmam8cz2hixv8zpwggqy17fmczsnc5k9gz87ff7bpqrnk"))))
487
    (build-system gnu-build-system)
488
    (arguments
489
     `(#:make-flags (list "CC=gcc")
490
       #:tests? #f
491
       #:phases
492
       (modify-phases %standard-phases
493
         (delete 'configure)
494
         (replace 'install
495
           (lambda* (#:key inputs outputs #:allow-other-keys)
496
             (let* ((out (assoc-ref outputs "out"))
497
                    (bin (string-append out "/bin"))
498
                    (lib (string-append out "/lib/python2.7/site-packages/sandsifter"))
499
                    (pyutil (string-append lib "/pyutil"))
500
                    (gui (string-append lib "/gui")))
501
               ;(substitute* "summarize.py"
502
               ;  (("pyutil.progress") "sandsifter.pyutil.progress")
503
               ;  (("gui.gui") "sandsifter.gui.gui"))
504
               (substitute* "sifter.py"
505
                 (("./injector") (string-append lib "/injector")))
506
               (mkdir-p bin)
507
               (with-output-to-file (string-append bin "/sifter")
508
                 (lambda _
509
                   (format #t
510
                     "#!~a~@
511
                     PYTHONPATH=~a ~a/bin/python ~a/sifter.py $@"
512
                     (which "sh")
513
                     (string-append (assoc-ref inputs "py-capstone")
514
                                    "/lib/python2.7/site-packages:"
515
                                    (dirname lib))
516
                     (assoc-ref inputs "python2") lib)))
517
               (chmod (string-append bin "/sifter") #o755)
518
               (with-output-to-file (string-append bin "/sifter-summarize")
519
                 (lambda _
520
                   (format #t
521
                     "#!~a~@
522
                     PYTHONPATH=~a ~a/bin/python ~a/summarize.py $@"
523
                     (which "sh")
524
                     (string-append (assoc-ref inputs "py-capstone")
525
                                    "/lib/python2.7/site-packages:"
526
                                    lib)
527
                     (assoc-ref inputs "python2") lib)))
528
               (chmod (string-append bin "/sifter-summarize") #o755)
529
               (install-file "sifter.py" lib)
530
               (install-file "summarize.py" lib)
531
               (install-file "injector" lib)
532
               (install-file "pyutil/__init__.py" pyutil)
533
               (install-file "pyutil/colors.py" pyutil)
534
               (install-file "pyutil/progress.py" pyutil)
535
               (install-file "gui/__init__.py" gui)
536
               (install-file "gui/gui.py" gui)))))))
537
    (inputs
538
     `(("capstone" ,capstone)
539
       ("python2" ,python-2)
540
       ("py-capstone" ,python2-capstone)))
541
    (home-page "https://github.com/xoreaxeaxeax/sandsifter")
542
    (synopsis "X86 processor fuzzer")
543
    (description "The sandsifter audits x86 processors for hidden instructions
544
and hardware bugs, by systematically generating machine code to search through
545
a processor's instruction set, and monitoring execution for anomalies.
546
Sandsifter has uncovered secret processor instructions from every major vendor;
547
ubiquitous software bugs in disassemblers, assemblers, and emulators; flaws in
548
enterprise hypervisors; and both benign and security-critical hardware bugs in
549
x86 chips.")
550
    ;; No license!
551
    (license license:expat)))
552
553
(define-public veles
554
  (package
555
    (name "veles")
556
    (version "2017.06.0.1")
557
    (source (origin
558
              (method url-fetch)
559
              (uri (string-append "https://github.com/codilime/veles/archive/"
560
                                  version ".tar.gz"))
561
              (file-name (string-append name "-" version ".tar.gz"))
562
              (sha256
563
               (base32
564
                "0sv0y0sbx9pjdg755ily3ga7h021531066s0q8niy8nsz7ql9m9b"))))
565
    (build-system cmake-build-system)
566
    (arguments
567
     `(#:configure-flags
568
       (list (string-append "-DMSGPACK_INCLUDE_PATH="
569
                            (assoc-ref %build-inputs "python-msgpack")
570
                            "/include"))
571
       #:phases
572
       (modify-phases %standard-phases
573
         (add-before 'configure 'fix-python-deps
574
           (lambda _
575
             (substitute* "python/requirements.txt"
576
               (("six==1.10.0") "six>=1.10.0")
577
               (("msgpack-python==0.4.8") "msgpack>=0.4.8"))
578
             #t)))))
579
    (inputs
580
     `(("openssl" ,openssl)
581
       ("python" ,python)
582
       ("python-msgpack" ,python-msgpack)
583
       ("python-pbr" ,python-pbr)
584
       ("python-pyopenssl" ,python-pyopenssl)
585
       ("python-six" ,python-six)
586
       ("qtbase" ,qtbase)
587
       ("zlib" ,zlib)))
588
    (native-inputs
589
     `(("googletest" ,googletest)))
590
    (home-page "https://codisec.com/veles/")
591
    (synopsis "")
592
    (description "")
593
    (license license:asl2.0)))
594