diff --git a/quicklisp/asdf.lisp b/quicklisp/asdf.lisp deleted file mode 100644 index 855bd30..0000000 --- a/quicklisp/asdf.lisp +++ /dev/null @@ -1,12834 +0,0 @@ -;;; -*- mode: Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; buffer-read-only: t; -*- -;;; This is ASDF 3.2.1: Another System Definition Facility. -;;; -;;; Feedback, bug reports, and patches are all welcome: -;;; please mail to . -;;; Note first that the canonical source for ASDF is presently -;;; . -;;; -;;; If you obtained this copy from anywhere else, and you experience -;;; trouble using it, or find bugs, you may want to check at the -;;; location above for a more recent version (and for documentation -;;; and test files, if your copy came without them) before reporting -;;; bugs. There are usually two "supported" revisions - the git master -;;; branch is the latest development version, whereas the git release -;;; branch may be slightly older but is considered `stable' - -;;; -- LICENSE START -;;; (This is the MIT / X Consortium license as taken from -;;; http://www.opensource.org/licenses/mit-license.html on or about -;;; Monday; July 13, 2009) -;;; -;;; Copyright (c) 2001-2016 Daniel Barlow and contributors -;;; -;;; Permission is hereby granted, free of charge, to any person obtaining -;;; a copy of this software and associated documentation files (the -;;; "Software"), to deal in the Software without restriction, including -;;; without limitation the rights to use, copy, modify, merge, publish, -;;; distribute, sublicense, and/or sell copies of the Software, and to -;;; permit persons to whom the Software is furnished to do so, subject to -;;; the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -;;; LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -;;; OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -;;; WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;;; -;;; -- LICENSE END - -;;; The problem with writing a defsystem replacement is bootstrapping: -;;; we can't use defsystem to compile it. Hence, all in one file. - -;;;; --------------------------------------------------------------------------- -;;;; Handle ASDF package upgrade, including implementation-dependent magic. -;; -;; See https://bugs.launchpad.net/asdf/+bug/485687 -;; - -(defpackage :uiop/package - ;; CAUTION: we must handle the first few packages specially for hot-upgrade. - ;; This package definition MUST NOT change unless its name too changes; - ;; if/when it changes, don't forget to add new functions missing from below. - ;; Until then, uiop/package is frozen to forever - ;; import and export the same exact symbols as for ASDF 2.27. - ;; Any other symbol must be import-from'ed and re-export'ed in a different package. - (:use :common-lisp) - (:export - #:find-package* #:find-symbol* #:symbol-call - #:intern* #:export* #:import* #:shadowing-import* #:shadow* #:make-symbol* #:unintern* - #:symbol-shadowing-p #:home-package-p - #:symbol-package-name #:standard-common-lisp-symbol-p - #:reify-package #:unreify-package #:reify-symbol #:unreify-symbol - #:nuke-symbol-in-package #:nuke-symbol #:rehome-symbol - #:ensure-package-unused #:delete-package* - #:package-names #:packages-from-names #:fresh-package-name #:rename-package-away - #:package-definition-form #:parse-define-package-form - #:ensure-package #:define-package)) - -(in-package :uiop/package) - -;;;; General purpose package utilities - -(eval-when (:load-toplevel :compile-toplevel :execute) - (defun find-package* (package-designator &optional (error t)) - (let ((package (find-package package-designator))) - (cond - (package package) - (error (error "No package named ~S" (string package-designator))) - (t nil)))) - (defun find-symbol* (name package-designator &optional (error t)) - "Find a symbol in a package of given string'ified NAME; -unlike CL:FIND-SYMBOL, work well with 'modern' case sensitive syntax -by letting you supply a symbol or keyword for the name; -also works well when the package is not present. -If optional ERROR argument is NIL, return NIL instead of an error -when the symbol is not found." - (block nil - (let ((package (find-package* package-designator error))) - (when package ;; package error handled by find-package* already - (multiple-value-bind (symbol status) (find-symbol (string name) package) - (cond - (status (return (values symbol status))) - (error (error "There is no symbol ~S in package ~S" name (package-name package)))))) - (values nil nil)))) - (defun symbol-call (package name &rest args) - "Call a function associated with symbol of given name in given package, -with given ARGS. Useful when the call is read before the package is loaded, -or when loading the package is optional." - (apply (find-symbol* name package) args)) - (defun intern* (name package-designator &optional (error t)) - (intern (string name) (find-package* package-designator error))) - (defun export* (name package-designator) - (let* ((package (find-package* package-designator)) - (symbol (intern* name package))) - (export (or symbol (list symbol)) package))) - (defun import* (symbol package-designator) - (import (or symbol (list symbol)) (find-package* package-designator))) - (defun shadowing-import* (symbol package-designator) - (shadowing-import (or symbol (list symbol)) (find-package* package-designator))) - (defun shadow* (name package-designator) - (shadow (list (string name)) (find-package* package-designator))) - (defun make-symbol* (name) - (etypecase name - (string (make-symbol name)) - (symbol (copy-symbol name)))) - (defun unintern* (name package-designator &optional (error t)) - (block nil - (let ((package (find-package* package-designator error))) - (when package - (multiple-value-bind (symbol status) (find-symbol* name package error) - (cond - (status (unintern symbol package) - (return (values symbol status))) - (error (error "symbol ~A not present in package ~A" - (string symbol) (package-name package)))))) - (values nil nil)))) - (defun symbol-shadowing-p (symbol package) - (and (member symbol (package-shadowing-symbols package)) t)) - (defun home-package-p (symbol package) - (and package (let ((sp (symbol-package symbol))) - (and sp (let ((pp (find-package* package))) - (and pp (eq sp pp)))))))) - - -(eval-when (:load-toplevel :compile-toplevel :execute) - (defun symbol-package-name (symbol) - (let ((package (symbol-package symbol))) - (and package (package-name package)))) - (defun standard-common-lisp-symbol-p (symbol) - (multiple-value-bind (sym status) (find-symbol* symbol :common-lisp nil) - (and (eq sym symbol) (eq status :external)))) - (defun reify-package (package &optional package-context) - (if (eq package package-context) t - (etypecase package - (null nil) - ((eql (find-package :cl)) :cl) - (package (package-name package))))) - (defun unreify-package (package &optional package-context) - (etypecase package - (null nil) - ((eql t) package-context) - ((or symbol string) (find-package package)))) - (defun reify-symbol (symbol &optional package-context) - (etypecase symbol - ((or keyword (satisfies standard-common-lisp-symbol-p)) symbol) - (symbol (vector (symbol-name symbol) - (reify-package (symbol-package symbol) package-context))))) - (defun unreify-symbol (symbol &optional package-context) - (etypecase symbol - (symbol symbol) - ((simple-vector 2) - (let* ((symbol-name (svref symbol 0)) - (package-foo (svref symbol 1)) - (package (unreify-package package-foo package-context))) - (if package (intern* symbol-name package) - (make-symbol* symbol-name))))))) - -(eval-when (:load-toplevel :compile-toplevel :execute) - (defvar *all-package-happiness* '()) - (defvar *all-package-fishiness* (list t)) - (defun record-fishy (info) - ;;(format t "~&FISHY: ~S~%" info) - (push info *all-package-fishiness*)) - (defmacro when-package-fishiness (&body body) - `(when *all-package-fishiness* ,@body)) - (defmacro note-package-fishiness (&rest info) - `(when-package-fishiness (record-fishy (list ,@info))))) - -(eval-when (:load-toplevel :compile-toplevel :execute) - #+(or clisp clozure) - (defun get-setf-function-symbol (symbol) - #+clisp (let ((sym (get symbol 'system::setf-function))) - (if sym (values sym :setf-function) - (let ((sym (get symbol 'system::setf-expander))) - (if sym (values sym :setf-expander) - (values nil nil))))) - #+clozure (gethash symbol ccl::%setf-function-names%)) - #+(or clisp clozure) - (defun set-setf-function-symbol (new-setf-symbol symbol &optional kind) - #+clisp (assert (member kind '(:setf-function :setf-expander))) - #+clozure (assert (eq kind t)) - #+clisp - (cond - ((null new-setf-symbol) - (remprop symbol 'system::setf-function) - (remprop symbol 'system::setf-expander)) - ((eq kind :setf-function) - (setf (get symbol 'system::setf-function) new-setf-symbol)) - ((eq kind :setf-expander) - (setf (get symbol 'system::setf-expander) new-setf-symbol)) - (t (error "invalid kind of setf-function ~S for ~S to be set to ~S" - kind symbol new-setf-symbol))) - #+clozure - (progn - (gethash symbol ccl::%setf-function-names%) new-setf-symbol - (gethash new-setf-symbol ccl::%setf-function-name-inverses%) symbol)) - #+(or clisp clozure) - (defun create-setf-function-symbol (symbol) - #+clisp (system::setf-symbol symbol) - #+clozure (ccl::construct-setf-function-name symbol)) - (defun set-dummy-symbol (symbol reason other-symbol) - (setf (get symbol 'dummy-symbol) (cons reason other-symbol))) - (defun make-dummy-symbol (symbol) - (let ((dummy (copy-symbol symbol))) - (set-dummy-symbol dummy 'replacing symbol) - (set-dummy-symbol symbol 'replaced-by dummy) - dummy)) - (defun dummy-symbol (symbol) - (get symbol 'dummy-symbol)) - (defun get-dummy-symbol (symbol) - (let ((existing (dummy-symbol symbol))) - (if existing (values (cdr existing) (car existing)) - (make-dummy-symbol symbol)))) - (defun nuke-symbol-in-package (symbol package-designator) - (let ((package (find-package* package-designator)) - (name (symbol-name symbol))) - (multiple-value-bind (sym stat) (find-symbol name package) - (when (and (member stat '(:internal :external)) (eq symbol sym)) - (if (symbol-shadowing-p symbol package) - (shadowing-import* (get-dummy-symbol symbol) package) - (unintern* symbol package)))))) - (defun nuke-symbol (symbol &optional (packages (list-all-packages))) - #+(or clisp clozure) - (multiple-value-bind (setf-symbol kind) - (get-setf-function-symbol symbol) - (when kind (nuke-symbol setf-symbol))) - (loop :for p :in packages :do (nuke-symbol-in-package symbol p))) - (defun rehome-symbol (symbol package-designator) - "Changes the home package of a symbol, also leaving it present in its old home if any" - (let* ((name (symbol-name symbol)) - (package (find-package* package-designator)) - (old-package (symbol-package symbol)) - (old-status (and old-package (nth-value 1 (find-symbol name old-package)))) - (shadowing (and old-package (symbol-shadowing-p symbol old-package) (make-symbol name)))) - (multiple-value-bind (overwritten-symbol overwritten-symbol-status) (find-symbol name package) - (unless (eq package old-package) - (let ((overwritten-symbol-shadowing-p - (and overwritten-symbol-status - (symbol-shadowing-p overwritten-symbol package)))) - (note-package-fishiness - :rehome-symbol name - (when old-package (package-name old-package)) old-status (and shadowing t) - (package-name package) overwritten-symbol-status overwritten-symbol-shadowing-p) - (when old-package - (if shadowing - (shadowing-import* shadowing old-package)) - (unintern* symbol old-package)) - (cond - (overwritten-symbol-shadowing-p - (shadowing-import* symbol package)) - (t - (when overwritten-symbol-status - (unintern* overwritten-symbol package)) - (import* symbol package))) - (if shadowing - (shadowing-import* symbol old-package) - (import* symbol old-package)) - #+(or clisp clozure) - (multiple-value-bind (setf-symbol kind) - (get-setf-function-symbol symbol) - (when kind - (let* ((setf-function (fdefinition setf-symbol)) - (new-setf-symbol (create-setf-function-symbol symbol))) - (note-package-fishiness - :setf-function - name (package-name package) - (symbol-name setf-symbol) (symbol-package-name setf-symbol) - (symbol-name new-setf-symbol) (symbol-package-name new-setf-symbol)) - (when (symbol-package setf-symbol) - (unintern* setf-symbol (symbol-package setf-symbol))) - (setf (fdefinition new-setf-symbol) setf-function) - (set-setf-function-symbol new-setf-symbol symbol kind)))) - #+(or clisp clozure) - (multiple-value-bind (overwritten-setf foundp) - (get-setf-function-symbol overwritten-symbol) - (when foundp - (unintern overwritten-setf))) - (when (eq old-status :external) - (export* symbol old-package)) - (when (eq overwritten-symbol-status :external) - (export* symbol package)))) - (values overwritten-symbol overwritten-symbol-status)))) - (defun ensure-package-unused (package) - (loop :for p :in (package-used-by-list package) :do - (unuse-package package p))) - (defun delete-package* (package &key nuke) - (let ((p (find-package package))) - (when p - (when nuke (do-symbols (s p) (when (home-package-p s p) (nuke-symbol s)))) - (ensure-package-unused p) - (delete-package package)))) - (defun package-names (package) - (cons (package-name package) (package-nicknames package))) - (defun packages-from-names (names) - (remove-duplicates (remove nil (mapcar #'find-package names)) :from-end t)) - (defun fresh-package-name (&key (prefix :%TO-BE-DELETED) - separator - (index (random most-positive-fixnum))) - (loop :for i :from index - :for n = (format nil "~A~@[~A~D~]" prefix (and (plusp i) (or separator "")) i) - :thereis (and (not (find-package n)) n))) - (defun rename-package-away (p &rest keys &key prefix &allow-other-keys) - (let ((new-name - (apply 'fresh-package-name - :prefix (or prefix (format nil "__~A__" (package-name p))) keys))) - (record-fishy (list :rename-away (package-names p) new-name)) - (rename-package p new-name)))) - - -;;; Communicable representation of symbol and package information - -(eval-when (:load-toplevel :compile-toplevel :execute) - (defun package-definition-form (package-designator - &key (nicknamesp t) (usep t) - (shadowp t) (shadowing-import-p t) - (exportp t) (importp t) internp (error t)) - (let* ((package (or (find-package* package-designator error) - (return-from package-definition-form nil))) - (name (package-name package)) - (nicknames (package-nicknames package)) - (use (mapcar #'package-name (package-use-list package))) - (shadow ()) - (shadowing-import (make-hash-table :test 'equal)) - (import (make-hash-table :test 'equal)) - (export ()) - (intern ())) - (when package - (loop :for sym :being :the :symbols :in package - :for status = (nth-value 1 (find-symbol* sym package)) :do - (ecase status - ((nil :inherited)) - ((:internal :external) - (let* ((name (symbol-name sym)) - (external (eq status :external)) - (home (symbol-package sym)) - (home-name (package-name home)) - (imported (not (eq home package))) - (shadowing (symbol-shadowing-p sym package))) - (cond - ((and shadowing imported) - (push name (gethash home-name shadowing-import))) - (shadowing - (push name shadow)) - (imported - (push name (gethash home-name import)))) - (cond - (external - (push name export)) - (imported) - (t (push name intern))))))) - (labels ((sort-names (names) - (sort (copy-list names) #'string<)) - (table-keys (table) - (loop :for k :being :the :hash-keys :of table :collect k)) - (when-relevant (key value) - (when value (list (cons key value)))) - (import-options (key table) - (loop :for i :in (sort-names (table-keys table)) - :collect `(,key ,i ,@(sort-names (gethash i table)))))) - `(defpackage ,name - ,@(when-relevant :nicknames (and nicknamesp (sort-names nicknames))) - (:use ,@(and usep (sort-names use))) - ,@(when-relevant :shadow (and shadowp (sort-names shadow))) - ,@(import-options :shadowing-import-from (and shadowing-import-p shadowing-import)) - ,@(import-options :import-from (and importp import)) - ,@(when-relevant :export (and exportp (sort-names export))) - ,@(when-relevant :intern (and internp (sort-names intern))))))))) - - -;;; ensure-package, define-package -(eval-when (:load-toplevel :compile-toplevel :execute) - (defun ensure-shadowing-import (name to-package from-package shadowed imported) - (check-type name string) - (check-type to-package package) - (check-type from-package package) - (check-type shadowed hash-table) - (check-type imported hash-table) - (let ((import-me (find-symbol* name from-package))) - (multiple-value-bind (existing status) (find-symbol name to-package) - (cond - ((gethash name shadowed) - (unless (eq import-me existing) - (error "Conflicting shadowings for ~A" name))) - (t - (setf (gethash name shadowed) t) - (setf (gethash name imported) t) - (unless (or (null status) - (and (member status '(:internal :external)) - (eq existing import-me) - (symbol-shadowing-p existing to-package))) - (note-package-fishiness - :shadowing-import name - (package-name from-package) - (or (home-package-p import-me from-package) (symbol-package-name import-me)) - (package-name to-package) status - (and status (or (home-package-p existing to-package) (symbol-package-name existing))))) - (shadowing-import* import-me to-package)))))) - (defun ensure-imported (import-me into-package &optional from-package) - (check-type import-me symbol) - (check-type into-package package) - (check-type from-package (or null package)) - (let ((name (symbol-name import-me))) - (multiple-value-bind (existing status) (find-symbol name into-package) - (cond - ((not status) - (import* import-me into-package)) - ((eq import-me existing)) - (t - (let ((shadowing-p (symbol-shadowing-p existing into-package))) - (note-package-fishiness - :ensure-imported name - (and from-package (package-name from-package)) - (or (home-package-p import-me from-package) (symbol-package-name import-me)) - (package-name into-package) - status - (and status (or (home-package-p existing into-package) (symbol-package-name existing))) - shadowing-p) - (cond - ((or shadowing-p (eq status :inherited)) - (shadowing-import* import-me into-package)) - (t - (unintern* existing into-package) - (import* import-me into-package)))))))) - (values)) - (defun ensure-import (name to-package from-package shadowed imported) - (check-type name string) - (check-type to-package package) - (check-type from-package package) - (check-type shadowed hash-table) - (check-type imported hash-table) - (multiple-value-bind (import-me import-status) (find-symbol name from-package) - (when (null import-status) - (note-package-fishiness - :import-uninterned name (package-name from-package) (package-name to-package)) - (setf import-me (intern* name from-package))) - (multiple-value-bind (existing status) (find-symbol name to-package) - (cond - ((and imported (gethash name imported)) - (unless (and status (eq import-me existing)) - (error "Can't import ~S from both ~S and ~S" - name (package-name (symbol-package existing)) (package-name from-package)))) - ((gethash name shadowed) - (error "Can't both shadow ~S and import it from ~S" name (package-name from-package))) - (t - (setf (gethash name imported) t)))) - (ensure-imported import-me to-package from-package))) - (defun ensure-inherited (name symbol to-package from-package mixp shadowed imported inherited) - (check-type name string) - (check-type symbol symbol) - (check-type to-package package) - (check-type from-package package) - (check-type mixp (member nil t)) ; no cl:boolean on Genera - (check-type shadowed hash-table) - (check-type imported hash-table) - (check-type inherited hash-table) - (multiple-value-bind (existing status) (find-symbol name to-package) - (let* ((sp (symbol-package symbol)) - (in (gethash name inherited)) - (xp (and status (symbol-package existing)))) - (when (null sp) - (note-package-fishiness - :import-uninterned name - (package-name from-package) (package-name to-package) mixp) - (import* symbol from-package) - (setf sp (package-name from-package))) - (cond - ((gethash name shadowed)) - (in - (unless (equal sp (first in)) - (if mixp - (ensure-shadowing-import name to-package (second in) shadowed imported) - (error "Can't inherit ~S from ~S, it is inherited from ~S" - name (package-name sp) (package-name (first in)))))) - ((gethash name imported) - (unless (eq symbol existing) - (error "Can't inherit ~S from ~S, it is imported from ~S" - name (package-name sp) (package-name xp)))) - (t - (setf (gethash name inherited) (list sp from-package)) - (when (and status (not (eq sp xp))) - (let ((shadowing (symbol-shadowing-p existing to-package))) - (note-package-fishiness - :inherited name - (package-name from-package) - (or (home-package-p symbol from-package) (symbol-package-name symbol)) - (package-name to-package) - (or (home-package-p existing to-package) (symbol-package-name existing))) - (if shadowing (ensure-shadowing-import name to-package from-package shadowed imported) - (unintern* existing to-package))))))))) - (defun ensure-mix (name symbol to-package from-package shadowed imported inherited) - (check-type name string) - (check-type symbol symbol) - (check-type to-package package) - (check-type from-package package) - (check-type shadowed hash-table) - (check-type imported hash-table) - (check-type inherited hash-table) - (unless (gethash name shadowed) - (multiple-value-bind (existing status) (find-symbol name to-package) - (let* ((sp (symbol-package symbol)) - (im (gethash name imported)) - (in (gethash name inherited))) - (cond - ((or (null status) - (and status (eq symbol existing)) - (and in (eq sp (first in)))) - (ensure-inherited name symbol to-package from-package t shadowed imported inherited)) - (in - (remhash name inherited) - (ensure-shadowing-import name to-package (second in) shadowed imported)) - (im - (error "Symbol ~S import from ~S~:[~; actually ~:[uninterned~;~:*from ~S~]~] conflicts with existing symbol in ~S~:[~; actually ~:[uninterned~;from ~:*~S~]~]" - name (package-name from-package) - (home-package-p symbol from-package) (symbol-package-name symbol) - (package-name to-package) - (home-package-p existing to-package) (symbol-package-name existing))) - (t - (ensure-inherited name symbol to-package from-package t shadowed imported inherited))))))) - - (defun recycle-symbol (name recycle exported) - ;; Takes a symbol NAME (a string), a list of package designators for RECYCLE - ;; packages, and a hash-table of names (strings) of symbols scheduled to be - ;; EXPORTED from the package being defined. It returns two values, the - ;; symbol found (if any, or else NIL), and a boolean flag indicating whether - ;; a symbol was found. The caller (DEFINE-PACKAGE) will then do the - ;; re-homing of the symbol, etc. - (check-type name string) - (check-type recycle list) - (check-type exported hash-table) - (when (gethash name exported) ;; don't bother recycling private symbols - (let (recycled foundp) - (dolist (r recycle (values recycled foundp)) - (multiple-value-bind (symbol status) (find-symbol name r) - (when (and status (home-package-p symbol r)) - (cond - (foundp - ;; (nuke-symbol symbol)) -- even simple variable names like O or C will do that. - (note-package-fishiness :recycled-duplicate name (package-name foundp) (package-name r))) - (t - (setf recycled symbol foundp r))))))))) - (defun symbol-recycled-p (sym recycle) - (check-type sym symbol) - (check-type recycle list) - (and (member (symbol-package sym) recycle) t)) - (defun ensure-symbol (name package intern recycle shadowed imported inherited exported) - (check-type name string) - (check-type package package) - (check-type intern (member nil t)) ; no cl:boolean on Genera - (check-type shadowed hash-table) - (check-type imported hash-table) - (check-type inherited hash-table) - (unless (or (gethash name shadowed) - (gethash name imported) - (gethash name inherited)) - (multiple-value-bind (existing status) - (find-symbol name package) - (multiple-value-bind (recycled previous) (recycle-symbol name recycle exported) - (cond - ((and status (eq existing recycled) (eq previous package))) - (previous - (rehome-symbol recycled package)) - ((and status (eq package (symbol-package existing)))) - (t - (when status - (note-package-fishiness - :ensure-symbol name - (reify-package (symbol-package existing) package) - status intern) - (unintern existing)) - (when intern - (intern* name package)))))))) - (declaim (ftype (function (t t t &optional t) t) ensure-exported)) - (defun ensure-exported-to-user (name symbol to-package &optional recycle) - (check-type name string) - (check-type symbol symbol) - (check-type to-package package) - (check-type recycle list) - (assert (equal name (symbol-name symbol))) - (multiple-value-bind (existing status) (find-symbol name to-package) - (unless (and status (eq symbol existing)) - (let ((accessible - (or (null status) - (let ((shadowing (symbol-shadowing-p existing to-package)) - (recycled (symbol-recycled-p existing recycle))) - (unless (and shadowing (not recycled)) - (note-package-fishiness - :ensure-export name (symbol-package-name symbol) - (package-name to-package) - (or (home-package-p existing to-package) (symbol-package-name existing)) - status shadowing) - (if (or (eq status :inherited) shadowing) - (shadowing-import* symbol to-package) - (unintern existing to-package)) - t))))) - (when (and accessible (eq status :external)) - (ensure-exported name symbol to-package recycle)))))) - (defun ensure-exported (name symbol from-package &optional recycle) - (dolist (to-package (package-used-by-list from-package)) - (ensure-exported-to-user name symbol to-package recycle)) - (unless (eq from-package (symbol-package symbol)) - (ensure-imported symbol from-package)) - (export* name from-package)) - (defun ensure-export (name from-package &optional recycle) - (multiple-value-bind (symbol status) (find-symbol* name from-package) - (unless (eq status :external) - (ensure-exported name symbol from-package recycle)))) - (defun ensure-package (name &key - nicknames documentation use - shadow shadowing-import-from - import-from export intern - recycle mix reexport - unintern) - #+genera (declare (ignore documentation)) - (let* ((package-name (string name)) - (nicknames (mapcar #'string nicknames)) - (names (cons package-name nicknames)) - (previous (packages-from-names names)) - (discarded (cdr previous)) - (to-delete ()) - (package (or (first previous) (make-package package-name :nicknames nicknames))) - (recycle (packages-from-names recycle)) - (use (mapcar 'find-package* use)) - (mix (mapcar 'find-package* mix)) - (reexport (mapcar 'find-package* reexport)) - (shadow (mapcar 'string shadow)) - (export (mapcar 'string export)) - (intern (mapcar 'string intern)) - (unintern (mapcar 'string unintern)) - (shadowed (make-hash-table :test 'equal)) ; string to bool - (imported (make-hash-table :test 'equal)) ; string to bool - (exported (make-hash-table :test 'equal)) ; string to bool - ;; string to list home package and use package: - (inherited (make-hash-table :test 'equal))) - (when-package-fishiness (record-fishy package-name)) - #-genera - (when documentation (setf (documentation package t) documentation)) - (loop :for p :in (set-difference (package-use-list package) (append mix use)) - :do (note-package-fishiness :over-use name (package-names p)) - (unuse-package p package)) - (loop :for p :in discarded - :for n = (remove-if #'(lambda (x) (member x names :test 'equal)) - (package-names p)) - :do (note-package-fishiness :nickname name (package-names p)) - (cond (n (rename-package p (first n) (rest n))) - (t (rename-package-away p) - (push p to-delete)))) - (rename-package package package-name nicknames) - (dolist (name unintern) - (multiple-value-bind (existing status) (find-symbol name package) - (when status - (unless (eq status :inherited) - (note-package-fishiness - :unintern (package-name package) name (symbol-package-name existing) status) - (unintern* name package nil))))) - (dolist (name export) - (setf (gethash name exported) t)) - (dolist (p reexport) - (do-external-symbols (sym p) - (setf (gethash (string sym) exported) t))) - (do-external-symbols (sym package) - (let ((name (symbol-name sym))) - (unless (gethash name exported) - (note-package-fishiness - :over-export (package-name package) name - (or (home-package-p sym package) (symbol-package-name sym))) - (unexport sym package)))) - (dolist (name shadow) - (setf (gethash name shadowed) t) - (multiple-value-bind (existing status) (find-symbol name package) - (multiple-value-bind (recycled previous) (recycle-symbol name recycle exported) - (let ((shadowing (and status (symbol-shadowing-p existing package)))) - (cond - ((eq previous package)) - (previous - (rehome-symbol recycled package)) - ((or (member status '(nil :inherited)) - (home-package-p existing package))) - (t - (let ((dummy (make-symbol name))) - (note-package-fishiness - :shadow-imported (package-name package) name - (symbol-package-name existing) status shadowing) - (shadowing-import* dummy package) - (import* dummy package))))))) - (shadow* name package)) - (loop :for (p . syms) :in shadowing-import-from - :for pp = (find-package* p) :do - (dolist (sym syms) (ensure-shadowing-import (string sym) package pp shadowed imported))) - (loop :for p :in mix - :for pp = (find-package* p) :do - (do-external-symbols (sym pp) (ensure-mix (symbol-name sym) sym package pp shadowed imported inherited))) - (loop :for (p . syms) :in import-from - :for pp = (find-package p) :do - (dolist (sym syms) (ensure-import (symbol-name sym) package pp shadowed imported))) - (dolist (p (append use mix)) - (do-external-symbols (sym p) (ensure-inherited (string sym) sym package p nil shadowed imported inherited)) - (use-package p package)) - (loop :for name :being :the :hash-keys :of exported :do - (ensure-symbol name package t recycle shadowed imported inherited exported) - (ensure-export name package recycle)) - (dolist (name intern) - (ensure-symbol name package t recycle shadowed imported inherited exported)) - (do-symbols (sym package) - (ensure-symbol (symbol-name sym) package nil recycle shadowed imported inherited exported)) - (map () 'delete-package* to-delete) - package))) - -(eval-when (:load-toplevel :compile-toplevel :execute) - (defun parse-define-package-form (package clauses) - (loop - :with use-p = nil :with recycle-p = nil - :with documentation = nil - :for (kw . args) :in clauses - :when (eq kw :nicknames) :append args :into nicknames :else - :when (eq kw :documentation) - :do (cond - (documentation (error "define-package: can't define documentation twice")) - ((or (atom args) (cdr args)) (error "define-package: bad documentation")) - (t (setf documentation (car args)))) :else - :when (eq kw :use) :append args :into use :and :do (setf use-p t) :else - :when (eq kw :shadow) :append args :into shadow :else - :when (eq kw :shadowing-import-from) :collect args :into shadowing-import-from :else - :when (eq kw :import-from) :collect args :into import-from :else - :when (eq kw :export) :append args :into export :else - :when (eq kw :intern) :append args :into intern :else - :when (eq kw :recycle) :append args :into recycle :and :do (setf recycle-p t) :else - :when (eq kw :mix) :append args :into mix :else - :when (eq kw :reexport) :append args :into reexport :else - :when (eq kw :use-reexport) :append args :into use :and :append args :into reexport - :and :do (setf use-p t) :else - :when (eq kw :mix-reexport) :append args :into mix :and :append args :into reexport - :and :do (setf use-p t) :else - :when (eq kw :unintern) :append args :into unintern :else - :do (error "unrecognized define-package keyword ~S" kw) - :finally (return `(,package - :nicknames ,nicknames :documentation ,documentation - :use ,(if use-p use '(:common-lisp)) - :shadow ,shadow :shadowing-import-from ,shadowing-import-from - :import-from ,import-from :export ,export :intern ,intern - :recycle ,(if recycle-p recycle (cons package nicknames)) - :mix ,mix :reexport ,reexport :unintern ,unintern))))) - -(defmacro define-package (package &rest clauses) - "DEFINE-PACKAGE takes a PACKAGE and a number of CLAUSES, of the form -\(KEYWORD . ARGS\). -DEFINE-PACKAGE supports the following keywords: -USE, SHADOW, SHADOWING-IMPORT-FROM, IMPORT-FROM, EXPORT, INTERN -- as per CL:DEFPACKAGE. -RECYCLE -- Recycle the package's exported symbols from the specified packages, -in order. For every symbol scheduled to be exported by the DEFINE-PACKAGE, -either through an :EXPORT option or a :REEXPORT option, if the symbol exists in -one of the :RECYCLE packages, the first such symbol is re-homed to the package -being defined. -For the sake of idempotence, it is important that the package being defined -should appear in first position if it already exists, and even if it doesn't, -ahead of any package that is not going to be deleted afterwards and never -created again. In short, except for special cases, always make it the first -package on the list if the list is not empty. -MIX -- Takes a list of package designators. MIX behaves like -\(:USE PKG1 PKG2 ... PKGn\) but additionally uses :SHADOWING-IMPORT-FROM to -resolve conflicts in favor of the first found symbol. It may still yield -an error if there is a conflict with an explicitly :IMPORT-FROM symbol. -REEXPORT -- Takes a list of package designators. For each package, p, in the list, -export symbols with the same name as those exported from p. Note that in the case -of shadowing, etc. the symbols with the same name may not be the same symbols. -UNINTERN -- Remove symbols here from PACKAGE." - (let ((ensure-form - `(apply 'ensure-package ',(parse-define-package-form package clauses)))) - `(progn - #+(or clasp ecl gcl mkcl) (defpackage ,package (:use)) - (eval-when (:compile-toplevel :load-toplevel :execute) - ,ensure-form)))) -;;;; ------------------------------------------------------------------------- -;;;; Handle compatibility with multiple implementations. -;;; This file is for papering over the deficiencies and peculiarities -;;; of various Common Lisp implementations. -;;; For implementation-specific access to the system, see os.lisp instead. -;;; A few functions are defined here, but actually exported from utility; -;;; from this package only common-lisp symbols are exported. - -(uiop/package:define-package :uiop/common-lisp - (:nicknames :uoip/cl) - (:use :uiop/package) - (:use-reexport #-genera :common-lisp #+genera :future-common-lisp) - #+allegro (:intern #:*acl-warn-save*) - #+cormanlisp (:shadow #:user-homedir-pathname) - #+cormanlisp - (:export - #:logical-pathname #:translate-logical-pathname - #:make-broadcast-stream #:file-namestring) - #+genera (:shadowing-import-from :scl #:boolean) - #+genera (:export #:boolean #:ensure-directories-exist #:read-sequence #:write-sequence) - #+(or mcl cmucl) (:shadow #:user-homedir-pathname)) -(in-package :uiop/common-lisp) - -#-(or abcl allegro clasp clisp clozure cmucl cormanlisp ecl gcl genera lispworks mcl mkcl sbcl scl xcl) -(error "ASDF is not supported on your implementation. Please help us port it.") - -;; (declaim (optimize (speed 1) (debug 3) (safety 3))) ; DON'T: trust implementation defaults. - - -;;;; Early meta-level tweaks - -#+(or allegro clasp clisp clozure cmucl ecl mkcl sbcl) -(eval-when (:load-toplevel :compile-toplevel :execute) - (when (and #+allegro (member :ics *features*) - #+(or clasp clisp cmucl ecl mkcl) (member :unicode *features*) - #+clozure (member :openmcl-unicode-strings *features*) - #+sbcl (member :sb-unicode *features*)) - ;; Check for unicode at runtime, so that a hypothetical FASL compiled with unicode - ;; but loaded in a non-unicode setting (e.g. on Allegro) won't tell a lie. - (pushnew :asdf-unicode *features*))) - -#+allegro -(eval-when (:load-toplevel :compile-toplevel :execute) - ;; We need to disable autoloading BEFORE any mention of package ASDF. - ;; In particular, there must NOT be a mention of package ASDF in the defpackage of this file - ;; or any previous file. - (setf excl::*autoload-package-name-alist* - (remove "asdf" excl::*autoload-package-name-alist* - :test 'equalp :key 'car)) - (defparameter *acl-warn-save* - (when (boundp 'excl:*warn-on-nested-reader-conditionals*) - excl:*warn-on-nested-reader-conditionals*)) - (when (boundp 'excl:*warn-on-nested-reader-conditionals*) - (setf excl:*warn-on-nested-reader-conditionals* nil)) - (setf *print-readably* nil)) - -#+clasp -(eval-when (:load-toplevel :compile-toplevel :execute) - (setf *load-verbose* nil) - (defun use-ecl-byte-compiler-p () nil)) - -#+clozure (in-package :ccl) -#+(and clozure windows-target) ;; See http://trac.clozure.com/ccl/ticket/1117 -(eval-when (:load-toplevel :compile-toplevel :execute) - (unless (fboundp 'external-process-wait) - (in-development-mode - (defun external-process-wait (proc) - (when (and (external-process-pid proc) (eq (external-process-%status proc) :running)) - (with-interrupts-enabled - (wait-on-semaphore (external-process-completed proc)))) - (values (external-process-%exit-code proc) - (external-process-%status proc)))))) -#+clozure (in-package :uiop/common-lisp) ;; back in this package. - -#+cmucl -(eval-when (:load-toplevel :compile-toplevel :execute) - (setf ext:*gc-verbose* nil) - (defun user-homedir-pathname () - (first (ext:search-list (cl:user-homedir-pathname))))) - -#+cormanlisp -(eval-when (:load-toplevel :compile-toplevel :execute) - (deftype logical-pathname () nil) - (defun make-broadcast-stream () *error-output*) - (defun translate-logical-pathname (x) x) - (defun user-homedir-pathname (&optional host) - (declare (ignore host)) - (parse-namestring (format nil "~A\\" (cl:user-homedir-pathname)))) - (defun file-namestring (p) - (setf p (pathname p)) - (format nil "~@[~A~]~@[.~A~]" (pathname-name p) (pathname-type p)))) - -#+ecl -(eval-when (:load-toplevel :compile-toplevel :execute) - (setf *load-verbose* nil) - (defun use-ecl-byte-compiler-p () (and (member :ecl-bytecmp *features*) t)) - (unless (use-ecl-byte-compiler-p) (require :cmp))) - -#+gcl -(eval-when (:load-toplevel :compile-toplevel :execute) - (unless (member :ansi-cl *features*) - (error "ASDF only supports GCL in ANSI mode. Aborting.~%")) - (setf compiler::*compiler-default-type* (pathname "") - compiler::*lsp-ext* "") - #.(let ((code ;; Only support very recent GCL 2.7.0 from November 2013 or later. - (cond - #+gcl - ((or (< system::*gcl-major-version* 2) - (and (= system::*gcl-major-version* 2) - (< system::*gcl-minor-version* 7))) - '(error "GCL 2.7 or later required to use ASDF"))))) - (eval code) - code)) - -#+genera -(eval-when (:load-toplevel :compile-toplevel :execute) - (unless (fboundp 'lambda) - (defmacro lambda (&whole form &rest bvl-decls-and-body) - (declare (ignore bvl-decls-and-body)(zwei::indentation 1 1)) - `#',(cons 'lisp::lambda (cdr form)))) - (unless (fboundp 'ensure-directories-exist) - (defun ensure-directories-exist (path) - (fs:create-directories-recursively (pathname path)))) - (unless (fboundp 'read-sequence) - (defun read-sequence (sequence stream &key (start 0) end) - (scl:send stream :string-in nil sequence start end))) - (unless (fboundp 'write-sequence) - (defun write-sequence (sequence stream &key (start 0) end) - (scl:send stream :string-out sequence start end) - sequence))) - -#+lispworks -(eval-when (:load-toplevel :compile-toplevel :execute) - ;; lispworks 3 and earlier cannot be checked for so we always assume - ;; at least version 4 - (unless (member :lispworks4 *features*) - (pushnew :lispworks5+ *features*) - (unless (member :lispworks5 *features*) - (pushnew :lispworks6+ *features*) - (unless (member :lispworks6 *features*) - (pushnew :lispworks7+ *features*))))) - -#.(or #+mcl ;; the #$ doesn't work on other lisps, even protected by #+mcl, so we use this trick - (read-from-string - "(eval-when (:load-toplevel :compile-toplevel :execute) - (ccl:define-entry-point (_getenv \"getenv\") ((name :string)) :string) - (ccl:define-entry-point (_system \"system\") ((name :string)) :int) - ;; Note: ASDF may expect user-homedir-pathname to provide - ;; the pathname of the current user's home directory, whereas - ;; MCL by default provides the directory from which MCL was started. - ;; See http://code.google.com/p/mcl/wiki/Portability - (defun user-homedir-pathname () - (ccl::findfolder #$kuserdomain #$kCurrentUserFolderType)) - (defun probe-posix (posix-namestring) - \"If a file exists for the posix namestring, return the pathname\" - (ccl::with-cstrs ((cpath posix-namestring)) - (ccl::rlet ((is-dir :boolean) - (fsref :fsref)) - (when (eq #$noerr (#_fspathmakeref cpath fsref is-dir)) - (ccl::%path-from-fsref fsref is-dir))))))")) - -#+mkcl -(eval-when (:load-toplevel :compile-toplevel :execute) - (require :cmp) - (setq clos::*redefine-class-in-place* t)) ;; Make sure we have strict ANSI class redefinition semantics - - -;;;; Looping -(eval-when (:load-toplevel :compile-toplevel :execute) - (defmacro loop* (&rest rest) - #-genera `(loop ,@rest) - #+genera `(lisp:loop ,@rest))) ;; In genera, CL:LOOP can't destructure, so we use LOOP*. Sigh. - - -;;;; compatfmt: avoid fancy format directives when unsupported -(eval-when (:load-toplevel :compile-toplevel :execute) - (defun frob-substrings (string substrings &optional frob) - "for each substring in SUBSTRINGS, find occurrences of it within STRING -that don't use parts of matched occurrences of previous strings, and -FROB them, that is to say, remove them if FROB is NIL, -replace by FROB if FROB is a STRING, or if FROB is a FUNCTION, -call FROB with the match and a function that emits a string in the output. -Return a string made of the parts not omitted or emitted by FROB." - (declare (optimize (speed 0) (safety #-gcl 3 #+gcl 0) (debug 3))) - (let ((length (length string)) (stream nil)) - (labels ((emit-string (x &optional (start 0) (end (length x))) - (when (< start end) - (unless stream (setf stream (make-string-output-stream))) - (write-string x stream :start start :end end))) - (emit-substring (start end) - (when (and (zerop start) (= end length)) - (return-from frob-substrings string)) - (emit-string string start end)) - (recurse (substrings start end) - (cond - ((>= start end)) - ((null substrings) (emit-substring start end)) - (t (let* ((sub-spec (first substrings)) - (sub (if (consp sub-spec) (car sub-spec) sub-spec)) - (fun (if (consp sub-spec) (cdr sub-spec) frob)) - (found (search sub string :start2 start :end2 end)) - (more (rest substrings))) - (cond - (found - (recurse more start found) - (etypecase fun - (null) - (string (emit-string fun)) - (function (funcall fun sub #'emit-string))) - (recurse substrings (+ found (length sub)) end)) - (t - (recurse more start end)))))))) - (recurse substrings 0 length)) - (if stream (get-output-stream-string stream) ""))) - - (defmacro compatfmt (format) - #+(or gcl genera) - (frob-substrings format `("~3i~_" #+genera ,@'("~@<" "~@;" "~@:>" "~:>"))) - #-(or gcl genera) format)) -;;;; ------------------------------------------------------------------------- -;;;; General Purpose Utilities for ASDF - -(uiop/package:define-package :uiop/utility - (:use :uiop/common-lisp :uiop/package) - ;; import and reexport a few things defined in :uiop/common-lisp - (:import-from :uiop/common-lisp #:compatfmt #:loop* #:frob-substrings - #+(or clasp ecl) #:use-ecl-byte-compiler-p #+mcl #:probe-posix) - (:export #:compatfmt #:loop* #:frob-substrings #:compatfmt - #+(or clasp ecl) #:use-ecl-byte-compiler-p #+mcl #:probe-posix) - (:export - ;; magic helper to define debugging functions: - #:uiop-debug #:load-uiop-debug-utility #:*uiop-debug-utility* - #:with-upgradability ;; (un)defining functions in an upgrade-friendly way - #:defun* #:defgeneric* - #:nest #:if-let ;; basic flow control - #:parse-body ;; macro definition helper - #:while-collecting #:appendf #:length=n-p #:ensure-list ;; lists - #:remove-plist-keys #:remove-plist-key ;; plists - #:emptyp ;; sequences - #:+non-base-chars-exist-p+ ;; characters - #:+max-character-type-index+ #:character-type-index #:+character-types+ - #:base-string-p #:strings-common-element-type #:reduce/strcat #:strcat ;; strings - #:first-char #:last-char #:split-string #:stripln #:+cr+ #:+lf+ #:+crlf+ - #:string-prefix-p #:string-enclosed-p #:string-suffix-p - #:standard-case-symbol-name #:find-standard-case-symbol ;; symbols - #:coerce-class ;; CLOS - #:stamp< #:stamps< #:stamp*< #:stamp<= ;; stamps - #:earlier-stamp #:stamps-earliest #:earliest-stamp - #:later-stamp #:stamps-latest #:latest-stamp #:latest-stamp-f - #:list-to-hash-set #:ensure-gethash ;; hash-table - #:ensure-function #:access-at #:access-at-count ;; functions - #:call-function #:call-functions #:register-hook-function - #:lexicographic< #:lexicographic<= ;; version - #:simple-style-warning #:style-warn ;; simple style warnings - #:match-condition-p #:match-any-condition-p ;; conditions - #:call-with-muffled-conditions #:with-muffled-conditions - #:not-implemented-error #:parameter-error)) -(in-package :uiop/utility) - -;;;; Defining functions in a way compatible with hot-upgrade: -;; DEFUN* and DEFGENERIC* use FMAKUNBOUND to delete any previous fdefinition, -;; thus replacing the function without warning or error -;; even if the signature and/or generic-ness of the function has changed. -;; For a generic function, this invalidates any previous DEFMETHOD. -(eval-when (:load-toplevel :compile-toplevel :execute) - (macrolet - ((defdef (def* def) - `(defmacro ,def* (name formals &rest rest) - (destructuring-bind (name &key (supersede t)) - (if (or (atom name) (eq (car name) 'setf)) - (list name :supersede nil) - name) - (declare (ignorable supersede)) - `(progn - ;; We usually try to do it only for the functions that need it, - ;; which happens in asdf/upgrade - however, for ECL, we need this hammer. - ,@(when supersede - `((fmakunbound ',name))) - ,@(when (and #+(or clasp ecl) (symbolp name)) ; fails for setf functions on ecl - `((declaim (notinline ,name)))) - (,',def ,name ,formals ,@rest)))))) - (defdef defgeneric* defgeneric) - (defdef defun* defun)) - (defmacro with-upgradability ((&optional) &body body) - "Evaluate BODY at compile- load- and run- times, with DEFUN and DEFGENERIC modified -to also declare the functions NOTINLINE and to accept a wrapping the function name -specification into a list with keyword argument SUPERSEDE (which defaults to T if the name -is not wrapped, and NIL if it is wrapped). If SUPERSEDE is true, call UNDEFINE-FUNCTION -to supersede any previous definition." - `(eval-when (:compile-toplevel :load-toplevel :execute) - ,@(loop :for form :in body :collect - (if (consp form) - (destructuring-bind (car . cdr) form - (case car - ((defun) `(defun* ,@cdr)) - ((defgeneric) `(defgeneric* ,@cdr)) - (otherwise form))) - form))))) - -;;; Magic debugging help. See contrib/debug.lisp -(with-upgradability () - (defvar *uiop-debug-utility* - '(or (ignore-errors - (symbol-call :asdf :system-relative-pathname :uiop "contrib/debug.lisp")) - (symbol-call :uiop/pathname :subpathname (user-homedir-pathname) "common-lisp/asdf/uiop/contrib/debug.lisp")) - "form that evaluates to the pathname to your favorite debugging utilities") - - (defmacro uiop-debug (&rest keys) - `(eval-when (:compile-toplevel :load-toplevel :execute) - (load-uiop-debug-utility ,@keys))) - - (defun load-uiop-debug-utility (&key package utility-file) - (let* ((*package* (if package (find-package package) *package*)) - (keyword (read-from-string - (format nil ":DBG-~:@(~A~)" (package-name *package*))))) - (unless (member keyword *features*) - (let* ((utility-file (or utility-file *uiop-debug-utility*)) - (file (ignore-errors (probe-file (eval utility-file))))) - (if file (load file) - (error "Failed to locate debug utility file: ~S" utility-file))))))) - -;;; Flow control -(with-upgradability () - (defmacro nest (&rest things) - "Macro to do keep code nesting and indentation under control." ;; Thanks to mbaringer - (reduce #'(lambda (outer inner) `(,@outer ,inner)) - things :from-end t)) - - (defmacro if-let (bindings &body (then-form &optional else-form)) ;; from alexandria - ;; bindings can be (var form) or ((var1 form1) ...) - (let* ((binding-list (if (and (consp bindings) (symbolp (car bindings))) - (list bindings) - bindings)) - (variables (mapcar #'car binding-list))) - `(let ,binding-list - (if (and ,@variables) - ,then-form - ,else-form))))) - -;;; Macro definition helper -(with-upgradability () - (defun parse-body (body &key documentation whole) ;; from alexandria - "Parses BODY into (values remaining-forms declarations doc-string). -Documentation strings are recognized only if DOCUMENTATION is true. -Syntax errors in body are signalled and WHOLE is used in the signal -arguments when given." - (let ((doc nil) - (decls nil) - (current nil)) - (tagbody - :declarations - (setf current (car body)) - (when (and documentation (stringp current) (cdr body)) - (if doc - (error "Too many documentation strings in ~S." (or whole body)) - (setf doc (pop body))) - (go :declarations)) - (when (and (listp current) (eql (first current) 'declare)) - (push (pop body) decls) - (go :declarations))) - (values body (nreverse decls) doc)))) - - -;;; List manipulation -(with-upgradability () - (defmacro while-collecting ((&rest collectors) &body body) - "COLLECTORS should be a list of names for collections. A collector -defines a function that, when applied to an argument inside BODY, will -add its argument to the corresponding collection. Returns multiple values, -a list for each collection, in order. - E.g., -\(while-collecting \(foo bar\) - \(dolist \(x '\(\(a 1\) \(b 2\) \(c 3\)\)\) - \(foo \(first x\)\) - \(bar \(second x\)\)\)\) -Returns two values: \(A B C\) and \(1 2 3\)." - (let ((vars (mapcar #'(lambda (x) (gensym (symbol-name x))) collectors)) - (initial-values (mapcar (constantly nil) collectors))) - `(let ,(mapcar #'list vars initial-values) - (flet ,(mapcar #'(lambda (c v) `(,c (x) (push x ,v) (values))) collectors vars) - ,@body - (values ,@(mapcar #'(lambda (v) `(reverse ,v)) vars)))))) - - (define-modify-macro appendf (&rest args) - append "Append onto list") ;; only to be used on short lists. - - (defun length=n-p (x n) ;is it that (= (length x) n) ? - (check-type n (integer 0 *)) - (loop - :for l = x :then (cdr l) - :for i :downfrom n :do - (cond - ((zerop i) (return (null l))) - ((not (consp l)) (return nil))))) - - (defun ensure-list (x) - (if (listp x) x (list x)))) - - -;;; Remove a key from a plist, i.e. for keyword argument cleanup -(with-upgradability () - (defun remove-plist-key (key plist) - "Remove a single key from a plist" - (loop* :for (k v) :on plist :by #'cddr - :unless (eq k key) - :append (list k v))) - - (defun remove-plist-keys (keys plist) - "Remove a list of keys from a plist" - (loop* :for (k v) :on plist :by #'cddr - :unless (member k keys) - :append (list k v)))) - - -;;; Sequences -(with-upgradability () - (defun emptyp (x) - "Predicate that is true for an empty sequence" - (or (null x) (and (vectorp x) (zerop (length x)))))) - - -;;; Characters -(with-upgradability () - ;; base-char != character on ECL, LW, SBCL, Genera. - ;; NB: We assume a total order on character types. - ;; If that's not true... this code will need to be updated. - (defparameter +character-types+ ;; assuming a simple hierarchy - #.(coerce (loop* :for (type next) :on - '(;; In SCL, all characters seem to be 16-bit base-char - ;; Yet somehow character fails to be a subtype of base-char - #-scl base-char - ;; LW6 has BASE-CHAR < SIMPLE-CHAR < CHARACTER - ;; LW7 has BASE-CHAR < BMP-CHAR < SIMPLE-CHAR = CHARACTER - #+lispworks7+ lw:bmp-char - #+lispworks lw:simple-char - character) - :unless (and next (subtypep next type)) - :collect type) 'vector)) - (defparameter +max-character-type-index+ (1- (length +character-types+))) - (defconstant +non-base-chars-exist-p+ (plusp +max-character-type-index+)) - (when +non-base-chars-exist-p+ (pushnew :non-base-chars-exist-p *features*))) - -(with-upgradability () - (defun character-type-index (x) - (declare (ignorable x)) - #.(case +max-character-type-index+ - (0 0) - (1 '(etypecase x - (character (if (typep x 'base-char) 0 1)) - (symbol (if (subtypep x 'base-char) 0 1)))) - (otherwise - '(or (position-if (etypecase x - (character #'(lambda (type) (typep x type))) - (symbol #'(lambda (type) (subtypep x type)))) - +character-types+) - (error "Not a character or character type: ~S" x)))))) - - -;;; Strings -(with-upgradability () - (defun base-string-p (string) - "Does the STRING only contain BASE-CHARs?" - (declare (ignorable string)) - (and #+non-base-chars-exist-p (eq 'base-char (array-element-type string)))) - - (defun strings-common-element-type (strings) - "What least subtype of CHARACTER can contain all the elements of all the STRINGS?" - (declare (ignorable strings)) - #.(if +non-base-chars-exist-p+ - `(aref +character-types+ - (loop :with index = 0 :for s :in strings :do - (flet ((consider (i) - (cond ((= i ,+max-character-type-index+) (return i)) - ,@(when (> +max-character-type-index+ 1) `(((> i index) (setf index i))))))) - (cond - ((emptyp s)) ;; NIL or empty string - ((characterp s) (consider (character-type-index s))) - ((stringp s) (let ((string-type-index - (character-type-index (array-element-type s)))) - (unless (>= index string-type-index) - (loop :for c :across s :for i = (character-type-index c) - :do (consider i) - ,@(when (> +max-character-type-index+ 1) - `((when (= i string-type-index) (return)))))))) - (t (error "Invalid string designator ~S for ~S" s 'strings-common-element-type)))) - :finally (return index))) - ''character)) - - (defun reduce/strcat (strings &key key start end) - "Reduce a list as if by STRCAT, accepting KEY START and END keywords like REDUCE. -NIL is interpreted as an empty string. A character is interpreted as a string of length one." - (when (or start end) (setf strings (subseq strings start end))) - (when key (setf strings (mapcar key strings))) - (loop :with output = (make-string (loop :for s :in strings - :sum (if (characterp s) 1 (length s))) - :element-type (strings-common-element-type strings)) - :with pos = 0 - :for input :in strings - :do (etypecase input - (null) - (character (setf (char output pos) input) (incf pos)) - (string (replace output input :start1 pos) (incf pos (length input)))) - :finally (return output))) - - (defun strcat (&rest strings) - "Concatenate strings. -NIL is interpreted as an empty string, a character as a string of length one." - (reduce/strcat strings)) - - (defun first-char (s) - "Return the first character of a non-empty string S, or NIL" - (and (stringp s) (plusp (length s)) (char s 0))) - - (defun last-char (s) - "Return the last character of a non-empty string S, or NIL" - (and (stringp s) (plusp (length s)) (char s (1- (length s))))) - - (defun split-string (string &key max (separator '(#\Space #\Tab))) - "Split STRING into a list of components separated by -any of the characters in the sequence SEPARATOR. -If MAX is specified, then no more than max(1,MAX) components will be returned, -starting the separation from the end, e.g. when called with arguments - \"a.b.c.d.e\" :max 3 :separator \".\" it will return (\"a.b.c\" \"d\" \"e\")." - (block () - (let ((list nil) (words 0) (end (length string))) - (when (zerop end) (return nil)) - (flet ((separatorp (char) (find char separator)) - (done () (return (cons (subseq string 0 end) list)))) - (loop - :for start = (if (and max (>= words (1- max))) - (done) - (position-if #'separatorp string :end end :from-end t)) - :do (when (null start) (done)) - (push (subseq string (1+ start) end) list) - (incf words) - (setf end start)))))) - - (defun string-prefix-p (prefix string) - "Does STRING begin with PREFIX?" - (let* ((x (string prefix)) - (y (string string)) - (lx (length x)) - (ly (length y))) - (and (<= lx ly) (string= x y :end2 lx)))) - - (defun string-suffix-p (string suffix) - "Does STRING end with SUFFIX?" - (let* ((x (string string)) - (y (string suffix)) - (lx (length x)) - (ly (length y))) - (and (<= ly lx) (string= x y :start1 (- lx ly))))) - - (defun string-enclosed-p (prefix string suffix) - "Does STRING begin with PREFIX and end with SUFFIX?" - (and (string-prefix-p prefix string) - (string-suffix-p string suffix))) - - (defvar +cr+ (coerce #(#\Return) 'string)) - (defvar +lf+ (coerce #(#\Linefeed) 'string)) - (defvar +crlf+ (coerce #(#\Return #\Linefeed) 'string)) - - (defun stripln (x) - "Strip a string X from any ending CR, LF or CRLF. -Return two values, the stripped string and the ending that was stripped, -or the original value and NIL if no stripping took place. -Since our STRCAT accepts NIL as empty string designator, -the two results passed to STRCAT always reconstitute the original string" - (check-type x string) - (block nil - (flet ((c (end) (when (string-suffix-p x end) - (return (values (subseq x 0 (- (length x) (length end))) end))))) - (when x (c +crlf+) (c +lf+) (c +cr+) (values x nil))))) - - (defun standard-case-symbol-name (name-designator) - "Given a NAME-DESIGNATOR for a symbol, if it is a symbol, convert it to a string using STRING; -if it is a string, use STRING-UPCASE on an ANSI CL platform, or STRING on a so-called \"modern\" -platform such as Allegro with modern syntax." - (check-type name-designator (or string symbol)) - (cond - ((or (symbolp name-designator) #+allegro (eq excl:*current-case-mode* :case-sensitive-lower)) - (string name-designator)) - ;; Should we be doing something on CLISP? - (t (string-upcase name-designator)))) - - (defun find-standard-case-symbol (name-designator package-designator &optional (error t)) - "Find a symbol designated by NAME-DESIGNATOR in a package designated by PACKAGE-DESIGNATOR, -where STANDARD-CASE-SYMBOL-NAME is used to transform them if these designators are strings. -If optional ERROR argument is NIL, return NIL instead of an error when the symbol is not found." - (find-symbol* (standard-case-symbol-name name-designator) - (etypecase package-designator - ((or package symbol) package-designator) - (string (standard-case-symbol-name package-designator))) - error))) - -;;; stamps: a REAL or a boolean where NIL=-infinity, T=+infinity -(eval-when (#-lispworks :compile-toplevel :load-toplevel :execute) - (deftype stamp () '(or real boolean))) -(with-upgradability () - (defun stamp< (x y) - (etypecase x - (null (and y t)) - ((eql t) nil) - (real (etypecase y - (null nil) - ((eql t) t) - (real (< x y)))))) - (defun stamps< (list) (loop :for y :in list :for x = nil :then y :always (stamp< x y))) - (defun stamp*< (&rest list) (stamps< list)) - (defun stamp<= (x y) (not (stamp< y x))) - (defun earlier-stamp (x y) (if (stamp< x y) x y)) - (defun stamps-earliest (list) (reduce 'earlier-stamp list :initial-value t)) - (defun earliest-stamp (&rest list) (stamps-earliest list)) - (defun later-stamp (x y) (if (stamp< x y) y x)) - (defun stamps-latest (list) (reduce 'later-stamp list :initial-value nil)) - (defun latest-stamp (&rest list) (stamps-latest list)) - (define-modify-macro latest-stamp-f (&rest stamps) latest-stamp)) - - -;;; Function designators -(with-upgradability () - (defun ensure-function (fun &key (package :cl)) - "Coerce the object FUN into a function. - -If FUN is a FUNCTION, return it. -If the FUN is a non-sequence literal constant, return constantly that, -i.e. for a boolean keyword character number or pathname. -Otherwise if FUN is a non-literally constant symbol, return its FDEFINITION. -If FUN is a CONS, return the function that applies its CAR -to the appended list of the rest of its CDR and the arguments, -unless the CAR is LAMBDA, in which case the expression is evaluated. -If FUN is a string, READ a form from it in the specified PACKAGE (default: CL) -and EVAL that in a (FUNCTION ...) context." - (etypecase fun - (function fun) - ((or boolean keyword character number pathname) (constantly fun)) - (hash-table #'(lambda (x) (gethash x fun))) - (symbol (fdefinition fun)) - (cons (if (eq 'lambda (car fun)) - (eval fun) - #'(lambda (&rest args) (apply (car fun) (append (cdr fun) args))))) - (string (eval `(function ,(with-standard-io-syntax - (let ((*package* (find-package package))) - (read-from-string fun)))))))) - - (defun access-at (object at) - "Given an OBJECT and an AT specifier, list of successive accessors, -call each accessor on the result of the previous calls. -An accessor may be an integer, meaning a call to ELT, -a keyword, meaning a call to GETF, -NIL, meaning identity, -a function or other symbol, meaning itself, -or a list of a function designator and arguments, interpreted as per ENSURE-FUNCTION. -As a degenerate case, the AT specifier may be an atom of a single such accessor -instead of a list." - (flet ((access (object accessor) - (etypecase accessor - (function (funcall accessor object)) - (integer (elt object accessor)) - (keyword (getf object accessor)) - (null object) - (symbol (funcall accessor object)) - (cons (funcall (ensure-function accessor) object))))) - (if (listp at) - (dolist (accessor at object) - (setf object (access object accessor))) - (access object at)))) - - (defun access-at-count (at) - "From an AT specification, extract a COUNT of maximum number -of sub-objects to read as per ACCESS-AT" - (cond - ((integerp at) - (1+ at)) - ((and (consp at) (integerp (first at))) - (1+ (first at))))) - - (defun call-function (function-spec &rest arguments) - "Call the function designated by FUNCTION-SPEC as per ENSURE-FUNCTION, -with the given ARGUMENTS" - (apply (ensure-function function-spec) arguments)) - - (defun call-functions (function-specs) - "For each function in the list FUNCTION-SPECS, in order, call the function as per CALL-FUNCTION" - (map () 'call-function function-specs)) - - (defun register-hook-function (variable hook &optional call-now-p) - "Push the HOOK function (a designator as per ENSURE-FUNCTION) onto the hook VARIABLE. -When CALL-NOW-P is true, also call the function immediately." - (pushnew hook (symbol-value variable) :test 'equal) - (when call-now-p (call-function hook)))) - - -;;; CLOS -(with-upgradability () - (defun coerce-class (class &key (package :cl) (super t) (error 'error)) - "Coerce CLASS to a class that is subclass of SUPER if specified, -or invoke ERROR handler as per CALL-FUNCTION. - -A keyword designates the name a symbol, which when found in either PACKAGE, designates a class. --- for backward compatibility, *PACKAGE* is also accepted for now, but this may go in the future. -A string is read as a symbol while in PACKAGE, the symbol designates a class. - -A class object designates itself. -NIL designates itself (no class). -A symbol otherwise designates a class by name." - (let* ((normalized - (typecase class - (keyword (or (find-symbol* class package nil) - (find-symbol* class *package* nil))) - (string (symbol-call :uiop :safe-read-from-string class :package package)) - (t class))) - (found - (etypecase normalized - ((or standard-class built-in-class) normalized) - ((or null keyword) nil) - (symbol (find-class normalized nil nil)))) - (super-class - (etypecase super - ((or standard-class built-in-class) super) - ((or null keyword) nil) - (symbol (find-class super nil nil))))) - #+allegro (when found (mop:finalize-inheritance found)) - (or (and found - (or (eq super t) (#-cormanlisp subtypep #+cormanlisp cl::subclassp found super-class)) - found) - (call-function error "Can't coerce ~S to a ~:[class~;subclass of ~:*~S~]" class super))))) - - -;;; Hash-tables -(with-upgradability () - (defun ensure-gethash (key table default) - "Lookup the TABLE for a KEY as by GETHASH, but if not present, -call the (possibly constant) function designated by DEFAULT as per CALL-FUNCTION, -set the corresponding entry to the result in the table. -Return two values: the entry after its optional computation, and whether it was found" - (multiple-value-bind (value foundp) (gethash key table) - (values - (if foundp - value - (setf (gethash key table) (call-function default))) - foundp))) - - (defun list-to-hash-set (list &aux (h (make-hash-table :test 'equal))) - "Convert a LIST into hash-table that has the same elements when viewed as a set, -up to the given equality TEST" - (dolist (x list h) (setf (gethash x h) t)))) - - -;;; Lexicographic comparison of lists of numbers -(with-upgradability () - (defun lexicographic< (element< x y) - "Lexicographically compare two lists of using the function element< to compare elements. -element< is a strict total order; the resulting order on X and Y will also be strict." - (cond ((null y) nil) - ((null x) t) - ((funcall element< (car x) (car y)) t) - ((funcall element< (car y) (car x)) nil) - (t (lexicographic< element< (cdr x) (cdr y))))) - - (defun lexicographic<= (element< x y) - "Lexicographically compare two lists of using the function element< to compare elements. -element< is a strict total order; the resulting order on X and Y will be a non-strict total order." - (not (lexicographic< element< y x)))) - - -;;; Simple style warnings -(with-upgradability () - (define-condition simple-style-warning - #+sbcl (sb-int:simple-style-warning) #-sbcl (simple-condition style-warning) - ()) - - (defun style-warn (datum &rest arguments) - (etypecase datum - (string (warn (make-condition 'simple-style-warning :format-control datum :format-arguments arguments))) - (symbol (assert (subtypep datum 'style-warning)) (apply 'warn datum arguments)) - (style-warning (apply 'warn datum arguments))))) - - -;;; Condition control - -(with-upgradability () - (defparameter +simple-condition-format-control-slot+ - #+abcl 'system::format-control - #+allegro 'excl::format-control - #+(or clasp ecl mkcl) 'si::format-control - #+clisp 'system::$format-control - #+clozure 'ccl::format-control - #+(or cmucl scl) 'conditions::format-control - #+(or gcl lispworks) 'conditions::format-string - #+sbcl 'sb-kernel:format-control - #-(or abcl allegro clasp clisp clozure cmucl ecl gcl lispworks mkcl sbcl scl) nil - "Name of the slot for FORMAT-CONTROL in simple-condition") - - (defun match-condition-p (x condition) - "Compare received CONDITION to some pattern X: -a symbol naming a condition class, -a simple vector of length 2, arguments to find-symbol* with result as above, -or a string describing the format-control of a simple-condition." - (etypecase x - (symbol (typep condition x)) - ((simple-vector 2) - (ignore-errors (typep condition (find-symbol* (svref x 0) (svref x 1) nil)))) - (function (funcall x condition)) - (string (and (typep condition 'simple-condition) - ;; On SBCL, it's always set and the check triggers a warning - #+(or allegro clozure cmucl lispworks scl) - (slot-boundp condition +simple-condition-format-control-slot+) - (ignore-errors (equal (simple-condition-format-control condition) x)))))) - - (defun match-any-condition-p (condition conditions) - "match CONDITION against any of the patterns of CONDITIONS supplied" - (loop :for x :in conditions :thereis (match-condition-p x condition))) - - (defun call-with-muffled-conditions (thunk conditions) - "calls the THUNK in a context where the CONDITIONS are muffled" - (handler-bind ((t #'(lambda (c) (when (match-any-condition-p c conditions) - (muffle-warning c))))) - (funcall thunk))) - - (defmacro with-muffled-conditions ((conditions) &body body) - "Shorthand syntax for CALL-WITH-MUFFLED-CONDITIONS" - `(call-with-muffled-conditions #'(lambda () ,@body) ,conditions))) - -;;; Conditions - -(with-upgradability () - (define-condition not-implemented-error (error) - ((functionality :initarg :functionality) - (format-control :initarg :format-control) - (format-arguments :initarg :format-arguments)) - (:report (lambda (condition stream) - (format stream "Not (currently) implemented on ~A: ~S~@[ ~?~]" - (nth-value 1 (symbol-call :uiop :implementation-type)) - (slot-value condition 'functionality) - (slot-value condition 'format-control) - (slot-value condition 'format-arguments))))) - - (defun not-implemented-error (functionality &optional format-control &rest format-arguments) - "Signal an error because some FUNCTIONALITY is not implemented in the current version -of the software on the current platform; it may or may not be implemented in different combinations -of version of the software and of the underlying platform. Optionally, report a formatted error -message." - (error 'not-implemented-error - :functionality functionality - :format-control format-control - :format-arguments format-arguments)) - - (define-condition parameter-error (error) - ((functionality :initarg :functionality) - (format-control :initarg :format-control) - (format-arguments :initarg :format-arguments)) - (:report (lambda (condition stream) - (apply 'format stream - (slot-value condition 'format-control) - (slot-value condition 'functionality) - (slot-value condition 'format-arguments))))) - - ;; Note that functionality MUST be passed as the second argument to parameter-error, just after - ;; the format-control. If you want it to not appear in first position in actual message, use - ;; ~* and ~:* to adjust parameter order. - (defun parameter-error (format-control functionality &rest format-arguments) - "Signal an error because some FUNCTIONALITY or its specific implementation on a given underlying -platform does not accept a given parameter or combination of parameters. Report a formatted error -message, that takes the functionality as its first argument (that can be skipped with ~*)." - (error 'parameter-error - :functionality functionality - :format-control format-control - :format-arguments format-arguments))) - -(uiop/package:define-package :uiop/version - (:recycle :uiop/version :uiop/utility :asdf) - (:use :uiop/common-lisp :uiop/package :uiop/utility) - (:export - #:*uiop-version* - #:parse-version #:unparse-version #:version< #:version<= ;; version support, moved from uiop/utility - #:next-version - #:deprecated-function-condition #:deprecated-function-name ;; deprecation control - #:deprecated-function-style-warning #:deprecated-function-warning - #:deprecated-function-error #:deprecated-function-should-be-deleted - #:version-deprecation #:with-deprecation)) -(in-package :uiop/version) - -(with-upgradability () - (defparameter *uiop-version* "3.2.1") - - (defun unparse-version (version-list) - "From a parsed version (a list of natural numbers), compute the version string" - (format nil "~{~D~^.~}" version-list)) - - (defun parse-version (version-string &optional on-error) - "Parse a VERSION-STRING as a series of natural numbers separated by dots. -Return a (non-null) list of integers if the string is valid; -otherwise return NIL. - -When invalid, ON-ERROR is called as per CALL-FUNCTION before to return NIL, -with format arguments explaining why the version is invalid. -ON-ERROR is also called if the version is not canonical -in that it doesn't print back to itself, but the list is returned anyway." - (block nil - (unless (stringp version-string) - (call-function on-error "~S: ~S is not a string" 'parse-version version-string) - (return)) - (unless (loop :for prev = nil :then c :for c :across version-string - :always (or (digit-char-p c) - (and (eql c #\.) prev (not (eql prev #\.)))) - :finally (return (and c (digit-char-p c)))) - (call-function on-error "~S: ~S doesn't follow asdf version numbering convention" - 'parse-version version-string) - (return)) - (let* ((version-list - (mapcar #'parse-integer (split-string version-string :separator "."))) - (normalized-version (unparse-version version-list))) - (unless (equal version-string normalized-version) - (call-function on-error "~S: ~S contains leading zeros" 'parse-version version-string)) - version-list))) - - (defun next-version (version) - "When VERSION is not nil, it is a string, then parse it as a version, compute the next version -and return it as a string." - (when version - (let ((version-list (parse-version version))) - (incf (car (last version-list))) - (unparse-version version-list)))) - - (defun version< (version1 version2) - "Given two version strings, return T if the second is strictly newer" - (let ((v1 (parse-version version1 nil)) - (v2 (parse-version version2 nil))) - (lexicographic< '< v1 v2))) - - (defun version<= (version1 version2) - "Given two version strings, return T if the second is newer or the same" - (not (version< version2 version1)))) - - -(with-upgradability () - (define-condition deprecated-function-condition (condition) - ((name :initarg :name :reader deprecated-function-name))) - (define-condition deprecated-function-style-warning (deprecated-function-condition style-warning) ()) - (define-condition deprecated-function-warning (deprecated-function-condition warning) ()) - (define-condition deprecated-function-error (deprecated-function-condition error) ()) - (define-condition deprecated-function-should-be-deleted (deprecated-function-condition error) ()) - - (defun deprecated-function-condition-kind (type) - (ecase type - ((deprecated-function-style-warning) :style-warning) - ((deprecated-function-warning) :warning) - ((deprecated-function-error) :error) - ((deprecated-function-should-be-deleted) :delete))) - - (defmethod print-object ((c deprecated-function-condition) stream) - (let ((name (deprecated-function-name c))) - (cond - (*print-readably* - (let ((fmt "#.(make-condition '~S :name ~S)") - (args (list (type-of c) name))) - (if *read-eval* - (apply 'format stream fmt args) - (error "Can't print ~?" fmt args)))) - (*print-escape* - (print-unreadable-object (c stream :type t) (format stream ":name ~S" name))) - (t - (let ((*package* (find-package :cl)) - (type (type-of c))) - (format stream - (if (eq type 'deprecated-function-should-be-deleted) - "~A: Still defining deprecated function~:P ~{~S~^ ~} that promised to delete" - "~A: Using deprecated function ~S -- please update your code to use a newer API.~ -~@[~%The docstring for this function says:~%~A~%~]") - type name (when (symbolp name) (documentation name 'function)))))))) - - (defun notify-deprecated-function (status name) - (ecase status - ((nil) nil) - ((:style-warning) (style-warn 'deprecated-function-style-warning :name name)) - ((:warning) (warn 'deprecated-function-warning :name name)) - ((:error) (cerror "USE FUNCTION ANYWAY" 'deprecated-function-error :name name)))) - - (defun version-deprecation (version &key (style-warning nil) - (warning (next-version style-warning)) - (error (next-version warning)) - (delete (next-version error))) - "Given a VERSION string, and the starting versions for notifying the programmer of -various levels of deprecation, return the current level of deprecation as per WITH-DEPRECATION -that is the highest level that has a declared version older than the specified version. -Each start version for a level of deprecation can be specified by a keyword argument, or -if left unspecified, will be the NEXT-VERSION of the immediate lower level of deprecation." - (cond - ((and delete (version<= delete version)) :delete) - ((and error (version<= error version)) :error) - ((and warning (version<= warning version)) :warning) - ((and style-warning (version<= style-warning version)) :style-warning))) - - (defmacro with-deprecation ((level) &body definitions) - "Given a deprecation LEVEL (a form to be EVAL'ed at macro-expansion time), instrument the -DEFUN and DEFMETHOD forms in DEFINITIONS to notify the programmer of the deprecation of the function -when it is compiled or called. - -Increasing levels (as result from evaluating LEVEL) are: NIL (not deprecated yet), -:STYLE-WARNING (a style warning is issued when used), :WARNING (a full warning is issued when used), -:ERROR (a continuable error instead), and :DELETE (it's an error if the code is still there while -at that level). - -Forms other than DEFUN and DEFMETHOD are not instrumented, and you can protect a DEFUN or DEFMETHOD -from instrumentation by enclosing it in a PROGN." - (let ((level (eval level))) - (check-type level (member nil :style-warning :warning :error :delete)) - (when (eq level :delete) - (error 'deprecated-function-should-be-deleted :name - (mapcar 'second - (remove-if-not #'(lambda (x) (member x '(defun defmethod))) - definitions :key 'first)))) - (labels ((instrument (name head body whole) - (if level - (let ((notifiedp - (intern (format nil "*~A-~A-~A-~A*" - :deprecated-function level name :notified-p)))) - (multiple-value-bind (remaining-forms declarations doc-string) - (parse-body body :documentation t :whole whole) - `(progn - (defparameter ,notifiedp nil) - ;; tell some implementations to use the compiler-macro - (declaim (inline ,name)) - (define-compiler-macro ,name (&whole form &rest args) - (declare (ignore args)) - (notify-deprecated-function ,level ',name) - form) - (,@head ,@(when doc-string (list doc-string)) ,@declarations - (unless ,notifiedp - (setf ,notifiedp t) - (notify-deprecated-function ,level ',name)) - ,@remaining-forms)))) - `(progn - (eval-when (:compile-toplevel :load-toplevel :execute) - (setf (compiler-macro-function ',name) nil)) - (declaim (notinline ,name)) - (,@head ,@body))))) - `(progn - ,@(loop :for form :in definitions :collect - (cond - ((and (consp form) (eq (car form) 'defun)) - (instrument (second form) (subseq form 0 3) (subseq form 3) form)) - ((and (consp form) (eq (car form) 'defmethod)) - (let ((body-start (if (listp (third form)) 3 4))) - (instrument (second form) - (subseq form 0 body-start) - (subseq form body-start) - form))) - (t - form)))))))) -;;;; --------------------------------------------------------------------------- -;;;; Access to the Operating System - -(uiop/package:define-package :uiop/os - (:use :uiop/common-lisp :uiop/package :uiop/utility) - (:export - #:featurep #:os-unix-p #:os-macosx-p #:os-windows-p #:os-genera-p #:detect-os ;; features - #:os-cond - #:getenv #:getenvp ;; environment variables - #:implementation-identifier ;; implementation identifier - #:implementation-type #:*implementation-type* - #:operating-system #:architecture #:lisp-version-string - #:hostname #:getcwd #:chdir - ;; Windows shortcut support - #:read-null-terminated-string #:read-little-endian - #:parse-file-location-info #:parse-windows-shortcut)) -(in-package :uiop/os) - -;;; Features -(with-upgradability () - (defun featurep (x &optional (*features* *features*)) - "Checks whether a feature expression X is true with respect to the *FEATURES* set, -as per the CLHS standard for #+ and #-. Beware that just like the CLHS, -we assume symbols from the KEYWORD package are used, but that unless you're using #+/#- -your reader will not have magically used the KEYWORD package, so you need specify -keywords explicitly." - (cond - ((atom x) (and (member x *features*) t)) - ((eq :not (car x)) (assert (null (cddr x))) (not (featurep (cadr x)))) - ((eq :or (car x)) (some #'featurep (cdr x))) - ((eq :and (car x)) (every #'featurep (cdr x))) - (t (parameter-error "~S: malformed feature specification ~S" 'featurep x)))) - - ;; Starting with UIOP 3.1.5, these are runtime tests. - ;; You may bind *features* with a copy of what your target system offers to test its properties. - (defun os-macosx-p () - "Is the underlying operating system MacOS X?" - ;; OS-MACOSX is not mutually exclusive with OS-UNIX, - ;; in fact the former implies the latter. - (featurep '(:or :darwin (:and :allegro :macosx) (:and :clisp :macos)))) - - (defun os-unix-p () - "Is the underlying operating system some Unix variant?" - (or (featurep '(:or :unix :cygwin)) (os-macosx-p))) - - (defun os-windows-p () - "Is the underlying operating system Microsoft Windows?" - (and (not (os-unix-p)) (featurep '(:or :win32 :windows :mswindows :mingw32 :mingw64)))) - - (defun os-genera-p () - "Is the underlying operating system Genera (running on a Symbolics Lisp Machine)?" - (featurep :genera)) - - (defun os-oldmac-p () - "Is the underlying operating system an (emulated?) MacOS 9 or earlier?" - (featurep :mcl)) - - (defun os-haiku-p () - "Is the underlying operating system Haiku?" - (featurep :haiku)) - - (defun detect-os () - "Detects the current operating system. Only needs be run at compile-time, -except on ABCL where it might change between FASL compilation and runtime." - (loop* :with o - :for (feature . detect) :in '((:os-unix . os-unix-p) (:os-macosx . os-macosx-p) - (:os-windows . os-windows-p) - (:genera . os-genera-p) (:os-oldmac . os-oldmac-p) - (:haiku . os-haiku-p)) - :when (and (or (not o) (eq feature :os-macosx)) (funcall detect)) - :do (setf o feature) (pushnew feature *features*) - :else :do (setf *features* (remove feature *features*)) - :finally - (return (or o (error "Congratulations for trying ASDF on an operating system~%~ -that is neither Unix, nor Windows, nor Genera, nor even old MacOS.~%Now you port it."))))) - - (defmacro os-cond (&rest clauses) - #+abcl `(cond ,@clauses) - #-abcl (loop* :for (test . body) :in clauses :when (eval test) :return `(progn ,@body))) - - (detect-os)) - -;;;; Environment variables: getting them, and parsing them. -(with-upgradability () - (defun getenv (x) - "Query the environment, as in C getenv. -Beware: may return empty string if a variable is present but empty; -use getenvp to return NIL in such a case." - (declare (ignorable x)) - #+(or abcl clasp clisp ecl xcl) (ext:getenv x) - #+allegro (sys:getenv x) - #+clozure (ccl:getenv x) - #+cmucl (unix:unix-getenv x) - #+scl (cdr (assoc x ext:*environment-list* :test #'string=)) - #+cormanlisp - (let* ((buffer (ct:malloc 1)) - (cname (ct:lisp-string-to-c-string x)) - (needed-size (win:getenvironmentvariable cname buffer 0)) - (buffer1 (ct:malloc (1+ needed-size)))) - (prog1 (if (zerop (win:getenvironmentvariable cname buffer1 needed-size)) - nil - (ct:c-string-to-lisp-string buffer1)) - (ct:free buffer) - (ct:free buffer1))) - #+gcl (system:getenv x) - #+genera nil - #+lispworks (lispworks:environment-variable x) - #+mcl (ccl:with-cstrs ((name x)) - (let ((value (_getenv name))) - (unless (ccl:%null-ptr-p value) - (ccl:%get-cstring value)))) - #+mkcl (#.(or (find-symbol* 'getenv :si nil) (find-symbol* 'getenv :mk-ext nil)) x) - #+sbcl (sb-ext:posix-getenv x) - #-(or abcl allegro clasp clisp clozure cmucl cormanlisp ecl gcl genera lispworks mcl mkcl sbcl scl xcl) - (not-implemented-error 'getenv)) - - (defsetf getenv (x) (val) - "Set an environment variable." - (declare (ignorable x val)) - #+allegro `(setf (sys:getenv ,x) ,val) - #+clisp `(system::setenv ,x ,val) - #+clozure `(ccl:setenv ,x ,val) - #+cmucl `(unix:unix-setenv ,x ,val 1) - #+ecl `(ext:setenv ,x ,val) - #+lispworks `(hcl:setenv ,x ,val) - #+mkcl `(mkcl:setenv ,x ,val) - #+sbcl `(progn (require :sb-posix) (symbol-call :sb-posix :setenv ,x ,val 1)) - #-(or allegro clisp clozure cmucl ecl lispworks mkcl sbcl) - '(not-implemented-error '(setf getenv))) - - (defun getenvp (x) - "Predicate that is true if the named variable is present in the libc environment, -then returning the non-empty string value of the variable" - (let ((g (getenv x))) (and (not (emptyp g)) g)))) - - -;;;; implementation-identifier -;; -;; produce a string to identify current implementation. -;; Initially stolen from SLIME's SWANK, completely rewritten since. -;; We're back to runtime checking, for the sake of e.g. ABCL. - -(with-upgradability () - (defun first-feature (feature-sets) - "A helper for various feature detection functions" - (dolist (x feature-sets) - (multiple-value-bind (short long feature-expr) - (if (consp x) - (values (first x) (second x) (cons :or (rest x))) - (values x x x)) - (when (featurep feature-expr) - (return (values short long)))))) - - (defun implementation-type () - "The type of Lisp implementation used, as a short UIOP-standardized keyword" - (first-feature - '(:abcl (:acl :allegro) (:ccl :clozure) :clisp (:corman :cormanlisp) - (:cmu :cmucl :cmu) :clasp :ecl :gcl - (:lwpe :lispworks-personal-edition) (:lw :lispworks) - :mcl :mkcl :sbcl :scl (:smbx :symbolics) :xcl))) - - (defvar *implementation-type* (implementation-type) - "The type of Lisp implementation used, as a short UIOP-standardized keyword") - - (defun operating-system () - "The operating system of the current host" - (first-feature - '(:cygwin - (:win :windows :mswindows :win32 :mingw32) ;; try cygwin first! - (:linux :linux :linux-target) ;; for GCL at least, must appear before :bsd - (:macosx :macosx :darwin :darwin-target :apple) ; also before :bsd - (:solaris :solaris :sunos) - (:bsd :bsd :freebsd :netbsd :openbsd :dragonfly) - :unix - :genera))) - - (defun architecture () - "The CPU architecture of the current host" - (first-feature - '((:x64 :x86-64 :x86_64 :x8664-target :amd64 (:and :word-size=64 :pc386)) - (:x86 :x86 :i386 :i486 :i586 :i686 :pentium3 :pentium4 :pc386 :iapx386 :x8632-target) - (:ppc64 :ppc64 :ppc64-target) (:ppc32 :ppc32 :ppc32-target :ppc :powerpc) - :hppa64 :hppa :sparc64 (:sparc32 :sparc32 :sparc) - :mipsel :mipseb :mips :alpha (:arm :arm :arm-target) :imach - ;; Java comes last: if someone uses C via CFFI or otherwise JNA or JNI, - ;; we may have to segregate the code still by architecture. - (:java :java :java-1.4 :java-1.5 :java-1.6 :java-1.7)))) - - #+clozure - (defun ccl-fasl-version () - ;; the fasl version is target-dependent from CCL 1.8 on. - (or (let ((s 'ccl::target-fasl-version)) - (and (fboundp s) (funcall s))) - (and (boundp 'ccl::fasl-version) - (symbol-value 'ccl::fasl-version)) - (error "Can't determine fasl version."))) - - (defun lisp-version-string () - "return a string that identifies the current Lisp implementation version" - (let ((s (lisp-implementation-version))) - (car ; as opposed to OR, this idiom prevents some unreachable code warning - (list - #+allegro - (format nil "~A~@[~A~]~@[~A~]~@[~A~]" - excl::*common-lisp-version-number* - ;; M means "modern", as opposed to ANSI-compatible mode (which I consider default) - (and (eq excl:*current-case-mode* :case-sensitive-lower) "M") - ;; Note if not using International ACL - ;; see http://www.franz.com/support/documentation/8.1/doc/operators/excl/ics-target-case.htm - (excl:ics-target-case (:-ics "8")) - (and (member :smp *features*) "S")) - #+armedbear (format nil "~a-fasl~a" s system::*fasl-version*) - #+clisp - (subseq s 0 (position #\space s)) ; strip build information (date, etc.) - #+clozure - (format nil "~d.~d-f~d" ; shorten for windows - ccl::*openmcl-major-version* - ccl::*openmcl-minor-version* - (logand (ccl-fasl-version) #xFF)) - #+cmucl (substitute #\- #\/ s) - #+scl (format nil "~A~A" s - ;; ANSI upper case vs lower case. - (ecase ext:*case-mode* (:upper "") (:lower "l"))) - #+ecl (format nil "~A~@[-~A~]" s - (let ((vcs-id (ext:lisp-implementation-vcs-id))) - (unless (equal vcs-id "UNKNOWN") - (subseq vcs-id 0 (min (length vcs-id) 8))))) - #+gcl (subseq s (1+ (position #\space s))) - #+genera - (multiple-value-bind (major minor) (sct:get-system-version "System") - (format nil "~D.~D" major minor)) - #+mcl (subseq s 8) ; strip the leading "Version " - ;; seems like there should be a shorter way to do this, like ACALL. - #+mkcl (or - (let ((fname (find-symbol* '#:git-describe-this-mkcl :mkcl nil))) - (when (and fname (fboundp fname)) - (funcall fname))) - s) - s)))) - - (defun implementation-identifier () - "Return a string that identifies the ABI of the current implementation, -suitable for use as a directory name to segregate Lisp FASLs, C dynamic libraries, etc." - (substitute-if - #\_ #'(lambda (x) (find x " /:;&^\\|?<>(){}[]$#`'\"")) - (format nil "~(~a~@{~@[-~a~]~}~)" - (or (implementation-type) (lisp-implementation-type)) - (lisp-version-string) - (or (operating-system) (software-type)) - (or (architecture) (machine-type)))))) - - -;;;; Other system information - -(with-upgradability () - (defun hostname () - "return the hostname of the current host" - ;; Note: untested on RMCL - #+(or abcl clasp clozure cmucl ecl genera lispworks mcl mkcl sbcl scl xcl) (machine-instance) - #+cormanlisp "localhost" ;; is there a better way? Does it matter? - #+allegro (symbol-call :excl.osi :gethostname) - #+clisp (first (split-string (machine-instance) :separator " ")) - #+gcl (system:gethostname))) - - -;;; Current directory -(with-upgradability () - - #+cmucl - (defun parse-unix-namestring* (unix-namestring) - "variant of LISP::PARSE-UNIX-NAMESTRING that returns a pathname object" - (multiple-value-bind (host device directory name type version) - (lisp::parse-unix-namestring unix-namestring 0 (length unix-namestring)) - (make-pathname :host (or host lisp::*unix-host*) :device device - :directory directory :name name :type type :version version))) - - (defun getcwd () - "Get the current working directory as per POSIX getcwd(3), as a pathname object" - (or #+(or abcl genera xcl) (truename *default-pathname-defaults*) ;; d-p-d is canonical! - #+allegro (excl::current-directory) - #+clisp (ext:default-directory) - #+clozure (ccl:current-directory) - #+(or cmucl scl) (#+cmucl parse-unix-namestring* #+scl lisp::parse-unix-namestring - (strcat (nth-value 1 (unix:unix-current-directory)) "/")) - #+cormanlisp (pathname (pl::get-current-directory)) ;; Q: what type does it return? - #+(or clasp ecl) (ext:getcwd) - #+gcl (let ((*default-pathname-defaults* #p"")) (truename #p"")) - #+lispworks (hcl:get-working-directory) - #+mkcl (mk-ext:getcwd) - #+sbcl (sb-ext:parse-native-namestring (sb-unix:posix-getcwd/)) - #+xcl (extensions:current-directory) - (not-implemented-error 'getcwd))) - - (defun chdir (x) - "Change current directory, as per POSIX chdir(2), to a given pathname object" - (if-let (x (pathname x)) - #+(or abcl genera xcl) (setf *default-pathname-defaults* (truename x)) ;; d-p-d is canonical! - #+allegro (excl:chdir x) - #+clisp (ext:cd x) - #+clozure (setf (ccl:current-directory) x) - #+(or cmucl scl) (unix:unix-chdir (ext:unix-namestring x)) - #+cormanlisp (unless (zerop (win32::_chdir (namestring x))) - (error "Could not set current directory to ~A" x)) - #+(or clasp ecl) (ext:chdir x) - #+gcl (system:chdir x) - #+lispworks (hcl:change-directory x) - #+mkcl (mk-ext:chdir x) - #+sbcl (progn (require :sb-posix) (symbol-call :sb-posix :chdir (sb-ext:native-namestring x))) - #-(or abcl allegro clasp clisp clozure cmucl cormanlisp ecl gcl genera lispworks mkcl sbcl scl xcl) - (not-implemented-error 'chdir)))) - - -;;;; ----------------------------------------------------------------- -;;;; Windows shortcut support. Based on: -;;;; -;;;; Jesse Hager: The Windows Shortcut File Format. -;;;; http://www.wotsit.org/list.asp?fc=13 - -#-(or clisp genera) ; CLISP doesn't need it, and READ-SEQUENCE annoys old Genera that doesn't need it -(with-upgradability () - (defparameter *link-initial-dword* 76) - (defparameter *link-guid* #(1 20 2 0 0 0 0 0 192 0 0 0 0 0 0 70)) - - (defun read-null-terminated-string (s) - "Read a null-terminated string from an octet stream S" - ;; note: doesn't play well with UNICODE - (with-output-to-string (out) - (loop :for code = (read-byte s) - :until (zerop code) - :do (write-char (code-char code) out)))) - - (defun read-little-endian (s &optional (bytes 4)) - "Read a number in little-endian format from an byte (octet) stream S, -the number having BYTES octets (defaulting to 4)." - (loop :for i :from 0 :below bytes - :sum (ash (read-byte s) (* 8 i)))) - - (defun parse-file-location-info (s) - "helper to parse-windows-shortcut" - (let ((start (file-position s)) - (total-length (read-little-endian s)) - (end-of-header (read-little-endian s)) - (fli-flags (read-little-endian s)) - (local-volume-offset (read-little-endian s)) - (local-offset (read-little-endian s)) - (network-volume-offset (read-little-endian s)) - (remaining-offset (read-little-endian s))) - (declare (ignore total-length end-of-header local-volume-offset)) - (unless (zerop fli-flags) - (cond - ((logbitp 0 fli-flags) - (file-position s (+ start local-offset))) - ((logbitp 1 fli-flags) - (file-position s (+ start - network-volume-offset - #x14)))) - (strcat (read-null-terminated-string s) - (progn - (file-position s (+ start remaining-offset)) - (read-null-terminated-string s)))))) - - (defun parse-windows-shortcut (pathname) - "From a .lnk windows shortcut, extract the pathname linked to" - ;; NB: doesn't do much checking & doesn't look like it will work well with UNICODE. - (with-open-file (s pathname :element-type '(unsigned-byte 8)) - (handler-case - (when (and (= (read-little-endian s) *link-initial-dword*) - (let ((header (make-array (length *link-guid*)))) - (read-sequence header s) - (equalp header *link-guid*))) - (let ((flags (read-little-endian s))) - (file-position s 76) ;skip rest of header - (when (logbitp 0 flags) - ;; skip shell item id list - (let ((length (read-little-endian s 2))) - (file-position s (+ length (file-position s))))) - (cond - ((logbitp 1 flags) - (parse-file-location-info s)) - (t - (when (logbitp 2 flags) - ;; skip description string - (let ((length (read-little-endian s 2))) - (file-position s (+ length (file-position s))))) - (when (logbitp 3 flags) - ;; finally, our pathname - (let* ((length (read-little-endian s 2)) - (buffer (make-array length))) - (read-sequence buffer s) - (map 'string #'code-char buffer))))))) - (end-of-file (c) - (declare (ignore c)) - nil))))) - - -;;;; ------------------------------------------------------------------------- -;;;; Portability layer around Common Lisp pathnames -;; This layer allows for portable manipulation of pathname objects themselves, -;; which all is necessary prior to any access the filesystem or environment. - -(uiop/package:define-package :uiop/pathname - (:nicknames :asdf/pathname) ;; deprecated. Used by ceramic - (:use :uiop/common-lisp :uiop/package :uiop/utility :uiop/os) - (:export - ;; Making and merging pathnames, portably - #:normalize-pathname-directory-component #:denormalize-pathname-directory-component - #:merge-pathname-directory-components #:*unspecific-pathname-type* #:make-pathname* - #:make-pathname-component-logical #:make-pathname-logical - #:merge-pathnames* - #:nil-pathname #:*nil-pathname* #:with-pathname-defaults - ;; Predicates - #:pathname-equal #:logical-pathname-p #:physical-pathname-p #:physicalize-pathname - #:absolute-pathname-p #:relative-pathname-p #:hidden-pathname-p #:file-pathname-p - ;; Directories - #:pathname-directory-pathname #:pathname-parent-directory-pathname - #:directory-pathname-p #:ensure-directory-pathname - ;; Parsing filenames - #:split-name-type #:parse-unix-namestring #:unix-namestring - #:split-unix-namestring-directory-components - ;; Absolute and relative pathnames - #:subpathname #:subpathname* - #:ensure-absolute-pathname - #:pathname-root #:pathname-host-pathname - #:subpathp #:enough-pathname #:with-enough-pathname #:call-with-enough-pathname - ;; Checking constraints - #:ensure-pathname ;; implemented in filesystem.lisp to accommodate for existence constraints - ;; Wildcard pathnames - #:*wild* #:*wild-file* #:*wild-file-for-directory* #:*wild-directory* - #:*wild-inferiors* #:*wild-path* #:wilden - ;; Translate a pathname - #:relativize-directory-component #:relativize-pathname-directory - #:directory-separator-for-host #:directorize-pathname-host-device - #:translate-pathname* - #:*output-translation-function*)) -(in-package :uiop/pathname) - -;;; Normalizing pathnames across implementations - -(with-upgradability () - (defun normalize-pathname-directory-component (directory) - "Convert the DIRECTORY component from a format usable by the underlying -implementation's MAKE-PATHNAME and other primitives to a CLHS-standard format -that is a list and not a string." - (cond - #-(or cmucl sbcl scl) ;; these implementations already normalize directory components. - ((stringp directory) `(:absolute ,directory)) - ((or (null directory) - (and (consp directory) (member (first directory) '(:absolute :relative)))) - directory) - #+gcl - ((consp directory) - (cons :relative directory)) - (t - (parameter-error (compatfmt "~@<~S: Unrecognized pathname directory component ~S~@:>") - 'normalize-pathname-directory-component directory)))) - - (defun denormalize-pathname-directory-component (directory-component) - "Convert the DIRECTORY-COMPONENT from a CLHS-standard format to a format usable -by the underlying implementation's MAKE-PATHNAME and other primitives" - directory-component) - - (defun merge-pathname-directory-components (specified defaults) - "Helper for MERGE-PATHNAMES* that handles directory components" - (let ((directory (normalize-pathname-directory-component specified))) - (ecase (first directory) - ((nil) defaults) - (:absolute specified) - (:relative - (let ((defdir (normalize-pathname-directory-component defaults)) - (reldir (cdr directory))) - (cond - ((null defdir) - directory) - ((not (eq :back (first reldir))) - (append defdir reldir)) - (t - (loop :with defabs = (first defdir) - :with defrev = (reverse (rest defdir)) - :while (and (eq :back (car reldir)) - (or (and (eq :absolute defabs) (null defrev)) - (stringp (car defrev)))) - :do (pop reldir) (pop defrev) - :finally (return (cons defabs (append (reverse defrev) reldir))))))))))) - - ;; Giving :unspecific as :type argument to make-pathname is not portable. - ;; See CLHS make-pathname and 19.2.2.2.3. - ;; This will be :unspecific if supported, or NIL if not. - (defparameter *unspecific-pathname-type* - #+(or abcl allegro clozure cmucl genera lispworks sbcl scl) :unspecific - #+(or clasp clisp ecl mkcl gcl xcl #|These haven't been tested:|# cormanlisp mcl) nil - "Unspecific type component to use with the underlying implementation's MAKE-PATHNAME") - - (defun make-pathname* (&rest keys &key directory host device name type version defaults - #+scl &allow-other-keys) - "Takes arguments like CL:MAKE-PATHNAME in the CLHS, and - tries hard to make a pathname that will actually behave as documented, - despite the peculiarities of each implementation. DEPRECATED: just use MAKE-PATHNAME." - (declare (ignore host device directory name type version defaults)) - (apply 'make-pathname keys)) - - (defun make-pathname-component-logical (x) - "Make a pathname component suitable for use in a logical-pathname" - (typecase x - ((eql :unspecific) nil) - #+clisp (string (string-upcase x)) - #+clisp (cons (mapcar 'make-pathname-component-logical x)) - (t x))) - - (defun make-pathname-logical (pathname host) - "Take a PATHNAME's directory, name, type and version components, -and make a new pathname with corresponding components and specified logical HOST" - (make-pathname - :host host - :directory (make-pathname-component-logical (pathname-directory pathname)) - :name (make-pathname-component-logical (pathname-name pathname)) - :type (make-pathname-component-logical (pathname-type pathname)) - :version (make-pathname-component-logical (pathname-version pathname)))) - - (defun merge-pathnames* (specified &optional (defaults *default-pathname-defaults*)) - "MERGE-PATHNAMES* is like MERGE-PATHNAMES except that -if the SPECIFIED pathname does not have an absolute directory, -then the HOST and DEVICE both come from the DEFAULTS, whereas -if the SPECIFIED pathname does have an absolute directory, -then the HOST and DEVICE both come from the SPECIFIED pathname. -This is what users want on a modern Unix or Windows operating system, -unlike the MERGE-PATHNAMES behavior. -Also, if either argument is NIL, then the other argument is returned unmodified; -this is unlike MERGE-PATHNAMES which always merges with a pathname, -by default *DEFAULT-PATHNAME-DEFAULTS*, which cannot be NIL." - (when (null specified) (return-from merge-pathnames* defaults)) - (when (null defaults) (return-from merge-pathnames* specified)) - #+scl - (ext:resolve-pathname specified defaults) - #-scl - (let* ((specified (pathname specified)) - (defaults (pathname defaults)) - (directory (normalize-pathname-directory-component (pathname-directory specified))) - (name (or (pathname-name specified) (pathname-name defaults))) - (type (or (pathname-type specified) (pathname-type defaults))) - (version (or (pathname-version specified) (pathname-version defaults)))) - (labels ((unspecific-handler (p) - (if (typep p 'logical-pathname) #'make-pathname-component-logical #'identity))) - (multiple-value-bind (host device directory unspecific-handler) - (ecase (first directory) - ((:absolute) - (values (pathname-host specified) - (pathname-device specified) - directory - (unspecific-handler specified))) - ((nil :relative) - (values (pathname-host defaults) - (pathname-device defaults) - (merge-pathname-directory-components directory (pathname-directory defaults)) - (unspecific-handler defaults)))) - (make-pathname :host host :device device :directory directory - :name (funcall unspecific-handler name) - :type (funcall unspecific-handler type) - :version (funcall unspecific-handler version)))))) - - (defun logical-pathname-p (x) - "is X a logical-pathname?" - (typep x 'logical-pathname)) - - (defun physical-pathname-p (x) - "is X a pathname that is not a logical-pathname?" - (and (pathnamep x) (not (logical-pathname-p x)))) - - (defun physicalize-pathname (x) - "if X is a logical pathname, use translate-logical-pathname on it." - ;; Ought to be the same as translate-logical-pathname, except the latter borks on CLISP - (let ((p (when x (pathname x)))) - (if (logical-pathname-p p) (translate-logical-pathname p) p))) - - (defun nil-pathname (&optional (defaults *default-pathname-defaults*)) - "A pathname that is as neutral as possible for use as defaults -when merging, making or parsing pathnames" - ;; 19.2.2.2.1 says a NIL host can mean a default host; - ;; see also "valid physical pathname host" in the CLHS glossary, that suggests - ;; strings and lists of strings or :unspecific - ;; But CMUCL decides to die on NIL. - ;; MCL has issues with make-pathname, nil and defaulting - (declare (ignorable defaults)) - #.`(make-pathname :directory nil :name nil :type nil :version nil - :device (or #+(and mkcl os-unix) :unspecific) - :host (or #+cmucl lisp::*unix-host* #+(and mkcl os-unix) "localhost") - #+scl ,@'(:scheme nil :scheme-specific-part nil - :username nil :password nil :parameters nil :query nil :fragment nil) - ;; the default shouldn't matter, but we really want something physical - #-mcl ,@'(:defaults defaults))) - - (defvar *nil-pathname* (nil-pathname (physicalize-pathname (user-homedir-pathname))) - "A pathname that is as neutral as possible for use as defaults -when merging, making or parsing pathnames") - - (defmacro with-pathname-defaults ((&optional defaults) &body body) - "Execute BODY in a context where the *DEFAULT-PATHNAME-DEFAULTS* is as specified, -where leaving the defaults NIL or unspecified means a (NIL-PATHNAME), except -on ABCL, Genera and XCL, where it remains unchanged for it doubles as current-directory." - `(let ((*default-pathname-defaults* - ,(or defaults - #-(or abcl genera xcl) '*nil-pathname* - #+(or abcl genera xcl) '*default-pathname-defaults*))) - ,@body))) - - -;;; Some pathname predicates -(with-upgradability () - (defun pathname-equal (p1 p2) - "Are the two pathnames P1 and P2 reasonably equal in the paths they denote?" - (when (stringp p1) (setf p1 (pathname p1))) - (when (stringp p2) (setf p2 (pathname p2))) - (flet ((normalize-component (x) - (unless (member x '(nil :unspecific :newest (:relative)) :test 'equal) - x))) - (macrolet ((=? (&rest accessors) - (flet ((frob (x) - (reduce 'list (cons 'normalize-component accessors) - :initial-value x :from-end t))) - `(equal ,(frob 'p1) ,(frob 'p2))))) - (or (and (null p1) (null p2)) - (and (pathnamep p1) (pathnamep p2) - (and (=? pathname-host) - #-(and mkcl os-unix) (=? pathname-device) - (=? normalize-pathname-directory-component pathname-directory) - (=? pathname-name) - (=? pathname-type) - #-mkcl (=? pathname-version))))))) - - (defun absolute-pathname-p (pathspec) - "If PATHSPEC is a pathname or namestring object that parses as a pathname -possessing an :ABSOLUTE directory component, return the (parsed) pathname. -Otherwise return NIL" - (and pathspec - (typep pathspec '(or null pathname string)) - (let ((pathname (pathname pathspec))) - (and (eq :absolute (car (normalize-pathname-directory-component - (pathname-directory pathname)))) - pathname)))) - - (defun relative-pathname-p (pathspec) - "If PATHSPEC is a pathname or namestring object that parses as a pathname -possessing a :RELATIVE or NIL directory component, return the (parsed) pathname. -Otherwise return NIL" - (and pathspec - (typep pathspec '(or null pathname string)) - (let* ((pathname (pathname pathspec)) - (directory (normalize-pathname-directory-component - (pathname-directory pathname)))) - (when (or (null directory) (eq :relative (car directory))) - pathname)))) - - (defun hidden-pathname-p (pathname) - "Return a boolean that is true if the pathname is hidden as per Unix style, -i.e. its name starts with a dot." - (and pathname (equal (first-char (pathname-name pathname)) #\.))) - - (defun file-pathname-p (pathname) - "Does PATHNAME represent a file, i.e. has a non-null NAME component? - -Accepts NIL, a string (converted through PARSE-NAMESTRING) or a PATHNAME. - -Note that this does _not_ check to see that PATHNAME points to an -actually-existing file. - -Returns the (parsed) PATHNAME when true" - (when pathname - (let ((pathname (pathname pathname))) - (unless (and (member (pathname-name pathname) '(nil :unspecific "") :test 'equal) - (member (pathname-type pathname) '(nil :unspecific "") :test 'equal)) - pathname))))) - - -;;; Directory pathnames -(with-upgradability () - (defun pathname-directory-pathname (pathname) - "Returns a new pathname with same HOST, DEVICE, DIRECTORY as PATHNAME, -and NIL NAME, TYPE and VERSION components" - (when pathname - (make-pathname :name nil :type nil :version nil :defaults pathname))) - - (defun pathname-parent-directory-pathname (pathname) - "Returns a new pathname that corresponds to the parent of the current pathname's directory, -i.e. removing one level of depth in the DIRECTORY component. e.g. if pathname is -Unix pathname /foo/bar/baz/file.type then return /foo/bar/" - (when pathname - (make-pathname :name nil :type nil :version nil - :directory (merge-pathname-directory-components - '(:relative :back) (pathname-directory pathname)) - :defaults pathname))) - - (defun directory-pathname-p (pathname) - "Does PATHNAME represent a directory? - -A directory-pathname is a pathname _without_ a filename. The three -ways that the filename components can be missing are for it to be NIL, -:UNSPECIFIC or the empty string. - -Note that this does _not_ check to see that PATHNAME points to an -actually-existing directory." - (when pathname - ;; I tried using Allegro's excl:file-directory-p, but this cannot be done, - ;; because it rejects apparently legal pathnames as - ;; ill-formed. [2014/02/10:rpg] - (let ((pathname (pathname pathname))) - (flet ((check-one (x) - (member x '(nil :unspecific) :test 'equal))) - (and (not (wild-pathname-p pathname)) - (check-one (pathname-name pathname)) - (check-one (pathname-type pathname)) - t))))) - - (defun ensure-directory-pathname (pathspec &optional (on-error 'error)) - "Converts the non-wild pathname designator PATHSPEC to directory form." - (cond - ((stringp pathspec) - (ensure-directory-pathname (pathname pathspec))) - ((not (pathnamep pathspec)) - (call-function on-error (compatfmt "~@") pathspec)) - ((wild-pathname-p pathspec) - (call-function on-error (compatfmt "~@") pathspec)) - ((directory-pathname-p pathspec) - pathspec) - (t - (handler-case - (make-pathname :directory (append (or (normalize-pathname-directory-component - (pathname-directory pathspec)) - (list :relative)) - (list (file-namestring pathspec))) - :name nil :type nil :version nil :defaults pathspec) - (error (c) (call-function on-error (compatfmt "~@") pathspec c))))))) - - -;;; Parsing filenames -(with-upgradability () - (declaim (ftype function ensure-pathname)) ; forward reference - - (defun split-unix-namestring-directory-components - (unix-namestring &key ensure-directory dot-dot) - "Splits the path string UNIX-NAMESTRING, returning four values: -A flag that is either :absolute or :relative, indicating - how the rest of the values are to be interpreted. -A directory path --- a list of strings and keywords, suitable for - use with MAKE-PATHNAME when prepended with the flag value. - Directory components with an empty name or the name . are removed. - Any directory named .. is read as DOT-DOT, or :BACK if it's NIL (not :UP). -A last-component, either a file-namestring including type extension, - or NIL in the case of a directory pathname. -A flag that is true iff the unix-style-pathname was just - a file-namestring without / path specification. -ENSURE-DIRECTORY forces the namestring to be interpreted as a directory pathname: -the third return value will be NIL, and final component of the namestring -will be treated as part of the directory path. - -An empty string is thus read as meaning a pathname object with all fields nil. - -Note that colon characters #\: will NOT be interpreted as host specification. -Absolute pathnames are only appropriate on Unix-style systems. - -The intention of this function is to support structured component names, -e.g., \(:file \"foo/bar\"\), which will be unpacked to relative pathnames." - (check-type unix-namestring string) - (check-type dot-dot (member nil :back :up)) - (if (and (not (find #\/ unix-namestring)) (not ensure-directory) - (plusp (length unix-namestring))) - (values :relative () unix-namestring t) - (let* ((components (split-string unix-namestring :separator "/")) - (last-comp (car (last components)))) - (multiple-value-bind (relative components) - (if (equal (first components) "") - (if (equal (first-char unix-namestring) #\/) - (values :absolute (cdr components)) - (values :relative nil)) - (values :relative components)) - (setf components (remove-if #'(lambda (x) (member x '("" ".") :test #'equal)) - components)) - (setf components (substitute (or dot-dot :back) ".." components :test #'equal)) - (cond - ((equal last-comp "") - (values relative components nil nil)) ; "" already removed from components - (ensure-directory - (values relative components nil nil)) - (t - (values relative (butlast components) last-comp nil))))))) - - (defun split-name-type (filename) - "Split a filename into two values NAME and TYPE that are returned. -We assume filename has no directory component. -The last . if any separates name and type from from type, -except that if there is only one . and it is in first position, -the whole filename is the NAME with an empty type. -NAME is always a string. -For an empty type, *UNSPECIFIC-PATHNAME-TYPE* is returned." - (check-type filename string) - (assert (plusp (length filename))) - (destructuring-bind (name &optional (type *unspecific-pathname-type*)) - (split-string filename :max 2 :separator ".") - (if (equal name "") - (values filename *unspecific-pathname-type*) - (values name type)))) - - (defun parse-unix-namestring (name &rest keys &key type defaults dot-dot ensure-directory - &allow-other-keys) - "Coerce NAME into a PATHNAME using standard Unix syntax. - -Unix syntax is used whether or not the underlying system is Unix; -on such non-Unix systems it is reliably usable only for relative pathnames. -This function is especially useful to manipulate relative pathnames portably, -where it is of crucial to possess a portable pathname syntax independent of the underlying OS. -This is what PARSE-UNIX-NAMESTRING provides, and why we use it in ASDF. - -When given a PATHNAME object, just return it untouched. -When given NIL, just return NIL. -When given a non-null SYMBOL, first downcase its name and treat it as a string. -When given a STRING, portably decompose it into a pathname as below. - -#\\/ separates directory components. - -The last #\\/-separated substring is interpreted as follows: -1- If TYPE is :DIRECTORY or ENSURE-DIRECTORY is true, - the string is made the last directory component, and NAME and TYPE are NIL. - if the string is empty, it's the empty pathname with all slots NIL. -2- If TYPE is NIL, the substring is a file-namestring, and its NAME and TYPE - are separated by SPLIT-NAME-TYPE. -3- If TYPE is a string, it is the given TYPE, and the whole string is the NAME. - -Directory components with an empty name or the name \".\" are removed. -Any directory named \"..\" is read as DOT-DOT, -which must be one of :BACK or :UP and defaults to :BACK. - -HOST, DEVICE and VERSION components are taken from DEFAULTS, -which itself defaults to *NIL-PATHNAME*, also used if DEFAULTS is NIL. -No host or device can be specified in the string itself, -which makes it unsuitable for absolute pathnames outside Unix. - -For relative pathnames, these components (and hence the defaults) won't matter -if you use MERGE-PATHNAMES* but will matter if you use MERGE-PATHNAMES, -which is an important reason to always use MERGE-PATHNAMES*. - -Arbitrary keys are accepted, and the parse result is passed to ENSURE-PATHNAME -with those keys, removing TYPE DEFAULTS and DOT-DOT. -When you're manipulating pathnames that are supposed to make sense portably -even though the OS may not be Unixish, we recommend you use :WANT-RELATIVE T -to throw an error if the pathname is absolute" - (block nil - (check-type type (or null string (eql :directory))) - (when ensure-directory - (setf type :directory)) - (etypecase name - ((or null pathname) (return name)) - (symbol - (setf name (string-downcase name))) - (string)) - (multiple-value-bind (relative path filename file-only) - (split-unix-namestring-directory-components - name :dot-dot dot-dot :ensure-directory (eq type :directory)) - (multiple-value-bind (name type) - (cond - ((or (eq type :directory) (null filename)) - (values nil nil)) - (type - (values filename type)) - (t - (split-name-type filename))) - (apply 'ensure-pathname - (make-pathname - :directory (unless file-only (cons relative path)) - :name name :type type - :defaults (or #-mcl defaults *nil-pathname*)) - (remove-plist-keys '(:type :dot-dot :defaults) keys)))))) - - (defun unix-namestring (pathname) - "Given a non-wild PATHNAME, return a Unix-style namestring for it. -If the PATHNAME is NIL or a STRING, return it unchanged. - -This only considers the DIRECTORY, NAME and TYPE components of the pathname. -This is a portable solution for representing relative pathnames, -But unless you are running on a Unix system, it is not a general solution -to representing native pathnames. - -An error is signaled if the argument is not NULL, a STRING or a PATHNAME, -or if it is a PATHNAME but some of its components are not recognized." - (etypecase pathname - ((or null string) pathname) - (pathname - (with-output-to-string (s) - (flet ((err () (parameter-error "~S: invalid unix-namestring ~S" - 'unix-namestring pathname))) - (let* ((dir (normalize-pathname-directory-component (pathname-directory pathname))) - (name (pathname-name pathname)) - (name (and (not (eq name :unspecific)) name)) - (type (pathname-type pathname)) - (type (and (not (eq type :unspecific)) type))) - (cond - ((member dir '(nil :unspecific))) - ((eq dir '(:relative)) (princ "./" s)) - ((consp dir) - (destructuring-bind (relabs &rest dirs) dir - (or (member relabs '(:relative :absolute)) (err)) - (when (eq relabs :absolute) (princ #\/ s)) - (loop :for x :in dirs :do - (cond - ((member x '(:back :up)) (princ "../" s)) - ((equal x "") (err)) - ;;((member x '("." "..") :test 'equal) (err)) - ((stringp x) (format s "~A/" x)) - (t (err)))))) - (t (err))) - (cond - (name - (unless (and (stringp name) (or (null type) (stringp type))) (err)) - (format s "~A~@[.~A~]" name type)) - (t - (or (null type) (err))))))))))) - -;;; Absolute and relative pathnames -(with-upgradability () - (defun subpathname (pathname subpath &key type) - "This function takes a PATHNAME and a SUBPATH and a TYPE. -If SUBPATH is already a PATHNAME object (not namestring), -and is an absolute pathname at that, it is returned unchanged; -otherwise, SUBPATH is turned into a relative pathname with given TYPE -as per PARSE-UNIX-NAMESTRING with :WANT-RELATIVE T :TYPE TYPE, -then it is merged with the PATHNAME-DIRECTORY-PATHNAME of PATHNAME." - (or (and (pathnamep subpath) (absolute-pathname-p subpath)) - (merge-pathnames* (parse-unix-namestring subpath :type type :want-relative t) - (pathname-directory-pathname pathname)))) - - (defun subpathname* (pathname subpath &key type) - "returns NIL if the base pathname is NIL, otherwise like SUBPATHNAME." - (and pathname - (subpathname (ensure-directory-pathname pathname) subpath :type type))) - - (defun pathname-root (pathname) - "return the root directory for the host and device of given PATHNAME" - (make-pathname :directory '(:absolute) - :name nil :type nil :version nil - :defaults pathname ;; host device, and on scl, *some* - ;; scheme-specific parts: port username password, not others: - . #.(or #+scl '(:parameters nil :query nil :fragment nil)))) - - (defun pathname-host-pathname (pathname) - "return a pathname with the same host as given PATHNAME, and all other fields NIL" - (make-pathname :directory nil - :name nil :type nil :version nil :device nil - :defaults pathname ;; host device, and on scl, *some* - ;; scheme-specific parts: port username password, not others: - . #.(or #+scl '(:parameters nil :query nil :fragment nil)))) - - (defun ensure-absolute-pathname (path &optional defaults (on-error 'error)) - "Given a pathname designator PATH, return an absolute pathname as specified by PATH -considering the DEFAULTS, or, if not possible, use CALL-FUNCTION on the specified ON-ERROR behavior, -with a format control-string and other arguments as arguments" - (cond - ((absolute-pathname-p path)) - ((stringp path) (ensure-absolute-pathname (pathname path) defaults on-error)) - ((not (pathnamep path)) (call-function on-error "not a valid pathname designator ~S" path)) - ((let ((default-pathname (if (pathnamep defaults) defaults (call-function defaults)))) - (or (if (absolute-pathname-p default-pathname) - (absolute-pathname-p (merge-pathnames* path default-pathname)) - (call-function on-error "Default pathname ~S is not an absolute pathname" - default-pathname)) - (call-function on-error "Failed to merge ~S with ~S into an absolute pathname" - path default-pathname)))) - (t (call-function on-error - "Cannot ensure ~S is evaluated as an absolute pathname with defaults ~S" - path defaults)))) - - (defun subpathp (maybe-subpath base-pathname) - "if MAYBE-SUBPATH is a pathname that is under BASE-PATHNAME, return a pathname object that -when used with MERGE-PATHNAMES* with defaults BASE-PATHNAME, returns MAYBE-SUBPATH." - (and (pathnamep maybe-subpath) (pathnamep base-pathname) - (absolute-pathname-p maybe-subpath) (absolute-pathname-p base-pathname) - (directory-pathname-p base-pathname) (not (wild-pathname-p base-pathname)) - (pathname-equal (pathname-root maybe-subpath) (pathname-root base-pathname)) - (with-pathname-defaults (*nil-pathname*) - (let ((enough (enough-namestring maybe-subpath base-pathname))) - (and (relative-pathname-p enough) (pathname enough)))))) - - (defun enough-pathname (maybe-subpath base-pathname) - "if MAYBE-SUBPATH is a pathname that is under BASE-PATHNAME, return a pathname object that -when used with MERGE-PATHNAMES* with defaults BASE-PATHNAME, returns MAYBE-SUBPATH." - (let ((sub (when maybe-subpath (pathname maybe-subpath))) - (base (when base-pathname (ensure-absolute-pathname (pathname base-pathname))))) - (or (and base (subpathp sub base)) sub))) - - (defun call-with-enough-pathname (maybe-subpath defaults-pathname thunk) - "In a context where *DEFAULT-PATHNAME-DEFAULTS* is bound to DEFAULTS-PATHNAME (if not null, -or else to its current value), call THUNK with ENOUGH-PATHNAME for MAYBE-SUBPATH -given DEFAULTS-PATHNAME as a base pathname." - (let ((enough (enough-pathname maybe-subpath defaults-pathname)) - (*default-pathname-defaults* (or defaults-pathname *default-pathname-defaults*))) - (funcall thunk enough))) - - (defmacro with-enough-pathname ((pathname-var &key (pathname pathname-var) - (defaults *default-pathname-defaults*)) - &body body) - "Shorthand syntax for CALL-WITH-ENOUGH-PATHNAME" - `(call-with-enough-pathname ,pathname ,defaults #'(lambda (,pathname-var) ,@body)))) - - -;;; Wildcard pathnames -(with-upgradability () - (defparameter *wild* (or #+cormanlisp "*" :wild) - "Wild component for use with MAKE-PATHNAME") - (defparameter *wild-directory-component* (or :wild) - "Wild directory component for use with MAKE-PATHNAME") - (defparameter *wild-inferiors-component* (or :wild-inferiors) - "Wild-inferiors directory component for use with MAKE-PATHNAME") - (defparameter *wild-file* - (make-pathname :directory nil :name *wild* :type *wild* - :version (or #-(or allegro abcl xcl) *wild*)) - "A pathname object with wildcards for matching any file with TRANSLATE-PATHNAME") - (defparameter *wild-file-for-directory* - (make-pathname :directory nil :name *wild* :type (or #-(or clisp gcl) *wild*) - :version (or #-(or allegro abcl clisp gcl xcl) *wild*)) - "A pathname object with wildcards for matching any file with DIRECTORY") - (defparameter *wild-directory* - (make-pathname :directory `(:relative ,*wild-directory-component*) - :name nil :type nil :version nil) - "A pathname object with wildcards for matching any subdirectory") - (defparameter *wild-inferiors* - (make-pathname :directory `(:relative ,*wild-inferiors-component*) - :name nil :type nil :version nil) - "A pathname object with wildcards for matching any recursive subdirectory") - (defparameter *wild-path* - (merge-pathnames* *wild-file* *wild-inferiors*) - "A pathname object with wildcards for matching any file in any recursive subdirectory") - - (defun wilden (path) - "From a pathname, return a wildcard pathname matching any file in any subdirectory of given pathname's directory" - (merge-pathnames* *wild-path* path))) - - -;;; Translate a pathname -(with-upgradability () - (defun relativize-directory-component (directory-component) - "Given the DIRECTORY-COMPONENT of a pathname, return an otherwise similar relative directory component" - (let ((directory (normalize-pathname-directory-component directory-component))) - (cond - ((stringp directory) - (list :relative directory)) - ((eq (car directory) :absolute) - (cons :relative (cdr directory))) - (t - directory)))) - - (defun relativize-pathname-directory (pathspec) - "Given a PATHNAME, return a relative pathname with otherwise the same components" - (let ((p (pathname pathspec))) - (make-pathname - :directory (relativize-directory-component (pathname-directory p)) - :defaults p))) - - (defun directory-separator-for-host (&optional (pathname *default-pathname-defaults*)) - "Given a PATHNAME, return the character used to delimit directory names on this host and device." - (let ((foo (make-pathname :directory '(:absolute "FOO") :defaults pathname))) - (last-char (namestring foo)))) - - #-scl - (defun directorize-pathname-host-device (pathname) - "Given a PATHNAME, return a pathname that has representations of its HOST and DEVICE components -added to its DIRECTORY component. This is useful for output translations." - (os-cond - ((os-unix-p) - (when (physical-pathname-p pathname) - (return-from directorize-pathname-host-device pathname)))) - (let* ((root (pathname-root pathname)) - (wild-root (wilden root)) - (absolute-pathname (merge-pathnames* pathname root)) - (separator (directory-separator-for-host root)) - (root-namestring (namestring root)) - (root-string - (substitute-if #\/ - #'(lambda (x) (or (eql x #\:) - (eql x separator))) - root-namestring))) - (multiple-value-bind (relative path filename) - (split-unix-namestring-directory-components root-string :ensure-directory t) - (declare (ignore relative filename)) - (let ((new-base (make-pathname :defaults root :directory `(:absolute ,@path)))) - (translate-pathname absolute-pathname wild-root (wilden new-base)))))) - - #+scl - (defun directorize-pathname-host-device (pathname) - (let ((scheme (ext:pathname-scheme pathname)) - (host (pathname-host pathname)) - (port (ext:pathname-port pathname)) - (directory (pathname-directory pathname))) - (flet ((specificp (x) (and x (not (eq x :unspecific))))) - (if (or (specificp port) - (and (specificp host) (plusp (length host))) - (specificp scheme)) - (let ((prefix "")) - (when (specificp port) - (setf prefix (format nil ":~D" port))) - (when (and (specificp host) (plusp (length host))) - (setf prefix (strcat host prefix))) - (setf prefix (strcat ":" prefix)) - (when (specificp scheme) - (setf prefix (strcat scheme prefix))) - (assert (and directory (eq (first directory) :absolute))) - (make-pathname :directory `(:absolute ,prefix ,@(rest directory)) - :defaults pathname))) - pathname))) - - (defun* (translate-pathname*) (path absolute-source destination &optional root source) - "A wrapper around TRANSLATE-PATHNAME to be used by the ASDF output-translations facility. -PATH is the pathname to be translated. -ABSOLUTE-SOURCE is an absolute pathname to use as source for translate-pathname, -DESTINATION is either a function, to be called with PATH and ABSOLUTE-SOURCE, -or a relative pathname, to be merged with ROOT and used as destination for translate-pathname -or an absolute pathname, to be used as destination for translate-pathname. -In that last case, if ROOT is non-NIL, PATH is first transformated by DIRECTORIZE-PATHNAME-HOST-DEVICE." - (declare (ignore source)) - (cond - ((functionp destination) - (funcall destination path absolute-source)) - ((eq destination t) - path) - ((not (pathnamep destination)) - (parameter-error "~S: Invalid destination" 'translate-pathname*)) - ((not (absolute-pathname-p destination)) - (translate-pathname path absolute-source (merge-pathnames* destination root))) - (root - (translate-pathname (directorize-pathname-host-device path) absolute-source destination)) - (t - (translate-pathname path absolute-source destination)))) - - (defvar *output-translation-function* 'identity - "Hook for output translations. - -This function needs to be idempotent, so that actions can work -whether their inputs were translated or not, -which they will be if we are composing operations. e.g. if some -create-lisp-op creates a lisp file from some higher-level input, -you need to still be able to use compile-op on that lisp file.")) -;;;; ------------------------------------------------------------------------- -;;;; Portability layer around Common Lisp filesystem access - -(uiop/package:define-package :uiop/filesystem - (:use :uiop/common-lisp :uiop/package :uiop/utility :uiop/os :uiop/pathname) - (:export - ;; Native namestrings - #:native-namestring #:parse-native-namestring - ;; Probing the filesystem - #:truename* #:safe-file-write-date #:probe-file* #:directory-exists-p #:file-exists-p - #:directory* #:filter-logical-directory-results #:directory-files #:subdirectories - #:collect-sub*directories - ;; Resolving symlinks somewhat - #:truenamize #:resolve-symlinks #:*resolve-symlinks* #:resolve-symlinks* - ;; merging with cwd - #:get-pathname-defaults #:call-with-current-directory #:with-current-directory - ;; Environment pathnames - #:inter-directory-separator #:split-native-pathnames-string - #:getenv-pathname #:getenv-pathnames - #:getenv-absolute-directory #:getenv-absolute-directories - #:lisp-implementation-directory #:lisp-implementation-pathname-p - ;; Simple filesystem operations - #:ensure-all-directories-exist - #:rename-file-overwriting-target - #:delete-file-if-exists #:delete-empty-directory #:delete-directory-tree)) -(in-package :uiop/filesystem) - -;;; Native namestrings, as seen by the operating system calls rather than Lisp -(with-upgradability () - (defun native-namestring (x) - "From a non-wildcard CL pathname, a return namestring suitable for passing to the operating system" - (when x - (let ((p (pathname x))) - #+clozure (with-pathname-defaults () (ccl:native-translated-namestring p)) ; see ccl bug 978 - #+(or cmucl scl) (ext:unix-namestring p nil) - #+sbcl (sb-ext:native-namestring p) - #-(or clozure cmucl sbcl scl) - (os-cond - ((os-unix-p) (unix-namestring p)) - (t (namestring p)))))) - - (defun parse-native-namestring (string &rest constraints &key ensure-directory &allow-other-keys) - "From a native namestring suitable for use by the operating system, return -a CL pathname satisfying all the specified constraints as per ENSURE-PATHNAME" - (check-type string (or string null)) - (let* ((pathname - (when string - (with-pathname-defaults () - #+clozure (ccl:native-to-pathname string) - #+cmucl (uiop/os::parse-unix-namestring* string) - #+sbcl (sb-ext:parse-native-namestring string) - #+scl (lisp::parse-unix-namestring string) - #-(or clozure cmucl sbcl scl) - (os-cond - ((os-unix-p) (parse-unix-namestring string :ensure-directory ensure-directory)) - (t (parse-namestring string)))))) - (pathname - (if ensure-directory - (and pathname (ensure-directory-pathname pathname)) - pathname))) - (apply 'ensure-pathname pathname constraints)))) - - -;;; Probing the filesystem -(with-upgradability () - (defun truename* (p) - "Nicer variant of TRUENAME that plays well with NIL, avoids logical pathname contexts, and tries both files and directories" - (when p - (when (stringp p) (setf p (with-pathname-defaults () (parse-namestring p)))) - (values - (or (ignore-errors (truename p)) - ;; this is here because trying to find the truename of a directory pathname WITHOUT supplying - ;; a trailing directory separator, causes an error on some lisps. - #+(or clisp gcl) (if-let (d (ensure-directory-pathname p nil)) (ignore-errors (truename d))))))) - - (defun safe-file-write-date (pathname) - "Safe variant of FILE-WRITE-DATE that may return NIL rather than raise an error." - ;; If FILE-WRITE-DATE returns NIL, it's possible that - ;; the user or some other agent has deleted an input file. - ;; Also, generated files will not exist at the time planning is done - ;; and calls compute-action-stamp which calls safe-file-write-date. - ;; So it is very possible that we can't get a valid file-write-date, - ;; and we can survive and we will continue the planning - ;; as if the file were very old. - ;; (or should we treat the case in a different, special way?) - (and pathname - (handler-case (file-write-date (physicalize-pathname pathname)) - (file-error () nil)))) - - (defun probe-file* (p &key truename) - "when given a pathname P (designated by a string as per PARSE-NAMESTRING), -probes the filesystem for a file or directory with given pathname. -If it exists, return its truename if TRUENAME is true, -or the original (parsed) pathname if it is false (the default)." - (values - (ignore-errors - (setf p (funcall 'ensure-pathname p - :namestring :lisp - :ensure-physical t - :ensure-absolute t :defaults 'get-pathname-defaults - :want-non-wild t - :on-error nil)) - (when p - #+allegro - (probe-file p :follow-symlinks truename) - #+gcl - (if truename - (truename* p) - (let ((kind (car (si::stat p)))) - (when (eq kind :link) - (setf kind (ignore-errors (car (si::stat (truename* p)))))) - (ecase kind - ((nil) nil) - ((:file :link) - (cond - ((file-pathname-p p) p) - ((directory-pathname-p p) - (subpathname p (car (last (pathname-directory p))))))) - (:directory (ensure-directory-pathname p))))) - #+clisp - #.(let* ((fs (or #-os-windows (find-symbol* '#:file-stat :posix nil))) - (pp (find-symbol* '#:probe-pathname :ext nil))) - `(if truename - ,(if pp - `(values (,pp p)) - '(or (truename* p) - (truename* (ignore-errors (ensure-directory-pathname p))))) - ,(cond - (fs `(and (,fs p) p)) - (pp `(nth-value 1 (,pp p))) - (t '(or (and (truename* p) p) - (if-let (d (ensure-directory-pathname p)) - (and (truename* d) d))))))) - #-(or allegro clisp gcl) - (if truename - (probe-file p) - (and - #+(or cmucl scl) (unix:unix-stat (ext:unix-namestring p)) - #+(and lispworks os-unix) (system:get-file-stat p) - #+sbcl (sb-unix:unix-stat (sb-ext:native-namestring p)) - #-(or cmucl (and lispworks os-unix) sbcl scl) (file-write-date p) - p)))))) - - (defun directory-exists-p (x) - "Is X the name of a directory that exists on the filesystem?" - #+allegro - (excl:probe-directory x) - #+clisp - (handler-case (ext:probe-directory x) - (sys::simple-file-error () - nil)) - #-(or allegro clisp) - (let ((p (probe-file* x :truename t))) - (and (directory-pathname-p p) p))) - - (defun file-exists-p (x) - "Is X the name of a file that exists on the filesystem?" - (let ((p (probe-file* x :truename t))) - (and (file-pathname-p p) p))) - - (defun directory* (pathname-spec &rest keys &key &allow-other-keys) - "Return a list of the entries in a directory by calling DIRECTORY. -Try to override the defaults to not resolving symlinks, if implementation allows." - (apply 'directory pathname-spec - (append keys '#.(or #+allegro '(:directories-are-files nil :follow-symbolic-links nil) - #+(or clozure digitool) '(:follow-links nil) - #+clisp '(:circle t :if-does-not-exist :ignore) - #+(or cmucl scl) '(:follow-links nil :truenamep nil) - #+lispworks '(:link-transparency nil) - #+sbcl (when (find-symbol* :resolve-symlinks '#:sb-impl nil) - '(:resolve-symlinks nil)))))) - - (defun filter-logical-directory-results (directory entries merger) - "If DIRECTORY isn't a logical pathname, return ENTRIES. If it is, -given ENTRIES in the DIRECTORY, remove the entries which are physical yet -when transformed by MERGER have a different TRUENAME. -Also remove duplicates as may appear with some translation rules. -This function is used as a helper to DIRECTORY-FILES to avoid invalid entries -when using logical-pathnames." - (if (logical-pathname-p directory) - (remove-duplicates ;; on CLISP, querying ~/ will return duplicates - ;; Try hard to not resolve logical-pathname into physical pathnames; - ;; otherwise logical-pathname users/lovers will be disappointed. - ;; If directory* could use some implementation-dependent magic, - ;; we will have logical pathnames already; otherwise, - ;; we only keep pathnames for which specifying the name and - ;; translating the LPN commute. - (loop :for f :in entries - :for p = (or (and (logical-pathname-p f) f) - (let* ((u (ignore-errors (call-function merger f)))) - ;; The first u avoids a cumbersome (truename u) error. - ;; At this point f should already be a truename, - ;; but isn't quite in CLISP, for it doesn't have :version :newest - (and u (equal (truename* u) (truename* f)) u))) - :when p :collect p) - :test 'pathname-equal) - entries)) - - (defun directory-files (directory &optional (pattern *wild-file-for-directory*)) - "Return a list of the files in a directory according to the PATTERN. -Subdirectories should NOT be returned. - PATTERN defaults to a pattern carefully chosen based on the implementation; -override the default at your own risk. - DIRECTORY-FILES tries NOT to resolve symlinks if the implementation permits this, -but the behavior in presence of symlinks is not portable. Use IOlib to handle such situations." - (let ((dir (pathname directory))) - (when (logical-pathname-p dir) - ;; Because of the filtering we do below, - ;; logical pathnames have restrictions on wild patterns. - ;; Not that the results are very portable when you use these patterns on physical pathnames. - (when (wild-pathname-p dir) - (parameter-error "~S: Invalid wild pattern in logical directory ~S" - 'directory-files directory)) - (unless (member (pathname-directory pattern) '(() (:relative)) :test 'equal) - (parameter-error "~S: Invalid file pattern ~S for logical directory ~S" 'directory-files pattern directory)) - (setf pattern (make-pathname-logical pattern (pathname-host dir)))) - (let* ((pat (merge-pathnames* pattern dir)) - (entries (ignore-errors (directory* pat)))) - (remove-if 'directory-pathname-p - (filter-logical-directory-results - directory entries - #'(lambda (f) - (make-pathname :defaults dir - :name (make-pathname-component-logical (pathname-name f)) - :type (make-pathname-component-logical (pathname-type f)) - :version (make-pathname-component-logical (pathname-version f))))))))) - - (defun subdirectories (directory) - "Given a DIRECTORY pathname designator, return a list of the subdirectories under it. -The behavior in presence of symlinks is not portable. Use IOlib to handle such situations." - (let* ((directory (ensure-directory-pathname directory)) - #-(or abcl cormanlisp genera xcl) - (wild (merge-pathnames* - #-(or abcl allegro cmucl lispworks sbcl scl xcl) - *wild-directory* - #+(or abcl allegro cmucl lispworks sbcl scl xcl) "*.*" - directory)) - (dirs - #-(or abcl cormanlisp genera xcl) - (ignore-errors - (directory* wild . #.(or #+clozure '(:directories t :files nil) - #+mcl '(:directories t)))) - #+(or abcl xcl) (system:list-directory directory) - #+cormanlisp (cl::directory-subdirs directory) - #+genera (handler-case (fs:directory-list directory) (fs:directory-not-found () nil))) - #+(or abcl allegro cmucl genera lispworks sbcl scl xcl) - (dirs (loop :for x :in dirs - :for d = #+(or abcl xcl) (extensions:probe-directory x) - #+allegro (excl:probe-directory x) - #+(or cmucl sbcl scl) (directory-pathname-p x) - #+genera (getf (cdr x) :directory) - #+lispworks (lw:file-directory-p x) - :when d :collect #+(or abcl allegro xcl) (ensure-directory-pathname d) - #+genera (ensure-directory-pathname (first x)) - #+(or cmucl lispworks sbcl scl) x))) - (filter-logical-directory-results - directory dirs - (let ((prefix (or (normalize-pathname-directory-component (pathname-directory directory)) - '(:absolute)))) ; because allegro returns NIL for #p"FOO:" - #'(lambda (d) - (let ((dir (normalize-pathname-directory-component (pathname-directory d)))) - (and (consp dir) (consp (cdr dir)) - (make-pathname - :defaults directory :name nil :type nil :version nil - :directory (append prefix (make-pathname-component-logical (last dir))))))))))) - - (defun collect-sub*directories (directory collectp recursep collector) - "Given a DIRECTORY, when COLLECTP returns true when CALL-FUNCTION'ed with the directory, -call-function the COLLECTOR function designator on the directory, -and recurse each of its subdirectories on which the RECURSEP returns true when CALL-FUNCTION'ed with them. -This function will thus let you traverse a filesystem hierarchy, -superseding the functionality of CL-FAD:WALK-DIRECTORY. -The behavior in presence of symlinks is not portable. Use IOlib to handle such situations." - (when (call-function collectp directory) - (call-function collector directory) - (dolist (subdir (subdirectories directory)) - (when (call-function recursep subdir) - (collect-sub*directories subdir collectp recursep collector)))))) - -;;; Resolving symlinks somewhat -(with-upgradability () - (defun truenamize (pathname) - "Resolve as much of a pathname as possible" - (block nil - (when (typep pathname '(or null logical-pathname)) (return pathname)) - (let ((p pathname)) - (unless (absolute-pathname-p p) - (setf p (or (absolute-pathname-p (ensure-absolute-pathname p 'get-pathname-defaults nil)) - (return p)))) - (when (logical-pathname-p p) (return p)) - (let ((found (probe-file* p :truename t))) - (when found (return found))) - (let* ((directory (normalize-pathname-directory-component (pathname-directory p))) - (up-components (reverse (rest directory))) - (down-components ())) - (assert (eq :absolute (first directory))) - (loop :while up-components :do - (if-let (parent - (ignore-errors - (probe-file* (make-pathname :directory `(:absolute ,@(reverse up-components)) - :name nil :type nil :version nil :defaults p)))) - (if-let (simplified - (ignore-errors - (merge-pathnames* - (make-pathname :directory `(:relative ,@down-components) - :defaults p) - (ensure-directory-pathname parent)))) - (return simplified))) - (push (pop up-components) down-components) - :finally (return p)))))) - - (defun resolve-symlinks (path) - "Do a best effort at resolving symlinks in PATH, returning a partially or totally resolved PATH." - #-allegro (truenamize path) - #+allegro - (if (physical-pathname-p path) - (or (ignore-errors (excl:pathname-resolve-symbolic-links path)) path) - path)) - - (defvar *resolve-symlinks* t - "Determine whether or not ASDF resolves symlinks when defining systems. -Defaults to T.") - - (defun resolve-symlinks* (path) - "RESOLVE-SYMLINKS in PATH iff *RESOLVE-SYMLINKS* is T (the default)." - (if *resolve-symlinks* - (and path (resolve-symlinks path)) - path))) - - -;;; Check pathname constraints -(with-upgradability () - (defun ensure-pathname - (pathname &key - on-error - defaults type dot-dot namestring - empty-is-nil - want-pathname - want-logical want-physical ensure-physical - want-relative want-absolute ensure-absolute ensure-subpath - want-non-wild want-wild wilden - want-file want-directory ensure-directory - want-existing ensure-directories-exist - truename resolve-symlinks truenamize - &aux (p pathname)) ;; mutable working copy, preserve original - "Coerces its argument into a PATHNAME, -optionally doing some transformations and checking specified constraints. - -If the argument is NIL, then NIL is returned unless the WANT-PATHNAME constraint is specified. - -If the argument is a STRING, it is first converted to a pathname via -PARSE-UNIX-NAMESTRING, PARSE-NAMESTRING or PARSE-NATIVE-NAMESTRING respectively -depending on the NAMESTRING argument being :UNIX, :LISP or :NATIVE respectively, -or else by using CALL-FUNCTION on the NAMESTRING argument; -if :UNIX is specified (or NIL, the default, which specifies the same thing), -then PARSE-UNIX-NAMESTRING it is called with the keywords -DEFAULTS TYPE DOT-DOT ENSURE-DIRECTORY WANT-RELATIVE, and -the result is optionally merged into the DEFAULTS if ENSURE-ABSOLUTE is true. - -The pathname passed or resulting from parsing the string -is then subjected to all the checks and transformations below are run. - -Each non-nil constraint argument can be one of the symbols T, ERROR, CERROR or IGNORE. -The boolean T is an alias for ERROR. -ERROR means that an error will be raised if the constraint is not satisfied. -CERROR means that an continuable error will be raised if the constraint is not satisfied. -IGNORE means just return NIL instead of the pathname. - -The ON-ERROR argument, if not NIL, is a function designator (as per CALL-FUNCTION) -that will be called with the the following arguments: -a generic format string for ensure pathname, the pathname, -the keyword argument corresponding to the failed check or transformation, -a format string for the reason ENSURE-PATHNAME failed, -and a list with arguments to that format string. -If ON-ERROR is NIL, ERROR is used instead, which does the right thing. -You could also pass (CERROR \"CONTINUE DESPITE FAILED CHECK\"). - -The transformations and constraint checks are done in this order, -which is also the order in the lambda-list: - -EMPTY-IS-NIL returns NIL if the argument is an empty string. -WANT-PATHNAME checks that pathname (after parsing if needed) is not null. -Otherwise, if the pathname is NIL, ensure-pathname returns NIL. -WANT-LOGICAL checks that pathname is a LOGICAL-PATHNAME -WANT-PHYSICAL checks that pathname is not a LOGICAL-PATHNAME -ENSURE-PHYSICAL ensures that pathname is physical via TRANSLATE-LOGICAL-PATHNAME -WANT-RELATIVE checks that pathname has a relative directory component -WANT-ABSOLUTE checks that pathname does have an absolute directory component -ENSURE-ABSOLUTE merges with the DEFAULTS, then checks again -that the result absolute is an absolute pathname indeed. -ENSURE-SUBPATH checks that the pathname is a subpath of the DEFAULTS. -WANT-FILE checks that pathname has a non-nil FILE component -WANT-DIRECTORY checks that pathname has nil FILE and TYPE components -ENSURE-DIRECTORY uses ENSURE-DIRECTORY-PATHNAME to interpret -any file and type components as being actually a last directory component. -WANT-NON-WILD checks that pathname is not a wild pathname -WANT-WILD checks that pathname is a wild pathname -WILDEN merges the pathname with **/*.*.* if it is not wild -WANT-EXISTING checks that a file (or directory) exists with that pathname. -ENSURE-DIRECTORIES-EXIST creates any parent directory with ENSURE-DIRECTORIES-EXIST. -TRUENAME replaces the pathname by its truename, or errors if not possible. -RESOLVE-SYMLINKS replaces the pathname by a variant with symlinks resolved by RESOLVE-SYMLINKS. -TRUENAMIZE uses TRUENAMIZE to resolve as many symlinks as possible." - (block nil - (flet ((report-error (keyword description &rest arguments) - (call-function (or on-error 'error) - "Invalid pathname ~S: ~*~?" - pathname keyword description arguments))) - (macrolet ((err (constraint &rest arguments) - `(report-error ',(intern* constraint :keyword) ,@arguments)) - (check (constraint condition &rest arguments) - `(when ,constraint - (unless ,condition (err ,constraint ,@arguments)))) - (transform (transform condition expr) - `(when ,transform - (,@(if condition `(when ,condition) '(progn)) - (setf p ,expr))))) - (etypecase p - ((or null pathname)) - (string - (when (and (emptyp p) empty-is-nil) - (return-from ensure-pathname nil)) - (setf p (case namestring - ((:unix nil) - (parse-unix-namestring - p :defaults defaults :type type :dot-dot dot-dot - :ensure-directory ensure-directory :want-relative want-relative)) - ((:native) - (parse-native-namestring p)) - ((:lisp) - (parse-namestring p)) - (t - (call-function namestring p)))))) - (etypecase p - (pathname) - (null - (check want-pathname (pathnamep p) "Expected a pathname, not NIL") - (return nil))) - (check want-logical (logical-pathname-p p) "Expected a logical pathname") - (check want-physical (physical-pathname-p p) "Expected a physical pathname") - (transform ensure-physical () (physicalize-pathname p)) - (check ensure-physical (physical-pathname-p p) "Could not translate to a physical pathname") - (check want-relative (relative-pathname-p p) "Expected a relative pathname") - (check want-absolute (absolute-pathname-p p) "Expected an absolute pathname") - (transform ensure-absolute (not (absolute-pathname-p p)) - (ensure-absolute-pathname p defaults (list #'report-error :ensure-absolute "~@?"))) - (check ensure-absolute (absolute-pathname-p p) - "Could not make into an absolute pathname even after merging with ~S" defaults) - (check ensure-subpath (absolute-pathname-p defaults) - "cannot be checked to be a subpath of non-absolute pathname ~S" defaults) - (check ensure-subpath (subpathp p defaults) "is not a sub pathname of ~S" defaults) - (check want-file (file-pathname-p p) "Expected a file pathname") - (check want-directory (directory-pathname-p p) "Expected a directory pathname") - (transform ensure-directory (not (directory-pathname-p p)) (ensure-directory-pathname p)) - (check want-non-wild (not (wild-pathname-p p)) "Expected a non-wildcard pathname") - (check want-wild (wild-pathname-p p) "Expected a wildcard pathname") - (transform wilden (not (wild-pathname-p p)) (wilden p)) - (when want-existing - (let ((existing (probe-file* p :truename truename))) - (if existing - (when truename - (return existing)) - (err want-existing "Expected an existing pathname")))) - (when ensure-directories-exist (ensure-directories-exist p)) - (when truename - (let ((truename (truename* p))) - (if truename - (return truename) - (err truename "Can't get a truename for pathname")))) - (transform resolve-symlinks () (resolve-symlinks p)) - (transform truenamize () (truenamize p)) - p))))) - - -;;; Pathname defaults -(with-upgradability () - (defun get-pathname-defaults (&optional (defaults *default-pathname-defaults*)) - "Find the actual DEFAULTS to use for pathnames, including -resolving them with respect to GETCWD if the DEFAULTS were relative" - (or (absolute-pathname-p defaults) - (merge-pathnames* defaults (getcwd)))) - - (defun call-with-current-directory (dir thunk) - "call the THUNK in a context where the current directory was changed to DIR, if not NIL. -Note that this operation is usually NOT thread-safe." - (if dir - (let* ((dir (resolve-symlinks* (get-pathname-defaults (pathname-directory-pathname dir)))) - (cwd (getcwd)) - (*default-pathname-defaults* dir)) - (chdir dir) - (unwind-protect - (funcall thunk) - (chdir cwd))) - (funcall thunk))) - - (defmacro with-current-directory ((&optional dir) &body body) - "Call BODY while the POSIX current working directory is set to DIR" - `(call-with-current-directory ,dir #'(lambda () ,@body)))) - - -;;; Environment pathnames -(with-upgradability () - (defun inter-directory-separator () - "What character does the current OS conventionally uses to separate directories?" - (os-cond ((os-unix-p) #\:) (t #\;))) - - (defun split-native-pathnames-string (string &rest constraints &key &allow-other-keys) - "Given a string of pathnames specified in native OS syntax, separate them in a list, -check constraints and normalize each one as per ENSURE-PATHNAME, -where an empty string denotes NIL." - (loop :for namestring :in (split-string string :separator (string (inter-directory-separator))) - :collect (unless (emptyp namestring) (apply 'parse-native-namestring namestring constraints)))) - - (defun getenv-pathname (x &rest constraints &key ensure-directory want-directory on-error &allow-other-keys) - "Extract a pathname from a user-configured environment variable, as per native OS, -check constraints and normalize as per ENSURE-PATHNAME." - ;; For backward compatibility with ASDF 2, want-directory implies ensure-directory - (apply 'parse-native-namestring (getenvp x) - :ensure-directory (or ensure-directory want-directory) - :on-error (or on-error - `(error "In (~S ~S), invalid pathname ~*~S: ~*~?" getenv-pathname ,x)) - constraints)) - (defun getenv-pathnames (x &rest constraints &key on-error &allow-other-keys) - "Extract a list of pathname from a user-configured environment variable, as per native OS, -check constraints and normalize each one as per ENSURE-PATHNAME. - Any empty entries in the environment variable X will be returned as NILs." - (unless (getf constraints :empty-is-nil t) - (parameter-error "Cannot have EMPTY-IS-NIL false for ~S" 'getenv-pathnames)) - (apply 'split-native-pathnames-string (getenvp x) - :on-error (or on-error - `(error "In (~S ~S), invalid pathname ~*~S: ~*~?" getenv-pathnames ,x)) - :empty-is-nil t - constraints)) - (defun getenv-absolute-directory (x) - "Extract an absolute directory pathname from a user-configured environment variable, -as per native OS" - (getenv-pathname x :want-absolute t :ensure-directory t)) - (defun getenv-absolute-directories (x) - "Extract a list of absolute directories from a user-configured environment variable, -as per native OS. Any empty entries in the environment variable X will be returned as -NILs." - (getenv-pathnames x :want-absolute t :ensure-directory t)) - - (defun lisp-implementation-directory (&key truename) - "Where are the system files of the current installation of the CL implementation?" - (declare (ignorable truename)) - (let ((dir - #+abcl extensions:*lisp-home* - #+(or allegro clasp ecl mkcl) #p"SYS:" - #+clisp custom:*lib-directory* - #+clozure #p"ccl:" - #+cmucl (ignore-errors (pathname-parent-directory-pathname (truename #p"modules:"))) - #+gcl system::*system-directory* - #+lispworks lispworks:*lispworks-directory* - #+sbcl (if-let (it (find-symbol* :sbcl-homedir-pathname :sb-int nil)) - (funcall it) - (getenv-pathname "SBCL_HOME" :ensure-directory t)) - #+scl (ignore-errors (pathname-parent-directory-pathname (truename #p"file://modules/"))) - #+xcl ext:*xcl-home*)) - (if (and dir truename) - (truename* dir) - dir))) - - (defun lisp-implementation-pathname-p (pathname) - "Is the PATHNAME under the current installation of the CL implementation?" - ;; Other builtin systems are those under the implementation directory - (and (when pathname - (if-let (impdir (lisp-implementation-directory)) - (or (subpathp pathname impdir) - (when *resolve-symlinks* - (if-let (truename (truename* pathname)) - (if-let (trueimpdir (truename* impdir)) - (subpathp truename trueimpdir))))))) - t))) - - -;;; Simple filesystem operations -(with-upgradability () - (defun ensure-all-directories-exist (pathnames) - "Ensure that for every pathname in PATHNAMES, we ensure its directories exist" - (dolist (pathname pathnames) - (when pathname - (ensure-directories-exist (physicalize-pathname pathname))))) - - (defun delete-file-if-exists (x) - "Delete a file X if it already exists" - (when x (handler-case (delete-file x) (file-error () nil)))) - - (defun rename-file-overwriting-target (source target) - "Rename a file, overwriting any previous file with the TARGET name, -in an atomic way if the implementation allows." - (let ((source (ensure-pathname source :namestring :lisp :ensure-physical t :want-file t)) - (target (ensure-pathname target :namestring :lisp :ensure-physical t :want-file t))) - #+clisp ;; in recent enough versions of CLISP, :if-exists :overwrite would make it atomic - (progn (funcall 'require "syscalls") - (symbol-call :posix :copy-file source target :method :rename)) - #+(and sbcl os-windows) (delete-file-if-exists target) ;; not atomic - #-clisp - (rename-file source target - #+(or clasp clozure ecl) :if-exists - #+clozure :rename-and-delete #+(or clasp ecl) t))) - - (defun delete-empty-directory (directory-pathname) - "Delete an empty directory" - #+(or abcl digitool gcl) (delete-file directory-pathname) - #+allegro (excl:delete-directory directory-pathname) - #+clisp (ext:delete-directory directory-pathname) - #+clozure (ccl::delete-empty-directory directory-pathname) - #+(or cmucl scl) (multiple-value-bind (ok errno) - (unix:unix-rmdir (native-namestring directory-pathname)) - (unless ok - #+cmucl (error "Error number ~A when trying to delete directory ~A" - errno directory-pathname) - #+scl (error "~@" - directory-pathname (unix:get-unix-error-msg errno)))) - #+cormanlisp (win32:delete-directory directory-pathname) - #+(or clasp ecl) (si:rmdir directory-pathname) - #+genera (fs:delete-directory directory-pathname) - #+lispworks (lw:delete-directory directory-pathname) - #+mkcl (mkcl:rmdir directory-pathname) - #+sbcl #.(if-let (dd (find-symbol* :delete-directory :sb-ext nil)) - `(,dd directory-pathname) ;; requires SBCL 1.0.44 or later - `(progn (require :sb-posix) (symbol-call :sb-posix :rmdir directory-pathname))) - #+xcl (symbol-call :uiop :run-program `("rmdir" ,(native-namestring directory-pathname))) - #-(or abcl allegro clasp clisp clozure cmucl cormanlisp digitool ecl gcl genera lispworks mkcl sbcl scl xcl) - (not-implemented-error 'delete-empty-directory "(on your platform)")) ; genera - - (defun delete-directory-tree (directory-pathname &key (validate nil validatep) (if-does-not-exist :error)) - "Delete a directory including all its recursive contents, aka rm -rf. - -To reduce the risk of infortunate mistakes, DIRECTORY-PATHNAME must be -a physical non-wildcard directory pathname (not namestring). - -If the directory does not exist, the IF-DOES-NOT-EXIST argument specifies what happens: -if it is :ERROR (the default), an error is signaled, whereas if it is :IGNORE, nothing is done. - -Furthermore, before any deletion is attempted, the DIRECTORY-PATHNAME must pass -the validation function designated (as per ENSURE-FUNCTION) by the VALIDATE keyword argument -which in practice is thus compulsory, and validates by returning a non-NIL result. -If you're suicidal or extremely confident, just use :VALIDATE T." - (check-type if-does-not-exist (member :error :ignore)) - (cond - ((not (and (pathnamep directory-pathname) (directory-pathname-p directory-pathname) - (physical-pathname-p directory-pathname) (not (wild-pathname-p directory-pathname)))) - (parameter-error "~S was asked to delete ~S but it is not a physical non-wildcard directory pathname" - 'delete-directory-tree directory-pathname)) - ((not validatep) - (parameter-error "~S was asked to delete ~S but was not provided a validation predicate" - 'delete-directory-tree directory-pathname)) - ((not (call-function validate directory-pathname)) - (parameter-error "~S was asked to delete ~S but it is not valid ~@[according to ~S~]" - 'delete-directory-tree directory-pathname validate)) - ((not (directory-exists-p directory-pathname)) - (ecase if-does-not-exist - (:error - (error "~S was asked to delete ~S but the directory does not exist" - 'delete-directory-tree directory-pathname)) - (:ignore nil))) - #-(or allegro cmucl clozure genera sbcl scl) - ((os-unix-p) ;; On Unix, don't recursively walk the directory and delete everything in Lisp, - ;; except on implementations where we can prevent DIRECTORY from following symlinks; - ;; instead spawn a standard external program to do the dirty work. - (symbol-call :uiop :run-program `("rm" "-rf" ,(native-namestring directory-pathname)))) - (t - ;; On supported implementation, call supported system functions - #+allegro (symbol-call :excl.osi :delete-directory-and-files - directory-pathname :if-does-not-exist if-does-not-exist) - #+clozure (ccl:delete-directory directory-pathname) - #+genera (fs:delete-directory directory-pathname :confirm nil) - #+sbcl #.(if-let (dd (find-symbol* :delete-directory :sb-ext nil)) - `(,dd directory-pathname :recursive t) ;; requires SBCL 1.0.44 or later - '(error "~S requires SBCL 1.0.44 or later" 'delete-directory-tree)) - ;; Outside Unix or on CMUCL and SCL that can avoid following symlinks, - ;; do things the hard way. - #-(or allegro clozure genera sbcl) - (let ((sub*directories - (while-collecting (c) - (collect-sub*directories directory-pathname t t #'c)))) - (dolist (d (nreverse sub*directories)) - (map () 'delete-file (directory-files d)) - (delete-empty-directory d))))))) -;;;; --------------------------------------------------------------------------- -;;;; Utilities related to streams - -(uiop/package:define-package :uiop/stream - (:use :uiop/common-lisp :uiop/package :uiop/utility :uiop/os :uiop/pathname :uiop/filesystem) - (:export - #:*default-stream-element-type* - #:*stdin* #:setup-stdin #:*stdout* #:setup-stdout #:*stderr* #:setup-stderr - #:detect-encoding #:*encoding-detection-hook* #:always-default-encoding - #:encoding-external-format #:*encoding-external-format-hook* #:default-encoding-external-format - #:*default-encoding* #:*utf-8-external-format* - #:with-safe-io-syntax #:call-with-safe-io-syntax #:safe-read-from-string - #:with-output #:output-string #:with-input #:input-string - #:with-input-file #:call-with-input-file #:with-output-file #:call-with-output-file - #:null-device-pathname #:call-with-null-input #:with-null-input - #:call-with-null-output #:with-null-output - #:finish-outputs #:format! #:safe-format! - #:copy-stream-to-stream #:concatenate-files #:copy-file - #:slurp-stream-string #:slurp-stream-lines #:slurp-stream-line - #:slurp-stream-forms #:slurp-stream-form - #:read-file-string #:read-file-line #:read-file-lines #:safe-read-file-line - #:read-file-forms #:read-file-form #:safe-read-file-form - #:eval-input #:eval-thunk #:standard-eval-thunk - #:println #:writeln - #:file-stream-p #:file-or-synonym-stream-p - ;; Temporary files - #:*temporary-directory* #:temporary-directory #:default-temporary-directory - #:setup-temporary-directory - #:call-with-temporary-file #:with-temporary-file - #:add-pathname-suffix #:tmpize-pathname - #:call-with-staging-pathname #:with-staging-pathname)) -(in-package :uiop/stream) - -(with-upgradability () - (defvar *default-stream-element-type* - (or #+(or abcl cmucl cormanlisp scl xcl) 'character - #+lispworks 'lw:simple-char - :default) - "default element-type for open (depends on the current CL implementation)") - - (defvar *stdin* *standard-input* - "the original standard input stream at startup") - - (defun setup-stdin () - (setf *stdin* - #.(or #+clozure 'ccl::*stdin* - #+(or cmucl scl) 'system:*stdin* - #+(or clasp ecl) 'ext::+process-standard-input+ - #+sbcl 'sb-sys:*stdin* - '*standard-input*))) - - (defvar *stdout* *standard-output* - "the original standard output stream at startup") - - (defun setup-stdout () - (setf *stdout* - #.(or #+clozure 'ccl::*stdout* - #+(or cmucl scl) 'system:*stdout* - #+(or clasp ecl) 'ext::+process-standard-output+ - #+sbcl 'sb-sys:*stdout* - '*standard-output*))) - - (defvar *stderr* *error-output* - "the original error output stream at startup") - - (defun setup-stderr () - (setf *stderr* - #.(or #+allegro 'excl::*stderr* - #+clozure 'ccl::*stderr* - #+(or cmucl scl) 'system:*stderr* - #+(or clasp ecl) 'ext::+process-error-output+ - #+sbcl 'sb-sys:*stderr* - '*error-output*))) - - ;; Run them now. In image.lisp, we'll register them to be run at image restart. - (setup-stdin) (setup-stdout) (setup-stderr)) - - -;;; Encodings (mostly hooks only; full support requires asdf-encodings) -(with-upgradability () - (defparameter *default-encoding* - ;; preserve explicit user changes to something other than the legacy default :default - (or (if-let (previous (and (boundp '*default-encoding*) (symbol-value '*default-encoding*))) - (unless (eq previous :default) previous)) - :utf-8) - "Default encoding for source files. -The default value :utf-8 is the portable thing. -The legacy behavior was :default. -If you (asdf:load-system :asdf-encodings) then -you will have autodetection via *encoding-detection-hook* below, -reading emacs-style -*- coding: utf-8 -*- specifications, -and falling back to utf-8 or latin1 if nothing is specified.") - - (defparameter *utf-8-external-format* - (if (featurep :asdf-unicode) - (or #+clisp charset:utf-8 :utf-8) - :default) - "Default :external-format argument to pass to CL:OPEN and also -CL:LOAD or CL:COMPILE-FILE to best process a UTF-8 encoded file. -On modern implementations, this will decode UTF-8 code points as CL characters. -On legacy implementations, it may fall back on some 8-bit encoding, -with non-ASCII code points being read as several CL characters; -hopefully, if done consistently, that won't affect program behavior too much.") - - (defun always-default-encoding (pathname) - "Trivial function to use as *encoding-detection-hook*, -always 'detects' the *default-encoding*" - (declare (ignore pathname)) - *default-encoding*) - - (defvar *encoding-detection-hook* #'always-default-encoding - "Hook for an extension to define a function to automatically detect a file's encoding") - - (defun detect-encoding (pathname) - "Detects the encoding of a specified file, going through user-configurable hooks" - (if (and pathname (not (directory-pathname-p pathname)) (probe-file* pathname)) - (funcall *encoding-detection-hook* pathname) - *default-encoding*)) - - (defun default-encoding-external-format (encoding) - "Default, ignorant, function to transform a character ENCODING as a -portable keyword to an implementation-dependent EXTERNAL-FORMAT specification. -Load system ASDF-ENCODINGS to hook in a better one." - (case encoding - (:default :default) ;; for backward-compatibility only. Explicit usage discouraged. - (:utf-8 *utf-8-external-format*) - (otherwise - (cerror "Continue using :external-format :default" (compatfmt "~@") encoding) - :default))) - - (defvar *encoding-external-format-hook* - #'default-encoding-external-format - "Hook for an extension (e.g. ASDF-ENCODINGS) to define a better mapping -from non-default encodings to and implementation-defined external-format's") - - (defun encoding-external-format (encoding) - "Transform a portable ENCODING keyword to an implementation-dependent EXTERNAL-FORMAT, -going through all the proper hooks." - (funcall *encoding-external-format-hook* (or encoding *default-encoding*)))) - - -;;; Safe syntax -(with-upgradability () - (defvar *standard-readtable* (with-standard-io-syntax *readtable*) - "The standard readtable, implementing the syntax specified by the CLHS. -It must never be modified, though only good implementations will even enforce that.") - - (defmacro with-safe-io-syntax ((&key (package :cl)) &body body) - "Establish safe CL reader options around the evaluation of BODY" - `(call-with-safe-io-syntax #'(lambda () (let ((*package* (find-package ,package))) ,@body)))) - - (defun call-with-safe-io-syntax (thunk &key (package :cl)) - (with-standard-io-syntax - (let ((*package* (find-package package)) - (*read-default-float-format* 'double-float) - (*print-readably* nil) - (*read-eval* nil)) - (funcall thunk)))) - - (defun safe-read-from-string (string &key (package :cl) (eof-error-p t) eof-value (start 0) end preserve-whitespace) - "Read from STRING using a safe syntax, as per WITH-SAFE-IO-SYNTAX" - (with-safe-io-syntax (:package package) - (read-from-string string eof-error-p eof-value :start start :end end :preserve-whitespace preserve-whitespace)))) - -;;; Output helpers -(with-upgradability () - (defun call-with-output-file (pathname thunk - &key - (element-type *default-stream-element-type*) - (external-format *utf-8-external-format*) - (if-exists :error) - (if-does-not-exist :create)) - "Open FILE for input with given recognizes options, call THUNK with the resulting stream. -Other keys are accepted but discarded." - (with-open-file (s pathname :direction :output - :element-type element-type - :external-format external-format - :if-exists if-exists - :if-does-not-exist if-does-not-exist) - (funcall thunk s))) - - (defmacro with-output-file ((var pathname &rest keys - &key element-type external-format if-exists if-does-not-exist) - &body body) - (declare (ignore element-type external-format if-exists if-does-not-exist)) - `(call-with-output-file ,pathname #'(lambda (,var) ,@body) ,@keys)) - - (defun call-with-output (output function &key keys) - "Calls FUNCTION with an actual stream argument, -behaving like FORMAT with respect to how stream designators are interpreted: -If OUTPUT is a STREAM, use it as the stream. -If OUTPUT is NIL, use a STRING-OUTPUT-STREAM as the stream, and return the resulting string. -If OUTPUT is T, use *STANDARD-OUTPUT* as the stream. -If OUTPUT is a STRING with a fill-pointer, use it as a string-output-stream. -If OUTPUT is a PATHNAME, open the file and write to it, passing KEYS to WITH-OUTPUT-FILE --- this latter as an extension since ASDF 3.1. -Otherwise, signal an error." - (etypecase output - (null - (with-output-to-string (stream) (funcall function stream))) - ((eql t) - (funcall function *standard-output*)) - (stream - (funcall function output)) - (string - (assert (fill-pointer output)) - (with-output-to-string (stream output) (funcall function stream))) - (pathname - (apply 'call-with-output-file output function keys)))) - - (defmacro with-output ((output-var &optional (value output-var)) &body body) - "Bind OUTPUT-VAR to an output stream, coercing VALUE (default: previous binding of OUTPUT-VAR) -as per FORMAT, and evaluate BODY within the scope of this binding." - `(call-with-output ,value #'(lambda (,output-var) ,@body))) - - (defun output-string (string &optional output) - "If the desired OUTPUT is not NIL, print the string to the output; otherwise return the string" - (if output - (with-output (output) (princ string output)) - string))) - - -;;; Input helpers -(with-upgradability () - (defun call-with-input-file (pathname thunk - &key - (element-type *default-stream-element-type*) - (external-format *utf-8-external-format*) - (if-does-not-exist :error)) - "Open FILE for input with given recognizes options, call THUNK with the resulting stream. -Other keys are accepted but discarded." - (with-open-file (s pathname :direction :input - :element-type element-type - :external-format external-format - :if-does-not-exist if-does-not-exist) - (funcall thunk s))) - - (defmacro with-input-file ((var pathname &rest keys - &key element-type external-format if-does-not-exist) - &body body) - (declare (ignore element-type external-format if-does-not-exist)) - `(call-with-input-file ,pathname #'(lambda (,var) ,@body) ,@keys)) - - (defun call-with-input (input function &key keys) - "Calls FUNCTION with an actual stream argument, interpreting -stream designators like READ, but also coercing strings to STRING-INPUT-STREAM, -and PATHNAME to FILE-STREAM. -If INPUT is a STREAM, use it as the stream. -If INPUT is NIL, use a *STANDARD-INPUT* as the stream. -If INPUT is T, use *TERMINAL-IO* as the stream. -If INPUT is a STRING, use it as a string-input-stream. -If INPUT is a PATHNAME, open it, passing KEYS to WITH-INPUT-FILE --- the latter is an extension since ASDF 3.1. -Otherwise, signal an error." - (etypecase input - (null (funcall function *standard-input*)) - ((eql t) (funcall function *terminal-io*)) - (stream (funcall function input)) - (string (with-input-from-string (stream input) (funcall function stream))) - (pathname (apply 'call-with-input-file input function keys)))) - - (defmacro with-input ((input-var &optional (value input-var)) &body body) - "Bind INPUT-VAR to an input stream, coercing VALUE (default: previous binding of INPUT-VAR) -as per CALL-WITH-INPUT, and evaluate BODY within the scope of this binding." - `(call-with-input ,value #'(lambda (,input-var) ,@body))) - - (defun input-string (&optional input) - "If the desired INPUT is a string, return that string; otherwise slurp the INPUT into a string -and return that" - (if (stringp input) - input - (with-input (input) (funcall 'slurp-stream-string input))))) - -;;; Null device -(with-upgradability () - (defun null-device-pathname () - "Pathname to a bit bucket device that discards any information written to it -and always returns EOF when read from" - (os-cond - ((os-unix-p) #p"/dev/null") - ((os-windows-p) #p"NUL") ;; Q: how many Lisps accept the #p"NUL:" syntax? - (t (error "No /dev/null on your OS")))) - (defun call-with-null-input (fun &rest keys &key element-type external-format if-does-not-exist) - "Call FUN with an input stream from the null device; pass keyword arguments to OPEN." - (declare (ignore element-type external-format if-does-not-exist)) - (apply 'call-with-input-file (null-device-pathname) fun keys)) - (defmacro with-null-input ((var &rest keys - &key element-type external-format if-does-not-exist) - &body body) - (declare (ignore element-type external-format if-does-not-exist)) - "Evaluate BODY in a context when VAR is bound to an input stream accessing the null device. -Pass keyword arguments to OPEN." - `(call-with-null-input #'(lambda (,var) ,@body) ,@keys)) - (defun call-with-null-output (fun - &key (element-type *default-stream-element-type*) - (external-format *utf-8-external-format*) - (if-exists :overwrite) - (if-does-not-exist :error)) - "Call FUN with an output stream to the null device; pass keyword arguments to OPEN." - (call-with-output-file - (null-device-pathname) fun - :element-type element-type :external-format external-format - :if-exists if-exists :if-does-not-exist if-does-not-exist)) - (defmacro with-null-output ((var &rest keys - &key element-type external-format if-does-not-exist if-exists) - &body body) - "Evaluate BODY in a context when VAR is bound to an output stream accessing the null device. -Pass keyword arguments to OPEN." - (declare (ignore element-type external-format if-exists if-does-not-exist)) - `(call-with-null-output #'(lambda (,var) ,@body) ,@keys))) - -;;; Ensure output buffers are flushed -(with-upgradability () - (defun finish-outputs (&rest streams) - "Finish output on the main output streams as well as any specified one. -Useful for portably flushing I/O before user input or program exit." - ;; CCL notably buffers its stream output by default. - (dolist (s (append streams - (list *stdout* *stderr* *error-output* *standard-output* *trace-output* - *debug-io* *terminal-io* *query-io*))) - (ignore-errors (finish-output s))) - (values)) - - (defun format! (stream format &rest args) - "Just like format, but call finish-outputs before and after the output." - (finish-outputs stream) - (apply 'format stream format args) - (finish-outputs stream)) - - (defun safe-format! (stream format &rest args) - "Variant of FORMAT that is safe against both -dangerous syntax configuration and errors while printing." - (with-safe-io-syntax () - (ignore-errors (apply 'format! stream format args)) - (finish-outputs stream)))) ; just in case format failed - - -;;; Simple Whole-Stream processing -(with-upgradability () - (defun copy-stream-to-stream (input output &key element-type buffer-size linewise prefix) - "Copy the contents of the INPUT stream into the OUTPUT stream. -If LINEWISE is true, then read and copy the stream line by line, with an optional PREFIX. -Otherwise, using WRITE-SEQUENCE using a buffer of size BUFFER-SIZE." - (with-open-stream (input input) - (if linewise - (loop* :for (line eof) = (multiple-value-list (read-line input nil nil)) - :while line :do - (when prefix (princ prefix output)) - (princ line output) - (unless eof (terpri output)) - (finish-output output) - (when eof (return))) - (loop - :with buffer-size = (or buffer-size 8192) - :with buffer = (make-array (list buffer-size) :element-type (or element-type 'character)) - :for end = (read-sequence buffer input) - :until (zerop end) - :do (write-sequence buffer output :end end) - (when (< end buffer-size) (return)))))) - - (defun concatenate-files (inputs output) - "create a new OUTPUT file the contents of which a the concatenate of the INPUTS files." - (with-open-file (o output :element-type '(unsigned-byte 8) - :direction :output :if-exists :rename-and-delete) - (dolist (input inputs) - (with-open-file (i input :element-type '(unsigned-byte 8) - :direction :input :if-does-not-exist :error) - (copy-stream-to-stream i o :element-type '(unsigned-byte 8)))))) - - (defun copy-file (input output) - "Copy contents of the INPUT file to the OUTPUT file" - ;; Not available on LW personal edition or LW 6.0 on Mac: (lispworks:copy-file i f) - #+allegro - (excl.osi:copy-file input output) - #+ecl - (ext:copy-file input output) - #-(or allegro ecl) - (concatenate-files (list input) output)) - - (defun slurp-stream-string (input &key (element-type 'character) stripped) - "Read the contents of the INPUT stream as a string" - (let ((string - (with-open-stream (input input) - (with-output-to-string (output) - (copy-stream-to-stream input output :element-type element-type))))) - (if stripped (stripln string) string))) - - (defun slurp-stream-lines (input &key count) - "Read the contents of the INPUT stream as a list of lines, return those lines. - -Note: relies on the Lisp's READ-LINE, but additionally removes any remaining CR -from the line-ending if the file or stream had CR+LF but Lisp only removed LF. - -Read no more than COUNT lines." - (check-type count (or null integer)) - (with-open-stream (input input) - (loop :for n :from 0 - :for l = (and (or (not count) (< n count)) - (read-line input nil nil)) - ;; stripln: to remove CR when the OS sends CRLF and Lisp only remove LF - :while l :collect (stripln l)))) - - (defun slurp-stream-line (input &key (at 0)) - "Read the contents of the INPUT stream as a list of lines, -then return the ACCESS-AT of that list of lines using the AT specifier. -PATH defaults to 0, i.e. return the first line. -PATH is typically an integer, or a list of an integer and a function. -If PATH is NIL, it will return all the lines in the file. - -The stream will not be read beyond the Nth lines, -where N is the index specified by path -if path is either an integer or a list that starts with an integer." - (access-at (slurp-stream-lines input :count (access-at-count at)) at)) - - (defun slurp-stream-forms (input &key count) - "Read the contents of the INPUT stream as a list of forms, -and return those forms. - -If COUNT is null, read to the end of the stream; -if COUNT is an integer, stop after COUNT forms were read. - -BEWARE: be sure to use WITH-SAFE-IO-SYNTAX, or some variant thereof" - (check-type count (or null integer)) - (loop :with eof = '#:eof - :for n :from 0 - :for form = (if (and count (>= n count)) - eof - (read-preserving-whitespace input nil eof)) - :until (eq form eof) :collect form)) - - (defun slurp-stream-form (input &key (at 0)) - "Read the contents of the INPUT stream as a list of forms, -then return the ACCESS-AT of these forms following the AT. -AT defaults to 0, i.e. return the first form. -AT is typically a list of integers. -If AT is NIL, it will return all the forms in the file. - -The stream will not be read beyond the Nth form, -where N is the index specified by path, -if path is either an integer or a list that starts with an integer. - -BEWARE: be sure to use WITH-SAFE-IO-SYNTAX, or some variant thereof" - (access-at (slurp-stream-forms input :count (access-at-count at)) at)) - - (defun read-file-string (file &rest keys) - "Open FILE with option KEYS, read its contents as a string" - (apply 'call-with-input-file file 'slurp-stream-string keys)) - - (defun read-file-lines (file &rest keys) - "Open FILE with option KEYS, read its contents as a list of lines -BEWARE: be sure to use WITH-SAFE-IO-SYNTAX, or some variant thereof" - (apply 'call-with-input-file file 'slurp-stream-lines keys)) - - (defun read-file-line (file &rest keys &key (at 0) &allow-other-keys) - "Open input FILE with option KEYS (except AT), -and read its contents as per SLURP-STREAM-LINE with given AT specifier. -BEWARE: be sure to use WITH-SAFE-IO-SYNTAX, or some variant thereof" - (apply 'call-with-input-file file - #'(lambda (input) (slurp-stream-line input :at at)) - (remove-plist-key :at keys))) - - (defun read-file-forms (file &rest keys &key count &allow-other-keys) - "Open input FILE with option KEYS (except COUNT), -and read its contents as per SLURP-STREAM-FORMS with given COUNT. -BEWARE: be sure to use WITH-SAFE-IO-SYNTAX, or some variant thereof" - (apply 'call-with-input-file file - #'(lambda (input) (slurp-stream-forms input :count count)) - (remove-plist-key :count keys))) - - (defun read-file-form (file &rest keys &key (at 0) &allow-other-keys) - "Open input FILE with option KEYS (except AT), -and read its contents as per SLURP-STREAM-FORM with given AT specifier. -BEWARE: be sure to use WITH-SAFE-IO-SYNTAX, or some variant thereof" - (apply 'call-with-input-file file - #'(lambda (input) (slurp-stream-form input :at at)) - (remove-plist-key :at keys))) - - (defun safe-read-file-line (pathname &rest keys &key (package :cl) &allow-other-keys) - "Reads the specified line from the top of a file using a safe standardized syntax. -Extracts the line using READ-FILE-LINE, -within an WITH-SAFE-IO-SYNTAX using the specified PACKAGE." - (with-safe-io-syntax (:package package) - (apply 'read-file-line pathname (remove-plist-key :package keys)))) - - (defun safe-read-file-form (pathname &rest keys &key (package :cl) &allow-other-keys) - "Reads the specified form from the top of a file using a safe standardized syntax. -Extracts the form using READ-FILE-FORM, -within an WITH-SAFE-IO-SYNTAX using the specified PACKAGE." - (with-safe-io-syntax (:package package) - (apply 'read-file-form pathname (remove-plist-key :package keys)))) - - (defun eval-input (input) - "Portably read and evaluate forms from INPUT, return the last values." - (with-input (input) - (loop :with results :with eof ='#:eof - :for form = (read input nil eof) - :until (eq form eof) - :do (setf results (multiple-value-list (eval form))) - :finally (return (values-list results))))) - - (defun eval-thunk (thunk) - "Evaluate a THUNK of code: -If a function, FUNCALL it without arguments. -If a constant literal and not a sequence, return it. -If a cons or a symbol, EVAL it. -If a string, repeatedly read and evaluate from it, returning the last values." - (etypecase thunk - ((or boolean keyword number character pathname) thunk) - ((or cons symbol) (eval thunk)) - (function (funcall thunk)) - (string (eval-input thunk)))) - - (defun standard-eval-thunk (thunk &key (package :cl)) - "Like EVAL-THUNK, but in a more standardized evaluation context." - ;; Note: it's "standard-" not "safe-", because evaluation is never safe. - (when thunk - (with-safe-io-syntax (:package package) - (let ((*read-eval* t)) - (eval-thunk thunk)))))) - -(with-upgradability () - (defun println (x &optional (stream *standard-output*)) - "Variant of PRINC that also calls TERPRI afterwards" - (princ x stream) (terpri stream) (finish-output stream) (values)) - - (defun writeln (x &rest keys &key (stream *standard-output*) &allow-other-keys) - "Variant of WRITE that also calls TERPRI afterwards" - (apply 'write x keys) (terpri stream) (finish-output stream) (values))) - - -;;; Using temporary files -(with-upgradability () - (defun default-temporary-directory () - "Return a default directory to use for temporary files" - (os-cond - ((os-unix-p) - (or (getenv-pathname "TMPDIR" :ensure-directory t) - (parse-native-namestring "/tmp/"))) - ((os-windows-p) - (getenv-pathname "TEMP" :ensure-directory t)) - (t (subpathname (user-homedir-pathname) "tmp/")))) - - (defvar *temporary-directory* nil "User-configurable location for temporary files") - - (defun temporary-directory () - "Return a directory to use for temporary files" - (or *temporary-directory* (default-temporary-directory))) - - (defun setup-temporary-directory () - "Configure a default temporary directory to use." - (setf *temporary-directory* (default-temporary-directory)) - #+gcl (setf system::*tmp-dir* *temporary-directory*)) - - (defun call-with-temporary-file - (thunk &key - (want-stream-p t) (want-pathname-p t) (direction :io) keep after - directory (type "tmp" typep) prefix (suffix (when typep "-tmp")) - (element-type *default-stream-element-type*) - (external-format *utf-8-external-format*)) - "Call a THUNK with stream and/or pathname arguments identifying a temporary file. - -The temporary file's pathname will be based on concatenating -PREFIX (or \"tmp\" if it's NIL), a random alphanumeric string, -and optional SUFFIX (defaults to \"-tmp\" if a type was provided) -and TYPE (defaults to \"tmp\", using a dot as separator if not NIL), -within DIRECTORY (defaulting to the TEMPORARY-DIRECTORY) if the PREFIX isn't absolute. - -The file will be open with specified DIRECTION (defaults to :IO), -ELEMENT-TYPE (defaults to *DEFAULT-STREAM-ELEMENT-TYPE*) and -EXTERNAL-FORMAT (defaults to *UTF-8-EXTERNAL-FORMAT*). -If WANT-STREAM-P is true (the defaults to T), then THUNK will then be CALL-FUNCTION'ed -with the stream and the pathname (if WANT-PATHNAME-P is true, defaults to T), -and stream will be closed after the THUNK exits (either normally or abnormally). -If WANT-STREAM-P is false, then WANT-PATHAME-P must be true, and then -THUNK is only CALL-FUNCTION'ed after the stream is closed, with the pathname as argument. -Upon exit of THUNK, the AFTER thunk if defined is CALL-FUNCTION'ed with the pathname as argument. -If AFTER is defined, its results are returned, otherwise, the results of THUNK are returned. -Finally, the file will be deleted, unless the KEEP argument when CALL-FUNCTION'ed returns true." - #+xcl (declare (ignorable typep)) - (check-type direction (member :output :io)) - (assert (or want-stream-p want-pathname-p)) - (loop - :with prefix-pn = (ensure-absolute-pathname - (or prefix "tmp") - (or (ensure-pathname - directory - :namestring :native - :ensure-directory t - :ensure-physical t) - #'temporary-directory)) - :with prefix-nns = (native-namestring prefix-pn) - :with results = (progn (ensure-directories-exist prefix-pn) - ()) - :for counter :from (random (expt 36 #-gcl 8 #+gcl 5)) - :for pathname = (parse-native-namestring - (format nil "~A~36R~@[~A~]~@[.~A~]" - prefix-nns counter suffix (unless (eq type :unspecific) type))) - :for okp = nil :do - ;; TODO: on Unix, do something about umask - ;; TODO: on Unix, audit the code so we make sure it uses O_CREAT|O_EXCL - ;; TODO: on Unix, use CFFI and mkstemp -- - ;; except UIOP is precisely meant to not depend on CFFI or on anything! Grrrr. - ;; Can we at least design some hook? - (unwind-protect - (progn - (ensure-directories-exist pathname) - (with-open-file (stream pathname - :direction direction - :element-type element-type - :external-format external-format - :if-exists nil :if-does-not-exist :create) - (when stream - (setf okp pathname) - (when want-stream-p - ;; Note: can't return directly from within with-open-file - ;; or the non-local return causes the file creation to be undone. - (setf results (multiple-value-list - (if want-pathname-p - (funcall thunk stream pathname) - (funcall thunk stream))))))) - (cond - ((not okp) nil) - (after (return (call-function after okp))) - ((and want-pathname-p (not want-stream-p)) (return (call-function thunk okp))) - (t (return (values-list results))))) - (when (and okp (not (call-function keep))) - (ignore-errors (delete-file-if-exists okp)))))) - - (defmacro with-temporary-file ((&key (stream (gensym "STREAM") streamp) - (pathname (gensym "PATHNAME") pathnamep) - directory prefix suffix type - keep direction element-type external-format) - &body body) - "Evaluate BODY where the symbols specified by keyword arguments -STREAM and PATHNAME (if respectively specified) are bound corresponding -to a newly created temporary file ready for I/O, as per CALL-WITH-TEMPORARY-FILE. -At least one of STREAM or PATHNAME must be specified. -If the STREAM is not specified, it will be closed before the BODY is evaluated. -If STREAM is specified, then the :CLOSE-STREAM label if it appears in the BODY, -separates forms run before and after the stream is closed. -The values of the last form of the BODY (not counting the separating :CLOSE-STREAM) are returned. -Upon success, the KEEP form is evaluated and the file is is deleted unless it evaluates to TRUE." - (check-type stream symbol) - (check-type pathname symbol) - (assert (or streamp pathnamep)) - (let* ((afterp (position :close-stream body)) - (before (if afterp (subseq body 0 afterp) body)) - (after (when afterp (subseq body (1+ afterp)))) - (beforef (gensym "BEFORE")) - (afterf (gensym "AFTER"))) - `(flet (,@(when before - `((,beforef (,@(when streamp `(,stream)) ,@(when pathnamep `(,pathname))) - ,@(when after `((declare (ignorable ,pathname)))) - ,@before))) - ,@(when after - (assert pathnamep) - `((,afterf (,pathname) ,@after)))) - #-gcl (declare (dynamic-extent ,@(when before `(#',beforef)) ,@(when after `(#',afterf)))) - (call-with-temporary-file - ,(when before `#',beforef) - :want-stream-p ,streamp - :want-pathname-p ,pathnamep - ,@(when direction `(:direction ,direction)) - ,@(when directory `(:directory ,directory)) - ,@(when prefix `(:prefix ,prefix)) - ,@(when suffix `(:suffix ,suffix)) - ,@(when type `(:type ,type)) - ,@(when keep `(:keep ,keep)) - ,@(when after `(:after #',afterf)) - ,@(when element-type `(:element-type ,element-type)) - ,@(when external-format `(:external-format ,external-format)))))) - - (defun get-temporary-file (&key directory prefix suffix type) - (with-temporary-file (:pathname pn :keep t - :directory directory :prefix prefix :suffix suffix :type type) - pn)) - - ;; Temporary pathnames in simple cases where no contention is assumed - (defun add-pathname-suffix (pathname suffix &rest keys) - "Add a SUFFIX to the name of a PATHNAME, return a new pathname. -Further KEYS can be passed to MAKE-PATHNAME." - (apply 'make-pathname :name (strcat (pathname-name pathname) suffix) - :defaults pathname keys)) - - (defun tmpize-pathname (x) - "Return a new pathname modified from X by adding a trivial random suffix. -A new empty file with said temporary pathname is created, to ensure there is no -clash with any concurrent process attempting the same thing." - (let* ((px (ensure-pathname x :ensure-physical t)) - (prefix (if-let (n (pathname-name px)) (strcat n "-tmp") "tmp")) - (directory (pathname-directory-pathname px))) - (get-temporary-file :directory directory :prefix prefix :type (pathname-type px)))) - - (defun call-with-staging-pathname (pathname fun) - "Calls FUN with a staging pathname, and atomically -renames the staging pathname to the PATHNAME in the end. -NB: this protects only against failure of the program, not against concurrent attempts. -For the latter case, we ought pick a random suffix and atomically open it." - (let* ((pathname (pathname pathname)) - (staging (tmpize-pathname pathname))) - (unwind-protect - (multiple-value-prog1 - (funcall fun staging) - (rename-file-overwriting-target staging pathname)) - (delete-file-if-exists staging)))) - - (defmacro with-staging-pathname ((pathname-var &optional (pathname-value pathname-var)) &body body) - "Trivial syntax wrapper for CALL-WITH-STAGING-PATHNAME" - `(call-with-staging-pathname ,pathname-value #'(lambda (,pathname-var) ,@body)))) - -(with-upgradability () - (defun file-stream-p (stream) - (typep stream 'file-stream)) - (defun file-or-synonym-stream-p (stream) - (or (file-stream-p stream) - (and (typep stream 'synonym-stream) - (file-or-synonym-stream-p - (symbol-value (synonym-stream-symbol stream))))))) -;;;; ------------------------------------------------------------------------- -;;;; Starting, Stopping, Dumping a Lisp image - -(uiop/package:define-package :uiop/image - (:use :uiop/common-lisp :uiop/package :uiop/utility :uiop/pathname :uiop/stream :uiop/os) - (:export - #:*image-dumped-p* #:raw-command-line-arguments #:*command-line-arguments* - #:command-line-arguments #:raw-command-line-arguments #:setup-command-line-arguments #:argv0 - #:*lisp-interaction* - #:fatal-condition #:fatal-condition-p - #:handle-fatal-condition - #:call-with-fatal-condition-handler #:with-fatal-condition-handler - #:*image-restore-hook* #:*image-prelude* #:*image-entry-point* - #:*image-postlude* #:*image-dump-hook* - #:quit #:die #:raw-print-backtrace #:print-backtrace #:print-condition-backtrace - #:shell-boolean-exit - #:register-image-restore-hook #:register-image-dump-hook - #:call-image-restore-hook #:call-image-dump-hook - #:restore-image #:dump-image #:create-image -)) -(in-package :uiop/image) - -(with-upgradability () - (defvar *lisp-interaction* t - "Is this an interactive Lisp environment, or is it batch processing?") - - (defvar *command-line-arguments* nil - "Command-line arguments") - - (defvar *image-dumped-p* nil ; may matter as to how to get to command-line-arguments - "Is this a dumped image? As a standalone executable?") - - (defvar *image-restore-hook* nil - "Functions to call (in reverse order) when the image is restored") - - (defvar *image-restored-p* nil - "Has the image been restored? A boolean, or :in-progress while restoring, :in-regress while dumping") - - (defvar *image-prelude* nil - "a form to evaluate, or string containing forms to read and evaluate -when the image is restarted, but before the entry point is called.") - - (defvar *image-entry-point* nil - "a function with which to restart the dumped image when execution is restored from it.") - - (defvar *image-postlude* nil - "a form to evaluate, or string containing forms to read and evaluate -before the image dump hooks are called and before the image is dumped.") - - (defvar *image-dump-hook* nil - "Functions to call (in order) when before an image is dumped") - - (deftype fatal-condition () - `(and serious-condition #+clozure (not ccl:process-reset)))) - -;;; Exiting properly or im- -(with-upgradability () - (defun quit (&optional (code 0) (finish-output t)) - "Quits from the Lisp world, with the given exit status if provided. -This is designed to abstract away the implementation specific quit forms." - (when finish-output ;; essential, for ClozureCL, and for standard compliance. - (finish-outputs)) - #+(or abcl xcl) (ext:quit :status code) - #+allegro (excl:exit code :quiet t) - #+(or clasp ecl) (si:quit code) - #+clisp (ext:quit code) - #+clozure (ccl:quit code) - #+cormanlisp (win32:exitprocess code) - #+(or cmucl scl) (unix:unix-exit code) - #+gcl (system:quit code) - #+genera (error "~S: You probably don't want to Halt Genera. (code: ~S)" 'quit code) - #+lispworks (lispworks:quit :status code :confirm nil :return nil :ignore-errors-p t) - #+mcl (progn code (ccl:quit)) ;; or should we use FFI to call libc's exit(3) ? - #+mkcl (mk-ext:quit :exit-code code) - #+sbcl #.(let ((exit (find-symbol* :exit :sb-ext nil)) - (quit (find-symbol* :quit :sb-ext nil))) - (cond - (exit `(,exit :code code :abort (not finish-output))) - (quit `(,quit :unix-status code :recklessly-p (not finish-output))))) - #-(or abcl allegro clasp clisp clozure cmucl ecl gcl genera lispworks mcl mkcl sbcl scl xcl) - (not-implemented-error 'quit "(called with exit code ~S)" code)) - - (defun die (code format &rest arguments) - "Die in error with some error message" - (with-safe-io-syntax () - (ignore-errors - (format! *stderr* "~&~?~&" format arguments))) - (quit code)) - - (defun raw-print-backtrace (&key (stream *debug-io*) count condition) - "Print a backtrace, directly accessing the implementation" - (declare (ignorable stream count condition)) - #+abcl - (loop :for i :from 0 - :for frame :in (sys:backtrace (or count most-positive-fixnum)) :do - (safe-format! stream "~&~D: ~A~%" i frame)) - #+allegro - (let ((*terminal-io* stream) - (*standard-output* stream) - (tpl:*zoom-print-circle* *print-circle*) - (tpl:*zoom-print-level* *print-level*) - (tpl:*zoom-print-length* *print-length*)) - (tpl:do-command "zoom" - :from-read-eval-print-loop nil - :count (or count t) - :all t)) - #+(or clasp ecl mkcl) - (let* ((top (si:ihs-top)) - (repeats (if count (min top count) top)) - (backtrace (loop :for ihs :from 0 :below top - :collect (list (si::ihs-fun ihs) - (si::ihs-env ihs))))) - (loop :for i :from 0 :below repeats - :for frame :in (nreverse backtrace) :do - (safe-format! stream "~&~D: ~S~%" i frame))) - #+clisp - (system::print-backtrace :out stream :limit count) - #+(or clozure mcl) - (let ((*debug-io* stream)) - #+clozure (ccl:print-call-history :count count :start-frame-number 1) - #+mcl (ccl:print-call-history :detailed-p nil) - (finish-output stream)) - #+(or cmucl scl) - (let ((debug:*debug-print-level* *print-level*) - (debug:*debug-print-length* *print-length*)) - (debug:backtrace (or count most-positive-fixnum) stream)) - #+gcl - (let ((*debug-io* stream)) - (ignore-errors - (with-safe-io-syntax () - (if condition - (conditions::condition-backtrace condition) - (system::simple-backtrace))))) - #+lispworks - (let ((dbg::*debugger-stack* - (dbg::grab-stack nil :how-many (or count most-positive-fixnum))) - (*debug-io* stream) - (dbg:*debug-print-level* *print-level*) - (dbg:*debug-print-length* *print-length*)) - (dbg:bug-backtrace nil)) - #+sbcl - (sb-debug:print-backtrace :stream stream :count (or count most-positive-fixnum)) - #+xcl - (loop :for i :from 0 :below (or count most-positive-fixnum) - :for frame :in (extensions:backtrace-as-list) :do - (safe-format! stream "~&~D: ~S~%" i frame))) - - (defun print-backtrace (&rest keys &key stream count condition) - "Print a backtrace" - (declare (ignore stream count condition)) - (with-safe-io-syntax (:package :cl) - (let ((*print-readably* nil) - (*print-circle* t) - (*print-miser-width* 75) - (*print-length* nil) - (*print-level* nil) - (*print-pretty* t)) - (ignore-errors (apply 'raw-print-backtrace keys))))) - - (defun print-condition-backtrace (condition &key (stream *stderr*) count) - "Print a condition after a backtrace triggered by that condition" - ;; We print the condition *after* the backtrace, - ;; for the sake of who sees the backtrace at a terminal. - ;; It is up to the caller to print the condition *before*, with some context. - (print-backtrace :stream stream :count count :condition condition) - (when condition - (safe-format! stream "~&Above backtrace due to this condition:~%~A~&" - condition))) - - (defun fatal-condition-p (condition) - "Is the CONDITION fatal?" - (typep condition 'fatal-condition)) - - (defun handle-fatal-condition (condition) - "Handle a fatal CONDITION: -depending on whether *LISP-INTERACTION* is set, enter debugger or die" - (cond - (*lisp-interaction* - (invoke-debugger condition)) - (t - (safe-format! *stderr* "~&Fatal condition:~%~A~%" condition) - (print-condition-backtrace condition :stream *stderr*) - (die 99 "~A" condition)))) - - (defun call-with-fatal-condition-handler (thunk) - "Call THUNK in a context where fatal conditions are appropriately handled" - (handler-bind ((fatal-condition #'handle-fatal-condition)) - (funcall thunk))) - - (defmacro with-fatal-condition-handler ((&optional) &body body) - "Execute BODY in a context where fatal conditions are appropriately handled" - `(call-with-fatal-condition-handler #'(lambda () ,@body))) - - (defun shell-boolean-exit (x) - "Quit with a return code that is 0 iff argument X is true" - (quit (if x 0 1)))) - - -;;; Using image hooks -(with-upgradability () - (defun register-image-restore-hook (hook &optional (call-now-p t)) - "Regiter a hook function to be run when restoring a dumped image" - (register-hook-function '*image-restore-hook* hook call-now-p)) - - (defun register-image-dump-hook (hook &optional (call-now-p nil)) - "Register a the hook function to be run before to dump an image" - (register-hook-function '*image-dump-hook* hook call-now-p)) - - (defun call-image-restore-hook () - "Call the hook functions registered to be run when restoring a dumped image" - (call-functions (reverse *image-restore-hook*))) - - (defun call-image-dump-hook () - "Call the hook functions registered to be run before to dump an image" - (call-functions *image-dump-hook*))) - - -;;; Proper command-line arguments -(with-upgradability () - (defun raw-command-line-arguments () - "Find what the actual command line for this process was." - #+abcl ext:*command-line-argument-list* ; Use 1.0.0 or later! - #+allegro (sys:command-line-arguments) ; default: :application t - #+(or clasp ecl) (loop :for i :from 0 :below (si:argc) :collect (si:argv i)) - #+clisp (coerce (ext:argv) 'list) - #+clozure ccl:*command-line-argument-list* - #+(or cmucl scl) extensions:*command-line-strings* - #+gcl si:*command-args* - #+(or genera mcl) nil - #+lispworks sys:*line-arguments-list* - #+mkcl (loop :for i :from 0 :below (mkcl:argc) :collect (mkcl:argv i)) - #+sbcl sb-ext:*posix-argv* - #+xcl system:*argv* - #-(or abcl allegro clasp clisp clozure cmucl ecl gcl genera lispworks mcl mkcl sbcl scl xcl) - (not-implemented-error 'raw-command-line-arguments)) - - (defun command-line-arguments (&optional (arguments (raw-command-line-arguments))) - "Extract user arguments from command-line invocation of current process. -Assume the calling conventions of a generated script that uses -- -if we are not called from a directly executable image." - (block nil - #+abcl (return arguments) - ;; SBCL and Allegro already separate user arguments from implementation arguments. - #-(or sbcl allegro) - (unless (eq *image-dumped-p* :executable) - ;; LispWorks command-line processing isn't transparent to the user - ;; unless you create a standalone executable; in that case, - ;; we rely on cl-launch or some other script to set the arguments for us. - #+lispworks (return *command-line-arguments*) - ;; On other implementations, on non-standalone executables, - ;; we trust cl-launch or whichever script starts the program - ;; to use -- as a delimiter between implementation arguments and user arguments. - #-lispworks (setf arguments (member "--" arguments :test 'string-equal))) - (rest arguments))) - - (defun argv0 () - "On supported implementations (most that matter), or when invoked by a proper wrapper script, -return a string that for the name with which the program was invoked, i.e. argv[0] in C. -Otherwise, return NIL." - (cond - ((eq *image-dumped-p* :executable) ; yes, this ARGV0 is our argv0 ! - ;; NB: not currently available on ABCL, Corman, Genera, MCL - (or #+(or allegro clisp clozure cmucl gcl lispworks sbcl scl xcl) - (first (raw-command-line-arguments)) - #+(or clasp ecl) (si:argv 0) #+mkcl (mkcl:argv 0))) - (t ;; argv[0] is the name of the interpreter. - ;; The wrapper script can export __CL_ARGV0. cl-launch does as of 4.0.1.8. - (getenvp "__CL_ARGV0")))) - - (defun setup-command-line-arguments () - (setf *command-line-arguments* (command-line-arguments))) - - (defun restore-image (&key - (lisp-interaction *lisp-interaction*) - (restore-hook *image-restore-hook*) - (prelude *image-prelude*) - (entry-point *image-entry-point*) - (if-already-restored '(cerror "RUN RESTORE-IMAGE ANYWAY"))) - "From a freshly restarted Lisp image, restore the saved Lisp environment -by setting appropriate variables, running various hooks, and calling any specified entry point. - -If the image has already been restored or is already being restored, as per *IMAGE-RESTORED-P*, -call the IF-ALREADY-RESTORED error handler (by default, a continuable error), and do return -immediately to the surrounding restore process if allowed to continue. - -Then, comes the restore process itself: -First, call each function in the RESTORE-HOOK, -in the order they were registered with REGISTER-IMAGE-RESTORE-HOOK. -Second, evaluate the prelude, which is often Lisp text that is read, -as per EVAL-INPUT. -Third, call the ENTRY-POINT function, if any is specified, with no argument. - -The restore process happens in a WITH-FATAL-CONDITION-HANDLER, so that if LISP-INTERACTION is NIL, -any unhandled error leads to a backtrace and an exit with an error status. -If LISP-INTERACTION is NIL, the process also exits when no error occurs: -if neither restart nor entry function is provided, the program will exit with status 0 (success); -if a function was provided, the program will exit after the function returns (if it returns), -with status 0 if and only if the primary return value of result is generalized boolean true, -and with status 1 if this value is NIL. - -If LISP-INTERACTION is true, unhandled errors will take you to the debugger, and the result -of the function will be returned rather than interpreted as a boolean designating an exit code." - (when *image-restored-p* - (if if-already-restored - (call-function if-already-restored "Image already ~:[being ~;~]restored" - (eq *image-restored-p* t)) - (return-from restore-image))) - (with-fatal-condition-handler () - (setf *lisp-interaction* lisp-interaction) - (setf *image-restore-hook* restore-hook) - (setf *image-prelude* prelude) - (setf *image-restored-p* :in-progress) - (call-image-restore-hook) - (standard-eval-thunk prelude) - (setf *image-restored-p* t) - (let ((results (multiple-value-list - (if entry-point - (call-function entry-point) - t)))) - (if lisp-interaction - (values-list results) - (shell-boolean-exit (first results))))))) - - -;;; Dumping an image - -(with-upgradability () - (defun dump-image (filename &key output-name executable - (postlude *image-postlude*) - (dump-hook *image-dump-hook*) - #+clozure prepend-symbols #+clozure (purify t) - #+sbcl compression - #+(and sbcl os-windows) application-type) - "Dump an image of the current Lisp environment at pathname FILENAME, with various options. - -First, finalize the image, by evaluating the POSTLUDE as per EVAL-INPUT, then calling each of - the functions in DUMP-HOOK, in reverse order of registration by REGISTER-DUMP-HOOK. - -If EXECUTABLE is true, create an standalone executable program that calls RESTORE-IMAGE on startup. - -Pass various implementation-defined options, such as PREPEND-SYMBOLS and PURITY on CCL, -or COMPRESSION on SBCL, and APPLICATION-TYPE on SBCL/Windows." - ;; Note: at least SBCL saves only global values of variables in the heap image, - ;; so make sure things you want to dump are NOT just local bindings shadowing the global values. - (declare (ignorable filename output-name executable)) - (setf *image-dumped-p* (if executable :executable t)) - (setf *image-restored-p* :in-regress) - (setf *image-postlude* postlude) - (standard-eval-thunk *image-postlude*) - (setf *image-dump-hook* dump-hook) - (call-image-dump-hook) - (setf *image-restored-p* nil) - #-(or clisp clozure (and cmucl executable) lispworks sbcl scl) - (when executable - (not-implemented-error 'dump-image "dumping an executable")) - #+allegro - (progn - (sys:resize-areas :global-gc t :pack-heap t :sift-old-areas t :tenure t) ; :new 5000000 - (excl:dumplisp :name filename :suppress-allegro-cl-banner t)) - #+clisp - (apply #'ext:saveinitmem filename - :quiet t - :start-package *package* - :keep-global-handlers nil - :executable (if executable 0 t) ;--- requires clisp 2.48 or later, still catches --clisp-x - (when executable - (list - ;; :parse-options nil ;--- requires a non-standard patch to clisp. - :norc t :script nil :init-function #'restore-image))) - #+clozure - (flet ((dump (prepend-kernel) - (ccl:save-application filename :prepend-kernel prepend-kernel :purify purify - :toplevel-function (when executable #'restore-image)))) - ;;(setf ccl::*application* (make-instance 'ccl::lisp-development-system)) - (if prepend-symbols - (with-temporary-file (:prefix "ccl-symbols-" :direction :output :pathname path) - (require 'elf) - (funcall (fdefinition 'ccl::write-elf-symbols-to-file) path) - (dump path)) - (dump t))) - #+(or cmucl scl) - (progn - (ext:gc :full t) - (setf ext:*batch-mode* nil) - (setf ext::*gc-run-time* 0) - (apply 'ext:save-lisp filename - :allow-other-keys t ;; hush SCL and old versions of CMUCL - #+(and cmucl executable) :executable #+(and cmucl executable) t - (when executable '(:init-function restore-image :process-command-line nil - :quiet t :load-init-file nil :site-init nil)))) - #+gcl - (progn - (si::set-hole-size 500) (si::gbc nil) (si::sgc-on t) - (si::save-system filename)) - #+lispworks - (if executable - (lispworks:deliver 'restore-image filename 0 :interface nil) - (hcl:save-image filename :environment nil)) - #+sbcl - (progn - ;;(sb-pcl::precompile-random-code-segments) ;--- it is ugly slow at compile-time (!) when the initial core is a big CLOS program. If you want it, do it yourself - (setf sb-ext::*gc-run-time* 0) - (apply 'sb-ext:save-lisp-and-die filename - :executable t ;--- always include the runtime that goes with the core - (append - (when compression (list :compression compression)) - ;;--- only save runtime-options for standalone executables - (when executable (list :toplevel #'restore-image :save-runtime-options t)) - #+(and sbcl os-windows) ;; passing :application-type :gui will disable the console window. - ;; the default is :console - only works with SBCL 1.1.15 or later. - (when application-type (list :application-type application-type))))) - #-(or allegro clisp clozure cmucl gcl lispworks sbcl scl) - (not-implemented-error 'dump-image)) - - (defun create-image (destination lisp-object-files - &key kind output-name prologue-code epilogue-code extra-object-files - (prelude () preludep) (postlude () postludep) - (entry-point () entry-point-p) build-args no-uiop) - (declare (ignorable destination lisp-object-files extra-object-files kind output-name - prologue-code epilogue-code prelude preludep postlude postludep - entry-point entry-point-p build-args no-uiop)) - "On ECL, create an executable at pathname DESTINATION from the specified OBJECT-FILES and options" - ;; Is it meaningful to run these in the current environment? - ;; only if we also track the object files that constitute the "current" image, - ;; and otherwise simulate dump-image, including quitting at the end. - #-(or clasp ecl mkcl) (not-implemented-error 'create-image) - #+(or clasp ecl mkcl) - (let ((epilogue-code - (if no-uiop - epilogue-code - (let ((forms - (append - (when epilogue-code `(,epilogue-code)) - (when postludep `((setf *image-postlude* ',postlude))) - (when preludep `((setf *image-prelude* ',prelude))) - (when entry-point-p `((setf *image-entry-point* ',entry-point))) - (case kind - ((:image) - (setf kind :program) ;; to ECL, it's just another program. - `((setf *image-dumped-p* t) - (si::top-level #+(or clasp ecl) t) (quit))) - ((:program) - `((setf *image-dumped-p* :executable) - (shell-boolean-exit - (restore-image)))))))) - (when forms `(progn ,@forms)))))) - #+(or clasp ecl mkcl) - (check-type kind (member :dll :shared-library :lib :static-library - :fasl :fasb :program)) - (apply #+clasp 'cmp:builder #+clasp kind - #+(or ecl mkcl) - (ecase kind - ((:dll :shared-library) - #+ecl 'c::build-shared-library #+mkcl 'compiler:build-shared-library) - ((:lib :static-library) - #+ecl 'c::build-static-library #+mkcl 'compiler:build-static-library) - ((:fasl #+ecl :fasb) - #+ecl 'c::build-fasl #+mkcl 'compiler:build-fasl) - #+mkcl ((:fasb) 'compiler:build-bundle) - ((:program) - #+ecl 'c::build-program #+mkcl 'compiler:build-program)) - (pathname destination) - #+(or clasp ecl) :lisp-files #+mkcl :lisp-object-files - (append lisp-object-files #+(or clasp ecl) extra-object-files) - #+ecl :init-name - #+ecl (c::compute-init-name (or output-name destination) - :kind (if (eq kind :fasb) :fasl kind)) - (append - (when prologue-code `(:prologue-code ,prologue-code)) - (when epilogue-code `(:epilogue-code ,epilogue-code)) - #+mkcl (when extra-object-files `(:object-files ,extra-object-files)) - build-args))))) - - -;;; Some universal image restore hooks -(with-upgradability () - (map () 'register-image-restore-hook - '(setup-stdin setup-stdout setup-stderr - setup-command-line-arguments setup-temporary-directory - #+abcl detect-os))) -;;;; ------------------------------------------------------------------------- -;;;; Support to build (compile and load) Lisp files - -(uiop/package:define-package :uiop/lisp-build - (:nicknames :asdf/lisp-build) ;; OBSOLETE, used by slime/contrib/swank-asdf.lisp - (:use :uiop/common-lisp :uiop/package :uiop/utility - :uiop/os :uiop/pathname :uiop/filesystem :uiop/stream :uiop/image) - (:export - ;; Variables - #:*compile-file-warnings-behaviour* #:*compile-file-failure-behaviour* - #:*output-translation-function* - #:*optimization-settings* #:*previous-optimization-settings* - #:*base-build-directory* - #:compile-condition #:compile-file-error #:compile-warned-error #:compile-failed-error - #:compile-warned-warning #:compile-failed-warning - #:check-lisp-compile-results #:check-lisp-compile-warnings - #:*uninteresting-conditions* #:*usual-uninteresting-conditions* - #:*uninteresting-compiler-conditions* #:*uninteresting-loader-conditions* - ;; Types - #+sbcl #:sb-grovel-unknown-constant-condition - ;; Functions & Macros - #:get-optimization-settings #:proclaim-optimization-settings #:with-optimization-settings - #:call-with-muffled-compiler-conditions #:with-muffled-compiler-conditions - #:call-with-muffled-loader-conditions #:with-muffled-loader-conditions - #:reify-simple-sexp #:unreify-simple-sexp - #:reify-deferred-warnings #:unreify-deferred-warnings - #:reset-deferred-warnings #:save-deferred-warnings #:check-deferred-warnings - #:with-saved-deferred-warnings #:warnings-file-p #:warnings-file-type #:*warnings-file-type* - #:enable-deferred-warnings-check #:disable-deferred-warnings-check - #:current-lisp-file-pathname #:load-pathname - #:lispize-pathname #:compile-file-type #:call-around-hook - #:compile-file* #:compile-file-pathname* #:*compile-check* - #:load* #:load-from-string #:combine-fasls) - (:intern #:defaults #:failure-p #:warnings-p #:s #:y #:body)) -(in-package :uiop/lisp-build) - -(with-upgradability () - (defvar *compile-file-warnings-behaviour* - (or #+clisp :ignore :warn) - "How should ASDF react if it encounters a warning when compiling a file? -Valid values are :error, :warn, and :ignore.") - - (defvar *compile-file-failure-behaviour* - (or #+(or mkcl sbcl) :error #+clisp :ignore :warn) - "How should ASDF react if it encounters a failure (per the ANSI spec of COMPILE-FILE) -when compiling a file, which includes any non-style-warning warning. -Valid values are :error, :warn, and :ignore. -Note that ASDF ALWAYS raises an error if it fails to create an output file when compiling.") - - (defvar *base-build-directory* nil - "When set to a non-null value, it should be an absolute directory pathname, -which will serve as the *DEFAULT-PATHNAME-DEFAULTS* around a COMPILE-FILE, -what more while the input-file is shortened if possible to ENOUGH-PATHNAME relative to it. -This can help you produce more deterministic output for FASLs.")) - -;;; Optimization settings -(with-upgradability () - (defvar *optimization-settings* nil - "Optimization settings to be used by PROCLAIM-OPTIMIZATION-SETTINGS") - (defvar *previous-optimization-settings* nil - "Optimization settings saved by PROCLAIM-OPTIMIZATION-SETTINGS") - (defparameter +optimization-variables+ - ;; TODO: allegro genera corman mcl - (or #+(or abcl xcl) '(system::*speed* system::*space* system::*safety* system::*debug*) - #+clisp '() ;; system::*optimize* is a constant hash-table! (with non-constant contents) - #+clozure '(ccl::*nx-speed* ccl::*nx-space* ccl::*nx-safety* - ccl::*nx-debug* ccl::*nx-cspeed*) - #+(or cmucl scl) '(c::*default-cookie*) - #+clasp '() - #+ecl (unless (use-ecl-byte-compiler-p) '(c::*speed* c::*space* c::*safety* c::*debug*)) - #+gcl '(compiler::*speed* compiler::*space* compiler::*compiler-new-safety* compiler::*debug*) - #+lispworks '(compiler::*optimization-level*) - #+mkcl '(si::*speed* si::*space* si::*safety* si::*debug*) - #+sbcl '(sb-c::*policy*))) - (defun get-optimization-settings () - "Get current compiler optimization settings, ready to PROCLAIM again" - #-(or abcl allegro clasp clisp clozure cmucl ecl lispworks mkcl sbcl scl xcl) - (warn "~S does not support ~S. Please help me fix that." - 'get-optimization-settings (implementation-type)) - #+(or abcl allegro clasp clisp clozure cmucl ecl lispworks mkcl sbcl scl xcl) - (let ((settings '(speed space safety debug compilation-speed #+(or cmucl scl) c::brevity))) - #.`(loop #+(or allegro clozure) - ,@'(:with info = #+allegro (sys:declaration-information 'optimize) - #+clozure (ccl:declaration-information 'optimize nil)) - :for x :in settings - ,@(or #+(or abcl clasp ecl gcl mkcl xcl) '(:for v :in +optimization-variables+)) - :for y = (or #+(or allegro clozure) (second (assoc x info)) ; normalize order - #+clisp (gethash x system::*optimize* 1) - #+(or abcl clasp ecl mkcl xcl) (symbol-value v) - #+(or cmucl scl) (slot-value c::*default-cookie* - (case x (compilation-speed 'c::cspeed) - (otherwise x))) - #+lispworks (slot-value compiler::*optimization-level* x) - #+sbcl (sb-c::policy-quality sb-c::*policy* x)) - :when y :collect (list x y)))) - (defun proclaim-optimization-settings () - "Proclaim the optimization settings in *OPTIMIZATION-SETTINGS*" - (proclaim `(optimize ,@*optimization-settings*)) - (let ((settings (get-optimization-settings))) - (unless (equal *previous-optimization-settings* settings) - (setf *previous-optimization-settings* settings)))) - (defmacro with-optimization-settings ((&optional (settings *optimization-settings*)) &body body) - #+(or allegro clisp) - (let ((previous-settings (gensym "PREVIOUS-SETTINGS"))) - `(let ((,previous-settings (get-optimization-settings))) - ,@(when settings `((proclaim `(optimize ,@,settings)))) - (unwind-protect (progn ,@body) - (proclaim `(optimize ,@,previous-settings))))) - #-(or allegro clisp) - `(let ,(loop :for v :in +optimization-variables+ :collect `(,v ,v)) - ,@(when settings `((proclaim `(optimize ,@,settings)))) - ,@body))) - - -;;; Condition control -(with-upgradability () - #+sbcl - (progn - (defun sb-grovel-unknown-constant-condition-p (c) - "Detect SB-GROVEL unknown-constant conditions on older versions of SBCL" - (and (typep c 'sb-int:simple-style-warning) - (string-enclosed-p - "Couldn't grovel for " - (simple-condition-format-control c) - " (unknown to the C compiler)."))) - (deftype sb-grovel-unknown-constant-condition () - '(and style-warning (satisfies sb-grovel-unknown-constant-condition-p)))) - - (defvar *usual-uninteresting-conditions* - (append - ;;#+clozure '(ccl:compiler-warning) - #+cmucl '("Deleting unreachable code.") - #+lispworks '("~S being redefined in ~A (previously in ~A)." - "~S defined more than once in ~A.") ;; lispworks gets confused by eval-when. - #+sbcl - '(sb-c::simple-compiler-note - "&OPTIONAL and &KEY found in the same lambda list: ~S" - #+sb-eval sb-kernel:lexical-environment-too-complex - sb-kernel:undefined-alien-style-warning - sb-grovel-unknown-constant-condition ; defined above. - sb-ext:implicit-generic-function-warning ;; Controversial. - sb-int:package-at-variance - sb-kernel:uninteresting-redefinition - ;; BEWARE: the below four are controversial to include here. - sb-kernel:redefinition-with-defun - sb-kernel:redefinition-with-defgeneric - sb-kernel:redefinition-with-defmethod - sb-kernel::redefinition-with-defmacro) ; not exported by old SBCLs - '("No generic function ~S present when encountering macroexpansion of defmethod. Assuming it will be an instance of standard-generic-function.")) ;; from closer2mop - "A suggested value to which to set or bind *uninteresting-conditions*.") - - (defvar *uninteresting-conditions* '() - "Conditions that may be skipped while compiling or loading Lisp code.") - (defvar *uninteresting-compiler-conditions* '() - "Additional conditions that may be skipped while compiling Lisp code.") - (defvar *uninteresting-loader-conditions* - (append - '("Overwriting already existing readtable ~S." ;; from named-readtables - #(#:finalizers-off-warning :asdf-finalizers)) ;; from asdf-finalizers - #+clisp '(clos::simple-gf-replacing-method-warning)) - "Additional conditions that may be skipped while loading Lisp code.")) - -;;;; ----- Filtering conditions while building ----- -(with-upgradability () - (defun call-with-muffled-compiler-conditions (thunk) - "Call given THUNK in a context where uninteresting conditions and compiler conditions are muffled" - (call-with-muffled-conditions - thunk (append *uninteresting-conditions* *uninteresting-compiler-conditions*))) - (defmacro with-muffled-compiler-conditions ((&optional) &body body) - "Trivial syntax for CALL-WITH-MUFFLED-COMPILER-CONDITIONS" - `(call-with-muffled-compiler-conditions #'(lambda () ,@body))) - (defun call-with-muffled-loader-conditions (thunk) - "Call given THUNK in a context where uninteresting conditions and loader conditions are muffled" - (call-with-muffled-conditions - thunk (append *uninteresting-conditions* *uninteresting-loader-conditions*))) - (defmacro with-muffled-loader-conditions ((&optional) &body body) - "Trivial syntax for CALL-WITH-MUFFLED-LOADER-CONDITIONS" - `(call-with-muffled-loader-conditions #'(lambda () ,@body)))) - - -;;;; Handle warnings and failures -(with-upgradability () - (define-condition compile-condition (condition) - ((context-format - :initform nil :reader compile-condition-context-format :initarg :context-format) - (context-arguments - :initform nil :reader compile-condition-context-arguments :initarg :context-arguments) - (description - :initform nil :reader compile-condition-description :initarg :description)) - (:report (lambda (c s) - (format s (compatfmt "~@<~A~@[ while ~?~]~@:>") - (or (compile-condition-description c) (type-of c)) - (compile-condition-context-format c) - (compile-condition-context-arguments c))))) - (define-condition compile-file-error (compile-condition error) ()) - (define-condition compile-warned-warning (compile-condition warning) ()) - (define-condition compile-warned-error (compile-condition error) ()) - (define-condition compile-failed-warning (compile-condition warning) ()) - (define-condition compile-failed-error (compile-condition error) ()) - - (defun check-lisp-compile-warnings (warnings-p failure-p - &optional context-format context-arguments) - "Given the warnings or failures as resulted from COMPILE-FILE or checking deferred warnings, -raise an error or warning as appropriate" - (when failure-p - (case *compile-file-failure-behaviour* - (:warn (warn 'compile-failed-warning - :description "Lisp compilation failed" - :context-format context-format - :context-arguments context-arguments)) - (:error (error 'compile-failed-error - :description "Lisp compilation failed" - :context-format context-format - :context-arguments context-arguments)) - (:ignore nil))) - (when warnings-p - (case *compile-file-warnings-behaviour* - (:warn (warn 'compile-warned-warning - :description "Lisp compilation had style-warnings" - :context-format context-format - :context-arguments context-arguments)) - (:error (error 'compile-warned-error - :description "Lisp compilation had style-warnings" - :context-format context-format - :context-arguments context-arguments)) - (:ignore nil)))) - - (defun check-lisp-compile-results (output warnings-p failure-p - &optional context-format context-arguments) - "Given the results of COMPILE-FILE, raise an error or warning as appropriate" - (unless output - (error 'compile-file-error :context-format context-format :context-arguments context-arguments)) - (check-lisp-compile-warnings warnings-p failure-p context-format context-arguments))) - - -;;;; Deferred-warnings treatment, originally implemented by Douglas Katzman. -;;; -;;; To support an implementation, three functions must be implemented: -;;; reify-deferred-warnings unreify-deferred-warnings reset-deferred-warnings -;;; See their respective docstrings. -(with-upgradability () - (defun reify-simple-sexp (sexp) - "Given a simple SEXP, return a representation of it as a portable SEXP. -Simple means made of symbols, numbers, characters, simple-strings, pathnames, cons cells." - (etypecase sexp - (symbol (reify-symbol sexp)) - ((or number character simple-string pathname) sexp) - (cons (cons (reify-simple-sexp (car sexp)) (reify-simple-sexp (cdr sexp)))) - (simple-vector (vector (mapcar 'reify-simple-sexp (coerce sexp 'list)))))) - - (defun unreify-simple-sexp (sexp) - "Given the portable output of REIFY-SIMPLE-SEXP, return the simple SEXP it represents" - (etypecase sexp - ((or symbol number character simple-string pathname) sexp) - (cons (cons (unreify-simple-sexp (car sexp)) (unreify-simple-sexp (cdr sexp)))) - ((simple-vector 2) (unreify-symbol sexp)) - ((simple-vector 1) (coerce (mapcar 'unreify-simple-sexp (aref sexp 0)) 'vector)))) - - #+clozure - (progn - (defun reify-source-note (source-note) - (when source-note - (with-accessors ((source ccl::source-note-source) (filename ccl:source-note-filename) - (start-pos ccl:source-note-start-pos) (end-pos ccl:source-note-end-pos)) source-note - (declare (ignorable source)) - (list :filename filename :start-pos start-pos :end-pos end-pos - #|:source (reify-source-note source)|#)))) - (defun unreify-source-note (source-note) - (when source-note - (destructuring-bind (&key filename start-pos end-pos source) source-note - (ccl::make-source-note :filename filename :start-pos start-pos :end-pos end-pos - :source (unreify-source-note source))))) - (defun unsymbolify-function-name (name) - (if-let (setfed (gethash name ccl::%setf-function-name-inverses%)) - `(setf ,setfed) - name)) - (defun symbolify-function-name (name) - (if (and (consp name) (eq (first name) 'setf)) - (let ((setfed (second name))) - (gethash setfed ccl::%setf-function-names%)) - name)) - (defun reify-function-name (function-name) - (let ((name (or (first function-name) ;; defun: extract the name - (let ((sec (second function-name))) - (or (and (atom sec) sec) ; scoped method: drop scope - (first sec)))))) ; method: keep gf name, drop method specializers - (list name))) - (defun unreify-function-name (function-name) - function-name) - (defun nullify-non-literals (sexp) - (typecase sexp - ((or number character simple-string symbol pathname) sexp) - (cons (cons (nullify-non-literals (car sexp)) - (nullify-non-literals (cdr sexp)))) - (t nil))) - (defun reify-deferred-warning (deferred-warning) - (with-accessors ((warning-type ccl::compiler-warning-warning-type) - (args ccl::compiler-warning-args) - (source-note ccl:compiler-warning-source-note) - (function-name ccl:compiler-warning-function-name)) deferred-warning - (list :warning-type warning-type :function-name (reify-function-name function-name) - :source-note (reify-source-note source-note) - :args (destructuring-bind (fun &rest more) - args - (cons (unsymbolify-function-name fun) - (nullify-non-literals more)))))) - (defun unreify-deferred-warning (reified-deferred-warning) - (destructuring-bind (&key warning-type function-name source-note args) - reified-deferred-warning - (make-condition (or (cdr (ccl::assq warning-type ccl::*compiler-whining-conditions*)) - 'ccl::compiler-warning) - :function-name (unreify-function-name function-name) - :source-note (unreify-source-note source-note) - :warning-type warning-type - :args (destructuring-bind (fun . more) args - (cons (symbolify-function-name fun) more)))))) - #+(or cmucl scl) - (defun reify-undefined-warning (warning) - ;; Extracting undefined-warnings from the compilation-unit - ;; To be passed through the above reify/unreify link, it must be a "simple-sexp" - (list* - (c::undefined-warning-kind warning) - (c::undefined-warning-name warning) - (c::undefined-warning-count warning) - (mapcar - #'(lambda (frob) - ;; the lexenv slot can be ignored for reporting purposes - `(:enclosing-source ,(c::compiler-error-context-enclosing-source frob) - :source ,(c::compiler-error-context-source frob) - :original-source ,(c::compiler-error-context-original-source frob) - :context ,(c::compiler-error-context-context frob) - :file-name ,(c::compiler-error-context-file-name frob) ; a pathname - :file-position ,(c::compiler-error-context-file-position frob) ; an integer - :original-source-path ,(c::compiler-error-context-original-source-path frob))) - (c::undefined-warning-warnings warning)))) - - #+sbcl - (defun reify-undefined-warning (warning) - ;; Extracting undefined-warnings from the compilation-unit - ;; To be passed through the above reify/unreify link, it must be a "simple-sexp" - (list* - (sb-c::undefined-warning-kind warning) - (sb-c::undefined-warning-name warning) - (sb-c::undefined-warning-count warning) - (mapcar - #'(lambda (frob) - ;; the lexenv slot can be ignored for reporting purposes - `(:enclosing-source ,(sb-c::compiler-error-context-enclosing-source frob) - :source ,(sb-c::compiler-error-context-source frob) - :original-source ,(sb-c::compiler-error-context-original-source frob) - :context ,(sb-c::compiler-error-context-context frob) - :file-name ,(sb-c::compiler-error-context-file-name frob) ; a pathname - :file-position ,(sb-c::compiler-error-context-file-position frob) ; an integer - :original-source-path ,(sb-c::compiler-error-context-original-source-path frob))) - (sb-c::undefined-warning-warnings warning)))) - - (defun reify-deferred-warnings () - "return a portable S-expression, portably readable and writeable in any Common Lisp implementation -using READ within a WITH-SAFE-IO-SYNTAX, that represents the warnings currently deferred by -WITH-COMPILATION-UNIT. One of three functions required for deferred-warnings support in ASDF." - #+allegro - (list :functions-defined excl::.functions-defined. - :functions-called excl::.functions-called.) - #+clozure - (mapcar 'reify-deferred-warning - (if-let (dw ccl::*outstanding-deferred-warnings*) - (let ((mdw (ccl::ensure-merged-deferred-warnings dw))) - (ccl::deferred-warnings.warnings mdw)))) - #+(or cmucl scl) - (when lisp::*in-compilation-unit* - ;; Try to send nothing through the pipe if nothing needs to be accumulated - `(,@(when c::*undefined-warnings* - `((c::*undefined-warnings* - ,@(mapcar #'reify-undefined-warning c::*undefined-warnings*)))) - ,@(loop :for what :in '(c::*compiler-error-count* - c::*compiler-warning-count* - c::*compiler-note-count*) - :for value = (symbol-value what) - :when (plusp value) - :collect `(,what . ,value)))) - #+sbcl - (when sb-c::*in-compilation-unit* - ;; Try to send nothing through the pipe if nothing needs to be accumulated - `(,@(when sb-c::*undefined-warnings* - `((sb-c::*undefined-warnings* - ,@(mapcar #'reify-undefined-warning sb-c::*undefined-warnings*)))) - ,@(loop :for what :in '(sb-c::*aborted-compilation-unit-count* - sb-c::*compiler-error-count* - sb-c::*compiler-warning-count* - sb-c::*compiler-style-warning-count* - sb-c::*compiler-note-count*) - :for value = (symbol-value what) - :when (plusp value) - :collect `(,what . ,value))))) - - (defun unreify-deferred-warnings (reified-deferred-warnings) - "given a S-expression created by REIFY-DEFERRED-WARNINGS, reinstantiate the corresponding -deferred warnings as to be handled at the end of the current WITH-COMPILATION-UNIT. -Handle any warning that has been resolved already, -such as an undefined function that has been defined since. -One of three functions required for deferred-warnings support in ASDF." - (declare (ignorable reified-deferred-warnings)) - #+allegro - (destructuring-bind (&key functions-defined functions-called) - reified-deferred-warnings - (setf excl::.functions-defined. - (append functions-defined excl::.functions-defined.) - excl::.functions-called. - (append functions-called excl::.functions-called.))) - #+clozure - (let ((dw (or ccl::*outstanding-deferred-warnings* - (setf ccl::*outstanding-deferred-warnings* (ccl::%defer-warnings t))))) - (appendf (ccl::deferred-warnings.warnings dw) - (mapcar 'unreify-deferred-warning reified-deferred-warnings))) - #+(or cmucl scl) - (dolist (item reified-deferred-warnings) - ;; Each item is (symbol . adjustment) where the adjustment depends on the symbol. - ;; For *undefined-warnings*, the adjustment is a list of initargs. - ;; For everything else, it's an integer. - (destructuring-bind (symbol . adjustment) item - (case symbol - ((c::*undefined-warnings*) - (setf c::*undefined-warnings* - (nconc (mapcan - #'(lambda (stuff) - (destructuring-bind (kind name count . rest) stuff - (unless (case kind (:function (fboundp name))) - (list - (c::make-undefined-warning - :name name - :kind kind - :count count - :warnings - (mapcar #'(lambda (x) - (apply #'c::make-compiler-error-context x)) - rest)))))) - adjustment) - c::*undefined-warnings*))) - (otherwise - (set symbol (+ (symbol-value symbol) adjustment)))))) - #+sbcl - (dolist (item reified-deferred-warnings) - ;; Each item is (symbol . adjustment) where the adjustment depends on the symbol. - ;; For *undefined-warnings*, the adjustment is a list of initargs. - ;; For everything else, it's an integer. - (destructuring-bind (symbol . adjustment) item - (case symbol - ((sb-c::*undefined-warnings*) - (setf sb-c::*undefined-warnings* - (nconc (mapcan - #'(lambda (stuff) - (destructuring-bind (kind name count . rest) stuff - (unless (case kind (:function (fboundp name))) - (list - (sb-c::make-undefined-warning - :name name - :kind kind - :count count - :warnings - (mapcar #'(lambda (x) - (apply #'sb-c::make-compiler-error-context x)) - rest)))))) - adjustment) - sb-c::*undefined-warnings*))) - (otherwise - (set symbol (+ (symbol-value symbol) adjustment))))))) - - (defun reset-deferred-warnings () - "Reset the set of deferred warnings to be handled at the end of the current WITH-COMPILATION-UNIT. -One of three functions required for deferred-warnings support in ASDF." - #+allegro - (setf excl::.functions-defined. nil - excl::.functions-called. nil) - #+clozure - (if-let (dw ccl::*outstanding-deferred-warnings*) - (let ((mdw (ccl::ensure-merged-deferred-warnings dw))) - (setf (ccl::deferred-warnings.warnings mdw) nil))) - #+(or cmucl scl) - (when lisp::*in-compilation-unit* - (setf c::*undefined-warnings* nil - c::*compiler-error-count* 0 - c::*compiler-warning-count* 0 - c::*compiler-note-count* 0)) - #+sbcl - (when sb-c::*in-compilation-unit* - (setf sb-c::*undefined-warnings* nil - sb-c::*aborted-compilation-unit-count* 0 - sb-c::*compiler-error-count* 0 - sb-c::*compiler-warning-count* 0 - sb-c::*compiler-style-warning-count* 0 - sb-c::*compiler-note-count* 0))) - - (defun save-deferred-warnings (warnings-file) - "Save forward reference conditions so they may be issued at a latter time, -possibly in a different process." - (with-open-file (s warnings-file :direction :output :if-exists :supersede - :element-type *default-stream-element-type* - :external-format *utf-8-external-format*) - (with-safe-io-syntax () - (write (reify-deferred-warnings) :stream s :pretty t :readably t) - (terpri s)))) - - (defun warnings-file-type (&optional implementation-type) - "The pathname type for warnings files on given IMPLEMENTATION-TYPE, -where NIL designates the current one" - (case (or implementation-type *implementation-type*) - ((:acl :allegro) "allegro-warnings") - ;;((:clisp) "clisp-warnings") - ((:cmu :cmucl) "cmucl-warnings") - ((:sbcl) "sbcl-warnings") - ((:clozure :ccl) "ccl-warnings") - ((:scl) "scl-warnings"))) - - (defvar *warnings-file-type* nil - "Pathname type for warnings files, or NIL if disabled") - - (defun enable-deferred-warnings-check () - "Enable the saving of deferred warnings" - (setf *warnings-file-type* (warnings-file-type))) - - (defun disable-deferred-warnings-check () - "Disable the saving of deferred warnings" - (setf *warnings-file-type* nil)) - - (defun warnings-file-p (file &optional implementation-type) - "Is FILE a saved warnings file for the given IMPLEMENTATION-TYPE? -If that given type is NIL, use the currently configured *WARNINGS-FILE-TYPE* instead." - (if-let (type (if implementation-type - (warnings-file-type implementation-type) - *warnings-file-type*)) - (equal (pathname-type file) type))) - - (defun check-deferred-warnings (files &optional context-format context-arguments) - "Given a list of FILES containing deferred warnings saved by CALL-WITH-SAVED-DEFERRED-WARNINGS, -re-intern and raise any warnings that are still meaningful." - (let ((file-errors nil) - (failure-p nil) - (warnings-p nil)) - (handler-bind - ((warning #'(lambda (c) - (setf warnings-p t) - (unless (typep c 'style-warning) - (setf failure-p t))))) - (with-compilation-unit (:override t) - (reset-deferred-warnings) - (dolist (file files) - (unreify-deferred-warnings - (handler-case (safe-read-file-form file) - (error (c) - ;;(delete-file-if-exists file) ;; deleting forces rebuild but prevents debugging - (push c file-errors) - nil)))))) - (dolist (error file-errors) (error error)) - (check-lisp-compile-warnings - (or failure-p warnings-p) failure-p context-format context-arguments))) - - #| - Mini-guide to adding support for deferred warnings on an implementation. - - First, look at what such a warning looks like: - - (describe - (handler-case - (and (eval '(lambda () (some-undefined-function))) nil) - (t (c) c))) - - Then you can grep for the condition type in your compiler sources - and see how to catch those that have been deferred, - and/or read, clear and restore the deferred list. - - Also look at - (macroexpand-1 '(with-compilation-unit () foo)) - |# - - (defun call-with-saved-deferred-warnings (thunk warnings-file &key source-namestring) - "If WARNINGS-FILE is not nil, record the deferred-warnings around a call to THUNK -and save those warnings to the given file for latter use, -possibly in a different process. Otherwise just call THUNK." - (declare (ignorable source-namestring)) - (if warnings-file - (with-compilation-unit (:override t #+sbcl :source-namestring #+sbcl source-namestring) - (unwind-protect - (let (#+sbcl (sb-c::*undefined-warnings* nil)) - (multiple-value-prog1 - (funcall thunk) - (save-deferred-warnings warnings-file))) - (reset-deferred-warnings))) - (funcall thunk))) - - (defmacro with-saved-deferred-warnings ((warnings-file &key source-namestring) &body body) - "Trivial syntax for CALL-WITH-SAVED-DEFERRED-WARNINGS" - `(call-with-saved-deferred-warnings - #'(lambda () ,@body) ,warnings-file :source-namestring ,source-namestring))) - - -;;; from ASDF -(with-upgradability () - (defun current-lisp-file-pathname () - "Portably return the PATHNAME of the current Lisp source file being compiled or loaded" - (or *compile-file-pathname* *load-pathname*)) - - (defun load-pathname () - "Portably return the LOAD-PATHNAME of the current source file or fasl" - *load-pathname*) ;; magic no longer needed for GCL. - - (defun lispize-pathname (input-file) - "From a INPUT-FILE pathname, return a corresponding .lisp source pathname" - (make-pathname :type "lisp" :defaults input-file)) - - (defun compile-file-type (&rest keys) - "pathname TYPE for lisp FASt Loading files" - (declare (ignorable keys)) - #-(or clasp ecl mkcl) (load-time-value (pathname-type (compile-file-pathname "foo.lisp"))) - #+(or clasp ecl mkcl) (pathname-type (apply 'compile-file-pathname "foo" keys))) - - (defun call-around-hook (hook function) - "Call a HOOK around the execution of FUNCTION" - (call-function (or hook 'funcall) function)) - - (defun compile-file-pathname* (input-file &rest keys &key output-file &allow-other-keys) - "Variant of COMPILE-FILE-PATHNAME that works well with COMPILE-FILE*" - (let* ((keys - (remove-plist-keys `(#+(or (and allegro (not (version>= 8 2)))) :external-format - ,@(unless output-file '(:output-file))) keys))) - (if (absolute-pathname-p output-file) - ;; what cfp should be doing, w/ mp* instead of mp - (let* ((type (pathname-type (apply 'compile-file-type keys))) - (defaults (make-pathname - :type type :defaults (merge-pathnames* input-file)))) - (merge-pathnames* output-file defaults)) - (funcall *output-translation-function* - (apply 'compile-file-pathname input-file keys))))) - - (defvar *compile-check* nil - "A hook for user-defined compile-time invariants") - - (defun* (compile-file*) (input-file &rest keys - &key (compile-check *compile-check*) output-file warnings-file - #+clisp lib-file #+(or clasp ecl mkcl) object-file #+sbcl emit-cfasl - &allow-other-keys) - "This function provides a portable wrapper around COMPILE-FILE. -It ensures that the OUTPUT-FILE value is only returned and -the file only actually created if the compilation was successful, -even though your implementation may not do that. It also checks an optional -user-provided consistency function COMPILE-CHECK to determine success; -it will call this function if not NIL at the end of the compilation -with the arguments sent to COMPILE-FILE*, except with :OUTPUT-FILE TMP-FILE -where TMP-FILE is the name of a temporary output-file. -It also checks two flags (with legacy british spelling from ASDF1), -*COMPILE-FILE-FAILURE-BEHAVIOUR* and *COMPILE-FILE-WARNINGS-BEHAVIOUR* -with appropriate implementation-dependent defaults, -and if a failure (respectively warnings) are reported by COMPILE-FILE, -it will consider that an error unless the respective behaviour flag -is one of :SUCCESS :WARN :IGNORE. -If WARNINGS-FILE is defined, deferred warnings are saved to that file. -On ECL or MKCL, it creates both the linkable object and loadable fasl files. -On implementations that erroneously do not recognize standard keyword arguments, -it will filter them appropriately." - #+(or clasp ecl) - (when (and object-file (equal (compile-file-type) (pathname object-file))) - (format t "Whoa, some funky ASDF upgrade switched ~S calling convention for ~S and ~S~%" - 'compile-file* output-file object-file) - (rotatef output-file object-file)) - (let* ((keywords (remove-plist-keys - `(:output-file :compile-check :warnings-file - #+clisp :lib-file #+(or clasp ecl mkcl) :object-file) keys)) - (output-file - (or output-file - (apply 'compile-file-pathname* input-file :output-file output-file keywords))) - (physical-output-file (physicalize-pathname output-file)) - #+(or clasp ecl) - (object-file - (unless (use-ecl-byte-compiler-p) - (or object-file - #+ecl (compile-file-pathname output-file :type :object) - #+clasp (compile-file-pathname output-file :output-type :object)))) - #+mkcl - (object-file - (or object-file - (compile-file-pathname output-file :fasl-p nil))) - (tmp-file (tmpize-pathname physical-output-file)) - #+sbcl - (cfasl-file (etypecase emit-cfasl - (null nil) - ((eql t) (make-pathname :type "cfasl" :defaults physical-output-file)) - (string (parse-namestring emit-cfasl)) - (pathname emit-cfasl))) - #+sbcl - (tmp-cfasl (when cfasl-file (make-pathname :type "cfasl" :defaults tmp-file))) - #+clisp - (tmp-lib (make-pathname :type "lib" :defaults tmp-file))) - (multiple-value-bind (output-truename warnings-p failure-p) - (with-enough-pathname (input-file :defaults *base-build-directory*) - (with-saved-deferred-warnings (warnings-file :source-namestring (namestring input-file)) - (with-muffled-compiler-conditions () - (or #-(or clasp ecl mkcl) - (apply 'compile-file input-file :output-file tmp-file - #+sbcl (if emit-cfasl (list* :emit-cfasl tmp-cfasl keywords) keywords) - #-sbcl keywords) - #+ecl (apply 'compile-file input-file :output-file - (if object-file - (list* object-file :system-p t keywords) - (list* tmp-file keywords))) - #+clasp (apply 'compile-file input-file :output-file - (if object-file - (list* object-file :output-type :object #|:system-p t|# keywords) - (list* tmp-file keywords))) - #+mkcl (apply 'compile-file input-file - :output-file object-file :fasl-p nil keywords))))) - (cond - ((and output-truename - (flet ((check-flag (flag behaviour) - (or (not flag) (member behaviour '(:success :warn :ignore))))) - (and (check-flag failure-p *compile-file-failure-behaviour*) - (check-flag warnings-p *compile-file-warnings-behaviour*))) - (progn - #+(or clasp ecl mkcl) - (when (and #+(or clasp ecl) object-file) - (setf output-truename - (compiler::build-fasl tmp-file - #+(or clasp ecl) :lisp-files #+mkcl :lisp-object-files (list object-file)))) - (or (not compile-check) - (apply compile-check input-file - :output-file output-truename - keywords)))) - (delete-file-if-exists physical-output-file) - (when output-truename - #+clasp (when output-truename (rename-file-overwriting-target tmp-file output-truename)) - ;; see CLISP bug 677 - #+clisp - (progn - (setf tmp-lib (make-pathname :type "lib" :defaults output-truename)) - (unless lib-file (setf lib-file (make-pathname :type "lib" :defaults physical-output-file))) - (rename-file-overwriting-target tmp-lib lib-file)) - #+sbcl (when cfasl-file (rename-file-overwriting-target tmp-cfasl cfasl-file)) - (rename-file-overwriting-target output-truename physical-output-file) - (setf output-truename (truename physical-output-file))) - #+clasp (delete-file-if-exists tmp-file) - #+clisp (progn (delete-file-if-exists tmp-file) ;; this one works around clisp BUG 677 - (delete-file-if-exists tmp-lib))) ;; this one is "normal" defensive cleanup - (t ;; error or failed check - (delete-file-if-exists output-truename) - #+clisp (delete-file-if-exists tmp-lib) - #+sbcl (delete-file-if-exists tmp-cfasl) - (setf output-truename nil))) - (values output-truename warnings-p failure-p)))) - - (defun load* (x &rest keys &key &allow-other-keys) - "Portable wrapper around LOAD that properly handles loading from a stream." - (with-muffled-loader-conditions () - (etypecase x - ((or pathname string #-(or allegro clozure genera) stream #+clozure file-stream) - (apply 'load x keys)) - ;; Genera can't load from a string-input-stream - ;; ClozureCL 1.6 can only load from file input stream - ;; Allegro 5, I don't remember but it must have been broken when I tested. - #+(or allegro clozure genera) - (stream ;; make do this way - (let ((*package* *package*) - (*readtable* *readtable*) - (*load-pathname* nil) - (*load-truename* nil)) - (eval-input x)))))) - - (defun load-from-string (string) - "Portably read and evaluate forms from a STRING." - (with-input-from-string (s string) (load* s)))) - -;;; Links FASLs together -(with-upgradability () - (defun combine-fasls (inputs output) - "Combine a list of FASLs INPUTS into a single FASL OUTPUT" - #-(or abcl allegro clisp clozure cmucl lispworks sbcl scl xcl) - (not-implemented-error 'combine-fasls "~%inputs: ~S~%output: ~S" inputs output) - #+abcl (funcall 'sys::concatenate-fasls inputs output) ; requires ABCL 1.2.0 - #+(or allegro clisp cmucl sbcl scl xcl) (concatenate-files inputs output) - #+clozure (ccl:fasl-concatenate output inputs :if-exists :supersede) - #+lispworks - (let (fasls) - (unwind-protect - (progn - (loop :for i :in inputs - :for n :from 1 - :for f = (add-pathname-suffix - output (format nil "-FASL~D" n)) - :do (copy-file i f) - (push f fasls)) - (ignore-errors (lispworks:delete-system :fasls-to-concatenate)) - (eval `(scm:defsystem :fasls-to-concatenate - (:default-pathname ,(pathname-directory-pathname output)) - :members - ,(loop :for f :in (reverse fasls) - :collect `(,(namestring f) :load-only t)))) - (scm:concatenate-system output :fasls-to-concatenate :force t)) - (loop :for f :in fasls :do (ignore-errors (delete-file f))) - (ignore-errors (lispworks:delete-system :fasls-to-concatenate)))))) -;;;; ------------------------------------------------------------------------- -;;;; launch-program - semi-portably spawn asynchronous subprocesses - -(uiop/package:define-package :uiop/launch-program - (:use :uiop/common-lisp :uiop/package :uiop/utility - :uiop/pathname :uiop/os :uiop/filesystem :uiop/stream) - (:export - ;;; Escaping the command invocation madness - #:easy-sh-character-p #:escape-sh-token #:escape-sh-command - #:escape-windows-token #:escape-windows-command - #:escape-shell-token #:escape-shell-command - #:escape-token #:escape-command - - ;;; launch-program - #:launch-program - #:close-streams #:process-alive-p #:terminate-process #:wait-process - #:process-info-error-output #:process-info-input #:process-info-output #:process-info-pid)) -(in-package :uiop/launch-program) - -;;;; ----- Escaping strings for the shell ----- -(with-upgradability () - (defun requires-escaping-p (token &key good-chars bad-chars) - "Does this token require escaping, given the specification of -either good chars that don't need escaping or bad chars that do need escaping, -as either a recognizing function or a sequence of characters." - (some - (cond - ((and good-chars bad-chars) - (parameter-error "~S: only one of good-chars and bad-chars can be provided" - 'requires-escaping-p)) - ((typep good-chars 'function) - (complement good-chars)) - ((typep bad-chars 'function) - bad-chars) - ((and good-chars (typep good-chars 'sequence)) - #'(lambda (c) (not (find c good-chars)))) - ((and bad-chars (typep bad-chars 'sequence)) - #'(lambda (c) (find c bad-chars))) - (t (parameter-error "~S: no good-char criterion" 'requires-escaping-p))) - token)) - - (defun escape-token (token &key stream quote good-chars bad-chars escaper) - "Call the ESCAPER function on TOKEN string if it needs escaping as per -REQUIRES-ESCAPING-P using GOOD-CHARS and BAD-CHARS, otherwise output TOKEN, -using STREAM as output (or returning result as a string if NIL)" - (if (requires-escaping-p token :good-chars good-chars :bad-chars bad-chars) - (with-output (stream) - (apply escaper token stream (when quote `(:quote ,quote)))) - (output-string token stream))) - - (defun escape-windows-token-within-double-quotes (x &optional s) - "Escape a string token X within double-quotes -for use within a MS Windows command-line, outputing to S." - (labels ((issue (c) (princ c s)) - (issue-backslash (n) (loop :repeat n :do (issue #\\)))) - (loop - :initially (issue #\") :finally (issue #\") - :with l = (length x) :with i = 0 - :for i+1 = (1+ i) :while (< i l) :do - (case (char x i) - ((#\") (issue-backslash 1) (issue #\") (setf i i+1)) - ((#\\) - (let* ((j (and (< i+1 l) (position-if-not - #'(lambda (c) (eql c #\\)) x :start i+1))) - (n (- (or j l) i))) - (cond - ((null j) - (issue-backslash (* 2 n)) (setf i l)) - ((and (< j l) (eql (char x j) #\")) - (issue-backslash (1+ (* 2 n))) (issue #\") (setf i (1+ j))) - (t - (issue-backslash n) (setf i j))))) - (otherwise - (issue (char x i)) (setf i i+1)))))) - - (defun easy-windows-character-p (x) - "Is X an \"easy\" character that does not require quoting by the shell?" - (or (alphanumericp x) (find x "+-_.,@:/="))) - - (defun escape-windows-token (token &optional s) - "Escape a string TOKEN within double-quotes if needed -for use within a MS Windows command-line, outputing to S." - (escape-token token :stream s :good-chars #'easy-windows-character-p :quote nil - :escaper 'escape-windows-token-within-double-quotes)) - - (defun escape-sh-token-within-double-quotes (x s &key (quote t)) - "Escape a string TOKEN within double-quotes -for use within a POSIX Bourne shell, outputing to S; -omit the outer double-quotes if key argument :QUOTE is NIL" - (when quote (princ #\" s)) - (loop :for c :across x :do - (when (find c "$`\\\"") (princ #\\ s)) - (princ c s)) - (when quote (princ #\" s))) - - (defun easy-sh-character-p (x) - "Is X an \"easy\" character that does not require quoting by the shell?" - (or (alphanumericp x) (find x "+-_.,%@:/="))) - - (defun escape-sh-token (token &optional s) - "Escape a string TOKEN within double-quotes if needed -for use within a POSIX Bourne shell, outputing to S." - (escape-token token :stream s :quote #\" :good-chars #'easy-sh-character-p - :escaper 'escape-sh-token-within-double-quotes)) - - (defun escape-shell-token (token &optional s) - "Escape a token for the current operating system shell" - (os-cond - ((os-unix-p) (escape-sh-token token s)) - ((os-windows-p) (escape-windows-token token s)))) - - (defun escape-command (command &optional s - (escaper 'escape-shell-token)) - "Given a COMMAND as a list of tokens, return a string of the -spaced, escaped tokens, using ESCAPER to escape." - (etypecase command - (string (output-string command s)) - (list (with-output (s) - (loop :for first = t :then nil :for token :in command :do - (unless first (princ #\space s)) - (funcall escaper token s)))))) - - (defun escape-windows-command (command &optional s) - "Escape a list of command-line arguments into a string suitable for parsing -by CommandLineToArgv in MS Windows" - ;; http://msdn.microsoft.com/en-us/library/bb776391(v=vs.85).aspx - ;; http://msdn.microsoft.com/en-us/library/17w5ykft(v=vs.85).aspx - (escape-command command s 'escape-windows-token)) - - (defun escape-sh-command (command &optional s) - "Escape a list of command-line arguments into a string suitable for parsing -by /bin/sh in POSIX" - (escape-command command s 'escape-sh-token)) - - (defun escape-shell-command (command &optional stream) - "Escape a command for the current operating system's shell" - (escape-command command stream 'escape-shell-token))) - - -(with-upgradability () - ;;; Internal helpers for run-program - (defun %normalize-io-specifier (specifier &optional role) - "Normalizes a portable I/O specifier for LAUNCH-PROGRAM into an implementation-dependent -argument to pass to the internal RUN-PROGRAM" - (declare (ignorable role)) - (typecase specifier - (null (or #+(or allegro lispworks) (null-device-pathname))) - (string (parse-native-namestring specifier)) - (pathname specifier) - (stream specifier) - ((eql :stream) :stream) - ((eql :interactive) - #+(or allegro lispworks) nil - #+clisp :terminal - #+(or abcl clozure cmucl ecl mkcl sbcl scl) t - #-(or abcl clozure cmucl ecl mkcl sbcl scl allegro lispworks clisp) - (not-implemented-error :interactive-output - "On this lisp implementation, cannot interpret ~a value of ~a" - specifier role)) - ((eql :output) - (cond ((eq role :error-output) - #+(or abcl allegro clozure cmucl ecl lispworks mkcl sbcl scl) - :output - #-(or abcl allegro clozure cmucl ecl lispworks mkcl sbcl scl) - (not-implemented-error :error-output-redirect - "Can't send ~a to ~a on this lisp implementation." - role specifier)) - (t (parameter-error "~S IO specifier invalid for ~S" specifier role)))) - (otherwise - (parameter-error "Incorrect I/O specifier ~S for ~S" - specifier role)))) - - (defun %interactivep (input output error-output) - (member :interactive (list input output error-output))) - - (defun %signal-to-exit-code (signum) - (+ 128 signum)) - - #+mkcl - (defun %mkcl-signal-to-number (signal) - (require :mk-unix) - (symbol-value (find-symbol signal :mk-unix))) - - (defclass process-info () - ((process :initform nil) - (input-stream :initform nil) - (output-stream :initform nil) - (bidir-stream :initform nil) - (error-output-stream :initform nil) - ;; For backward-compatibility, to maintain the property (zerop - ;; exit-code) <-> success, an exit in response to a signal is - ;; encoded as 128+signum. - (exit-code :initform nil) - ;; If the platform allows it, distinguish exiting with a code - ;; >128 from exiting in response to a signal by setting this code - (signal-code :initform nil))) - -;;;--------------------------------------------------------------------------- -;;; The following two helper functions take care of handling the IF-EXISTS and -;;; IF-DOES-NOT-EXIST arguments for RUN-PROGRAM. In particular, they process the -;;; :ERROR, :APPEND, and :SUPERSEDE arguments *here*, allowing the master -;;; function to treat input and output files unconditionally for reading and -;;; writing. -;;;--------------------------------------------------------------------------- - - (defun %handle-if-exists (file if-exists) - (when (or (stringp file) (pathnamep file)) - (ecase if-exists - ((:append :supersede :error) - (with-open-file (dummy file :direction :output :if-exists if-exists) - (declare (ignorable dummy))))))) - - (defun %handle-if-does-not-exist (file if-does-not-exist) - (when (or (stringp file) (pathnamep file)) - (ecase if-does-not-exist - ((:create :error) - (with-open-file (dummy file :direction :probe - :if-does-not-exist if-does-not-exist) - (declare (ignorable dummy))))))) - - (defun process-info-error-output (process-info) - (slot-value process-info 'error-output-stream)) - (defun process-info-input (process-info) - (or (slot-value process-info 'bidir-stream) - (slot-value process-info 'input-stream))) - (defun process-info-output (process-info) - (or (slot-value process-info 'bidir-stream) - (slot-value process-info 'output-stream))) - - (defun process-info-pid (process-info) - (let ((process (slot-value process-info 'process))) - (declare (ignorable process)) - #+abcl (symbol-call :sys :process-pid process) - #+allegro process - #+clozure (ccl:external-process-id process) - #+ecl (ext:external-process-pid process) - #+(or cmucl scl) (ext:process-pid process) - #+lispworks7+ (sys:pipe-pid process) - #+(and lispworks (not lispworks7+)) process - #+mkcl (mkcl:process-id process) - #+sbcl (sb-ext:process-pid process) - #-(or abcl allegro clozure cmucl ecl mkcl lispworks sbcl scl) - (not-implemented-error 'process-info-pid))) - - (defun %process-status (process-info) - (if-let (exit-code (slot-value process-info 'exit-code)) - (return-from %process-status - (if-let (signal-code (slot-value process-info 'signal-code)) - (values :signaled signal-code) - (values :exited exit-code)))) - #-(or allegro clozure cmucl ecl lispworks mkcl sbcl scl) - (not-implemented-error '%process-status) - (if-let (process (slot-value process-info 'process)) - (multiple-value-bind (status code) - (progn - #+allegro (multiple-value-bind (exit-code pid signal) - (sys:reap-os-subprocess :pid process :wait nil) - (assert pid) - (cond ((null exit-code) :running) - ((null signal) (values :exited exit-code)) - (t (values :signaled signal)))) - #+clozure (ccl:external-process-status process) - #+(or cmucl scl) (let ((status (ext:process-status process))) - (values status (if (member status '(:exited :signaled)) - (ext:process-exit-code process)))) - #+ecl (ext:external-process-status process) - #+lispworks - ;; a signal is only returned on LispWorks 7+ - (multiple-value-bind (exit-code signal) - (funcall #+lispworks7+ #'sys:pipe-exit-status - #-lispworks7+ #'sys:pid-exit-status - process :wait nil) - (cond ((null exit-code) :running) - ((null signal) (values :exited exit-code)) - (t (values :signaled signal)))) - #+mkcl (let ((status (mk-ext:process-status process)) - (code (mk-ext:process-exit-code process))) - (if (stringp code) - (values :signaled (%mkcl-signal-to-number code)) - (values status code))) - #+sbcl (let ((status (sb-ext:process-status process))) - (values status (if (member status '(:exited :signaled)) - (sb-ext:process-exit-code process))))) - (case status - (:exited (setf (slot-value process-info 'exit-code) code)) - (:signaled (let ((%code (%signal-to-exit-code code))) - (setf (slot-value process-info 'exit-code) %code - (slot-value process-info 'signal-code) code)))) - (values status code)))) - - (defun process-alive-p (process-info) - "Check if a process has yet to exit." - (unless (slot-value process-info 'exit-code) - #+abcl (sys:process-alive-p (slot-value process-info 'process)) - #+(or cmucl scl) (ext:process-alive-p (slot-value process-info 'process)) - #+sbcl (sb-ext:process-alive-p (slot-value process-info 'process)) - #-(or abcl cmucl sbcl scl) (member (%process-status process-info) - '(:running :sleeping)))) - - (defun wait-process (process-info) - "Wait for the process to terminate, if it is still running. -Otherwise, return immediately. An exit code (a number) will be -returned, with 0 indicating success, and anything else indicating -failure. If the process exits after receiving a signal, the exit code -will be the sum of 128 and the (positive) numeric signal code. A second -value may be returned in this case: the numeric signal code itself. -Any asynchronously spawned process requires this function to be run -before it is garbage-collected in order to free up resources that -might otherwise be irrevocably lost." - (if-let (exit-code (slot-value process-info 'exit-code)) - (if-let (signal-code (slot-value process-info 'signal-code)) - (values exit-code signal-code) - exit-code) - (let ((process (slot-value process-info 'process))) - #-(or abcl allegro clozure cmucl ecl lispworks mkcl sbcl scl) - (not-implemented-error 'wait-process) - (when process - ;; 1- wait - #+clozure (ccl::external-process-wait process) - #+(or cmucl scl) (ext:process-wait process) - #+sbcl (sb-ext:process-wait process) - ;; 2- extract result - (multiple-value-bind (exit-code signal-code) - (progn - #+abcl (sys:process-wait process) - #+allegro (multiple-value-bind (exit-code pid signal) - (sys:reap-os-subprocess :pid process :wait t) - (assert pid) - (values exit-code signal)) - #+clozure (multiple-value-bind (status code) - (ccl:external-process-status process) - (if (eq status :signaled) - (values nil code) - code)) - #+(or cmucl scl) (let ((status (ext:process-status process)) - (code (ext:process-exit-code process))) - (if (eq status :signaled) - (values nil code) - code)) - #+ecl (multiple-value-bind (status code) - (ext:external-process-wait process t) - (if (eq status :signaled) - (values nil code) - code)) - #+lispworks (funcall #+lispworks7+ #'sys:pipe-exit-status - #-lispworks7+ #'sys:pid-exit-status - process :wait t) - #+mkcl (let ((code (mkcl:join-process process))) - (if (stringp code) - (values nil (%mkcl-signal-to-number code)) - code)) - #+sbcl (let ((status (sb-ext:process-status process)) - (code (sb-ext:process-exit-code process))) - (if (eq status :signaled) - (values nil code) - code))) - (if signal-code - (let ((%exit-code (%signal-to-exit-code signal-code))) - (setf (slot-value process-info 'exit-code) %exit-code - (slot-value process-info 'signal-code) signal-code) - (values %exit-code signal-code)) - (progn (setf (slot-value process-info 'exit-code) exit-code) - exit-code))))))) - - ;; WARNING: For signals other than SIGTERM and SIGKILL this may not - ;; do what you expect it to. Sending SIGSTOP to a process spawned - ;; via LAUNCH-PROGRAM, e.g., will stop the shell /bin/sh that is used - ;; to run the command (via `sh -c command`) but not the actual - ;; command. - #+os-unix - (defun %posix-send-signal (process-info signal) - #+allegro (excl.osi:kill (slot-value process-info 'process) signal) - #+clozure (ccl:signal-external-process (slot-value process-info 'process) - signal :error-if-exited nil) - #+(or cmucl scl) (ext:process-kill (slot-value process-info 'process) signal) - #+sbcl (sb-ext:process-kill (slot-value process-info 'process) signal) - #-(or allegro clozure cmucl sbcl scl) - (if-let (pid (process-info-pid process-info)) - (symbol-call :uiop :run-program - (format nil "kill -~a ~a" signal pid) :ignore-error-status t))) - - ;;; this function never gets called on Windows, but the compiler cannot tell - ;;; that. [2016/09/25:rpg] - #+os-windows - (defun %posix-send-signal (process-info signal) - (declare (ignore process-info signal)) - (values)) - - (defun terminate-process (process-info &key urgent) - "Cause the process to exit. To that end, the process may or may -not be sent a signal, which it will find harder (or even impossible) -to ignore if URGENT is T. On some platforms, it may also be subject to -race conditions." - (declare (ignorable urgent)) - #+abcl (sys:process-kill (slot-value process-info 'process)) - #+clasp (mp:process-kill (slot-value process-info 'process)) - ;; On ECL, this will only work on versions later than 2016-09-06, - ;; but we still want to compile on earlier versions, so we use symbol-call - #+ecl (symbol-call :ext :terminate-process (slot-value process-info 'process) urgent) - #+lispworks7+ (sys:pipe-kill-process (slot-value process-info 'process)) - #+mkcl (mk-ext:terminate-process (slot-value process-info 'process) - :force urgent) - #-(or abcl clasp ecl lispworks7+ mkcl) - (os-cond - ((os-unix-p) (%posix-send-signal process-info (if urgent 9 15))) - ((os-windows-p) (if-let (pid (process-info-pid process-info)) - (symbol-call :uiop :run-program - (format nil "taskkill ~:[~;/f ~]/pid ~a" urgent pid) - :ignore-error-status t))) - (t (not-implemented-error 'terminate-process)))) - - (defun close-streams (process-info) - "Close any stream that the process might own. Needs to be run -whenever streams were requested by passing :stream to :input, :output, -or :error-output." - (dolist (stream - (cons (slot-value process-info 'error-output-stream) - (if-let (bidir-stream (slot-value process-info 'bidir-stream)) - (list bidir-stream) - (list (slot-value process-info 'input-stream) - (slot-value process-info 'output-stream))))) - (when stream (close stream)))) - - (defun launch-program (command &rest keys - &key - input (if-input-does-not-exist :error) - output (if-output-exists :supersede) - error-output (if-error-output-exists :supersede) - (element-type #-clozure *default-stream-element-type* - #+clozure 'character) - (external-format *utf-8-external-format*) - directory - #+allegro separate-streams - &allow-other-keys) - "Launch program specified by COMMAND, -either a list of strings specifying a program and list of arguments, -or a string specifying a shell command (/bin/sh on Unix, CMD.EXE on -Windows) _asynchronously_. - -If OUTPUT is a pathname, a string designating a pathname, or NIL (the -default) designating the null device, the file at that path is used as -output. -If it's :INTERACTIVE, output is inherited from the current process; -beware that this may be different from your *STANDARD-OUTPUT*, and -under SLIME will be on your *inferior-lisp* buffer. If it's T, output -goes to your current *STANDARD-OUTPUT* stream. If it's :STREAM, a new -stream will be made available that can be accessed via -PROCESS-INFO-OUTPUT and read from. Otherwise, OUTPUT should be a value -that the underlying lisp implementation knows how to handle. - -IF-OUTPUT-EXISTS, which is only meaningful if OUTPUT is a string or a -pathname, can take the values :ERROR, :APPEND, and :SUPERSEDE (the -default). The meaning of these values and their effect on the case -where OUTPUT does not exist, is analogous to the IF-EXISTS parameter -to OPEN with :DIRECTION :OUTPUT. - -ERROR-OUTPUT is similar to OUTPUT. T designates the *ERROR-OUTPUT*, -:OUTPUT means redirecting the error output to the output stream, -and :STREAM causes a stream to be made available via -PROCESS-INFO-ERROR-OUTPUT. - -IF-ERROR-OUTPUT-EXISTS is similar to IF-OUTPUT-EXIST, except that it -affects ERROR-OUTPUT rather than OUTPUT. - -INPUT is similar to OUTPUT, except that T designates the -*STANDARD-INPUT* and a stream requested through the :STREAM keyword -would be available through PROCESS-INFO-INPUT. - -IF-INPUT-DOES-NOT-EXIST, which is only meaningful if INPUT is a string -or a pathname, can take the values :CREATE and :ERROR (the -default). The meaning of these values is analogous to the -IF-DOES-NOT-EXIST parameter to OPEN with :DIRECTION :INPUT. - -ELEMENT-TYPE and EXTERNAL-FORMAT are passed on to your Lisp -implementation, when applicable, for creation of the output stream. - -LAUNCH-PROGRAM returns a PROCESS-INFO object." - #-(or abcl allegro clozure cmucl ecl (and lispworks os-unix) mkcl sbcl scl) - (progn command keys input output error-output directory element-type external-format - if-input-does-not-exist if-output-exists if-error-output-exists ;; ignore - (not-implemented-error 'launch-program)) - #+allegro - (when (some #'(lambda (stream) - (and (streamp stream) - (not (file-stream-p stream)))) - (list input output error-output)) - (parameter-error "~S: Streams passed as I/O parameters need to be file streams on this lisp" - 'launch-program)) - #+(or abcl clisp lispworks) - (when (some #'streamp (list input output error-output)) - (parameter-error "~S: I/O parameters cannot be foreign streams on this lisp" - 'launch-program)) - #+clisp - (unless (eq error-output :interactive) - (parameter-error "~S: The only admissible value for ~S is ~S on this lisp" - 'launch-program :error-output :interactive)) - #+ecl - (when (some #'(lambda (stream) - (and (streamp stream) - (not (file-or-synonym-stream-p stream)))) - (list input output error-output)) - (parameter-error "~S: Streams passed as I/O parameters need to be (synonymous with) file streams on this lisp" - 'launch-program)) - #+(or abcl allegro clozure cmucl ecl (and lispworks os-unix) mkcl sbcl scl) - (nest - (progn ;; see comments for these functions - (%handle-if-does-not-exist input if-input-does-not-exist) - (%handle-if-exists output if-output-exists) - (%handle-if-exists error-output if-error-output-exists)) - #+ecl (let ((*standard-input* *stdin*) - (*standard-output* *stdout*) - (*error-output* *stderr*))) - (let ((process-info (make-instance 'process-info)) - (input (%normalize-io-specifier input :input)) - (output (%normalize-io-specifier output :output)) - (error-output (%normalize-io-specifier error-output :error-output)) - #+(and allegro os-windows) (interactive (%interactivep input output error-output)) - (command - (etypecase command - #+os-unix (string `("/bin/sh" "-c" ,command)) - #+os-unix (list command) - #+os-windows - (string - ;; NB: On other Windows implementations, this is utterly bogus - ;; except in the most trivial cases where no quoting is needed. - ;; Use at your own risk. - #-(or allegro clisp clozure ecl) - (nest - #+(or ecl sbcl) (unless (find-symbol* :escape-arguments #+ecl :ext #+sbcl :sb-impl nil)) - (parameter-error "~S doesn't support string commands on Windows on this Lisp" - 'launch-program command)) - ;; NB: We add cmd /c here. Behavior without going through cmd is not well specified - ;; when the command contains spaces or special characters: - ;; IIUC, the system will use space as a separator, - ;; but the C++ argv-decoding libraries won't, and - ;; you're supposed to use an extra argument to CreateProcess to bridge the gap, - ;; yet neither allegro nor clisp provide access to that argument. - #+(or allegro clisp) (strcat "cmd /c " command) - ;; On ClozureCL for Windows, we assume you are using - ;; r15398 or later in 1.9 or later, - ;; so that bug 858 is fixed http://trac.clozure.com/ccl/ticket/858 - ;; On ECL, commit 2040629 https://gitlab.com/embeddable-common-lisp/ecl/issues/304 - ;; On SBCL, we assume the patch from fcae0fd (to be part of SBCL 1.3.13) - #+(or clozure ecl sbcl) (cons "cmd" (strcat "/c " command))) - #+os-windows - (list - #+allegro (escape-windows-command command) - #-allegro command))))) - #+(or abcl (and allegro os-unix) clozure cmucl ecl mkcl sbcl) - (let ((program (car command)) - #-allegro (arguments (cdr command)))) - #+(and (or ecl sbcl) os-windows) - (multiple-value-bind (arguments escape-arguments) - (if (listp arguments) - (values arguments t) - (values (list arguments) nil))) - #-(or allegro mkcl sbcl) (with-current-directory (directory)) - (multiple-value-bind - #+(or abcl clozure cmucl sbcl scl) (process) - #+allegro (in-or-io out-or-err err-or-pid pid-or-nil) - #+ecl (stream code process) - #+lispworks (io-or-pid err-or-nil #-lispworks7+ pid-or-nil) - #+mkcl (stream process code) - #.`(apply - #+abcl 'sys:run-program - #+allegro ,@'('excl:run-shell-command - #+os-unix (coerce (cons program command) 'vector) - #+os-windows command) - #+clozure 'ccl:run-program - #+(or cmucl ecl scl) 'ext:run-program - #+lispworks ,@'('system:run-shell-command `("/usr/bin/env" ,@command)) ; full path needed - #+mkcl 'mk-ext:run-program - #+sbcl 'sb-ext:run-program - #+(or abcl clozure cmucl ecl mkcl sbcl) ,@'(program arguments) - #+(and (or ecl sbcl) os-windows) ,@'(:escape-arguments escape-arguments) - :input input :if-input-does-not-exist :error - :output output :if-output-exists :append - ,(or #+(or allegro lispworks) :error-output :error) error-output - ,(or #+(or allegro lispworks) :if-error-output-exists :if-error-exists) :append - :wait nil :element-type element-type :external-format external-format - :allow-other-keys t - #+allegro ,@`(:directory directory - #+os-windows ,@'(:show-window (if interactive nil :hide))) - #+lispworks ,@'(:save-exit-status t) - #+mkcl ,@'(:directory (native-namestring directory)) - #-sbcl keys ;; on SBCL, don't pass :directory nil but remove it from the keys - #+sbcl ,@'(:search t (if directory keys (remove-plist-key :directory keys))))) - (labels ((prop (key value) (setf (slot-value process-info key) value))) - #+allegro - (cond - (separate-streams - (prop 'process pid-or-nil) - (when (eq input :stream) (prop 'input-stream in-or-io)) - (when (eq output :stream) (prop 'output-stream out-or-err)) - (when (eq error-output :stream) (prop 'error-stream err-or-pid))) - (t - (prop 'process err-or-pid) - (ecase (+ (if (eq input :stream) 1 0) (if (eq output :stream) 2 0)) - (0) - (1 (prop 'input-stream in-or-io)) - (2 (prop 'output-stream in-or-io)) - (3 (prop 'bidir-stream in-or-io))) - (when (eq error-output :stream) - (prop 'error-stream out-or-err)))) - #+(or abcl clozure cmucl sbcl scl) - (progn - (prop 'process process) - (when (eq input :stream) - (nest - (prop 'input-stream) - #+abcl (symbol-call :sys :process-input) - #+clozure (ccl:external-process-input-stream) - #+(or cmucl scl) (ext:process-input) - #+sbcl (sb-ext:process-input) - process)) - (when (eq output :stream) - (nest - (prop 'output-stream) - #+abcl (symbol-call :sys :process-output) - #+clozure (ccl:external-process-output-stream) - #+(or cmucl scl) (ext:process-output) - #+sbcl (sb-ext:process-output) - process)) - (when (eq error-output :stream) - (nest - (prop 'error-output-stream) - #+abcl (symbol-call :sys :process-error) - #+clozure (ccl:external-process-error-stream) - #+(or cmucl scl) (ext:process-error) - #+sbcl (sb-ext:process-error) - process))) - #+(or ecl mkcl) - (let ((mode (+ (if (eq input :stream) 1 0) (if (eq output :stream) 2 0)))) - code ;; ignore - (unless (zerop mode) - (prop (case mode (1 'input-stream) (2 'output-stream) (3 'bidir-stream)) stream)) - (prop 'process process)) - #+lispworks - (let ((mode (+ (if (eq input :stream) 1 0) (if (eq output :stream) 2 0)))) - (cond - ((or (plusp mode) (eq error-output :stream)) - (prop 'process #+lispworks7+ io-or-pid #-lispworks7+ pid-or-nil) - (when (plusp mode) - (prop (ecase mode - (1 'input-stream) - (2 'output-stream) - (3 'bidir-stream)) io-or-pid)) - (when (eq error-output :stream) - (prop 'error-stream err-or-nil))) - ;; lispworks6 returns (pid), lispworks7 returns (io err pid) of which we keep io - (t (prop 'process io-or-pid))))) - process-info))) - -;;;; ------------------------------------------------------------------------- -;;;; run-program initially from xcvb-driver. - -(uiop/package:define-package :uiop/run-program - (:nicknames :asdf/run-program) ; OBSOLETE. Used by cl-sane, printv. - (:use :uiop/common-lisp :uiop/package :uiop/utility :uiop/version - :uiop/pathname :uiop/os :uiop/filesystem :uiop/stream :uiop/launch-program) - (:export - #:run-program - #:slurp-input-stream #:vomit-output-stream - #:subprocess-error - #:subprocess-error-code #:subprocess-error-command #:subprocess-error-process) - (:import-from :uiop/launch-program - #:%handle-if-does-not-exist #:%handle-if-exists #:%interactivep - #:input-stream #:output-stream #:error-output-stream)) -(in-package :uiop/run-program) - -;;;; Slurping a stream, typically the output of another program -(with-upgradability () - (defun call-stream-processor (fun processor stream) - "Given FUN (typically SLURP-INPUT-STREAM or VOMIT-OUTPUT-STREAM, -a PROCESSOR specification which is either an atom or a list specifying -a processor an keyword arguments, call the specified processor with -the given STREAM as input" - (if (consp processor) - (apply fun (first processor) stream (rest processor)) - (funcall fun processor stream))) - - (defgeneric slurp-input-stream (processor input-stream &key) - (:documentation - "SLURP-INPUT-STREAM is a generic function with two positional arguments -PROCESSOR and INPUT-STREAM and additional keyword arguments, that consumes (slurps) -the contents of the INPUT-STREAM and processes them according to a method -specified by PROCESSOR. - -Built-in methods include the following: -* if PROCESSOR is a function, it is called with the INPUT-STREAM as its argument -* if PROCESSOR is a list, its first element should be a function. It will be applied to a cons of the - INPUT-STREAM and the rest of the list. That is (x . y) will be treated as - \(APPLY x y\) -* if PROCESSOR is an output-stream, the contents of INPUT-STREAM is copied to the output-stream, - per copy-stream-to-stream, with appropriate keyword arguments. -* if PROCESSOR is the symbol CL:STRING or the keyword :STRING, then the contents of INPUT-STREAM - are returned as a string, as per SLURP-STREAM-STRING. -* if PROCESSOR is the keyword :LINES then the INPUT-STREAM will be handled by SLURP-STREAM-LINES. -* if PROCESSOR is the keyword :LINE then the INPUT-STREAM will be handled by SLURP-STREAM-LINE. -* if PROCESSOR is the keyword :FORMS then the INPUT-STREAM will be handled by SLURP-STREAM-FORMS. -* if PROCESSOR is the keyword :FORM then the INPUT-STREAM will be handled by SLURP-STREAM-FORM. -* if PROCESSOR is T, it is treated the same as *standard-output*. If it is NIL, NIL is returned. - -Programmers are encouraged to define their own methods for this generic function.")) - - #-genera - (defmethod slurp-input-stream ((function function) input-stream &key) - (funcall function input-stream)) - - (defmethod slurp-input-stream ((list cons) input-stream &key) - (apply (first list) input-stream (rest list))) - - #-genera - (defmethod slurp-input-stream ((output-stream stream) input-stream - &key linewise prefix (element-type 'character) buffer-size) - (copy-stream-to-stream - input-stream output-stream - :linewise linewise :prefix prefix :element-type element-type :buffer-size buffer-size)) - - (defmethod slurp-input-stream ((x (eql 'string)) stream &key stripped) - (slurp-stream-string stream :stripped stripped)) - - (defmethod slurp-input-stream ((x (eql :string)) stream &key stripped) - (slurp-stream-string stream :stripped stripped)) - - (defmethod slurp-input-stream ((x (eql :lines)) stream &key count) - (slurp-stream-lines stream :count count)) - - (defmethod slurp-input-stream ((x (eql :line)) stream &key (at 0)) - (slurp-stream-line stream :at at)) - - (defmethod slurp-input-stream ((x (eql :forms)) stream &key count) - (slurp-stream-forms stream :count count)) - - (defmethod slurp-input-stream ((x (eql :form)) stream &key (at 0)) - (slurp-stream-form stream :at at)) - - (defmethod slurp-input-stream ((x (eql t)) stream &rest keys &key &allow-other-keys) - (apply 'slurp-input-stream *standard-output* stream keys)) - - (defmethod slurp-input-stream ((x null) (stream t) &key) - nil) - - (defmethod slurp-input-stream ((pathname pathname) input - &key - (element-type *default-stream-element-type*) - (external-format *utf-8-external-format*) - (if-exists :rename-and-delete) - (if-does-not-exist :create) - buffer-size - linewise) - (with-output-file (output pathname - :element-type element-type - :external-format external-format - :if-exists if-exists - :if-does-not-exist if-does-not-exist) - (copy-stream-to-stream - input output - :element-type element-type :buffer-size buffer-size :linewise linewise))) - - (defmethod slurp-input-stream (x stream - &key linewise prefix (element-type 'character) buffer-size) - (declare (ignorable stream linewise prefix element-type buffer-size)) - (cond - #+genera - ((functionp x) (funcall x stream)) - #+genera - ((output-stream-p x) - (copy-stream-to-stream - stream x - :linewise linewise :prefix prefix :element-type element-type :buffer-size buffer-size)) - (t - (parameter-error "Invalid ~S destination ~S" 'slurp-input-stream x))))) - -;;;; Vomiting a stream, typically into the input of another program. -(with-upgradability () - (defgeneric vomit-output-stream (processor output-stream &key) - (:documentation - "VOMIT-OUTPUT-STREAM is a generic function with two positional arguments -PROCESSOR and OUTPUT-STREAM and additional keyword arguments, that produces (vomits) -some content onto the OUTPUT-STREAM, according to a method specified by PROCESSOR. - -Built-in methods include the following: -* if PROCESSOR is a function, it is called with the OUTPUT-STREAM as its argument -* if PROCESSOR is a list, its first element should be a function. - It will be applied to a cons of the OUTPUT-STREAM and the rest of the list. - That is (x . y) will be treated as \(APPLY x y\) -* if PROCESSOR is an input-stream, its contents will be copied the OUTPUT-STREAM, - per copy-stream-to-stream, with appropriate keyword arguments. -* if PROCESSOR is a string, its contents will be printed to the OUTPUT-STREAM. -* if PROCESSOR is T, it is treated the same as *standard-input*. If it is NIL, nothing is done. - -Programmers are encouraged to define their own methods for this generic function.")) - - #-genera - (defmethod vomit-output-stream ((function function) output-stream &key) - (funcall function output-stream)) - - (defmethod vomit-output-stream ((list cons) output-stream &key) - (apply (first list) output-stream (rest list))) - - #-genera - (defmethod vomit-output-stream ((input-stream stream) output-stream - &key linewise prefix (element-type 'character) buffer-size) - (copy-stream-to-stream - input-stream output-stream - :linewise linewise :prefix prefix :element-type element-type :buffer-size buffer-size)) - - (defmethod vomit-output-stream ((x string) stream &key fresh-line terpri) - (princ x stream) - (when fresh-line (fresh-line stream)) - (when terpri (terpri stream)) - (values)) - - (defmethod vomit-output-stream ((x (eql t)) stream &rest keys &key &allow-other-keys) - (apply 'vomit-output-stream *standard-input* stream keys)) - - (defmethod vomit-output-stream ((x null) (stream t) &key) - (values)) - - (defmethod vomit-output-stream ((pathname pathname) input - &key - (element-type *default-stream-element-type*) - (external-format *utf-8-external-format*) - (if-exists :rename-and-delete) - (if-does-not-exist :create) - buffer-size - linewise) - (with-output-file (output pathname - :element-type element-type - :external-format external-format - :if-exists if-exists - :if-does-not-exist if-does-not-exist) - (copy-stream-to-stream - input output - :element-type element-type :buffer-size buffer-size :linewise linewise))) - - (defmethod vomit-output-stream (x stream - &key linewise prefix (element-type 'character) buffer-size) - (declare (ignorable stream linewise prefix element-type buffer-size)) - (cond - #+genera - ((functionp x) (funcall x stream)) - #+genera - ((input-stream-p x) - (copy-stream-to-stream - x stream - :linewise linewise :prefix prefix :element-type element-type :buffer-size buffer-size)) - (t - (parameter-error "Invalid ~S source ~S" 'vomit-output-stream x))))) - - -;;;; Run-program: synchronously run a program in a subprocess, handling input, output and error-output. -(with-upgradability () - (define-condition subprocess-error (error) - ((code :initform nil :initarg :code :reader subprocess-error-code) - (command :initform nil :initarg :command :reader subprocess-error-command) - (process :initform nil :initarg :process :reader subprocess-error-process)) - (:report (lambda (condition stream) - (format stream "Subprocess ~@[~S~% ~]~@[with command ~S~% ~]exited with error~@[ code ~D~]" - (subprocess-error-process condition) - (subprocess-error-command condition) - (subprocess-error-code condition))))) - - (defun %check-result (exit-code &key command process ignore-error-status) - (unless ignore-error-status - (unless (eql exit-code 0) - (cerror "IGNORE-ERROR-STATUS" - 'subprocess-error :command command :code exit-code :process process))) - exit-code) - - (defun %active-io-specifier-p (specifier) - "Determines whether a run-program I/O specifier requires Lisp-side processing -via SLURP-INPUT-STREAM or VOMIT-OUTPUT-STREAM (return T), -or whether it's already taken care of by the implementation's underlying run-program." - (not (typep specifier '(or null string pathname (member :interactive :output) - #+(or cmucl (and sbcl os-unix) scl) (or stream (eql t)) - #+lispworks file-stream)))) - - (defun %run-program (command &rest keys &key &allow-other-keys) - "DEPRECATED. Use LAUNCH-PROGRAM instead." - (apply 'launch-program command keys)) - - (defun %call-with-program-io (gf tval stream-easy-p fun direction spec activep returner - &key - (element-type #-clozure *default-stream-element-type* #+clozure 'character) - (external-format *utf-8-external-format*) &allow-other-keys) - ;; handle redirection for run-program and system - ;; SPEC is the specification for the subprocess's input or output or error-output - ;; TVAL is the value used if the spec is T - ;; GF is the generic function to call to handle arbitrary values of SPEC - ;; STREAM-EASY-P is T if we're going to use a RUN-PROGRAM that copies streams in the background - ;; (it's only meaningful on CMUCL, SBCL, SCL that actually do it) - ;; DIRECTION is :INPUT, :OUTPUT or :ERROR-OUTPUT for the direction of this io argument - ;; FUN is a function of the new reduced spec and an activity function to call with a stream - ;; when the subprocess is active and communicating through that stream. - ;; ACTIVEP is a boolean true if we will get to run code while the process is running - ;; ELEMENT-TYPE and EXTERNAL-FORMAT control what kind of temporary file we may open. - ;; RETURNER is a function called with the value of the activity. - ;; --- TODO (fare@tunes.org): handle if-output-exists and such when doing it the hard way. - (declare (ignorable stream-easy-p)) - (let* ((actual-spec (if (eq spec t) tval spec)) - (activity-spec (if (eq actual-spec :output) - (ecase direction - ((:input :output) - (parameter-error "~S does not allow ~S as a ~S spec" - 'run-program :output direction)) - ((:error-output) - nil)) - actual-spec))) - (labels ((activity (stream) - (call-function returner (call-stream-processor gf activity-spec stream))) - (easy-case () - (funcall fun actual-spec nil)) - (hard-case () - (if activep - (funcall fun :stream #'activity) - (with-temporary-file (:pathname tmp) - (ecase direction - (:input - (with-output-file (s tmp :if-exists :overwrite - :external-format external-format - :element-type element-type) - (activity s)) - (funcall fun tmp nil)) - ((:output :error-output) - (multiple-value-prog1 (funcall fun tmp nil) - (with-input-file (s tmp - :external-format external-format - :element-type element-type) - (activity s))))))))) - (typecase activity-spec - ((or null string pathname (eql :interactive)) - (easy-case)) - #+(or cmucl (and sbcl os-unix) scl) ;; streams are only easy on implementations that try very hard - (stream - (if stream-easy-p (easy-case) (hard-case))) - (t - (hard-case)))))) - - (defmacro place-setter (place) - (when place - (let ((value (gensym))) - `#'(lambda (,value) (setf ,place ,value))))) - - (defmacro with-program-input (((reduced-input-var - &optional (input-activity-var (gensym) iavp)) - input-form &key setf stream-easy-p active keys) &body body) - `(apply '%call-with-program-io 'vomit-output-stream *standard-input* ,stream-easy-p - #'(lambda (,reduced-input-var ,input-activity-var) - ,@(unless iavp `((declare (ignore ,input-activity-var)))) - ,@body) - :input ,input-form ,active (place-setter ,setf) ,keys)) - - (defmacro with-program-output (((reduced-output-var - &optional (output-activity-var (gensym) oavp)) - output-form &key setf stream-easy-p active keys) &body body) - `(apply '%call-with-program-io 'slurp-input-stream *standard-output* ,stream-easy-p - #'(lambda (,reduced-output-var ,output-activity-var) - ,@(unless oavp `((declare (ignore ,output-activity-var)))) - ,@body) - :output ,output-form ,active (place-setter ,setf) ,keys)) - - (defmacro with-program-error-output (((reduced-error-output-var - &optional (error-output-activity-var (gensym) eoavp)) - error-output-form &key setf stream-easy-p active keys) - &body body) - `(apply '%call-with-program-io 'slurp-input-stream *error-output* ,stream-easy-p - #'(lambda (,reduced-error-output-var ,error-output-activity-var) - ,@(unless eoavp `((declare (ignore ,error-output-activity-var)))) - ,@body) - :error-output ,error-output-form ,active (place-setter ,setf) ,keys)) - - (defun %use-launch-program (command &rest keys - &key input output error-output ignore-error-status &allow-other-keys) - ;; helper for RUN-PROGRAM when using LAUNCH-PROGRAM - #+(or cormanlisp gcl (and lispworks os-windows) mcl xcl) - (progn - command keys input output error-output ignore-error-status ;; ignore - (not-implemented-error '%use-launch-program)) - (when (member :stream (list input output error-output)) - (parameter-error "~S: ~S is not allowed as synchronous I/O redirection argument" - 'run-program :stream)) - (let* ((active-input-p (%active-io-specifier-p input)) - (active-output-p (%active-io-specifier-p output)) - (active-error-output-p (%active-io-specifier-p error-output)) - (activity - (cond - (active-output-p :output) - (active-input-p :input) - (active-error-output-p :error-output) - (t nil))) - output-result error-output-result exit-code process-info) - (with-program-output ((reduced-output output-activity) - output :keys keys :setf output-result - :stream-easy-p t :active (eq activity :output)) - (with-program-error-output ((reduced-error-output error-output-activity) - error-output :keys keys :setf error-output-result - :stream-easy-p t :active (eq activity :error-output)) - (with-program-input ((reduced-input input-activity) - input :keys keys - :stream-easy-p t :active (eq activity :input)) - (setf process-info - (apply 'launch-program command - :input reduced-input :output reduced-output - :error-output (if (eq error-output :output) :output reduced-error-output) - keys)) - (labels ((get-stream (stream-name &optional fallbackp) - (or (slot-value process-info stream-name) - (when fallbackp - (slot-value process-info 'bidir-stream)))) - (run-activity (activity stream-name &optional fallbackp) - (if-let (stream (get-stream stream-name fallbackp)) - (funcall activity stream) - (error 'subprocess-error - :code `(:missing ,stream-name) - :command command :process process-info)))) - (unwind-protect - (ecase activity - ((nil)) - (:input (run-activity input-activity 'input-stream t)) - (:output (run-activity output-activity 'output-stream t)) - (:error-output (run-activity error-output-activity 'error-output-stream))) - (close-streams process-info) - (setf exit-code (wait-process process-info))))))) - (%check-result exit-code - :command command :process process-info - :ignore-error-status ignore-error-status) - (values output-result error-output-result exit-code))) - - (defun %normalize-system-command (command) ;; helper for %USE-SYSTEM - (etypecase command - (string command) - (list (escape-shell-command - (os-cond - ((os-unix-p) (cons "exec" command)) - (t command)))))) - - (defun %redirected-system-command (command in out err directory) ;; helper for %USE-SYSTEM - (flet ((redirect (spec operator) - (let ((pathname - (typecase spec - (null (null-device-pathname)) - (string (parse-native-namestring spec)) - (pathname spec) - ((eql :output) - (unless (equal operator " 2>>") - (parameter-error "~S: only the ~S argument can be ~S" - 'run-program :error-output :output)) - (return-from redirect '(" 2>&1")))))) - (when pathname - (list operator " " - (escape-shell-token (native-namestring pathname))))))) - (let* ((redirections (append (redirect in " <") (redirect out " >>") (redirect err " 2>>"))) - (normalized (%normalize-system-command command)) - (directory (or directory #+(or abcl xcl) (getcwd))) - (chdir (when directory - (let ((dir-arg (escape-shell-token (native-namestring directory)))) - (os-cond - ((os-unix-p) `("cd " ,dir-arg " ; ")) - ((os-windows-p) `("cd /d " ,dir-arg " & "))))))) - (reduce/strcat - (os-cond - ((os-unix-p) `(,@(when redirections `("exec " ,@redirections " ; ")) ,@chdir ,normalized)) - ((os-windows-p) `(,@chdir ,@redirections " " ,normalized))))))) - - (defun %system (command &rest keys &key directory - input (if-input-does-not-exist :error) - output (if-output-exists :supersede) - error-output (if-error-output-exists :supersede) - &allow-other-keys) - "A portable abstraction of a low-level call to libc's system()." - (declare (ignorable keys directory input if-input-does-not-exist output - if-output-exists error-output if-error-output-exists)) - #+(or abcl allegro clozure cmucl ecl (and lispworks os-unix) mkcl sbcl scl) - (let (#+(or abcl ecl mkcl) - (version (parse-version - #-abcl - (lisp-implementation-version) - #+abcl - (second (split-string (implementation-identifier) :separator '(#\-)))))) - (nest - #+abcl (unless (lexicographic< '< version '(1 4 0))) - #+ecl (unless (lexicographic<= '< version '(16 0 0))) - #+mkcl (unless (lexicographic<= '< version '(1 1 9))) - (return-from %system - (wait-process - (apply 'launch-program (%normalize-system-command command) keys))))) - #+(or abcl clasp clisp cormanlisp ecl gcl genera (and lispworks os-windows) mkcl xcl) - (let ((%command (%redirected-system-command command input output error-output directory))) - ;; see comments for these functions - (%handle-if-does-not-exist input if-input-does-not-exist) - (%handle-if-exists output if-output-exists) - (%handle-if-exists error-output if-error-output-exists) - #+abcl (ext:run-shell-command %command) - #+(or clasp ecl) (let ((*standard-input* *stdin*) - (*standard-output* *stdout*) - (*error-output* *stderr*)) - (ext:system %command)) - #+clisp - (let ((raw-exit-code - (or - #.`(#+os-windows ,@'(ext:run-shell-command %command) - #+os-unix ,@'(ext:run-program "/bin/sh" :arguments `("-c" ,%command)) - :wait t :input :terminal :output :terminal) - 0))) - (if (minusp raw-exit-code) - (- 128 raw-exit-code) - raw-exit-code)) - #+cormanlisp (win32:system %command) - #+gcl (system:system %command) - #+genera (not-implemented-error '%system) - #+(and lispworks os-windows) - (system:call-system %command :current-directory directory :wait t) - #+mcl (ccl::with-cstrs ((%%command %command)) (_system %%command)) - #+mkcl (mkcl:system %command) - #+xcl (system:%run-shell-command %command))) - - (defun %use-system (command &rest keys - &key input output error-output ignore-error-status &allow-other-keys) - ;; helper for RUN-PROGRAM when using %system - (let (output-result error-output-result exit-code) - (with-program-output ((reduced-output) - output :keys keys :setf output-result) - (with-program-error-output ((reduced-error-output) - error-output :keys keys :setf error-output-result) - (with-program-input ((reduced-input) input :keys keys) - (setf exit-code (apply '%system command - :input reduced-input :output reduced-output - :error-output reduced-error-output keys))))) - (%check-result exit-code - :command command - :ignore-error-status ignore-error-status) - (values output-result error-output-result exit-code))) - - (defun run-program (command &rest keys - &key ignore-error-status (force-shell nil force-shell-suppliedp) - input (if-input-does-not-exist :error) - output (if-output-exists :supersede) - error-output (if-error-output-exists :supersede) - (element-type #-clozure *default-stream-element-type* #+clozure 'character) - (external-format *utf-8-external-format*) - &allow-other-keys) - "Run program specified by COMMAND, -either a list of strings specifying a program and list of arguments, -or a string specifying a shell command (/bin/sh on Unix, CMD.EXE on Windows); -_synchronously_ process its output as specified and return the processing results -when the program and its output processing are complete. - -Always call a shell (rather than directly execute the command when possible) -if FORCE-SHELL is specified. Similarly, never call a shell if FORCE-SHELL is -specified to be NIL. - -Signal a continuable SUBPROCESS-ERROR if the process wasn't successful (exit-code 0), -unless IGNORE-ERROR-STATUS is specified. - -If OUTPUT is a pathname, a string designating a pathname, or NIL (the default) -designating the null device, the file at that path is used as output. -If it's :INTERACTIVE, output is inherited from the current process; -beware that this may be different from your *STANDARD-OUTPUT*, -and under SLIME will be on your *inferior-lisp* buffer. -If it's T, output goes to your current *STANDARD-OUTPUT* stream. -Otherwise, OUTPUT should be a value that is a suitable first argument to -SLURP-INPUT-STREAM (qv.), or a list of such a value and keyword arguments. -In this case, RUN-PROGRAM will create a temporary stream for the program output; -the program output, in that stream, will be processed by a call to SLURP-INPUT-STREAM, -using OUTPUT as the first argument (or the first element of OUTPUT, and the rest as keywords). -The primary value resulting from that call (or NIL if no call was needed) -will be the first value returned by RUN-PROGRAM. -E.g., using :OUTPUT :STRING will have it return the entire output stream as a string. -And using :OUTPUT '(:STRING :STRIPPED T) will have it return the same string -stripped of any ending newline. - -IF-OUTPUT-EXISTS, which is only meaningful if OUTPUT is a string or a -pathname, can take the values :ERROR, :APPEND, and :SUPERSEDE (the -default). The meaning of these values and their effect on the case -where OUTPUT does not exist, is analogous to the IF-EXISTS parameter -to OPEN with :DIRECTION :OUTPUT. - -ERROR-OUTPUT is similar to OUTPUT, except that the resulting value is returned -as the second value of RUN-PROGRAM. T designates the *ERROR-OUTPUT*. -Also :OUTPUT means redirecting the error output to the output stream, -in which case NIL is returned. - -IF-ERROR-OUTPUT-EXISTS is similar to IF-OUTPUT-EXIST, except that it -affects ERROR-OUTPUT rather than OUTPUT. - -INPUT is similar to OUTPUT, except that VOMIT-OUTPUT-STREAM is used, -no value is returned, and T designates the *STANDARD-INPUT*. - -IF-INPUT-DOES-NOT-EXIST, which is only meaningful if INPUT is a string -or a pathname, can take the values :CREATE and :ERROR (the -default). The meaning of these values is analogous to the -IF-DOES-NOT-EXIST parameter to OPEN with :DIRECTION :INPUT. - -ELEMENT-TYPE and EXTERNAL-FORMAT are passed on -to your Lisp implementation, when applicable, for creation of the output stream. - -One and only one of the stream slurping or vomiting may or may not happen -in parallel in parallel with the subprocess, -depending on options and implementation, -and with priority being given to output processing. -Other streams are completely produced or consumed -before or after the subprocess is spawned, using temporary files. - -RUN-PROGRAM returns 3 values: -0- the result of the OUTPUT slurping if any, or NIL -1- the result of the ERROR-OUTPUT slurping if any, or NIL -2- either 0 if the subprocess exited with success status, -or an indication of failure via the EXIT-CODE of the process" - (declare (ignorable input output error-output if-input-does-not-exist if-output-exists - if-error-output-exists element-type external-format ignore-error-status)) - #-(or abcl allegro clasp clisp clozure cmucl cormanlisp ecl gcl lispworks mcl mkcl sbcl scl xcl) - (not-implemented-error 'run-program) - (apply (if (or force-shell - ;; Per doc string, set FORCE-SHELL to T if we get command as a string. - ;; But don't override user's specified preference. [2015/06/29:rpg] - (and (stringp command) - (or (not force-shell-suppliedp) - #-(or allegro clisp clozure sbcl) (os-cond ((os-windows-p) t)))) - #+(or clasp clisp cormanlisp gcl (and lispworks os-windows) mcl xcl) t - ;; A race condition in ECL <= 16.0.0 prevents using ext:run-program - #+ecl #.(if-let (ver (parse-version (lisp-implementation-version))) - (lexicographic<= '< ver '(16 0 0))) - #+(and lispworks os-unix) (%interactivep input output error-output)) - '%use-system '%use-launch-program) - command keys))) - -;;;; --------------------------------------------------------------------------- -;;;; Generic support for configuration files - -(uiop/package:define-package :uiop/configuration - (:recycle :uiop/configuration :asdf/configuration) ;; necessary to upgrade from 2.27. - (:use :uiop/common-lisp :uiop/utility - :uiop/os :uiop/pathname :uiop/filesystem :uiop/stream :uiop/image :uiop/lisp-build) - (:export - #:user-configuration-directories #:system-configuration-directories ;; implemented in backward-driver - #:in-first-directory #:in-user-configuration-directory #:in-system-configuration-directory ;; idem - #:get-folder-path - #:xdg-data-home #:xdg-config-home #:xdg-data-dirs #:xdg-config-dirs - #:xdg-cache-home #:xdg-runtime-dir #:system-config-pathnames - #:filter-pathname-set #:xdg-data-pathnames #:xdg-config-pathnames - #:find-preferred-file #:xdg-data-pathname #:xdg-config-pathname - #:validate-configuration-form #:validate-configuration-file #:validate-configuration-directory - #:configuration-inheritance-directive-p - #:report-invalid-form #:invalid-configuration #:*ignored-configuration-form* #:*user-cache* - #:*clear-configuration-hook* #:clear-configuration #:register-clear-configuration-hook - #:resolve-location #:location-designator-p #:location-function-p #:*here-directory* - #:resolve-relative-location #:resolve-absolute-location #:upgrade-configuration)) -(in-package :uiop/configuration) - -(with-upgradability () - (define-condition invalid-configuration () - ((form :reader condition-form :initarg :form) - (location :reader condition-location :initarg :location) - (format :reader condition-format :initarg :format) - (arguments :reader condition-arguments :initarg :arguments :initform nil)) - (:report (lambda (c s) - (format s (compatfmt "~@<~? (will be skipped)~@:>") - (condition-format c) - (list* (condition-form c) (condition-location c) - (condition-arguments c)))))) - - (defun configuration-inheritance-directive-p (x) - "Is X a configuration inheritance directive?" - (let ((kw '(:inherit-configuration :ignore-inherited-configuration))) - (or (member x kw) - (and (length=n-p x 1) (member (car x) kw))))) - - (defun report-invalid-form (reporter &rest args) - "Report an invalid form according to REPORTER and various ARGS" - (etypecase reporter - (null - (apply 'error 'invalid-configuration args)) - (function - (apply reporter args)) - ((or symbol string) - (apply 'error reporter args)) - (cons - (apply 'apply (append reporter args))))) - - (defvar *ignored-configuration-form* nil - "Have configuration forms been ignored while parsing the configuration?") - - (defun validate-configuration-form (form tag directive-validator - &key location invalid-form-reporter) - "Validate a configuration FORM. By default it will raise an error if the -FORM is not valid. Otherwise it will return the validated form. - Arguments control the behavior: - The configuration FORM should be of the form (TAG . ) - Each element of will be checked by first seeing if it's a configuration inheritance -directive (see CONFIGURATION-INHERITANCE-DIRECTIVE-P) then invoking DIRECTIVE-VALIDATOR -on it. - In the event of an invalid form, INVALID-FORM-REPORTER will be used to control -reporting (see REPORT-INVALID-FORM) with LOCATION providing information about where -the configuration form appeared." - (unless (and (consp form) (eq (car form) tag)) - (setf *ignored-configuration-form* t) - (report-invalid-form invalid-form-reporter :form form :location location) - (return-from validate-configuration-form nil)) - (loop :with inherit = 0 :with ignore-invalid-p = nil :with x = (list tag) - :for directive :in (cdr form) - :when (cond - ((configuration-inheritance-directive-p directive) - (incf inherit) t) - ((eq directive :ignore-invalid-entries) - (setf ignore-invalid-p t) t) - ((funcall directive-validator directive) - t) - (ignore-invalid-p - nil) - (t - (setf *ignored-configuration-form* t) - (report-invalid-form invalid-form-reporter :form directive :location location) - nil)) - :do (push directive x) - :finally - (unless (= inherit 1) - (report-invalid-form invalid-form-reporter - :form form :location location - ;; we throw away the form and location arguments, hence the ~2* - ;; this is necessary because of the report in INVALID-CONFIGURATION - :format (compatfmt "~@") - :arguments '(:inherit-configuration :ignore-inherited-configuration))) - (return (nreverse x)))) - - (defun validate-configuration-file (file validator &key description) - "Validate a configuration FILE. The configuration file should have only one s-expression -in it, which will be checked with the VALIDATOR FORM. DESCRIPTION argument used for error -reporting." - (let ((forms (read-file-forms file))) - (unless (length=n-p forms 1) - (error (compatfmt "~@~%") - description forms)) - (funcall validator (car forms) :location file))) - - (defun validate-configuration-directory (directory tag validator &key invalid-form-reporter) - "Map the VALIDATOR across the .conf files in DIRECTORY, the TAG will -be applied to the results to yield a configuration form. Current -values of TAG include :source-registry and :output-translations." - (let ((files (sort (ignore-errors ;; SORT w/o COPY-LIST is OK: DIRECTORY returns a fresh list - (remove-if - 'hidden-pathname-p - (directory* (make-pathname :name *wild* :type "conf" :defaults directory)))) - #'string< :key #'namestring))) - `(,tag - ,@(loop :for file :in files :append - (loop :with ignore-invalid-p = nil - :for form :in (read-file-forms file) - :when (eq form :ignore-invalid-entries) - :do (setf ignore-invalid-p t) - :else - :when (funcall validator form) - :collect form - :else - :when ignore-invalid-p - :do (setf *ignored-configuration-form* t) - :else - :do (report-invalid-form invalid-form-reporter :form form :location file))) - :inherit-configuration))) - - (defun resolve-relative-location (x &key ensure-directory wilden) - "Given a designator X for an relative location, resolve it to a pathname." - (ensure-pathname - (etypecase x - (null nil) - (pathname x) - (string (parse-unix-namestring - x :ensure-directory ensure-directory)) - (cons - (if (null (cdr x)) - (resolve-relative-location - (car x) :ensure-directory ensure-directory :wilden wilden) - (let* ((car (resolve-relative-location - (car x) :ensure-directory t :wilden nil))) - (merge-pathnames* - (resolve-relative-location - (cdr x) :ensure-directory ensure-directory :wilden wilden) - car)))) - ((eql :*/) *wild-directory*) - ((eql :**/) *wild-inferiors*) - ((eql :*.*.*) *wild-file*) - ((eql :implementation) - (parse-unix-namestring - (implementation-identifier) :ensure-directory t)) - ((eql :implementation-type) - (parse-unix-namestring - (string-downcase (implementation-type)) :ensure-directory t)) - ((eql :hostname) - (parse-unix-namestring (hostname) :ensure-directory t))) - :wilden (and wilden (not (pathnamep x)) (not (member x '(:*/ :**/ :*.*.*)))) - :want-relative t)) - - (defvar *here-directory* nil - "This special variable is bound to the currect directory during calls to -PROCESS-SOURCE-REGISTRY in order that we be able to interpret the :here -directive.") - - (defvar *user-cache* nil - "A specification as per RESOLVE-LOCATION of where the user keeps his FASL cache") - - (defun resolve-absolute-location (x &key ensure-directory wilden) - "Given a designator X for an absolute location, resolve it to a pathname" - (ensure-pathname - (etypecase x - (null nil) - (pathname x) - (string - (let ((p #-mcl (parse-namestring x) - #+mcl (probe-posix x))) - #+mcl (unless p (error "POSIX pathname ~S does not exist" x)) - (if ensure-directory (ensure-directory-pathname p) p))) - (cons - (return-from resolve-absolute-location - (if (null (cdr x)) - (resolve-absolute-location - (car x) :ensure-directory ensure-directory :wilden wilden) - (merge-pathnames* - (resolve-relative-location - (cdr x) :ensure-directory ensure-directory :wilden wilden) - (resolve-absolute-location - (car x) :ensure-directory t :wilden nil))))) - ((eql :root) - ;; special magic! we return a relative pathname, - ;; but what it means to the output-translations is - ;; "relative to the root of the source pathname's host and device". - (return-from resolve-absolute-location - (let ((p (make-pathname :directory '(:relative)))) - (if wilden (wilden p) p)))) - ((eql :home) (user-homedir-pathname)) - ((eql :here) (resolve-absolute-location - (or *here-directory* (pathname-directory-pathname (load-pathname))) - :ensure-directory t :wilden nil)) - ((eql :user-cache) (resolve-absolute-location - *user-cache* :ensure-directory t :wilden nil))) - :wilden (and wilden (not (pathnamep x))) - :resolve-symlinks *resolve-symlinks* - :want-absolute t)) - - ;; Try to override declaration in previous versions of ASDF. - (declaim (ftype (function (t &key (:directory boolean) (:wilden boolean) - (:ensure-directory boolean)) t) resolve-location)) - - (defun* (resolve-location) (x &key ensure-directory wilden directory) - "Resolve location designator X into a PATHNAME" - ;; :directory backward compatibility, until 2014-01-16: accept directory as well as ensure-directory - (loop* :with dirp = (or directory ensure-directory) - :with (first . rest) = (if (atom x) (list x) x) - :with path = (or (resolve-absolute-location - first :ensure-directory (and (or dirp rest) t) - :wilden (and wilden (null rest))) - (return nil)) - :for (element . morep) :on rest - :for dir = (and (or morep dirp) t) - :for wild = (and wilden (not morep)) - :for sub = (merge-pathnames* - (resolve-relative-location - element :ensure-directory dir :wilden wild) - path) - :do (setf path (if (absolute-pathname-p sub) (resolve-symlinks* sub) sub)) - :finally (return path))) - - (defun location-designator-p (x) - "Is X a designator for a location?" - ;; NIL means "skip this entry", or as an output translation, same as translation input. - ;; T means "any input" for a translation, or as output, same as translation input. - (flet ((absolute-component-p (c) - (typep c '(or string pathname - (member :root :home :here :user-cache)))) - (relative-component-p (c) - (typep c '(or string pathname - (member :*/ :**/ :*.*.* :implementation :implementation-type))))) - (or (typep x 'boolean) - (absolute-component-p x) - (and (consp x) (absolute-component-p (first x)) (every #'relative-component-p (rest x)))))) - - (defun location-function-p (x) - "Is X the specification of a location function?" - ;; Location functions are allowed in output translations, and notably used by ABCL for JAR file support. - (and (length=n-p x 2) (eq (car x) :function))) - - (defvar *clear-configuration-hook* '()) - - (defun register-clear-configuration-hook (hook-function &optional call-now-p) - "Register a function to be called when clearing configuration" - (register-hook-function '*clear-configuration-hook* hook-function call-now-p)) - - (defun clear-configuration () - "Call the functions in *CLEAR-CONFIGURATION-HOOK*" - (call-functions *clear-configuration-hook*)) - - (register-image-dump-hook 'clear-configuration) - - (defun upgrade-configuration () - "If a previous version of ASDF failed to read some configuration, try again now." - (when *ignored-configuration-form* - (clear-configuration) - (setf *ignored-configuration-form* nil))) - - - (defun get-folder-path (folder) - "Semi-portable implementation of a subset of LispWorks' sys:get-folder-path, -this function tries to locate the Windows FOLDER for one of -:LOCAL-APPDATA, :APPDATA or :COMMON-APPDATA. - Returns NIL when the folder is not defined (e.g., not on Windows)." - (or #+(and lispworks os-windows) (sys:get-folder-path folder) - ;; read-windows-registry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\AppData - (ecase folder - (:local-appdata (or (getenv-absolute-directory "LOCALAPPDATA") - (subpathname* (get-folder-path :appdata) "Local"))) - (:appdata (getenv-absolute-directory "APPDATA")) - (:common-appdata (or (getenv-absolute-directory "ALLUSERSAPPDATA") - (subpathname* (getenv-absolute-directory "ALLUSERSPROFILE") "Application Data/")))))) - - - ;; Support for the XDG Base Directory Specification - (defun xdg-data-home (&rest more) - "Returns an absolute pathname for the directory containing user-specific data files. -MORE may contain specifications for a subpath relative to this directory: a -subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see -also \"Configuration DSL\"\) in the ASDF manual." - (resolve-absolute-location - `(,(or (getenv-absolute-directory "XDG_DATA_HOME") - (os-cond - ((os-windows-p) (get-folder-path :local-appdata)) - (t (subpathname (user-homedir-pathname) ".local/share/")))) - ,more))) - - (defun xdg-config-home (&rest more) - "Returns a pathname for the directory containing user-specific configuration files. -MORE may contain specifications for a subpath relative to this directory: a -subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see -also \"Configuration DSL\"\) in the ASDF manual." - (resolve-absolute-location - `(,(or (getenv-absolute-directory "XDG_CONFIG_HOME") - (os-cond - ((os-windows-p) (xdg-data-home "config/")) - (t (subpathname (user-homedir-pathname) ".config/")))) - ,more))) - - (defun xdg-data-dirs (&rest more) - "The preference-ordered set of additional paths to search for data files. -Returns a list of absolute directory pathnames. -MORE may contain specifications for a subpath relative to these directories: a -subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see -also \"Configuration DSL\"\) in the ASDF manual." - (mapcar #'(lambda (d) (resolve-location `(,d ,more))) - (or (remove nil (getenv-absolute-directories "XDG_DATA_DIRS")) - (os-cond - ((os-windows-p) (mapcar 'get-folder-path '(:appdata :common-appdata))) - (t (mapcar 'parse-unix-namestring '("/usr/local/share/" "/usr/share/"))))))) - - (defun xdg-config-dirs (&rest more) - "The preference-ordered set of additional base paths to search for configuration files. -Returns a list of absolute directory pathnames. -MORE may contain specifications for a subpath relative to these directories: -subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see -also \"Configuration DSL\"\) in the ASDF manual." - (mapcar #'(lambda (d) (resolve-location `(,d ,more))) - (or (remove nil (getenv-absolute-directories "XDG_CONFIG_DIRS")) - (os-cond - ((os-windows-p) (xdg-data-dirs "config/")) - (t (mapcar 'parse-unix-namestring '("/etc/xdg/"))))))) - - (defun xdg-cache-home (&rest more) - "The base directory relative to which user specific non-essential data files should be stored. -Returns an absolute directory pathname. -MORE may contain specifications for a subpath relative to this directory: a -subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see -also \"Configuration DSL\"\) in the ASDF manual." - (resolve-absolute-location - `(,(or (getenv-absolute-directory "XDG_CACHE_HOME") - (os-cond - ((os-windows-p) (xdg-data-home "cache/")) - (t (subpathname* (user-homedir-pathname) ".cache/")))) - ,more))) - - (defun xdg-runtime-dir (&rest more) - "Pathname for user-specific non-essential runtime files and other file objects, -such as sockets, named pipes, etc. -Returns an absolute directory pathname. -MORE may contain specifications for a subpath relative to this directory: a -subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see -also \"Configuration DSL\"\) in the ASDF manual." - ;; The XDG spec says that if not provided by the login system, the application should - ;; issue a warning and provide a replacement. UIOP is not equipped to do that and returns NIL. - (resolve-absolute-location `(,(getenv-absolute-directory "XDG_RUNTIME_DIR") ,more))) - - ;;; NOTE: modified the docstring because "system user configuration - ;;; directories" seems self-contradictory. I'm not sure my wording is right. - (defun system-config-pathnames (&rest more) - "Return a list of directories where are stored the system's default user configuration information. -MORE may contain specifications for a subpath relative to these directories: a -subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see -also \"Configuration DSL\"\) in the ASDF manual." - (declare (ignorable more)) - (os-cond - ((os-unix-p) (list (resolve-absolute-location `(,(parse-unix-namestring "/etc/") ,more)))))) - - (defun filter-pathname-set (dirs) - "Parse strings as unix namestrings and remove duplicates and non absolute-pathnames in a list." - (remove-duplicates (remove-if-not #'absolute-pathname-p dirs) :from-end t :test 'equal)) - - (defun xdg-data-pathnames (&rest more) - "Return a list of absolute pathnames for application data directories. With APP, -returns directory for data for that application, without APP, returns the set of directories -for storing all application configurations. -MORE may contain specifications for a subpath relative to these directories: a -subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see -also \"Configuration DSL\"\) in the ASDF manual." - (filter-pathname-set - `(,(xdg-data-home more) - ,@(xdg-data-dirs more)))) - - (defun xdg-config-pathnames (&rest more) - "Return a list of pathnames for application configuration. -MORE may contain specifications for a subpath relative to these directories: a -subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see -also \"Configuration DSL\"\) in the ASDF manual." - (filter-pathname-set - `(,(xdg-config-home more) - ,@(xdg-config-dirs more)))) - - (defun find-preferred-file (files &key (direction :input)) - "Find first file in the list of FILES that exists (for direction :input or :probe) -or just the first one (for direction :output or :io). - Note that when we say \"file\" here, the files in question may be directories." - (find-if (ecase direction ((:probe :input) 'probe-file*) ((:output :io) 'identity)) files)) - - (defun xdg-data-pathname (&optional more (direction :input)) - (find-preferred-file (xdg-data-pathnames more) :direction direction)) - - (defun xdg-config-pathname (&optional more (direction :input)) - (find-preferred-file (xdg-config-pathnames more) :direction direction)) - - (defun compute-user-cache () - "Compute (and return) the location of the default user-cache for translate-output -objects. Side-effects for cached file location computation." - (setf *user-cache* (xdg-cache-home "common-lisp" :implementation))) - (register-image-restore-hook 'compute-user-cache)) -;;; ------------------------------------------------------------------------- -;;; Hacks for backward-compatibility with older versions of UIOP - -(uiop/package:define-package :uiop/backward-driver - (:recycle :uiop/backward-driver :asdf/backward-driver :uiop) - (:use :uiop/common-lisp :uiop/package :uiop/utility :uiop/version - :uiop/pathname :uiop/stream :uiop/os :uiop/image - :uiop/run-program :uiop/lisp-build :uiop/configuration) - (:export - #:coerce-pathname - #:user-configuration-directories #:system-configuration-directories - #:in-first-directory #:in-user-configuration-directory #:in-system-configuration-directory - #:version-compatible-p)) -(in-package :uiop/backward-driver) - -(eval-when (:compile-toplevel :load-toplevel :execute) -(with-deprecation ((version-deprecation *uiop-version* :style-warning "3.2")) - ;; Backward compatibility with ASDF 2.000 to 2.26 - - ;; For backward-compatibility only, for people using internals - ;; Reported users in quicklisp 2015-11: hu.dwim.asdf (removed in next release) - ;; Will be removed after 2015-12. - (defun coerce-pathname (name &key type defaults) - "DEPRECATED. Please use UIOP:PARSE-UNIX-NAMESTRING instead." - (parse-unix-namestring name :type type :defaults defaults)) - - ;; Backward compatibility for ASDF 2.27 to 3.1.4 - (defun user-configuration-directories () - "Return the current user's list of user configuration directories -for configuring common-lisp. -DEPRECATED. Use UIOP:XDG-CONFIG-PATHNAMES instead." - (xdg-config-pathnames "common-lisp")) - (defun system-configuration-directories () - "Return the list of system configuration directories for common-lisp. -DEPRECATED. Use UIOP:CONFIG-SYSTEM-PATHNAMES instead." - (system-config-pathnames "common-lisp")) - (defun in-first-directory (dirs x &key (direction :input)) - "Finds the first appropriate file named X in the list of DIRS for I/O -in DIRECTION \(which may be :INPUT, :OUTPUT, :IO, or :PROBE). -If direction is :INPUT or :PROBE, will return the first extant file named -X in one of the DIRS. -If direction is :OUTPUT or :IO, will simply return the file named X in the -first element of DIRS that exists. DEPRECATED." - (find-preferred-file - (mapcar #'(lambda (dir) (subpathname (ensure-directory-pathname dir) x)) dirs) - :direction direction)) - (defun in-user-configuration-directory (x &key (direction :input)) - "Return the file named X in the user configuration directory for common-lisp. -DEPRECATED." - (xdg-config-pathname `("common-lisp" ,x) direction)) - (defun in-system-configuration-directory (x &key (direction :input)) - "Return the pathname for the file named X under the system configuration directory -for common-lisp. DEPRECATED." - (find-preferred-file (system-config-pathnames "common-lisp" x) :direction direction)) - - - ;; Backward compatibility with ASDF 1 to ASDF 2.32 - - (defun version-compatible-p (provided-version required-version) - "Is the provided version a compatible substitution for the required-version? -If major versions differ, it's not compatible. -If they are equal, then any later version is compatible, -with later being determined by a lexicographical comparison of minor numbers. -DEPRECATED." - (let ((x (parse-version provided-version nil)) - (y (parse-version required-version nil))) - (and x y (= (car x) (car y)) (lexicographic<= '< (cdr y) (cdr x))))))) - -;;;; --------------------------------------------------------------------------- -;;;; Re-export all the functionality in UIOP - -(uiop/package:define-package :uiop/driver - (:nicknames :uiop :asdf/driver) ;; asdf/driver is obsolete (uiop isn't); - ;; but asdf/driver is still used by swap-bytes, static-vectors. - (:use :uiop/common-lisp) - ;; NB: not reexporting uiop/common-lisp - ;; which include all of CL with compatibility modifications on select platforms, - ;; that could cause potential conflicts for packages that would :use (cl uiop) - ;; or :use (closer-common-lisp uiop), etc. - (:use-reexport - :uiop/package :uiop/utility :uiop/version - :uiop/os :uiop/pathname :uiop/filesystem :uiop/stream :uiop/image - :uiop/launch-program :uiop/run-program - :uiop/lisp-build :uiop/configuration :uiop/backward-driver)) - -;; Provide both lowercase and uppercase, to satisfy more people. -(provide "uiop") (provide "UIOP") -;;;; ------------------------------------------------------------------------- -;;;; Handle upgrade as forward- and backward-compatibly as possible -;; See https://bugs.launchpad.net/asdf/+bug/485687 - -(uiop/package:define-package :asdf/upgrade - (:recycle :asdf/upgrade :asdf) - (:use :uiop/common-lisp :uiop) - (:export - #:asdf-version #:*previous-asdf-versions* #:*asdf-version* - #:asdf-message #:*verbose-out* - #:upgrading-p #:when-upgrading #:upgrade-asdf #:defparameter* - #:*post-upgrade-cleanup-hook* #:cleanup-upgraded-asdf - ;; There will be no symbol left behind! - #:with-asdf-deprecation - #:intern*) - (:import-from :uiop/package #:intern* #:find-symbol*)) -(in-package :asdf/upgrade) - -;;; Special magic to detect if this is an upgrade - -(with-upgradability () - (defun asdf-version () - "Exported interface to the version of ASDF currently installed. A string. -You can compare this string with e.g.: (ASDF:VERSION-SATISFIES (ASDF:ASDF-VERSION) \"3.4.5.67\")." - (when (find-package :asdf) - (or (symbol-value (find-symbol (string :*asdf-version*) :asdf)) - (let* ((revsym (find-symbol (string :*asdf-revision*) :asdf)) - (rev (and revsym (boundp revsym) (symbol-value revsym)))) - (etypecase rev - (string rev) - (cons (format nil "~{~D~^.~}" rev)) - (null "1.0")))))) - ;; This (private) variable contains a list of versions of previously loaded variants of ASDF, - ;; from which ASDF was upgraded. - ;; Important: define *p-a-v* /before/ *a-v* so that they initialize correctly. - (defvar *previous-asdf-versions* - (let ((previous (asdf-version))) - (when previous - ;; Punt on upgrade from ASDF1 or ASDF2, by renaming (or deleting) the package. - (when (version< previous "2.27") ;; 2.27 is the first to have the :asdf3 feature. - (let ((away (format nil "~A-~A" :asdf previous))) - (rename-package :asdf away) - (when *load-verbose* - (format t "~&; Renamed old ~A package away to ~A~%" :asdf away)))) - (list previous)))) - ;; This public variable will be bound shortly to the currently loaded version of ASDF. - (defvar *asdf-version* nil) - ;; We need to clear systems from versions older than the one in this (private) parameter. - ;; The latest incompatible defclass is 2.32.13 renaming a slot in component, - ;; or 3.2.0.2 for CCL (incompatibly changing some superclasses). - ;; the latest incompatible gf change is in 3.1.7.20 (see redefined-functions below). - (defparameter *oldest-forward-compatible-asdf-version* "3.2.0.2") - ;; Semi-private variable: a designator for a stream on which to output ASDF progress messages - (defvar *verbose-out* nil) - ;; Private function by which ASDF outputs progress messages and warning messages: - (defun asdf-message (format-string &rest format-args) - (when *verbose-out* (apply 'format *verbose-out* format-string format-args))) - ;; Private hook for functions to run after ASDF has upgraded itself from an older variant: - (defvar *post-upgrade-cleanup-hook* ()) - ;; Private function to detect whether the current upgrade counts as an incompatible - ;; data schema upgrade implying the need to drop data. - (defun upgrading-p (&optional (oldest-compatible-version *oldest-forward-compatible-asdf-version*)) - (and *previous-asdf-versions* - (version< (first *previous-asdf-versions*) oldest-compatible-version))) - ;; Private variant of defparameter that works in presence of incompatible upgrades: - ;; behaves like defvar in a compatible upgrade (e.g. reloading system after simple code change), - ;; but behaves like defparameter if in presence of an incompatible upgrade. - (defmacro defparameter* (var value &optional docstring (version *oldest-forward-compatible-asdf-version*)) - (let* ((name (string-trim "*" var)) - (valfun (intern (format nil "%~A-~A-~A" :compute name :value)))) - `(progn - (defun ,valfun () ,value) - (defvar ,var (,valfun) ,@(ensure-list docstring)) - (when (upgrading-p ,version) - (setf ,var (,valfun)))))) - ;; Private macro to declare sections of code that are only compiled and run when upgrading. - ;; The use of eval portably ensures that the code will not have adverse compile-time side-effects, - ;; whereas the use of handler-bind portably ensures that it will not issue warnings when it runs. - (defmacro when-upgrading ((&key (version *oldest-forward-compatible-asdf-version*) - (upgrading-p `(upgrading-p ,version)) when) &body body) - "A wrapper macro for code that should only be run when upgrading a -previously-loaded version of ASDF." - `(with-upgradability () - (when (and ,upgrading-p ,@(when when `(,when))) - (handler-bind ((style-warning #'muffle-warning)) - (eval '(progn ,@body)))))) - ;; Only now can we safely update the version. - (let* (;; For bug reporting sanity, please always bump this version when you modify this file. - ;; Please also modify asdf.asd to reflect this change. make bump-version v=3.4.5.67.8 - ;; can help you do these changes in synch (look at the source for documentation). - ;; Relying on its automation, the version is now redundantly present on top of asdf.lisp. - ;; "3.4" would be the general branch for major version 3, minor version 4. - ;; "3.4.5" would be an official release in the 3.4 branch. - ;; "3.4.5.67" would be a development version in the official branch, on top of 3.4.5. - ;; "3.4.5.0.8" would be your eighth local modification of official release 3.4.5 - ;; "3.4.5.67.8" would be your eighth local modification of development version 3.4.5.67 - (asdf-version "3.2.1") - (existing-version (asdf-version))) - (setf *asdf-version* asdf-version) - (when (and existing-version (not (equal asdf-version existing-version))) - (push existing-version *previous-asdf-versions*) - (when (or *verbose-out* *load-verbose*) - (format (or *verbose-out* *trace-output*) - (compatfmt "~&~@<; ~@;Upgrading ASDF ~@[from version ~A ~]to version ~A~@:>~%") - existing-version asdf-version))))) - -;;; Upon upgrade, specially frob some functions and classes that are being incompatibly redefined -(when-upgrading () - (let ((redefined-functions ;; List of functions that changes incompatibly since 2.27: - ;; gf signature changed (should NOT happen), defun that became a generic function, - ;; method removed that will mess up with new ones (especially :around :before :after, - ;; more specific or call-next-method'ed method) and/or semantics otherwise modified. Oops. - ;; NB: it's too late to do anything about functions in UIOP! - ;; If you introduce some critical incompatibility there, you must change the function name. - ;; Note that we don't need do anything about functions that changed incompatibly - ;; from ASDF 2.26 or earlier: we wholly punt on the entire ASDF package in such an upgrade. - ;; Also note that we don't include the defgeneric=>defun, because they are - ;; done directly with defun* and need not trigger a punt on data. - ;; See discussion at https://gitlab.common-lisp.net/asdf/asdf/merge_requests/36 - '(#:component-depends-on #:input-files ;; methods removed before 3.1.2 - #:find-component ;; gf modified in 3.1.7.20 - )) - (redefined-classes - ;; redefining the classes causes interim circularities - ;; with the old ASDF during upgrade, and many implementations bork - #-clozure () - #+clozure - '((#:compile-concatenated-source-op (#:operation) ()) - (#:compile-bundle-op (#:operation) ()) - (#:concatenate-source-op (#:operation) ()) - (#:dll-op (#:operation) ()) - (#:lib-op (#:operation) ()) - (#:monolithic-compile-bundle-op (#:operation) ()) - (#:monolithic-concatenate-source-op (#:operation) ())))) - (loop :for name :in redefined-functions - :for sym = (find-symbol* name :asdf nil) - :do (when sym (fmakunbound sym))) - (labels ((asym (x) (multiple-value-bind (s p) - (if (consp x) (values (car x) (cadr x)) (values x :asdf)) - (find-symbol* s p nil))) - (asyms (l) (mapcar #'asym l))) - (loop* :for (name superclasses slots) :in redefined-classes - :for sym = (find-symbol* name :asdf nil) - :when (and sym (find-class sym)) - :do (eval `(defclass ,sym ,(asyms superclasses) ,(asyms slots))))))) - - -;;; Self-upgrade functions -(with-upgradability () - ;; This private function is called at the end of asdf/footer and ensures that, - ;; *if* this loading of ASDF was an upgrade, then all registered cleanup functions will be called. - (defun cleanup-upgraded-asdf (&optional (old-version (first *previous-asdf-versions*))) - (let ((new-version (asdf-version))) - (unless (equal old-version new-version) - (push new-version *previous-asdf-versions*) - (when old-version - (if (version<= new-version old-version) - (error (compatfmt "~&~@<; ~@;Downgraded ASDF from version ~A to version ~A~@:>~%") - old-version new-version) - (asdf-message (compatfmt "~&~@<; ~@;Upgraded ASDF from version ~A to version ~A~@:>~%") - old-version new-version)) - ;; In case the previous version was too old to be forward-compatible, clear systems. - ;; TODO: if needed, we may have to define a separate hook to run - ;; in case of forward-compatible upgrade. - ;; Or to move the tests forward-compatibility test inside each hook function? - (unless (version<= *oldest-forward-compatible-asdf-version* old-version) - (call-functions (reverse *post-upgrade-cleanup-hook*))) - t)))) - - (defun upgrade-asdf () - "Try to upgrade of ASDF. If a different version was used, return T. - We need do that before we operate on anything that may possibly depend on ASDF." - (let ((*load-print* nil) - (*compile-print* nil)) - (handler-bind (((or style-warning) #'muffle-warning)) - (symbol-call :asdf :load-system :asdf :verbose nil)))) - - (defmacro with-asdf-deprecation ((&rest keys &key &allow-other-keys) &body body) - `(with-upgradability () - (with-deprecation ((version-deprecation *asdf-version* ,@keys)) - ,@body)))) -;;;; ------------------------------------------------------------------------- -;;;; Session cache - -(uiop/package:define-package :asdf/cache - (:use :uiop/common-lisp :uiop :asdf/upgrade) - (:export #:get-file-stamp #:compute-file-stamp #:register-file-stamp - #:set-asdf-cache-entry #:unset-asdf-cache-entry #:consult-asdf-cache - #:do-asdf-cache #:normalize-namestring - #:call-with-asdf-cache #:with-asdf-cache #:*asdf-cache* - #:clear-configuration-and-retry #:retry)) -(in-package :asdf/cache) - -;;; The ASDF session cache is used to memoize some computations. It is instrumental in achieving: -;; * Consistency in the view of the world relied on by ASDF within a given session. -;; Inconsistencies in file stamps, system definitions, etc., could cause infinite loops -;; (a.k.a. stack overflows) and other erratic behavior. -;; * Speed and reliability of ASDF, with fewer side-effects from access to the filesystem, and -;; no expensive recomputations of transitive dependencies for some input-files or output-files. -;; * Testability of ASDF with the ability to fake timestamps without actually touching files. - -(with-upgradability () - ;; The session cache variable. - ;; NIL when outside a session, an equal hash-table when inside a session. - (defvar *asdf-cache* nil) - - ;; Set a session cache entry for KEY to a list of values VALUE-LIST, when inside a session. - ;; Return those values. - (defun set-asdf-cache-entry (key value-list) - (values-list (if *asdf-cache* - (setf (gethash key *asdf-cache*) value-list) - value-list))) - - ;; Unset the session cache entry for KEY, when inside a session. - (defun unset-asdf-cache-entry (key) - (when *asdf-cache* - (remhash key *asdf-cache*))) - - ;; Consult the session cache entry for KEY if present and in a session; - ;; if not present, compute it by calling the THUNK, - ;; and set the session cache entry accordingly, if in a session. - ;; Return the values from the cache and/or the thunk computation. - (defun consult-asdf-cache (key &optional thunk) - (if *asdf-cache* - (multiple-value-bind (results foundp) (gethash key *asdf-cache*) - (if foundp - (values-list results) - (set-asdf-cache-entry key (multiple-value-list (call-function thunk))))) - (call-function thunk))) - - ;; Syntactic sugar for consult-asdf-cache - (defmacro do-asdf-cache (key &body body) - `(consult-asdf-cache ,key #'(lambda () ,@body))) - - ;; Compute inside a ASDF session with a cache. - ;; First, make sure an ASDF session is underway, by binding the session cache variable - ;; to a new hash-table if it's currently null (or even if it isn't, if OVERRIDE is true). - ;; Second, if a new session was started, establish restarts for retrying the overall computation. - ;; Finally, consult the cache if a KEY was specified with the THUNK as a fallback when the cache - ;; entry isn't found, or just call the THUNK if no KEY was specified. - (defun call-with-asdf-cache (thunk &key override key) - (let ((fun (if key #'(lambda () (consult-asdf-cache key thunk)) thunk))) - (if (and *asdf-cache* (not override)) - (funcall fun) - (loop - (restart-case - (let ((*asdf-cache* (make-hash-table :test 'equal))) - (return (funcall fun))) - (retry () - :report (lambda (s) - (format s (compatfmt "~@")))) - (clear-configuration-and-retry () - :report (lambda (s) - (format s (compatfmt "~@"))) - (clear-configuration))))))) - - ;; Syntactic sugar for call-with-asdf-cache - (defmacro with-asdf-cache ((&key key override) &body body) - `(call-with-asdf-cache #'(lambda () ,@body) :override ,override :key ,key)) - - - ;;; Define specific accessor for file (date) stamp. - - ;; Normalize a namestring for use as a key in the session cache. - (defun normalize-namestring (pathname) - (let ((resolved (resolve-symlinks* - (ensure-absolute-pathname - (physicalize-pathname pathname) - 'get-pathname-defaults)))) - (with-pathname-defaults () (namestring resolved)))) - - ;; Compute the file stamp for a normalized namestring - (defun compute-file-stamp (normalized-namestring) - (with-pathname-defaults () - (safe-file-write-date normalized-namestring))) - - ;; Override the time STAMP associated to a given FILE in the session cache. - ;; If no STAMP is specified, recompute a new one from the filesystem. - (defun register-file-stamp (file &optional (stamp nil stampp)) - (let* ((namestring (normalize-namestring file)) - (stamp (if stampp stamp (compute-file-stamp namestring)))) - (set-asdf-cache-entry `(get-file-stamp ,namestring) (list stamp)))) - - ;; Get or compute a memoized stamp for given FILE from the session cache. - (defun get-file-stamp (file) - (when file - (let ((namestring (normalize-namestring file))) - (do-asdf-cache `(get-file-stamp ,namestring) (compute-file-stamp namestring)))))) - -;;;; ------------------------------------------------------------------------- -;;;; Components - -(uiop/package:define-package :asdf/component - (:recycle :asdf/component :asdf/defsystem :asdf/find-system :asdf) - (:use :uiop/common-lisp :uiop :asdf/upgrade) - (:export - #:component #:component-find-path - #:component-name #:component-pathname #:component-relative-pathname - #:component-parent #:component-system #:component-parent-pathname - #:child-component #:parent-component #:module - #:file-component - #:source-file #:c-source-file #:java-source-file - #:static-file #:doc-file #:html-file - #:file-type - #:source-file-type #:source-file-explicit-type ;; backward-compatibility - #:component-in-order-to #:component-sideway-dependencies - #:component-if-feature #:around-compile-hook - #:component-description #:component-long-description - #:component-version #:version-satisfies - #:component-inline-methods ;; backward-compatibility only. DO NOT USE! - #:component-operation-times ;; For internal use only. - ;; portable ASDF encoding and implementation-specific external-format - #:component-external-format #:component-encoding - #:component-children-by-name #:component-children #:compute-children-by-name - #:component-build-operation - #:module-default-component-class - #:module-components ;; backward-compatibility. DO NOT USE. - #:sub-components - - ;; conditions - #:system-definition-error ;; top level, moved here because this is the earliest place for it. - #:duplicate-names - - ;; Internals we'd like to share with the ASDF package, especially for upgrade purposes - #:name #:version #:description #:long-description #:author #:maintainer #:licence - #:components-by-name #:components #:children #:children-by-name - #:default-component-class #:source-file - #:defsystem-depends-on ; This symbol retained for backward compatibility. - #:sideway-dependencies #:if-feature #:in-order-to #:inline-methods - #:relative-pathname #:absolute-pathname #:operation-times #:around-compile - #:%encoding #:properties #:component-properties #:parent)) -(in-package :asdf/component) - -(with-upgradability () - (defgeneric component-name (component) - (:documentation "Name of the COMPONENT, unique relative to its parent")) - (defgeneric component-system (component) - (:documentation "Top-level system containing the COMPONENT")) - (defgeneric component-pathname (component) - (:documentation "Pathname of the COMPONENT if any, or NIL.")) - (defgeneric component-relative-pathname (component) - ;; in ASDF4, rename that to component-specified-pathname ? - (:documentation "Specified pathname of the COMPONENT, -intended to be merged with the pathname of that component's parent if any, using merged-pathnames*. -Despite the function's name, the return value can be an absolute pathname, in which case the merge -will leave it unmodified.")) - (defgeneric component-external-format (component) - (:documentation "The external-format of the COMPONENT. -By default, deduced from the COMPONENT-ENCODING.")) - (defgeneric component-encoding (component) - (:documentation "The encoding of the COMPONENT. By default, only :utf-8 is supported. -Use asdf-encodings to support more encodings.")) - (defgeneric version-satisfies (component version) - (:documentation "Check whether a COMPONENT satisfies the constraint of being at least as recent -as the specified VERSION, which must be a string of dot-separated natural numbers, or NIL.")) - (defgeneric component-version (component) - (:documentation "Return the version of a COMPONENT, which must be a string of dot-separated -natural numbers, or NIL.")) - (defgeneric (setf component-version) (new-version component) - (:documentation "Updates the version of a COMPONENT, which must be a string of dot-separated -natural numbers, or NIL.")) - (defgeneric component-parent (component) - (:documentation "The parent of a child COMPONENT, -or NIL for top-level components (a.k.a. systems)")) - ;; NIL is a designator for the absence of a component, in which case the parent is also absent. - (defmethod component-parent ((component null)) nil) - - ;; Deprecated: Backward compatible way of computing the FILE-TYPE of a component. - ;; TODO: find users, have them stop using that, remove it for ASDF4. - (defgeneric source-file-type (component system) - (:documentation "DEPRECATED. Use the FILE-TYPE of a COMPONENT instead.")) - - (define-condition system-definition-error (error) () - ;; [this use of :report should be redundant, but unfortunately it's not. - ;; cmucl's lisp::output-instance prefers the kernel:slot-class-print-function - ;; over print-object; this is always conditions::%print-condition for - ;; condition objects, which in turn does inheritance of :report options at - ;; run-time. fortunately, inheritance means we only need this kludge here in - ;; order to fix all conditions that build on it. -- rgr, 28-Jul-02.] - #+cmucl (:report print-object)) - - (define-condition duplicate-names (system-definition-error) - ((name :initarg :name :reader duplicate-names-name)) - (:report (lambda (c s) - (format s (compatfmt "~@") - (duplicate-names-name c)))))) - - -(with-upgradability () - (defclass component () - ((name :accessor component-name :initarg :name :type string :documentation - "Component name: designator for a string composed of portable pathname characters") - ;; We might want to constrain version with - ;; :type (and string (satisfies parse-version)) - ;; but we cannot until we fix all systems that don't use it correctly! - (version :accessor component-version :initarg :version :initform nil) - (description :accessor component-description :initarg :description :initform nil) - (long-description :accessor component-long-description :initarg :long-description :initform nil) - (sideway-dependencies :accessor component-sideway-dependencies :initform nil) - (if-feature :accessor component-if-feature :initform nil :initarg :if-feature) - ;; In the ASDF object model, dependencies exist between *actions*, - ;; where an action is a pair of an operation and a component. - ;; Dependencies are represented as alists of operations - ;; to a list where each entry is a pair of an operation and a list of component specifiers. - ;; Up until ASDF 2.26.9, there used to be two kinds of dependencies: - ;; in-order-to and do-first, each stored in its own slot. Now there is only in-order-to. - ;; in-order-to used to represent things that modify the filesystem (such as compiling a fasl) - ;; and do-first things that modify the current image (such as loading a fasl). - ;; These are now unified because we now correctly propagate timestamps between dependencies. - ;; Happily, no one seems to have used do-first too much (especially since until ASDF 2.017, - ;; anything you specified was overridden by ASDF itself anyway), but the name in-order-to remains. - ;; The names are bad, but they have been the official API since Dan Barlow's ASDF 1.52! - ;; LispWorks's defsystem has caused-by and requires for in-order-to and do-first respectively. - ;; Maybe rename the slots in ASDF? But that's not very backward-compatible. - ;; See our ASDF 2 paper for more complete explanations. - (in-order-to :initform nil :initarg :in-order-to - :accessor component-in-order-to) - ;; Methods defined using the "inline" style inside a defsystem form: - ;; we store them here so we can delete them when the system is re-evaluated. - (inline-methods :accessor component-inline-methods :initform nil) - ;; ASDF4: rename it from relative-pathname to specified-pathname. It need not be relative. - ;; There is no initform and no direct accessor for this specified pathname, - ;; so we only access the information through appropriate methods, after it has been processed. - ;; Unhappily, some braindead systems directly access the slot. Make them stop before ASDF4. - (relative-pathname :initarg :pathname) - ;; The absolute-pathname is computed based on relative-pathname and parent pathname. - ;; The slot is but a cache used by component-pathname. - (absolute-pathname) - (operation-times :initform (make-hash-table) - :accessor component-operation-times) - (around-compile :initarg :around-compile) - ;; Properties are for backward-compatibility with ASDF2 only. DO NOT USE! - (properties :accessor component-properties :initarg :properties - :initform nil) - (%encoding :accessor %component-encoding :initform nil :initarg :encoding) - ;; For backward-compatibility, this slot is part of component rather than of child-component. ASDF4: stop it. - (parent :initarg :parent :initform nil :reader component-parent) - (build-operation - :initarg :build-operation :initform nil :reader component-build-operation)) - (:documentation "Base class for all components of a build")) - - (defun component-find-path (component) - "Return a path from a root system to the COMPONENT. -The return value is a list of component NAMES; a list of strings." - (check-type component (or null component)) - (reverse - (loop :for c = component :then (component-parent c) - :while c :collect (component-name c)))) - - (defmethod print-object ((c component) stream) - (print-unreadable-object (c stream :type t :identity nil) - (format stream "~{~S~^ ~}" (component-find-path c)))) - - (defmethod component-system ((component component)) - (if-let (system (component-parent component)) - (component-system system) - component))) - - -;;;; Component hierarchy within a system -;; The tree typically but not necessarily follows the filesystem hierarchy. -(with-upgradability () - (defclass child-component (component) () - (:documentation "A CHILD-COMPONENT is a COMPONENT that may be part of -a PARENT-COMPONENT.")) - - (defclass file-component (child-component) - ((type :accessor file-type :initarg :type)) ; no default - (:documentation "a COMPONENT that represents a file")) - (defclass source-file (file-component) - ((type :accessor source-file-explicit-type ;; backward-compatibility - :initform nil))) ;; NB: many systems have come to rely on this default. - (defclass c-source-file (source-file) - ((type :initform "c"))) - (defclass java-source-file (source-file) - ((type :initform "java"))) - (defclass static-file (source-file) - ((type :initform nil)) - (:documentation "Component for a file to be included as is in the build output")) - (defclass doc-file (static-file) ()) - (defclass html-file (doc-file) - ((type :initform "html"))) - - (defclass parent-component (component) - ((children - :initform nil - :initarg :components - :reader module-components ; backward-compatibility - :accessor component-children) - (children-by-name - :reader module-components-by-name ; backward-compatibility - :accessor component-children-by-name) - (default-component-class - :initform nil - :initarg :default-component-class - :accessor module-default-component-class)) - (:documentation "A PARENT-COMPONENT is a component that may have children."))) - -(with-upgradability () - ;; (Private) Function that given a PARENT component, - ;; the list of children of which has been initialized, - ;; compute the hash-table in slot children-by-name that allows to retrieve its children by name. - ;; If ONLY-IF-NEEDED-P is defined, skip any (re)computation if the slot is already populated. - (defun compute-children-by-name (parent &key only-if-needed-p) - (unless (and only-if-needed-p (slot-boundp parent 'children-by-name)) - (let ((hash (make-hash-table :test 'equal))) - (setf (component-children-by-name parent) hash) - (loop :for c :in (component-children parent) - :for name = (component-name c) - :for previous = (gethash name hash) - :do (when previous (error 'duplicate-names :name name)) - (setf (gethash name hash) c)) - hash)))) - -(with-upgradability () - (defclass module (child-component parent-component) - (#+clisp (components)) ;; backward compatibility during upgrade only - (:documentation "A module is a intermediate component with both a parent and children, -typically but not necessarily representing the files in a subdirectory of the build source."))) - - -;;;; component pathnames -(with-upgradability () - (defgeneric component-parent-pathname (component) - (:documentation "The pathname of the COMPONENT's parent, if any, or NIL")) - (defmethod component-parent-pathname (component) - (component-pathname (component-parent component))) - - ;; The default method for component-pathname tries to extract a cached precomputed - ;; absolute-pathname from the relevant slot, and if not, computes it by merging the - ;; component-relative-pathname (which should be component-specified-pathname, it can be absolute) - ;; with the directory of the component-parent-pathname. - (defmethod component-pathname ((component component)) - (if (slot-boundp component 'absolute-pathname) - (slot-value component 'absolute-pathname) - (let ((pathname - (merge-pathnames* - (component-relative-pathname component) - (pathname-directory-pathname (component-parent-pathname component))))) - (unless (or (null pathname) (absolute-pathname-p pathname)) - (error (compatfmt "~@") - pathname (component-find-path component))) - (setf (slot-value component 'absolute-pathname) pathname) - pathname))) - - ;; Default method for component-relative-pathname: - ;; combine the contents of slot relative-pathname (from specified initarg :pathname) - ;; with the appropriate source-file-type, which defaults to the file-type of the component. - (defmethod component-relative-pathname ((component component)) - ;; SOURCE-FILE-TYPE below is strictly for backward-compatibility with ASDF1. - ;; We ought to be able to extract this from the component alone with FILE-TYPE. - ;; TODO: track who uses it in Quicklisp, and have them not use it anymore; - ;; maybe issue a WARNING (then eventually CERROR) if the two methods diverge? - (parse-unix-namestring - (or (and (slot-boundp component 'relative-pathname) - (slot-value component 'relative-pathname)) - (component-name component)) - :want-relative t - :type (source-file-type component (component-system component)) - :defaults (component-parent-pathname component))) - - (defmethod source-file-type ((component parent-component) (system parent-component)) - :directory) - - (defmethod source-file-type ((component file-component) (system parent-component)) - (file-type component))) - - -;;;; Encodings -(with-upgradability () - (defmethod component-encoding ((c component)) - (or (loop :for x = c :then (component-parent x) - :while x :thereis (%component-encoding x)) - (detect-encoding (component-pathname c)))) - - (defmethod component-external-format ((c component)) - (encoding-external-format (component-encoding c)))) - - -;;;; around-compile-hook -(with-upgradability () - (defgeneric around-compile-hook (component) - (:documentation "An optional hook function that will be called with one argument, a thunk. -The hook function must call the thunk, that will compile code from the component, and may or may not -also evaluate the compiled results. The hook function may establish dynamic variable bindings around -this compilation, or check its results, etc.")) - (defmethod around-compile-hook ((c component)) - (cond - ((slot-boundp c 'around-compile) - (slot-value c 'around-compile)) - ((component-parent c) - (around-compile-hook (component-parent c)))))) - - -;;;; version-satisfies -(with-upgradability () - ;; short-circuit testing of null version specifications. - ;; this is an all-pass, without warning - (defmethod version-satisfies :around ((c t) (version null)) - t) - (defmethod version-satisfies ((c component) version) - (unless (and version (slot-boundp c 'version) (component-version c)) - (when version - (warn "Requested version ~S but ~S has no version" version c)) - (return-from version-satisfies nil)) - (version-satisfies (component-version c) version)) - - (defmethod version-satisfies ((cver string) version) - (version<= version cver))) - - -;;; all sub-components (of a given type) -(with-upgradability () - (defun sub-components (component &key (type t)) - "Compute the transitive sub-components of given COMPONENT that are of given TYPE" - (while-collecting (c) - (labels ((recurse (x) - (when (if-let (it (component-if-feature x)) (featurep it) t) - (when (typep x type) - (c x)) - (when (typep x 'parent-component) - (map () #'recurse (component-children x)))))) - (recurse component))))) - -;;;; ------------------------------------------------------------------------- -;;;; Systems - -(uiop/package:define-package :asdf/system - (:recycle :asdf :asdf/system) - (:use :uiop/common-lisp :uiop :asdf/upgrade :asdf/component) - (:export - #:system #:proto-system - #:system-source-file #:system-source-directory #:system-relative-pathname - #:reset-system - #:system-description #:system-long-description - #:system-author #:system-maintainer #:system-licence #:system-license - #:system-defsystem-depends-on #:system-depends-on #:system-weakly-depends-on - #:component-build-pathname #:build-pathname - #:component-entry-point #:entry-point - #:homepage #:system-homepage - #:bug-tracker #:system-bug-tracker - #:mailto #:system-mailto - #:long-name #:system-long-name - #:source-control #:system-source-control - #:find-system #:builtin-system-p)) ;; forward-reference, defined in find-system -(in-package :asdf/system) - -(with-upgradability () - ;; The method is actually defined in asdf/find-system, - ;; but we declare the function here to avoid a forward reference. - (defgeneric find-system (system &optional error-p) - (:documentation "Given a system designator, find the actual corresponding system object. -If no system is found, then signal an error if ERROR-P is true (the default), or else return NIL. -A system designator is usually a string (conventionally all lowercase) or a symbol, designating -the same system as its downcased name; it can also be a system object (designating itself).")) - (defgeneric system-source-file (system) - (:documentation "Return the source file in which system is defined.")) - ;; This is bad design, but was the easiest kluge I found to let the user specify that - ;; some special actions create outputs at locations controled by the user that are not affected - ;; by the usual output-translations. - ;; TODO: Fix operate to stop passing flags to operation (which in the current design shouldn't - ;; have any flags, since the stamp cache, etc., can't distinguish them), and instead insert - ;; *there* the ability of specifying special output paths, not in the system definition. - (defgeneric component-build-pathname (component) - (:documentation "The COMPONENT-BUILD-PATHNAME, when defined and not null, specifies the -output pathname for the action using the COMPONENT-BUILD-OPERATION. - -NB: This interface is subject to change. Please contact ASDF maintainers if you use it.")) - - ;; TODO: Should this have been made a SYSTEM-ENTRY-POINT instead? - (defgeneric component-entry-point (component) - (:documentation "The COMPONENT-ENTRY-POINT, when defined, specifies what function to call -(with no argument) when running an image dumped from the COMPONENT. - -NB: This interface is subject to change. Please contact ASDF maintainers if you use it.")) - (defmethod component-entry-point ((c component)) - nil)) - - -;;;; The system class - -(with-upgradability () - (defclass proto-system () ; slots to keep when resetting a system - ;; To preserve identity for all objects, we'd need keep the components slots - ;; but also to modify parse-component-form to reset the recycled objects. - ((name) (source-file) #|(children) (children-by-names)|#) - (:documentation "PROTO-SYSTEM defines the elements of identity that are preserved when -a SYSTEM is redefined and its class is modified.")) - - (defclass system (module proto-system) - ;; Backward-compatibility: inherit from module. ASDF4: only inherit from parent-component. - (;; {,long-}description is now inherited from component, but we add the legacy accessors - (description :accessor system-description) - (long-description :accessor system-long-description) - (author :accessor system-author :initarg :author :initform nil) - (maintainer :accessor system-maintainer :initarg :maintainer :initform nil) - (licence :accessor system-licence :initarg :licence - :accessor system-license :initarg :license :initform nil) - (homepage :accessor system-homepage :initarg :homepage :initform nil) - (bug-tracker :accessor system-bug-tracker :initarg :bug-tracker :initform nil) - (mailto :accessor system-mailto :initarg :mailto :initform nil) - (long-name :accessor system-long-name :initarg :long-name :initform nil) - ;; Conventions for this slot aren't clear yet as of ASDF 2.27, but whenever they are, they will be enforced. - ;; I'm introducing the slot before the conventions are set for maximum compatibility. - (source-control :accessor system-source-control :initarg :source-control :initform nil) - (builtin-system-p :accessor builtin-system-p :initform nil :initarg :builtin-system-p) - (build-pathname - :initform nil :initarg :build-pathname :accessor component-build-pathname) - (entry-point - :initform nil :initarg :entry-point :accessor component-entry-point) - (source-file :initform nil :initarg :source-file :accessor system-source-file) - (defsystem-depends-on :reader system-defsystem-depends-on :initarg :defsystem-depends-on - :initform nil) - ;; these two are specially set in parse-component-form, so have no :INITARGs. - (depends-on :reader system-depends-on :initform nil) - (weakly-depends-on :reader system-weakly-depends-on :initform nil)) - (:documentation "SYSTEM is the base class for top-level components that users may request -ASDF to build.")) - - - (defun reset-system (system &rest keys &key &allow-other-keys) - "Erase any data from a SYSTEM except its basic identity, then reinitialize it -based on supplied KEYS." - (change-class (change-class system 'proto-system) 'system) - (apply 'reinitialize-instance system keys))) - - -;;;; Pathnames - -(with-upgradability () - ;; Resolve a system designator to a system before extracting its system-source-file - (defmethod system-source-file ((system-name string)) - (system-source-file (find-system system-name))) - (defmethod system-source-file ((system-name symbol)) - (when system-name - (system-source-file (find-system system-name)))) - - (defun system-source-directory (system-designator) - "Return a pathname object corresponding to the directory -in which the system specification (.asd file) is located." - (pathname-directory-pathname (system-source-file system-designator))) - - (defun* (system-relative-pathname) (system name &key type) - "Given a SYSTEM, and a (Unix-style relative path) NAME of a file (or directory) of given TYPE, -return the absolute pathname of a corresponding file under that system's source code pathname." - (subpathname (system-source-directory system) name :type type)) - - (defmethod component-pathname ((system system)) - "Given a SYSTEM, and a (Unix-style relative path) NAME of a file (or directory) of given TYPE, -return the absolute pathname of a corresponding file under that system's source code pathname." - (let ((pathname (or (call-next-method) (system-source-directory system)))) - (unless (and (slot-boundp system 'relative-pathname) ;; backward-compatibility with ASDF1-age - (slot-value system 'relative-pathname)) ;; systems that directly access this slot. - (setf (slot-value system 'relative-pathname) pathname)) - pathname)) - - ;; The default method of component-relative-pathname for a system: - ;; if a pathname was specified in the .asd file, it must be relative to the .asd file - ;; (actually, to its truename* if *resolve-symlinks* it true, the default). - ;; The method will return an *absolute* pathname, once again showing that the historical name - ;; component-relative-pathname is misleading and should have been component-specified-pathname. - (defmethod component-relative-pathname ((system system)) - (parse-unix-namestring - (and (slot-boundp system 'relative-pathname) - (slot-value system 'relative-pathname)) - :want-relative t - :type :directory - :ensure-absolute t - :defaults (system-source-directory system))) - - ;; A system has no parent; if some method wants to make a path "relative to its parent", - ;; it will instead be relative to the system itself. - (defmethod component-parent-pathname ((system system)) - (system-source-directory system)) - - ;; Most components don't have a specified component-build-pathname, and therefore - ;; no magic redirection of their output that disregards the output-translations. - (defmethod component-build-pathname ((c component)) - nil)) - -;;;; ------------------------------------------------------------------------- -;;;; Finding systems - -(uiop/package:define-package :asdf/find-system - (:recycle :asdf/find-system :asdf) - (:use :uiop/common-lisp :uiop :asdf/upgrade - :asdf/cache :asdf/component :asdf/system) - (:export - #:remove-entry-from-registry #:coerce-entry-to-directory - #:coerce-name #:primary-system-name #:coerce-filename - #:find-system #:locate-system #:load-asd - #:system-registered-p #:registered-system #:register-system - #:registered-systems* #:registered-systems - #:clear-system #:map-systems - #:missing-component #:missing-requires #:missing-parent - #:formatted-system-definition-error #:format-control #:format-arguments #:sysdef-error - #:load-system-definition-error #:error-name #:error-pathname #:error-condition - #:*system-definition-search-functions* #:search-for-system-definition - #:*central-registry* #:probe-asd #:sysdef-central-registry-search - #:find-system-if-being-defined - #:contrib-sysdef-search #:sysdef-find-asdf ;; backward compatibility symbols, functions removed - #:sysdef-preloaded-system-search #:register-preloaded-system #:*preloaded-systems* - #:mark-component-preloaded ;; forward reference to asdf/operate - #:sysdef-immutable-system-search #:register-immutable-system #:*immutable-systems* - #:*defined-systems* #:clear-defined-systems - ;; defined in source-registry, but specially mentioned here: - #:initialize-source-registry #:sysdef-source-registry-search)) -(in-package :asdf/find-system) - -(with-upgradability () - (declaim (ftype (function (&optional t) t) initialize-source-registry)) ; forward reference - - (define-condition missing-component (system-definition-error) - ((requires :initform "(unnamed)" :reader missing-requires :initarg :requires) - (parent :initform nil :reader missing-parent :initarg :parent))) - - (define-condition formatted-system-definition-error (system-definition-error) - ((format-control :initarg :format-control :reader format-control) - (format-arguments :initarg :format-arguments :reader format-arguments)) - (:report (lambda (c s) - (apply 'format s (format-control c) (format-arguments c))))) - - (define-condition load-system-definition-error (system-definition-error) - ((name :initarg :name :reader error-name) - (pathname :initarg :pathname :reader error-pathname) - (condition :initarg :condition :reader error-condition)) - (:report (lambda (c s) - (format s (compatfmt "~@") - (error-name c) (error-pathname c) (error-condition c))))) - - (defun sysdef-error (format &rest arguments) - (error 'formatted-system-definition-error :format-control - format :format-arguments arguments)) - - - ;;; Canonicalizing system names - - (defun coerce-name (name) - "Given a designator for a component NAME, return the name as a string. -The designator can be a COMPONENT (designing its name; note that a SYSTEM is a component), -a SYMBOL (designing its name, downcased), or a STRING (designing itself)." - (typecase name - (component (component-name name)) - (symbol (string-downcase name)) - (string name) - (t (sysdef-error (compatfmt "~@") name)))) - - (defun primary-system-name (name) - "Given a system designator NAME, return the name of the corresponding primary system, -after which the .asd file is named. That's the first component when dividing the name -as a string by / slashes." - (first (split-string (coerce-name name) :separator "/"))) - - (defun coerce-filename (name) - "Coerce a system designator NAME into a string suitable as a filename component. -The (current) transformation is to replace characters /:\\ each by --, -the former being forbidden in a filename component. -NB: The onus is unhappily on the user to avoid clashes." - (frob-substrings (coerce-name name) '("/" ":" "\\") "--")) - - - ;;; Registry of Defined Systems - - (defvar *defined-systems* (make-hash-table :test 'equal) - "This is a hash table whose keys are strings -- the -names of systems -- and whose values are pairs, the first -element of which is a universal-time indicating when the -system definition was last updated, and the second element -of which is a system object. - A system is referred to as \"registered\" if it is present -in this table.") - - (defun system-registered-p (name) - "Return a generalized boolean that is true if a system of given NAME was registered already. -NAME is a system designator, to be normalized by COERCE-NAME. -The value returned if true is a pair of a timestamp and a system object." - (gethash (coerce-name name) *defined-systems*)) - - (defun registered-system (name) - "Return a system of given NAME that was registered already, -if such a system exists. NAME is a system designator, to be -normalized by COERCE-NAME. The value returned is a system object, -or NIL if not found." - (cdr (system-registered-p name))) - - (defun registered-systems* () - "Return a list containing every registered system (as a system object)." - (loop :for registered :being :the :hash-values :of *defined-systems* - :collect (cdr registered))) - - (defun registered-systems () - "Return a list of the names of every registered system." - (mapcar 'coerce-name (registered-systems*))) - - (defun register-system (system) - "Given a SYSTEM object, register it." - (check-type system system) - (let ((name (component-name system))) - (check-type name string) - (asdf-message (compatfmt "~&~@<; ~@;Registering ~3i~_~A~@:>~%") system) - (unless (eq system (registered-system name)) - (setf (gethash name *defined-systems*) - (cons (ignore-errors (get-file-stamp (system-source-file system))) - system))))) - - (defun map-systems (fn) - "Apply FN to each defined system. - -FN should be a function of one argument. It will be -called with an object of type asdf:system." - (loop :for registered :being :the :hash-values :of *defined-systems* - :do (funcall fn (cdr registered)))) - - - ;;; Preloaded systems: in the image even if you can't find source files backing them. - - (defvar *preloaded-systems* (make-hash-table :test 'equal) - "Registration table for preloaded systems.") - - (declaim (ftype (function (t) t) mark-component-preloaded)) ; defined in asdf/operate - - (defun make-preloaded-system (name keys) - "Make a preloaded system of given NAME with build information from KEYS" - (let ((system (apply 'make-instance (getf keys :class 'system) - :name name :source-file (getf keys :source-file) - (remove-plist-keys '(:class :name :source-file) keys)))) - (mark-component-preloaded system) - system)) - - (defun sysdef-preloaded-system-search (requested) - "If REQUESTED names a system registered as preloaded, return a new system -with its registration information." - (let ((name (coerce-name requested))) - (multiple-value-bind (keys foundp) (gethash name *preloaded-systems*) - (when foundp - (make-preloaded-system name keys))))) - - (defun ensure-preloaded-system-registered (name) - "If there isn't a registered _defined_ system of given NAME, -and a there is a registered _preloaded_ system of given NAME, -then define and register said preloaded system." - (if-let (system (and (not (registered-system name)) (sysdef-preloaded-system-search name))) - (register-system system))) - - (defun register-preloaded-system (system-name &rest keys &key (version t) &allow-other-keys) - "Register a system as being preloaded. If the system has not been loaded from the filesystem -yet, or if its build information is later cleared with CLEAR-SYSTEM, a dummy system will be -registered without backing filesystem information, based on KEYS (e.g. to provide a VERSION). -If VERSION is the default T, and a system was already loaded, then its version will be preserved." - (let ((name (coerce-name system-name))) - (when (eql version t) - (if-let (system (registered-system name)) - (setf (getf keys :version) (component-version system)))) - (setf (gethash name *preloaded-systems*) keys) - (ensure-preloaded-system-registered system-name))) - - - ;;; Immutable systems: in the image and can't be reloaded from source. - - (defvar *immutable-systems* nil - "A hash-set (equal hash-table mapping keys to T) of systems that are immutable, -i.e. already loaded in memory and not to be refreshed from the filesystem. -They will be treated specially by find-system, and passed as :force-not argument to make-plan. - -For instance, to can deliver an image with many systems precompiled, that *will not* check the -filesystem for them every time a user loads an extension, what more risk a problematic upgrade - or catastrophic downgrade, before you dump an image, you may use: - (map () 'asdf:register-immutable-system (asdf:already-loaded-systems)) - -Note that direct access to this variable from outside ASDF is not supported. -Please call REGISTER-IMMUTABLE-SYSTEM to add new immutable systems, and -contact maintainers if you need a stable API to do more than that.") - - (defun sysdef-immutable-system-search (requested) - (let ((name (coerce-name requested))) - (when (and *immutable-systems* (gethash name *immutable-systems*)) - (or (registered-system requested) - (error 'formatted-system-definition-error - :format-control "Requested system ~A registered as an immutable-system, ~ -but not even registered as defined" - :format-arguments (list name)))))) - - (defun register-immutable-system (system-name &rest keys) - "Register SYSTEM-NAME as preloaded and immutable. -It will automatically be considered as passed to FORCE-NOT in a plan." - (let ((system-name (coerce-name system-name))) - (apply 'register-preloaded-system system-name keys) - (unless *immutable-systems* - (setf *immutable-systems* (list-to-hash-set nil))) - (setf (gethash system-name *immutable-systems*) t))) - - - ;;; Making systems undefined. - - (defun clear-system (system) - "Clear the entry for a SYSTEM in the database of systems previously defined. -However if the system was registered as PRELOADED (which it is if it is IMMUTABLE), -then a new system with the same name will be defined and registered in its place -from which build details will have been cleared. -Note that this does NOT in any way cause any of the code of the system to be unloaded. -Returns T if system was or is now undefined, NIL if a new preloaded system was redefined." - ;; There is no "unload" operation in Common Lisp, and - ;; a general such operation cannot be portably written, - ;; considering how much CL relies on side-effects to global data structures. - (let ((name (coerce-name system))) - (remhash name *defined-systems*) - (unset-asdf-cache-entry `(find-system ,name)) - (not (ensure-preloaded-system-registered name)))) - - (defun clear-defined-systems () - "Clear all currently registered defined systems. -Preloaded systems (including immutable ones) will be reset, other systems will be de-registered." - (loop :for name :being :the :hash-keys :of *defined-systems* - :unless (member name '("asdf" "uiop") :test 'equal) :do (clear-system name))) - - - ;;; Searching for system definitions - - ;; For the sake of keeping things reasonably neat, we adopt a convention that - ;; only symbols are to be pushed to this list (rather than e.g. function objects), - ;; which makes upgrade easier. Also, the name of these symbols shall start with SYSDEF- - (defvar *system-definition-search-functions* '() - "A list that controls the ways that ASDF looks for system definitions. -It contains symbols to be funcalled in order, with a requested system name as argument, -until one returns a non-NIL result (if any), which must then be a fully initialized system object -with that name.") - - ;; Initialize and/or upgrade the *system-definition-search-functions* - ;; so it doesn't contain obsolete symbols, and does contain the current ones. - (defun cleanup-system-definition-search-functions () - (setf *system-definition-search-functions* - (append - ;; Remove known-incompatible sysdef functions from old versions of asdf. - ;; Order matters, so we can't just use set-difference. - (let ((obsolete - '(contrib-sysdef-search sysdef-find-asdf sysdef-preloaded-system-search))) - (remove-if #'(lambda (x) (member x obsolete)) *system-definition-search-functions*)) - ;; Tuck our defaults at the end of the list if they were absent. - ;; This is imperfect, in case they were removed on purpose, - ;; but then it will be the responsibility of whoever removes these symmbols - ;; to upgrade asdf before he does such a thing rather than after. - (remove-if #'(lambda (x) (member x *system-definition-search-functions*)) - '(sysdef-central-registry-search - sysdef-source-registry-search))))) - (cleanup-system-definition-search-functions) - - ;; This (private) function does the search for a system definition using *s-d-s-f*; - ;; it is to be called by locate-system. - (defun search-for-system-definition (system) - ;; Search for valid definitions of the system available in the current session. - ;; Previous definitions as registered in *defined-systems* MUST NOT be considered; - ;; they will be reconciled by locate-system then find-system. - ;; There are two special treatments: first, specially search for objects being defined - ;; in the current session, to avoid definition races between several files; - ;; second, specially search for immutable systems, so they cannot be redefined. - ;; Finally, use the search functions specified in *system-definition-search-functions*. - (let ((name (coerce-name system))) - (flet ((try (f) (if-let ((x (funcall f name))) (return-from search-for-system-definition x)))) - (try 'find-system-if-being-defined) - (try 'sysdef-immutable-system-search) - (map () #'try *system-definition-search-functions*)))) - - - ;;; The legacy way of finding a system: the *central-registry* - - ;; This variable contains a list of directories to be lazily searched for the requested asd - ;; by sysdef-central-registry-search. - (defvar *central-registry* nil - "A list of 'system directory designators' ASDF uses to find systems. - -A 'system directory designator' is a pathname or an expression -which evaluates to a pathname. For example: - - (setf asdf:*central-registry* - (list '*default-pathname-defaults* - #p\"/home/me/cl/systems/\" - #p\"/usr/share/common-lisp/systems/\")) - -This variable is for backward compatibility. -Going forward, we recommend new users should be using the source-registry.") - - ;; Function to look for an asd file of given NAME under a directory provided by DEFAULTS. - ;; Return the truename of that file if it is found and TRUENAME is true. - ;; Return NIL if the file is not found. - ;; On Windows, follow shortcuts to .asd files. - (defun probe-asd (name defaults &key truename) - (block nil - (when (directory-pathname-p defaults) - (if-let (file (probe-file* - (ensure-absolute-pathname - (parse-unix-namestring name :type "asd") - #'(lambda () (ensure-absolute-pathname defaults 'get-pathname-defaults nil)) - nil) - :truename truename)) - (return file)) - #-(or clisp genera) ; clisp doesn't need it, plain genera doesn't have read-sequence(!) - (os-cond - ((os-windows-p) - (when (physical-pathname-p defaults) - (let ((shortcut - (make-pathname - :defaults defaults :case :local - :name (strcat name ".asd") - :type "lnk"))) - (when (probe-file* shortcut) - (ensure-pathname (parse-windows-shortcut shortcut) :namestring :native))))))))) - - ;; Function to push onto *s-d-s-f* to use the *central-registry* - (defun sysdef-central-registry-search (system) - (let ((name (primary-system-name system)) - (to-remove nil) - (to-replace nil)) - (block nil - (unwind-protect - (dolist (dir *central-registry*) - (let ((defaults (eval dir)) - directorized) - (when defaults - (cond ((directory-pathname-p defaults) - (let* ((file (probe-asd name defaults :truename *resolve-symlinks*))) - (when file - (return file)))) - (t - (restart-case - (let* ((*print-circle* nil) - (message - (format nil - (compatfmt "~@") - system dir defaults))) - (error message)) - (remove-entry-from-registry () - :report "Remove entry from *central-registry* and continue" - (push dir to-remove)) - (coerce-entry-to-directory () - :test (lambda (c) (declare (ignore c)) - (and (not (directory-pathname-p defaults)) - (directory-pathname-p - (setf directorized - (ensure-directory-pathname defaults))))) - :report (lambda (s) - (format s (compatfmt "~@") - directorized dir)) - (push (cons dir directorized) to-replace)))))))) - ;; cleanup - (dolist (dir to-remove) - (setf *central-registry* (remove dir *central-registry*))) - (dolist (pair to-replace) - (let* ((current (car pair)) - (new (cdr pair)) - (position (position current *central-registry*))) - (setf *central-registry* - (append (subseq *central-registry* 0 position) - (list new) - (subseq *central-registry* (1+ position)))))))))) - - - ;;; Methods for find-system - - ;; Reject NIL as a system designator. - (defmethod find-system ((name null) &optional (error-p t)) - (when error-p - (sysdef-error (compatfmt "~@")))) - - ;; Default method for find-system: resolve the argument using COERCE-NAME. - (defmethod find-system (name &optional (error-p t)) - (find-system (coerce-name name) error-p)) - - (defun find-system-if-being-defined (name) - ;; This function finds systems being defined *in the current ASDF session*, as embodied by - ;; its session cache, even before they are fully defined and registered in *defined-systems*. - ;; The purpose of this function is to prevent races between two files that might otherwise - ;; try overwrite each other's system objects, resulting in infinite loops and stack overflow. - ;; This function explicitly MUST NOT find definitions merely registered in previous sessions. - ;; NB: this function depends on a corresponding side-effect in parse-defsystem; - ;; the precise protocol between the two functions may change in the future (or not). - (first (gethash `(find-system ,(coerce-name name)) *asdf-cache*))) - - (defun load-asd (pathname - &key name (external-format (encoding-external-format (detect-encoding pathname))) - &aux (readtable *readtable*) (print-pprint-dispatch *print-pprint-dispatch*)) - "Load system definitions from PATHNAME. -NAME if supplied is the name of a system expected to be defined in that file. - -Do NOT try to load a .asd file directly with CL:LOAD. Always use ASDF:LOAD-ASD." - (with-asdf-cache () - (with-standard-io-syntax - (let ((*package* (find-package :asdf-user)) - ;; Note that our backward-compatible *readtable* is - ;; a global readtable that gets globally side-effected. Ouch. - ;; Same for the *print-pprint-dispatch* table. - ;; We should do something about that for ASDF3 if possible, or else ASDF4. - (*readtable* readtable) - (*print-pprint-dispatch* print-pprint-dispatch) - (*print-readably* nil) - (*default-pathname-defaults* - ;; resolve logical-pathnames so they won't wreak havoc in parsing namestrings. - (pathname-directory-pathname (physicalize-pathname pathname)))) - (handler-bind - (((and error (not missing-component)) - #'(lambda (condition) - (error 'load-system-definition-error - :name name :pathname pathname :condition condition)))) - (asdf-message (compatfmt "~&~@<; ~@;Loading system definition~@[ for ~A~] from ~A~@:>~%") - name pathname) - (load* pathname :external-format external-format)))))) - - (defvar *old-asdf-systems* (make-hash-table :test 'equal)) - - ;; (Private) function to check that a system that was found isn't an asdf downgrade. - ;; Returns T if everything went right, NIL if the system was an ASDF of the same or older version, - ;; that shall not be loaded. Also issue a warning if it was a strictly older version of ASDF. - (defun check-not-old-asdf-system (name pathname) - (or (not (equal name "asdf")) - (null pathname) - (let* ((version-pathname (subpathname pathname "version.lisp-expr")) - (version (and (probe-file* version-pathname :truename nil) - (read-file-form version-pathname))) - (old-version (asdf-version))) - (cond - ((version< old-version version) t) ;; newer version: good! - ((equal old-version version) nil) ;; same version: don't load, but don't warn - (t ;; old version: bad - (ensure-gethash - (list (namestring pathname) version) *old-asdf-systems* - #'(lambda () - (let ((old-pathname (system-source-file (registered-system "asdf")))) - (warn "~@<~ - You are using ASDF version ~A ~:[(probably from (require \"asdf\") ~ - or loaded by quicklisp)~;from ~:*~S~] and have an older version of ASDF ~ - ~:[(and older than 2.27 at that)~;~:*~A~] registered at ~S. ~ - Having an ASDF installed and registered is the normal way of configuring ASDF to upgrade itself, ~ - and having an old version registered is a configuration error. ~ - ASDF will ignore this configured system rather than downgrade itself. ~ - In the future, you may want to either: ~ - (a) upgrade this configured ASDF to a newer version, ~ - (b) install a newer ASDF and register it in front of the former in your configuration, or ~ - (c) uninstall or unregister this and any other old version of ASDF from your configuration. ~ - Note that the older ASDF might be registered implicitly through configuration inherited ~ - from your system installation, in which case you might have to specify ~ - :ignore-inherited-configuration in your in your ~~/.config/common-lisp/source-registry.conf ~ - or other source-registry configuration file, environment variable or lisp parameter. ~ - Indeed, a likely offender is an obsolete version of the cl-asdf debian or ubuntu package, ~ - that you might want to upgrade (if a recent enough version is available) ~ - or else remove altogether (since most implementations ship with a recent asdf); ~ - if you lack the system administration rights to upgrade or remove this package, ~ - then you might indeed want to either install and register a more recent version, ~ - or use :ignore-inherited-configuration to avoid registering the old one. ~ - Please consult ASDF documentation and/or experts.~@:>~%" - old-version old-pathname version pathname)))) - nil))))) ;; only issue the warning the first time, but always return nil - - (defun locate-system (name) - "Given a system NAME designator, try to locate where to load the system from. -Returns five values: FOUNDP FOUND-SYSTEM PATHNAME PREVIOUS PREVIOUS-TIME -FOUNDP is true when a system was found, -either a new unregistered one or a previously registered one. -FOUND-SYSTEM when not null is a SYSTEM object that may be REGISTER-SYSTEM'ed. -PATHNAME when not null is a path from which to load the system, -either associated with FOUND-SYSTEM, or with the PREVIOUS system. -PREVIOUS when not null is a previously loaded SYSTEM object of same name. -PREVIOUS-TIME when not null is the time at which the PREVIOUS system was loaded." - (with-asdf-cache () ;; NB: We don't cache the results. We once used to, but it wasn't useful, - ;; and keeping a negative cache was a bug (see lp#1335323), which required - ;; explicit invalidation in clear-system and find-system (when unsucccessful). - (let* ((name (coerce-name name)) - (in-memory (system-registered-p name)) ; load from disk if absent or newer on disk - (previous (cdr in-memory)) - (previous (and (typep previous 'system) previous)) - (previous-time (car in-memory)) - (found (search-for-system-definition name)) - (found-system (and (typep found 'system) found)) - (pathname (ensure-pathname - (or (and (typep found '(or pathname string)) (pathname found)) - (system-source-file found-system) - (system-source-file previous)) - :want-absolute t :resolve-symlinks *resolve-symlinks*)) - (foundp (and (or found-system pathname previous) t))) - (check-type found (or null pathname system)) - (unless (check-not-old-asdf-system name pathname) - (check-type previous system) ;; asdf is preloaded, so there should be a previous one. - (setf found-system nil pathname nil)) - (values foundp found-system pathname previous previous-time)))) - - ;; Main method for find-system: first, make sure the computation is memoized in a session cache. - ;; unless the system is immutable, use locate-system to find the primary system; - ;; reconcile the finding (if any) with any previous definition (in a previous session, - ;; preloaded, with a previous configuration, or before filesystem changes), and - ;; load a found .asd if appropriate. Finally, update registration table and return results. - (defmethod find-system ((name string) &optional (error-p t)) - (with-asdf-cache (:key `(find-system ,name)) - (let ((primary-name (primary-system-name name))) - (unless (equal name primary-name) - (find-system primary-name nil))) - (or (and *immutable-systems* (gethash name *immutable-systems*) (registered-system name)) - (multiple-value-bind (foundp found-system pathname previous previous-time) - (locate-system name) - (assert (eq foundp (and (or found-system pathname previous) t))) - (let ((previous-pathname (system-source-file previous)) - (system (or previous found-system))) - (when (and found-system (not previous)) - (register-system found-system)) - (when (and system pathname) - (setf (system-source-file system) pathname)) - (when (and pathname - (let ((stamp (get-file-stamp pathname))) - (and stamp - (not (and previous - (or (pathname-equal pathname previous-pathname) - (and pathname previous-pathname - (pathname-equal - (physicalize-pathname pathname) - (physicalize-pathname previous-pathname)))) - (stamp<= stamp previous-time)))))) - ;; Only load when it's a pathname that is different or has newer content. - (load-asd pathname :name name))) - ;; Try again after having loaded from disk if needed - (let ((in-memory (system-registered-p name))) - (cond - (in-memory - (when pathname - (setf (car in-memory) (get-file-stamp pathname))) - (cdr in-memory)) - (error-p - (error 'missing-component :requires name)) - (t - (return-from find-system nil))))))))) -;;;; ------------------------------------------------------------------------- -;;;; Finding components - -(uiop/package:define-package :asdf/find-component - (:recycle :asdf/find-component :asdf) - (:use :uiop/common-lisp :uiop :asdf/upgrade :asdf/cache - :asdf/component :asdf/system :asdf/find-system) - (:export - #:find-component - #:resolve-dependency-name #:resolve-dependency-spec - #:resolve-dependency-combination - ;; Conditions - #:missing-component #:missing-component-of-version #:retry - #:missing-dependency #:missing-dependency-of-version - #:missing-requires #:missing-parent - #:missing-required-by #:missing-version)) -(in-package :asdf/find-component) - -;;;; Missing component conditions - -(with-upgradability () - (define-condition missing-component-of-version (missing-component) - ((version :initform nil :reader missing-version :initarg :version))) - - (define-condition missing-dependency (missing-component) - ((required-by :initarg :required-by :reader missing-required-by))) - - (defmethod print-object ((c missing-dependency) s) - (format s (compatfmt "~@<~A, required by ~A~@:>") - (call-next-method c nil) (missing-required-by c))) - - (define-condition missing-dependency-of-version (missing-dependency - missing-component-of-version) - ()) - - (defmethod print-object ((c missing-component) s) - (format s (compatfmt "~@") - (missing-requires c) - (when (missing-parent c) - (coerce-name (missing-parent c))))) - - (defmethod print-object ((c missing-component-of-version) s) - (format s (compatfmt "~@") - (missing-requires c) - (missing-version c) - (when (missing-parent c) - (coerce-name (missing-parent c)))))) - - -;;;; Finding components - -(with-upgradability () - (defgeneric find-component (base path &key registered) - (:documentation "Find a component by resolving the PATH starting from BASE parent. -If REGISTERED is true, only search currently registered systems.")) - (defgeneric resolve-dependency-combination (component combinator arguments) - (:documentation "Return a component satisfying the dependency specification (COMBINATOR . ARGUMENTS) -in the context of COMPONENT")) - - ;; Methods for find-component - - ;; If the base component is a string, resolve it as a system, then if not nil follow the path. - (defmethod find-component ((base string) path &key registered) - (if-let ((s (if registered - (registered-system base) - (find-system base nil)))) - (find-component s path :registered registered))) - - ;; If the base component is a symbol, coerce it to a name if not nil, and resolve that. - ;; If nil, use the path as base if not nil, or else return nil. - (defmethod find-component ((base symbol) path &key registered) - (cond - (base (find-component (coerce-name base) path :registered registered)) - (path (find-component path nil :registered registered)) - (t nil))) - - ;; If the base component is a cons cell, resolve its car, and add its cdr to the path. - (defmethod find-component ((base cons) path &key registered) - (find-component (car base) (cons (cdr base) path) :registered registered)) - - ;; If the base component is a parent-component and the path a string, find the named child. - (defmethod find-component ((parent parent-component) (name string) &key registered) - (declare (ignorable registered)) - (compute-children-by-name parent :only-if-needed-p t) - (values (gethash name (component-children-by-name parent)))) - - ;; If the path is a symbol, coerce it to a name if non-nil, or else just return the base. - (defmethod find-component (base (name symbol) &key registered) - (if name - (find-component base (coerce-name name) :registered registered) - base)) - - ;; If the path is a cons, first resolve its car as path, then its cdr. - (defmethod find-component ((c component) (name cons) &key registered) - (find-component (find-component c (car name) :registered registered) - (cdr name) :registered registered)) - - ;; If the path is a component, return it, disregarding the base. - (defmethod find-component ((base t) (actual component) &key registered) - (declare (ignorable registered)) - actual) - - ;; Resolve dependency NAME in the context of a COMPONENT, with given optional VERSION constraint. - ;; This (private) function is used below by RESOLVE-DEPENDENCY-SPEC and by the :VERSION spec. - (defun resolve-dependency-name (component name &optional version) - (loop - (restart-case - (return - (let ((comp (find-component (component-parent component) name))) - (unless comp - (error 'missing-dependency - :required-by component - :requires name)) - (when version - (unless (version-satisfies comp version) - (error 'missing-dependency-of-version - :required-by component - :version version - :requires name))) - comp)) - (retry () - :report (lambda (s) - (format s (compatfmt "~@") name)) - :test - (lambda (c) - (or (null c) - (and (typep c 'missing-dependency) - (eq (missing-required-by c) component) - (equal (missing-requires c) name)))) - (unless (component-parent component) - (let ((name (coerce-name name))) - (unset-asdf-cache-entry `(find-system ,name)))))))) - - ;; Resolve dependency specification DEP-SPEC in the context of COMPONENT. - ;; This is notably used by MAP-DIRECT-DEPENDENCIES to process the results of COMPONENT-DEPENDS-ON - ;; and by PARSE-DEFSYSTEM to process DEFSYSTEM-DEPENDS-ON. - (defun resolve-dependency-spec (component dep-spec) - (let ((component (find-component () component))) - (if (atom dep-spec) - (resolve-dependency-name component dep-spec) - (resolve-dependency-combination component (car dep-spec) (cdr dep-spec))))) - - ;; Methods for RESOLVE-DEPENDENCY-COMBINATION to parse lists as dependency specifications. - (defmethod resolve-dependency-combination (component combinator arguments) - (parameter-error (compatfmt "~@") - 'resolve-dependency-combination (cons combinator arguments) component)) - - (defmethod resolve-dependency-combination (component (combinator (eql :feature)) arguments) - (when (featurep (first arguments)) - (resolve-dependency-spec component (second arguments)))) - - (defmethod resolve-dependency-combination (component (combinator (eql :version)) arguments) - (resolve-dependency-name component (first arguments) (second arguments)))) ;; See lp#527788 - -;;;; ------------------------------------------------------------------------- -;;;; Operations - -(uiop/package:define-package :asdf/operation - (:recycle :asdf/operation :asdf/action :asdf) ;; asdf/action for FEATURE pre 2.31.5. - (:use :uiop/common-lisp :uiop :asdf/upgrade :asdf/find-system) - (:export - #:operation - #:*operations* #:make-operation #:find-operation - #:feature)) ;; TODO: stop exporting the deprecated FEATURE feature. -(in-package :asdf/operation) - -;;; Operation Classes -(when-upgrading (:version "2.27" :when (find-class 'operation nil)) - ;; override any obsolete shared-initialize method when upgrading from ASDF2. - (defmethod shared-initialize :after ((o operation) (slot-names t) &key) - (values))) - -(with-upgradability () - (defclass operation () - () - (:documentation "The base class for all ASDF operations. - -ASDF does NOT and never did distinguish between multiple operations of the same class. -Therefore, all slots of all operations MUST have :allocation :class and no initargs. No exceptions. -")) - - (defvar *in-make-operation* nil) - - (defun check-operation-constructor () - "Enforce that OPERATION instances must be created with MAKE-OPERATION." - (unless *in-make-operation* - (sysdef-error "OPERATION instances must only be created through MAKE-OPERATION."))) - - (defmethod print-object ((o operation) stream) - (print-unreadable-object (o stream :type t :identity nil))) - - ;;; Override previous methods (from 3.1.7 and earlier) and add proper error checking. - (defmethod initialize-instance :after ((o operation) &rest initargs &key &allow-other-keys) - (unless (null initargs) - (parameter-error "~S does not accept initargs" 'operation)))) - - -;;; make-operation, find-operation - -(with-upgradability () - ;; A table to memoize instances of a given operation. There shall be only one. - (defparameter* *operations* (make-hash-table :test 'equal)) - - ;; A memoizing way of creating instances of operation. - (defun make-operation (operation-class) - "This function creates and memoizes an instance of OPERATION-CLASS. -All operation instances MUST be created through this function. - -Use of INITARGS is not supported at this time." - (let ((class (coerce-class operation-class - :package :asdf/interface :super 'operation :error 'sysdef-error)) - (*in-make-operation* t)) - (ensure-gethash class *operations* `(make-instance ,class)))) - - ;; This function is mostly for backward and forward compatibility: - ;; operations used to preserve the operation-original-initargs of the context, - ;; and may in the future preserve some operation-canonical-initargs. - ;; Still, the treatment of NIL as a disabling context is useful in some cases. - (defgeneric find-operation (context spec) - (:documentation "Find an operation by resolving the SPEC in the CONTEXT")) - (defmethod find-operation ((context t) (spec operation)) - spec) - (defmethod find-operation ((context t) (spec symbol)) - (when spec ;; NIL designates itself, i.e. absence of operation - (make-operation spec))) ;; TODO: preserve the (operation-canonical-initargs context) - (defmethod find-operation ((context t) (spec string)) - (make-operation spec))) ;; TODO: preserve the (operation-canonical-initargs context) - -;;;; ------------------------------------------------------------------------- -;;;; Actions - -(uiop/package:define-package :asdf/action - (:nicknames :asdf-action) - (:recycle :asdf/action :asdf) - (:use :uiop/common-lisp :uiop :asdf/upgrade - :asdf/component :asdf/system #:asdf/cache :asdf/find-system :asdf/find-component :asdf/operation) - (:import-from :asdf/operation #:check-operation-constructor) - #-clisp (:unintern #:required-components #:traverse-action #:traverse-sub-actions) - (:export - #:action #:define-convenience-action-methods - #:action-description - #:downward-operation #:upward-operation #:sideway-operation #:selfward-operation #:non-propagating-operation - #:component-depends-on - #:input-files #:output-files #:output-file #:operation-done-p - #:action-status #:action-stamp #:action-done-p - #:action-operation #:action-component #:make-action - #:component-operation-time #:mark-operation-done #:compute-action-stamp - #:perform #:perform-with-restarts #:retry #:accept - #:action-path #:find-action #:stamp #:done-p - #:operation-definition-warning #:operation-definition-error ;; condition - )) -(in-package :asdf/action) - -(eval-when (#-lispworks :compile-toplevel :load-toplevel :execute) ;; LispWorks issues spurious warning - - (deftype action () - "A pair of operation and component uniquely identifies a node in the dependency graph -of steps to be performed while building a system." - '(cons operation component)) - - (deftype operation-designator () - "An operation designates itself. NIL designates a context-dependent current operation, -and a class-name or class designates the canonical instance of the designated class." - '(or operation null symbol class))) - -;;; these are pseudo accessors -- let us abstract away the CONS cell representation of plan -;;; actions. -(with-upgradability () - (defun make-action (operation component) - (cons operation component)) - (defun action-operation (action) - (car action)) - (defun action-component (action) - (cdr action))) - -;;;; Reified representation for storage or debugging. Note: an action is identified by its class. -(with-upgradability () - (defun action-path (action) - "A readable data structure that identifies the action." - (let ((o (action-operation action)) - (c (action-component action))) - (cons (type-of o) (component-find-path c)))) - (defun find-action (path) - "Reconstitute an action from its action-path" - (destructuring-bind (o . c) path (make-action (make-operation o) (find-component () c))))) - -;;;; Convenience methods -(with-upgradability () - ;; A macro that defines convenience methods for a generic function (gf) that - ;; dispatches on operation and component. The convenience methods allow users - ;; to call the gf with operation and/or component designators, that the - ;; methods will resolve into actual operation and component objects, so that - ;; the users can interact using readable designators, but developers only have - ;; to write methods that handle operation and component objects. - ;; FUNCTION is the generic function name - ;; FORMALS is its list of arguments, which must include OPERATION and COMPONENT. - ;; IF-NO-OPERATION is a form (defaults to NIL) describing what to do if no operation is found. - ;; IF-NO-COMPONENT is a form (defaults to NIL) describing what to do if no component is found. - (defmacro define-convenience-action-methods - (function formals &key if-no-operation if-no-component) - (let* ((rest (gensym "REST")) - (found (gensym "FOUND")) - (keyp (equal (last formals) '(&key))) - (formals-no-key (if keyp (butlast formals) formals)) - (len (length formals-no-key)) - (operation 'operation) - (component 'component) - (opix (position operation formals)) - (coix (position component formals)) - (prefix (subseq formals 0 opix)) - (suffix (subseq formals (1+ coix) len)) - (more-args (when keyp `(&rest ,rest &key &allow-other-keys)))) - (assert (and (integerp opix) (integerp coix) (= coix (1+ opix)))) - (flet ((next-method (o c) - (if keyp - `(apply ',function ,@prefix ,o ,c ,@suffix ,rest) - `(,function ,@prefix ,o ,c ,@suffix)))) - `(progn - (defmethod ,function (,@prefix (,operation string) ,component ,@suffix ,@more-args) - (declare (notinline ,function)) - (let ((,component (find-component () ,component))) ;; do it first, for defsystem-depends-on - ,(next-method `(safe-read-from-string ,operation :package :asdf/interface) component))) - (defmethod ,function (,@prefix (,operation symbol) ,component ,@suffix ,@more-args) - (declare (notinline ,function)) - (if ,operation - ,(next-method - `(make-operation ,operation) - `(or (find-component () ,component) ,if-no-component)) - ,if-no-operation)) - (defmethod ,function (,@prefix (,operation operation) ,component ,@suffix ,@more-args) - (declare (notinline ,function)) - (if (typep ,component 'component) - (error "No defined method for ~S on ~/asdf-action:format-action/" - ',function (make-action ,operation ,component)) - (if-let (,found (find-component () ,component)) - ,(next-method operation found) - ,if-no-component)))))))) - - -;;;; self-description -(with-upgradability () - (defgeneric action-description (operation component) - (:documentation "returns a phrase that describes performing this operation -on this component, e.g. \"loading /a/b/c\". -You can put together sentences using this phrase.")) - (defmethod action-description (operation component) - (format nil (compatfmt "~@<~A on ~A~@:>") - operation component)) - - (defun format-action (stream action &optional colon-p at-sign-p) - "FORMAT helper to display an action's action-description. -Use it in FORMAT control strings as ~/asdf-action:format-action/" - (assert (null colon-p)) (assert (null at-sign-p)) - (destructuring-bind (operation . component) action - (princ (action-description operation component) stream)))) - - -;;;; Dependencies -(with-upgradability () - (defgeneric component-depends-on (operation component) ;; ASDF4: rename to component-dependencies - (:documentation - "Returns a list of dependencies needed by the component to perform - the operation. A dependency has one of the following forms: - - ( *), where is an operation designator - with respect to FIND-OPERATION in the context of the OPERATION argument, - and each is a component designator with respect to - FIND-COMPONENT in the context of the COMPONENT argument, - and means that the component depends on - having been performed on each ; - - [Note: an is an operation designator -- it can be either an - operation name or an operation object. Similarly, a may be - a component name or a component object. Also note that, the degenerate - case of () is a no-op.] - - Methods specialized on subclasses of existing component types - should usually append the results of CALL-NEXT-METHOD to the list.")) - (define-convenience-action-methods component-depends-on (operation component)) - - (defmethod component-depends-on :around ((o operation) (c component)) - (do-asdf-cache `(component-depends-on ,o ,c) - (call-next-method)))) - - -;;;; upward-operation, downward-operation, sideway-operation, selfward-operation -;; These together handle actions that propagate along the component hierarchy or operation universe. -(with-upgradability () - (defclass downward-operation (operation) - ((downward-operation - :initform nil :reader downward-operation - :type operation-designator :allocation :class)) - (:documentation "A DOWNWARD-OPERATION's dependencies propagate down the component hierarchy. -I.e., if O is a DOWNWARD-OPERATION and its DOWNWARD-OPERATION slot designates operation D, then -the action (O . M) of O on module M will depends on each of (D . C) for each child C of module M. -The default value for slot DOWNWARD-OPERATION is NIL, which designates the operation O itself. -E.g. in order for a MODULE to be loaded with LOAD-OP (resp. compiled with COMPILE-OP), all the -children of the MODULE must have been loaded with LOAD-OP (resp. compiled with COMPILE-OP.")) - (defun downward-operation-depends-on (o c) - `((,(or (downward-operation o) o) ,@(component-children c)))) - (defmethod component-depends-on ((o downward-operation) (c parent-component)) - `(,@(downward-operation-depends-on o c) ,@(call-next-method))) - - (defclass upward-operation (operation) - ((upward-operation - :initform nil :reader upward-operation - :type operation-designator :allocation :class)) - (:documentation "An UPWARD-OPERATION has dependencies that propagate up the component hierarchy. -I.e., if O is an instance of UPWARD-OPERATION, and its UPWARD-OPERATION slot designates operation U, -then the action (O . C) of O on a component C that has the parent P will depends on (U . P). -The default value for slot UPWARD-OPERATION is NIL, which designates the operation O itself. -E.g. in order for a COMPONENT to be prepared for loading or compiling with PREPARE-OP, its PARENT -must first be prepared for loading or compiling with PREPARE-OP.")) - ;; For backward-compatibility reasons, a system inherits from module and is a child-component - ;; so we must guard against this case. ASDF4: remove that. - (defun upward-operation-depends-on (o c) - (if-let (p (component-parent c)) `((,(or (upward-operation o) o) ,p)))) - (defmethod component-depends-on ((o upward-operation) (c child-component)) - `(,@(upward-operation-depends-on o c) ,@(call-next-method))) - - (defclass sideway-operation (operation) - ((sideway-operation - :initform nil :reader sideway-operation - :type operation-designator :allocation :class)) - (:documentation "A SIDEWAY-OPERATION has dependencies that propagate \"sideway\" to siblings -that a component depends on. I.e. if O is a SIDEWAY-OPERATION, and its SIDEWAY-OPERATION slot -designates operation S (where NIL designates O itself), then the action (O . C) of O on component C -depends on each of (S . D) where D is a declared dependency of C. -E.g. in order for a COMPONENT to be prepared for loading or compiling with PREPARE-OP, -each of its declared dependencies must first be loaded as by LOAD-OP.")) - (defun sideway-operation-depends-on (o c) - `((,(or (sideway-operation o) o) ,@(component-sideway-dependencies c)))) - (defmethod component-depends-on ((o sideway-operation) (c component)) - `(,@(sideway-operation-depends-on o c) ,@(call-next-method))) - - (defclass selfward-operation (operation) - ((selfward-operation - ;; NB: no :initform -- if an operation depends on others, it must explicitly specify which - :type (or operation-designator list) :reader selfward-operation :allocation :class)) - (:documentation "A SELFWARD-OPERATION depends on another operation on the same component. -I.e., if O is a SELFWARD-OPERATION, and its SELFWARD-OPERATION designates a list of operations L, -then the action (O . C) of O on component C depends on each (S . C) for S in L. -E.g. before a component may be loaded by LOAD-OP, it must have been compiled by COMPILE-OP. -A operation-designator designates a singleton list of the designated operation; -a list of operation-designators designates the list of designated operations; -NIL is not a valid operation designator in that context. Note that any dependency -ordering between the operations in a list of SELFWARD-OPERATION should be specified separately -in the respective operation's COMPONENT-DEPENDS-ON methods so that they be scheduled properly.")) - (defun selfward-operation-depends-on (o c) - (loop :for op :in (ensure-list (selfward-operation o)) :collect `(,op ,c))) - (defmethod component-depends-on ((o selfward-operation) (c component)) - `(,@(selfward-operation-depends-on o c) ,@(call-next-method))) - - (defclass non-propagating-operation (operation) - () - (:documentation "A NON-PROPAGATING-OPERATION is an operation that propagates -no dependencies whatsoever. It is supplied in order that the programmer be able -to specify that s/he is intentionally specifying an operation which invokes no -dependencies."))) - - -;;;--------------------------------------------------------------------------- -;;; Help programmers catch obsolete OPERATION subclasses -;;;--------------------------------------------------------------------------- -(with-upgradability () - (define-condition operation-definition-warning (simple-warning) - () - (:documentation "Warning condition related to definition of obsolete OPERATION objects.")) - - (define-condition operation-definition-error (simple-error) - () - (:documentation "Error condition related to definition of incorrect OPERATION objects.")) - - (defmethod initialize-instance :before ((o operation) &key) - (check-operation-constructor) - (unless (typep o '(or downward-operation upward-operation sideway-operation - selfward-operation non-propagating-operation)) - (warn 'operation-definition-warning - :format-control - "No dependency propagating scheme specified for operation class ~S. -The class needs to be updated for ASDF 3.1 and specify appropriate propagation mixins." - :format-arguments (list (type-of o))))) - - (defmethod initialize-instance :before ((o non-propagating-operation) &key) - (when (typep o '(or downward-operation upward-operation sideway-operation selfward-operation)) - (error 'operation-definition-error - :format-control - "Inconsistent class: ~S - NON-PROPAGATING-OPERATION is incompatible with propagating operation classes as superclasses." - :format-arguments - (list (type-of o))))) - - (defun backward-compatible-depends-on (o c) - "DEPRECATED: all subclasses of OPERATION used in ASDF should inherit from one of - DOWNWARD-OPERATION UPWARD-OPERATION SIDEWAY-OPERATION SELFWARD-OPERATION NON-PROPAGATING-OPERATION. - The function BACKWARD-COMPATIBLE-DEPENDS-ON temporarily provides ASDF2 behaviour for those that - don't. In the future this functionality will be removed, and the default will be no propagation." - (uiop/version::notify-deprecated-function - (version-deprecation *asdf-version* :style-warning "3.2") - 'backward-compatible-depends-on) - `(,@(sideway-operation-depends-on o c) - ,@(when (typep c 'parent-component) (downward-operation-depends-on o c)))) - - (defmethod component-depends-on ((o operation) (c component)) - `(;; Normal behavior, to allow user-specified in-order-to dependencies - ,@(cdr (assoc (type-of o) (component-in-order-to c))) - ;; For backward-compatibility with ASDF2, any operation that doesn't specify propagation - ;; or non-propagation through an appropriate mixin will be downward and sideway. - ,@(unless (typep o '(or downward-operation upward-operation sideway-operation - selfward-operation non-propagating-operation)) - (backward-compatible-depends-on o c)))) - - (defmethod downward-operation ((o operation)) nil) - (defmethod sideway-operation ((o operation)) nil)) - - -;;;--------------------------------------------------------------------------- -;;; End of OPERATION class checking -;;;--------------------------------------------------------------------------- - - -;;;; Inputs, Outputs, and invisible dependencies -(with-upgradability () - (defgeneric output-files (operation component) - (:documentation "Methods for this function return two values: a list of output files -corresponding to this action, and a boolean indicating if they have already been subjected -to relevant output translations and should not be further translated. - -Methods on PERFORM *must* call this function to determine where their outputs are to be located. -They may rely on the order of the files to discriminate between outputs. -")) - (defgeneric input-files (operation component) - (:documentation "A list of input files corresponding to this action. - -Methods on PERFORM *must* call this function to determine where their inputs are located. -They may rely on the order of the files to discriminate between inputs. -")) - (defgeneric operation-done-p (operation component) - (:documentation "Returns a boolean which is NIL if the action must be performed (again).")) - (define-convenience-action-methods output-files (operation component)) - (define-convenience-action-methods input-files (operation component)) - (define-convenience-action-methods operation-done-p (operation component)) - - (defmethod operation-done-p ((o operation) (c component)) - t) - - ;; Translate output files, unless asked not to. Memoize the result. - (defmethod output-files :around ((operation t) (component t)) - (do-asdf-cache `(output-files ,operation ,component) - (values - (multiple-value-bind (pathnames fixedp) (call-next-method) - ;; 1- Make sure we have absolute pathnames - (let* ((directory (pathname-directory-pathname - (component-pathname (find-component () component)))) - (absolute-pathnames - (loop - :for pathname :in pathnames - :collect (ensure-absolute-pathname pathname directory)))) - ;; 2- Translate those pathnames as required - (if fixedp - absolute-pathnames - (mapcar *output-translation-function* absolute-pathnames)))) - t))) - (defmethod output-files ((o operation) (c component)) - nil) - (defun output-file (operation component) - "The unique output file of performing OPERATION on COMPONENT" - (let ((files (output-files operation component))) - (assert (length=n-p files 1)) - (first files))) - - ;; Memoize input files. - (defmethod input-files :around (operation component) - (do-asdf-cache `(input-files ,operation ,component) - (call-next-method))) - - ;; By default an action has no input-files. - (defmethod input-files ((o operation) (c component)) - nil) - - ;; An action with a selfward-operation by default gets its input-files from the output-files of - ;; the actions using selfward-operations it depends on (and the same component), - ;; or if there are none, on the component-pathname of the component if it's a file - ;; -- and then on the results of the next-method. - (defmethod input-files ((o selfward-operation) (c component)) - `(,@(or (loop :for dep-o :in (ensure-list (selfward-operation o)) - :append (or (output-files dep-o c) (input-files dep-o c))) - (if-let ((pathname (component-pathname c))) - (and (file-pathname-p pathname) (list pathname)))) - ,@(call-next-method)))) - - -;;;; Done performing -(with-upgradability () - ;; ASDF4: hide it behind plan-action-stamp - (defgeneric component-operation-time (operation component) - (:documentation "Return the timestamp for when an action was last performed")) - (defgeneric (setf component-operation-time) (time operation component) - (:documentation "Update the timestamp for when an action was last performed")) - (define-convenience-action-methods component-operation-time (operation component)) - - ;; ASDF4: hide it behind (setf plan-action-stamp) - (defgeneric mark-operation-done (operation component) - (:documentation "Mark a action as having been just done. - -Updates the action's COMPONENT-OPERATION-TIME to match the COMPUTE-ACTION-STAMP -using the JUST-DONE flag.")) - (defgeneric compute-action-stamp (plan operation component &key just-done) - (:documentation "Has this action been successfully done already, -and at what known timestamp has it been done at or will it be done at? -* PLAN is a plan object modelling future effects of actions, - or NIL to denote what actually happened. -* OPERATION and COMPONENT denote the action. -Takes keyword JUST-DONE: -* JUST-DONE is a boolean that is true if the action was just successfully performed, - at which point we want compute the actual stamp and warn if files are missing; - otherwise we are making plans, anticipating the effects of the action. -Returns two values: -* a STAMP saying when it was done or will be done, - or T if the action involves files that need to be recomputed. -* a boolean DONE-P that indicates whether the action has actually been done, - and both its output-files and its in-image side-effects are up to date.")) - - (defclass action-status () - ((stamp - :initarg :stamp :reader action-stamp - :documentation "STAMP associated with the ACTION if it has been completed already -in some previous image, or T if it needs to be done.") - (done-p - :initarg :done-p :reader action-done-p - :documentation "a boolean, true iff the action was already done (before any planned action).")) - (:documentation "Status of an action")) - - (defmethod print-object ((status action-status) stream) - (print-unreadable-object (status stream :type t) - (with-slots (stamp done-p) status - (format stream "~@{~S~^ ~}" :stamp stamp :done-p done-p)))) - - (defmethod component-operation-time ((o operation) (c component)) - (gethash o (component-operation-times c))) - - (defmethod (setf component-operation-time) (stamp (o operation) (c component)) - (setf (gethash o (component-operation-times c)) stamp)) - - (defmethod mark-operation-done ((o operation) (c component)) - (setf (component-operation-time o c) (compute-action-stamp nil o c :just-done t)))) - - -;;;; Perform -(with-upgradability () - (defgeneric perform (operation component) - (:documentation "PERFORM an action, consuming its input-files and building its output-files")) - (define-convenience-action-methods perform (operation component)) - - (defmethod perform :before ((o operation) (c component)) - (ensure-all-directories-exist (output-files o c))) - (defmethod perform :after ((o operation) (c component)) - (mark-operation-done o c)) - (defmethod perform ((o operation) (c parent-component)) - nil) - (defmethod perform ((o operation) (c source-file)) - ;; For backward compatibility, don't error on operations that don't specify propagation. - (when (typep o '(or downward-operation upward-operation sideway-operation - selfward-operation non-propagating-operation)) - (sysdef-error - (compatfmt "~@") - 'perform (make-action o c)))) - - ;; The restarts of the perform-with-restarts variant matter in an interactive context. - ;; The retry strategies of p-w-r itself, and/or the background workers of a multiprocess build - ;; may call perform directly rather than call p-w-r. - (defgeneric perform-with-restarts (operation component) - (:documentation "PERFORM an action in a context where suitable restarts are in place.")) - (defmethod perform-with-restarts (operation component) - (perform operation component)) - (defmethod perform-with-restarts :around (operation component) - (loop - (restart-case - (return (call-next-method)) - (retry () - :report - (lambda (s) - (format s (compatfmt "~@") - (action-description operation component)))) - (accept () - :report - (lambda (s) - (format s (compatfmt "~@") - (action-description operation component))) - (mark-operation-done operation component) - (return)))))) -;;;; ------------------------------------------------------------------------- -;;;; Actions to build Common Lisp software - -(uiop/package:define-package :asdf/lisp-action - (:recycle :asdf/lisp-action :asdf) - (:use :uiop/common-lisp :uiop :asdf/upgrade :asdf/cache - :asdf/component :asdf/system :asdf/find-component :asdf/find-system - :asdf/operation :asdf/action) - (:export - #:try-recompiling - #:cl-source-file #:cl-source-file.cl #:cl-source-file.lsp - #:basic-load-op #:basic-compile-op - #:load-op #:prepare-op #:compile-op #:test-op #:load-source-op #:prepare-source-op - #:call-with-around-compile-hook - #:perform-lisp-compilation #:perform-lisp-load-fasl #:perform-lisp-load-source - #:lisp-compilation-output-files)) -(in-package :asdf/lisp-action) - - -;;;; Component classes -(with-upgradability () - (defclass cl-source-file (source-file) - ((type :initform "lisp")) - (:documentation "Component class for a Common Lisp source file (using type \"lisp\")")) - (defclass cl-source-file.cl (cl-source-file) - ((type :initform "cl")) - (:documentation "Component class for a Common Lisp source file using type \"cl\"")) - (defclass cl-source-file.lsp (cl-source-file) - ((type :initform "lsp")) - (:documentation "Component class for a Common Lisp source file using type \"lsp\""))) - - -;;;; Operation classes -(with-upgradability () - (defclass basic-load-op (operation) () - (:documentation "Base class for operations that apply the load-time effects of a file")) - (defclass basic-compile-op (operation) () - (:documentation "Base class for operations that apply the compile-time effects of a file"))) - - -;;; Our default operations: loading into the current lisp image -(with-upgradability () - (defclass prepare-op (upward-operation sideway-operation) - ((sideway-operation :initform 'load-op :allocation :class)) - (:documentation "Load the dependencies for the COMPILE-OP or LOAD-OP of a given COMPONENT.")) - (defclass load-op (basic-load-op downward-operation selfward-operation) - ;; NB: even though compile-op depends on prepare-op it is not needed-in-image-p, - ;; so we need to directly depend on prepare-op for its side-effects in the current image. - ((selfward-operation :initform '(prepare-op compile-op) :allocation :class)) - (:documentation "Operation for loading the compiled FASL for a Lisp file")) - (defclass compile-op (basic-compile-op downward-operation selfward-operation) - ((selfward-operation :initform 'prepare-op :allocation :class)) - (:documentation "Operation for compiling a Lisp file to a FASL")) - - - (defclass prepare-source-op (upward-operation sideway-operation) - ((sideway-operation :initform 'load-source-op :allocation :class)) - (:documentation "Operation for loading the dependencies of a Lisp file as source.")) - (defclass load-source-op (basic-load-op downward-operation selfward-operation) - ((selfward-operation :initform 'prepare-source-op :allocation :class)) - (:documentation "Operation for loading a Lisp file as source.")) - - (defclass test-op (selfward-operation) - ((selfward-operation :initform 'load-op :allocation :class)) - (:documentation "Operation for running the tests for system. -If the tests fail, an error will be signaled."))) - - -;;;; Methods for prepare-op, compile-op and load-op - -;;; prepare-op -(with-upgradability () - (defmethod action-description ((o prepare-op) (c component)) - (format nil (compatfmt "~@") c)) - (defmethod perform ((o prepare-op) (c component)) - nil) - (defmethod input-files ((o prepare-op) (s system)) - (if-let (it (system-source-file s)) (list it)))) - -;;; compile-op -(with-upgradability () - (defmethod action-description ((o compile-op) (c component)) - (format nil (compatfmt "~@") c)) - (defmethod action-description ((o compile-op) (c parent-component)) - (format nil (compatfmt "~@") c)) - (defgeneric call-with-around-compile-hook (component thunk) - (:documentation "A method to be called around the PERFORM'ing of actions that apply the -compile-time side-effects of file (i.e., COMPILE-OP or LOAD-SOURCE-OP). This method can be used -to setup readtables and other variables that control reading, macroexpanding, and compiling, etc. -Note that it will NOT be called around the performing of LOAD-OP.")) - (defmethod call-with-around-compile-hook ((c component) function) - (call-around-hook (around-compile-hook c) function)) - (defun perform-lisp-compilation (o c) - "Perform the compilation of the Lisp file associated to the specified action (O . C)." - (let (;; Before 2.26.53, that was unfortunately component-pathname. Now, - ;; we consult input-files, the first of which should be the one to compile-file - (input-file (first (input-files o c))) - ;; On some implementations, there are more than one output-file, - ;; but the first one should always be the primary fasl that gets loaded. - (outputs (output-files o c))) - (multiple-value-bind (output warnings-p failure-p) - (destructuring-bind - (output-file - &optional - #+(or clasp ecl mkcl) object-file - #+clisp lib-file - warnings-file &rest rest) outputs - ;; Allow for extra outputs that are not of type warnings-file - ;; The way we do it is kludgy. In ASDF4, output-files shall not be positional. - (declare (ignore rest)) - (when warnings-file - (unless (equal (pathname-type warnings-file) (warnings-file-type)) - (setf warnings-file nil))) - (call-with-around-compile-hook - c #'(lambda (&rest flags) - (apply 'compile-file* input-file - :output-file output-file - :external-format (component-external-format c) - :warnings-file warnings-file - (append - #+clisp (list :lib-file lib-file) - #+(or clasp ecl mkcl) (list :object-file object-file) - flags))))) - (check-lisp-compile-results output warnings-p failure-p - "~/asdf-action::format-action/" (list (cons o c)))))) - (defun report-file-p (f) - "Is F a build report file containing, e.g., warnings to check?" - (equalp (pathname-type f) "build-report")) - (defun perform-lisp-warnings-check (o c) - "Check the warnings associated with the dependencies of an action." - (let* ((expected-warnings-files (remove-if-not #'warnings-file-p (input-files o c))) - (actual-warnings-files (loop :for w :in expected-warnings-files - :when (get-file-stamp w) - :collect w - :else :do (warn "Missing warnings file ~S while ~A" - w (action-description o c))))) - (check-deferred-warnings actual-warnings-files) - (let* ((output (output-files o c)) - (report (find-if #'report-file-p output))) - (when report - (with-open-file (s report :direction :output :if-exists :supersede) - (format s ":success~%")))))) - (defmethod perform ((o compile-op) (c cl-source-file)) - (perform-lisp-compilation o c)) - (defun lisp-compilation-output-files (o c) - "Compute the output-files for compiling the Lisp file for the specified action (O . C), -an OPERATION and a COMPONENT." - (let* ((i (first (input-files o c))) - (f (compile-file-pathname - i #+clasp :output-type #+ecl :type #+(or clasp ecl) :fasl - #+mkcl :fasl-p #+mkcl t))) - `(,f ;; the fasl is the primary output, in first position - #+clasp - ,@(unless nil ;; was (use-ecl-byte-compiler-p) - `(,(compile-file-pathname i :output-type :object))) - #+clisp - ,@`(,(make-pathname :type "lib" :defaults f)) - #+ecl - ,@(unless (use-ecl-byte-compiler-p) - `(,(compile-file-pathname i :type :object))) - #+mkcl - ,(compile-file-pathname i :fasl-p nil) ;; object file - ,@(when (and *warnings-file-type* (not (builtin-system-p (component-system c)))) - `(,(make-pathname :type *warnings-file-type* :defaults f)))))) - (defmethod output-files ((o compile-op) (c cl-source-file)) - (lisp-compilation-output-files o c)) - (defmethod perform ((o compile-op) (c static-file)) - nil) - - ;; Performing compile-op on a system will check the deferred warnings for the system - (defmethod perform ((o compile-op) (c system)) - (when (and *warnings-file-type* (not (builtin-system-p c))) - (perform-lisp-warnings-check o c))) - (defmethod input-files ((o compile-op) (c system)) - (when (and *warnings-file-type* (not (builtin-system-p c))) - ;; The most correct way to do it would be to use: - ;; (traverse-sub-actions o c :other-systems nil :keep-operation 'compile-op :keep-component 'cl-source-file) - ;; but it's expensive and we don't care too much about file order or ASDF extensions. - (loop :for sub :in (sub-components c :type 'cl-source-file) - :nconc (remove-if-not 'warnings-file-p (output-files o sub))))) - (defmethod output-files ((o compile-op) (c system)) - (when (and *warnings-file-type* (not (builtin-system-p c))) - (if-let ((pathname (component-pathname c))) - (list (subpathname pathname (coerce-filename c) :type "build-report")))))) - -;;; load-op -(with-upgradability () - (defmethod action-description ((o load-op) (c cl-source-file)) - (format nil (compatfmt "~@") c)) - (defmethod action-description ((o load-op) (c parent-component)) - (format nil (compatfmt "~@") c)) - (defmethod action-description ((o load-op) (c component)) - (format nil (compatfmt "~@") c)) - (defmethod perform-with-restarts ((o load-op) (c cl-source-file)) - (loop - (restart-case - (return (call-next-method)) - (try-recompiling () - :report (lambda (s) - (format s "Recompile ~a and try loading it again" - (component-name c))) - (perform (find-operation o 'compile-op) c))))) - (defun perform-lisp-load-fasl (o c) - "Perform the loading of a FASL associated to specified action (O . C), -an OPERATION and a COMPONENT." - (if-let (fasl (first (input-files o c))) - (load* fasl))) - (defmethod perform ((o load-op) (c cl-source-file)) - (perform-lisp-load-fasl o c)) - (defmethod perform ((o load-op) (c static-file)) - nil)) - - -;;;; prepare-source-op, load-source-op - -;;; prepare-source-op -(with-upgradability () - (defmethod action-description ((o prepare-source-op) (c component)) - (format nil (compatfmt "~@") c)) - (defmethod input-files ((o prepare-source-op) (s system)) - (if-let (it (system-source-file s)) (list it))) - (defmethod perform ((o prepare-source-op) (c component)) - nil)) - -;;; load-source-op -(with-upgradability () - (defmethod action-description ((o load-source-op) (c component)) - (format nil (compatfmt "~@") c)) - (defmethod action-description ((o load-source-op) (c parent-component)) - (format nil (compatfmt "~@") c)) - (defun perform-lisp-load-source (o c) - "Perform the loading of a Lisp file as associated to specified action (O . C)" - (call-with-around-compile-hook - c #'(lambda () - (load* (first (input-files o c)) - :external-format (component-external-format c))))) - - (defmethod perform ((o load-source-op) (c cl-source-file)) - (perform-lisp-load-source o c)) - (defmethod perform ((o load-source-op) (c static-file)) - nil)) - - -;;;; test-op -(with-upgradability () - (defmethod perform ((o test-op) (c component)) - nil) - (defmethod operation-done-p ((o test-op) (c system)) - "Testing a system is _never_ done." - nil)) -;;;; ------------------------------------------------------------------------- -;;;; Plan - -(uiop/package:define-package :asdf/plan - ;; asdf/action below is needed for required-components, traverse-action and traverse-sub-actions - ;; that used to live there before 3.2.0. - (:recycle :asdf/plan :asdf) - (:use :uiop/common-lisp :uiop :asdf/upgrade - :asdf/component :asdf/operation :asdf/system - :asdf/cache :asdf/find-system :asdf/find-component - :asdf/operation :asdf/action :asdf/lisp-action) - (:export - #:component-operation-time - #:plan #:plan-traversal #:sequential-plan #:*default-plan-class* - #:planned-action-status #:plan-action-status #:action-already-done-p - #:circular-dependency #:circular-dependency-actions - #:needed-in-image-p - #:action-index #:action-planned-p #:action-valid-p - #:plan-record-dependency - #:normalize-forced-systems #:action-forced-p #:action-forced-not-p - #:map-direct-dependencies #:reduce-direct-dependencies #:direct-dependencies - #:compute-action-stamp #:traverse-action - #:circular-dependency #:circular-dependency-actions - #:call-while-visiting-action #:while-visiting-action - #:make-plan #:plan-actions #:perform-plan #:plan-operates-on-p - #:planned-p #:index #:forced #:forced-not #:total-action-count - #:planned-action-count #:planned-output-action-count #:visited-actions - #:visiting-action-set #:visiting-action-list #:plan-actions-r - #:required-components #:filtered-sequential-plan - #:plan-system - #:plan-action-filter #:plan-component-type #:plan-keep-operation #:plan-keep-component - #:traverse-actions #:traverse-sub-actions)) -(in-package :asdf/plan) - -;;;; Generic plan traversal class -(with-upgradability () - (defclass plan () () - (:documentation "Base class for a plan based on which ASDF can build a system")) - (defclass plan-traversal (plan) - (;; The system for which the plan is computed - (system :initform nil :initarg :system :accessor plan-system) - ;; Table of systems specified via :force arguments - (forced :initform nil :initarg :force :accessor plan-forced) - ;; Table of systems specified via :force-not argument (and/or immutable) - (forced-not :initform nil :initarg :force-not :accessor plan-forced-not) - ;; Counts of total actions in plan - (total-action-count :initform 0 :accessor plan-total-action-count) - ;; Count of actions that need to be performed - (planned-action-count :initform 0 :accessor plan-planned-action-count) - ;; Count of actions that need to be performed that have a non-empty list of output-files. - (planned-output-action-count :initform 0 :accessor plan-planned-output-action-count) - ;; Table that to actions already visited while walking the dependencies associates status - (visited-actions :initform (make-hash-table :test 'equal) :accessor plan-visited-actions) - ;; Actions that depend on those being currently walked through, to detect circularities - (visiting-action-set ;; as a set - :initform (make-hash-table :test 'equal) :accessor plan-visiting-action-set) - (visiting-action-list :initform () :accessor plan-visiting-action-list)) ;; as a list - (:documentation "Base class for plans that simply traverse dependencies"))) - - -;;;; Planned action status -(with-upgradability () - (defgeneric plan-action-status (plan operation component) - (:documentation "Returns the ACTION-STATUS associated to -the action of OPERATION on COMPONENT in the PLAN")) - - (defgeneric (setf plan-action-status) (new-status plan operation component) - (:documentation "Sets the ACTION-STATUS associated to -the action of OPERATION on COMPONENT in the PLAN")) - - (defclass planned-action-status (action-status) - ((planned-p - :initarg :planned-p :reader action-planned-p - :documentation "a boolean, true iff the action was included in the plan.") - (index - :initarg :index :reader action-index - :documentation "an integer, counting all traversed actions in traversal order.")) - (:documentation "Status of an action in a plan")) - - (defmethod print-object ((status planned-action-status) stream) - (print-unreadable-object (status stream :type t :identity nil) - (with-slots (stamp done-p planned-p index) status - (format stream "~@{~S~^ ~}" :stamp stamp :done-p done-p :planned-p planned-p :index index)))) - - (defmethod action-planned-p ((action-status t)) - t) ; default method for non planned-action-status objects - - (defun action-already-done-p (plan operation component) - "According to this plan, is this action already done and up to date?" - (action-done-p (plan-action-status plan operation component))) - - (defmethod plan-action-status ((plan null) (o operation) (c component)) - (multiple-value-bind (stamp done-p) (component-operation-time o c) - (make-instance 'action-status :stamp stamp :done-p done-p))) - - (defmethod (setf plan-action-status) (new-status (plan null) (o operation) (c component)) - (let ((times (component-operation-times c))) - (if (action-done-p new-status) - (remhash o times) - (setf (gethash o times) (action-stamp new-status)))) - new-status)) - - -;;;; forcing -(with-upgradability () - (defgeneric action-forced-p (plan operation component) - (:documentation "Is this action forced to happen in this plan?")) - (defgeneric action-forced-not-p (plan operation component) - (:documentation "Is this action forced to not happen in this plan? -Takes precedence over action-forced-p.")) - - (defun normalize-forced-systems (force system) - "Given a SYSTEM on which operate is called and the specified FORCE argument, -extract a hash-set of systems that are forced, or a predicate on system names, -or NIL if none are forced, or :ALL if all are." - (etypecase force - ((or (member nil :all) hash-table function) force) - (cons (list-to-hash-set (mapcar #'coerce-name force))) - ((eql t) (when system (list-to-hash-set (list (coerce-name system))))))) - - (defun normalize-forced-not-systems (force-not system) - "Given a SYSTEM on which operate is called, the specified FORCE-NOT argument, -and the set of IMMUTABLE systems, extract a hash-set of systems that are effectively forced-not, -or predicate on system names, or NIL if none are forced, or :ALL if all are." - (let ((requested - (etypecase force-not - ((or (member nil :all) hash-table function) force-not) - (cons (list-to-hash-set (mapcar #'coerce-name force-not))) - ((eql t) (if system (let ((name (coerce-name system))) - #'(lambda (x) (not (equal x name)))) - :all))))) - (if (and *immutable-systems* requested) - #'(lambda (x) (or (call-function requested x) - (call-function *immutable-systems* x))) - (or *immutable-systems* requested)))) - - ;; TODO: shouldn't we be looking up the primary system name, rather than the system name? - (defun action-override-p (plan operation component override-accessor) - "Given a plan, an action, and a function that given the plan accesses a set of overrides -(i.e. force or force-not), see if the override applies to the current action." - (declare (ignore operation)) - (call-function (funcall override-accessor plan) - (coerce-name (component-system (find-component () component))))) - - (defmethod action-forced-p (plan operation component) - (and - ;; Did the user ask us to re-perform the action? - (action-override-p plan operation component 'plan-forced) - ;; You really can't force a builtin system and :all doesn't apply to it, - ;; except if it's the specifically the system currently being built. - (not (let ((system (component-system component))) - (and (builtin-system-p system) - (not (eq system (plan-system plan)))))))) - - (defmethod action-forced-not-p (plan operation component) - ;; Did the user ask us to not re-perform the action? - ;; NB: force-not takes precedence over force, as it should - (action-override-p plan operation component 'plan-forced-not)) - - (defmethod action-forced-p ((plan null) (operation operation) (component component)) - nil) - - (defmethod action-forced-not-p ((plan null) (operation operation) (component component)) - nil)) - - -;;;; action-valid-p -(with-upgradability () - (defgeneric action-valid-p (plan operation component) - (:documentation "Is this action valid to include amongst dependencies?")) - ;; :if-feature will invalidate actions on components for which the features don't apply. - (defmethod action-valid-p ((plan t) (o operation) (c component)) - (if-let (it (component-if-feature c)) (featurep it) t)) - ;; If either the operation or component was resolved to nil, the action is invalid. - (defmethod action-valid-p ((plan t) (o null) (c t)) nil) - (defmethod action-valid-p ((plan t) (o t) (c null)) nil) - ;; If the plan is null, i.e., we're looking at reality, - ;; then any action with actual operation and component objects is valid. - (defmethod action-valid-p ((plan null) (o operation) (c component)) t)) - -;;;; Is the action needed in this image? -(with-upgradability () - (defgeneric needed-in-image-p (operation component) - (:documentation "Is the action of OPERATION on COMPONENT needed in the current image -to be meaningful, or could it just as well have been done in another Lisp image?")) - - (defmethod needed-in-image-p ((o operation) (c component)) - ;; We presume that actions that modify the filesystem don't need be run - ;; in the current image if they have already been done in another, - ;; and can be run in another process (e.g. a fork), - ;; whereas those that don't are meant to side-effect the current image and can't. - (not (output-files o c)))) - - -;;;; Visiting dependencies of an action and computing action stamps -(with-upgradability () - (defun* (map-direct-dependencies) (plan operation component fun) - "Call FUN on all the valid dependencies of the given action in the given plan" - (loop* :for (dep-o-spec . dep-c-specs) :in (component-depends-on operation component) - :for dep-o = (find-operation operation dep-o-spec) - :when dep-o - :do (loop :for dep-c-spec :in dep-c-specs - :for dep-c = (and dep-c-spec (resolve-dependency-spec component dep-c-spec)) - :when (and dep-c (action-valid-p plan dep-o dep-c)) - :do (funcall fun dep-o dep-c)))) - - (defun* (reduce-direct-dependencies) (plan operation component combinator seed) - "Reduce the direct dependencies to a value computed by iteratively calling COMBINATOR -for each dependency action on the dependency's operation and component and an accumulator -initialized with SEED." - (map-direct-dependencies - plan operation component - #'(lambda (dep-o dep-c) - (setf seed (funcall combinator dep-o dep-c seed)))) - seed) - - (defun* (direct-dependencies) (plan operation component) - "Compute a list of the direct dependencies of the action within the plan" - (reverse (reduce-direct-dependencies plan operation component #'acons nil))) - - ;; In a distant future, get-file-stamp, component-operation-time and latest-stamp - ;; shall also be parametrized by the plan, or by a second model object, - ;; so they need not refer to the state of the filesystem, - ;; and the stamps could be cryptographic checksums rather than timestamps. - ;; Such a change remarkably would only affect COMPUTE-ACTION-STAMP. - - (defmethod compute-action-stamp (plan (o operation) (c component) &key just-done) - ;; Given an action, figure out at what time in the past it has been done, - ;; or if it has just been done, return the time that it has. - ;; Returns two values: - ;; 1- the TIMESTAMP of the action if it has already been done and is up to date, - ;; or T is either hasn't been done or is out of date. - ;; 2- the DONE-IN-IMAGE-P boolean flag that is T if the action has already been done - ;; in the current image, or NIL if it hasn't. - ;; Note that if e.g. LOAD-OP only depends on up-to-date files, but - ;; hasn't been done in the current image yet, then it can have a non-T timestamp, - ;; yet a NIL done-in-image-p flag: we can predict what timestamp it will have once loaded, - ;; i.e. that of the input-files. - (nest - (block ()) - (let ((dep-stamp ; collect timestamp from dependencies (or T if forced or out-of-date) - (reduce-direct-dependencies - plan o c - #'(lambda (o c stamp) - (if-let (it (plan-action-status plan o c)) - (latest-stamp stamp (action-stamp it)) - t)) - nil))) - ;; out-of-date dependency: don't bother expensively querying the filesystem - (when (and (eq dep-stamp t) (not just-done)) (return (values t nil)))) - ;; collect timestamps from inputs, and exit early if any is missing - (let* ((in-files (input-files o c)) - (in-stamps (mapcar #'get-file-stamp in-files)) - (missing-in (loop :for f :in in-files :for s :in in-stamps :unless s :collect f)) - (latest-in (stamps-latest (cons dep-stamp in-stamps)))) - (when (and missing-in (not just-done)) (return (values t nil)))) - ;; collect timestamps from outputs, and exit early if any is missing - (let* ((out-files (remove-if 'null (output-files o c))) - (out-stamps (mapcar (if just-done 'register-file-stamp 'get-file-stamp) out-files)) - (missing-out (loop :for f :in out-files :for s :in out-stamps :unless s :collect f)) - (earliest-out (stamps-earliest out-stamps))) - (when (and missing-out (not just-done)) (return (values t nil)))) - (let* (;; There are three kinds of actions: - (out-op (and out-files t)) ; those that create files on the filesystem - ;;(image-op (and in-files (null out-files))) ; those that load stuff into the image - ;;(null-op (and (null out-files) (null in-files))) ; placeholders that do nothing - ;; When was the thing last actually done? (Now, or ask.) - (op-time (or just-done (component-operation-time o c))) - ;; Time stamps from the files at hand, and whether any is missing - (all-present (not (or missing-in missing-out))) - ;; Has any input changed since we last generated the files? - (up-to-date-p (stamp<= latest-in earliest-out)) - ;; If everything is up to date, the latest of inputs and outputs is our stamp - (done-stamp (stamps-latest (cons latest-in out-stamps)))) - ;; Warn if some files are missing: - ;; either our model is wrong or some other process is messing with our files. - (when (and just-done (not all-present)) - (warn "~A completed without ~:[~*~;~*its input file~:p~2:*~{ ~S~}~*~]~ - ~:[~; or ~]~:[~*~;~*its output file~:p~2:*~{ ~S~}~*~]" - (action-description o c) - missing-in (length missing-in) (and missing-in missing-out) - missing-out (length missing-out)))) - ;; Note that we use stamp<= instead of stamp< to play nice with generated files. - ;; Any race condition is intrinsic to the limited timestamp resolution. - (if (or just-done ;; The done-stamp is valid: if we're just done, or - ;; if all filesystem effects are up-to-date and there's no invalidating reason. - (and all-present up-to-date-p (operation-done-p o c) (not (action-forced-p plan o c)))) - (values done-stamp ;; return the hard-earned timestamp - (or just-done - out-op ;; a file-creating op is done when all files are up to date - ;; a image-effecting a placeholder op is done when it was actually run, - (and op-time (eql op-time done-stamp)))) ;; with the matching stamp - ;; done-stamp invalid: return a timestamp in an indefinite future, action not done yet - (values t nil))))) - - -;;;; Generic support for plan-traversal -(with-upgradability () - (defmethod initialize-instance :after ((plan plan-traversal) - &key force force-not system - &allow-other-keys) - (with-slots (forced forced-not) plan - (setf forced (normalize-forced-systems force system)) - (setf forced-not (normalize-forced-not-systems force-not system)))) - - (defgeneric plan-actions (plan) - (:documentation "Extract from a plan a list of actions to perform in sequence")) - (defmethod plan-actions ((plan list)) - plan) - - (defmethod (setf plan-action-status) (new-status (p plan-traversal) (o operation) (c component)) - (setf (gethash (cons o c) (plan-visited-actions p)) new-status)) - - (defmethod plan-action-status ((p plan-traversal) (o operation) (c component)) - (or (and (action-forced-not-p p o c) (plan-action-status nil o c)) - (values (gethash (cons o c) (plan-visited-actions p))))) - - (defmethod action-valid-p ((p plan-traversal) (o operation) (s system)) - (and (not (action-forced-not-p p o s)) (call-next-method))) - - (defgeneric plan-record-dependency (plan operation component) - (:documentation "Record an action as a dependency in the current plan"))) - - -;;;; Detection of circular dependencies -(with-upgradability () - (define-condition circular-dependency (system-definition-error) - ((actions :initarg :actions :reader circular-dependency-actions)) - (:report (lambda (c s) - (format s (compatfmt "~@") - (circular-dependency-actions c))))) - - (defgeneric call-while-visiting-action (plan operation component function) - (:documentation "Detect circular dependencies")) - - (defmethod call-while-visiting-action ((plan plan-traversal) operation component fun) - (with-accessors ((action-set plan-visiting-action-set) - (action-list plan-visiting-action-list)) plan - (let ((action (make-action operation component))) - (when (gethash action action-set) - (error 'circular-dependency :actions - (member action (reverse action-list) :test 'equal))) - (setf (gethash action action-set) t) - (push action action-list) - (unwind-protect - (funcall fun) - (pop action-list) - (setf (gethash action action-set) nil))))) - - ;; Syntactic sugar for call-while-visiting-action - (defmacro while-visiting-action ((p o c) &body body) - `(call-while-visiting-action ,p ,o ,c #'(lambda () ,@body)))) - - -;;;; Actual traversal: traverse-action -(with-upgradability () - (defgeneric traverse-action (plan operation component needed-in-image-p)) - - ;; TRAVERSE-ACTION, in the context of a given PLAN object that accumulates dependency data, - ;; visits the action defined by its OPERATION and COMPONENT arguments, - ;; and all its transitive dependencies (unless already visited), - ;; in the context of the action being (or not) NEEDED-IN-IMAGE-P, - ;; i.e. needs to be done in the current image vs merely have been done in a previous image. - ;; For actions that are up-to-date, it returns a STAMP identifying the state of the action - ;; (that's timestamp, but it could be a cryptographic digest in some ASDF extension), - ;; or T if the action needs to be done again. - ;; - ;; Note that for an XCVB-like plan with one-image-per-file-outputting-action, - ;; the below method would be insufficient, since it assumes a single image - ;; to traverse each node at most twice; non-niip actions would be traversed only once, - ;; but niip nodes could be traversed once per image, i.e. once plus once per non-niip action. - - (defmethod traverse-action (plan operation component needed-in-image-p) - (block nil - ;; ACTION-VALID-P among other things, handles forcing logic, including FORCE-NOT, - ;; and IF-FEATURE filtering. - (unless (action-valid-p plan operation component) (return nil)) - ;; the following hook is needed by POIU, which tracks a full dependency graph, - ;; instead of just a dependency order as in vanilla ASDF - (plan-record-dependency plan operation component) - ;; needed in image distinguishes b/w things that must happen in the - ;; current image and those things that simply need to have been done in a previous one. - (let* ((aniip (needed-in-image-p operation component)) ; action-specific needed-in-image - ;; effective niip: meaningful for the action and required by the plan as traversed - (eniip (and aniip needed-in-image-p)) - ;; status: have we traversed that action previously, and if so what was its status? - (status (plan-action-status plan operation component))) - (when (and status (or (action-done-p status) (action-planned-p status) (not eniip))) - (return (action-stamp status))) ; Already visited with sufficient need-in-image level! - (labels ((visit-action (niip) ; We may visit the action twice, once with niip NIL, then T - (map-direct-dependencies ; recursively traverse dependencies - plan operation component #'(lambda (o c) (traverse-action plan o c niip))) - (multiple-value-bind (stamp done-p) ; AFTER dependencies have been traversed, - (compute-action-stamp plan operation component) ; compute action stamp - (let ((add-to-plan-p (or (eql stamp t) (and niip (not done-p))))) - (cond ; it needs be done if it's out of date or needed in image but absent - ((and add-to-plan-p (not niip)) ; if we need to do it, - (visit-action t)) ; then we need to do it *in the (current) image*! - (t - (setf (plan-action-status plan operation component) ; update status: - (make-instance - 'planned-action-status - :stamp stamp ; computed stamp - :done-p (and done-p (not add-to-plan-p)) ; done *and* up-to-date? - :planned-p add-to-plan-p ; included in list of things to be done? - :index (if status ; index of action amongst all nodes in traversal - (action-index status) ;; if already visited, keep index - (incf (plan-total-action-count plan))))) ; else new index - (when (and done-p (not add-to-plan-p)) - (setf (component-operation-time operation component) stamp)) - (when add-to-plan-p ; if it needs to be added to the plan, - (incf (plan-planned-action-count plan)) ; count it - (unless aniip ; if it's output-producing, - (incf (plan-planned-output-action-count plan)))) ; count it - stamp)))))) ; return the stamp - (while-visiting-action (plan operation component) ; maintain context, handle circularity. - (visit-action eniip))))))) ; visit the action - - -;;;; Sequential plans (the default) -(with-upgradability () - (defclass sequential-plan (plan-traversal) - ((actions-r :initform nil :accessor plan-actions-r)) - (:documentation "Simplest, default plan class, accumulating a sequence of actions")) - - (defmethod plan-actions ((plan sequential-plan)) - (reverse (plan-actions-r plan))) - - ;; No need to record a dependency to build a full graph, just accumulate nodes in order. - (defmethod plan-record-dependency ((plan sequential-plan) (o operation) (c component)) - (values)) - - (defmethod (setf plan-action-status) :after - (new-status (p sequential-plan) (o operation) (c component)) - (when (action-planned-p new-status) - (push (make-action o c) (plan-actions-r p))))) - - -;;;; High-level interface: traverse, perform-plan, plan-operates-on-p -(with-upgradability () - (defgeneric make-plan (plan-class operation component &key &allow-other-keys) - (:documentation "Generate and return a plan for performing OPERATION on COMPONENT.")) - (define-convenience-action-methods make-plan (plan-class operation component &key)) - - (defgeneric perform-plan (plan &key) - (:documentation "Actually perform a plan and build the requested actions")) - (defgeneric plan-operates-on-p (plan component) - (:documentation "Does this PLAN include any operation on given COMPONENT?")) - - (defvar *default-plan-class* 'sequential-plan - "The default plan class to use when building with ASDF") - - (defmethod make-plan (plan-class (o operation) (c component) &rest keys &key &allow-other-keys) - (let ((plan (apply 'make-instance (or plan-class *default-plan-class*) - :system (component-system c) keys))) - (traverse-action plan o c t) - plan)) - - (defmethod perform-plan :around ((plan t) &key) - #+xcl (declare (ignorable plan)) - (let ((*package* *package*) - (*readtable* *readtable*)) - (with-compilation-unit () ;; backward-compatibility. - (call-next-method)))) ;; Going forward, see deferred-warning support in lisp-build. - - (defmethod perform-plan ((plan t) &rest keys &key &allow-other-keys) - (apply 'perform-plan (plan-actions plan) keys)) - - (defmethod perform-plan ((steps list) &key force &allow-other-keys) - (loop* :for action :in steps - :as o = (action-operation action) - :as c = (action-component action) - :when (or force (not (nth-value 1 (compute-action-stamp nil o c)))) - :do (perform-with-restarts o c))) - - (defmethod plan-operates-on-p ((plan plan-traversal) (component-path list)) - (plan-operates-on-p (plan-actions plan) component-path)) - - (defmethod plan-operates-on-p ((plan list) (component-path list)) - (find component-path (mapcar 'action-component plan) - :test 'equal :key 'component-find-path))) - - -;;;; Incidental traversals - -;;; Making a FILTERED-SEQUENTIAL-PLAN can be used to, e.g., all of the source -;;; files required by a bundling operation. -(with-upgradability () - (defclass filtered-sequential-plan (sequential-plan) - ((action-filter :initform t :initarg :action-filter :reader plan-action-filter) - (component-type :initform t :initarg :component-type :reader plan-component-type) - (keep-operation :initform t :initarg :keep-operation :reader plan-keep-operation) - (keep-component :initform t :initarg :keep-component :reader plan-keep-component)) - (:documentation "A variant of SEQUENTIAL-PLAN that only records a subset of actions.")) - - (defmethod initialize-instance :after ((plan filtered-sequential-plan) - &key force force-not - other-systems) - (declare (ignore force force-not)) - ;; Ignore force and force-not, rely on other-systems: - ;; force traversal of what we're interested in, i.e. current system or also others; - ;; force-not traversal of what we're not interested in, i.e. other systems unless other-systems. - (with-slots (forced forced-not action-filter system) plan - (setf forced (normalize-forced-systems (if other-systems :all t) system)) - (setf forced-not (normalize-forced-not-systems (if other-systems nil t) system)) - (setf action-filter (ensure-function action-filter)))) - - (defmethod action-valid-p ((plan filtered-sequential-plan) o c) - (and (funcall (plan-action-filter plan) o c) - (typep c (plan-component-type plan)) - (call-next-method))) - - (defun* (traverse-actions) (actions &rest keys &key plan-class &allow-other-keys) - "Given a list of actions, build a plan with these actions as roots." - (let ((plan (apply 'make-instance (or plan-class 'filtered-sequential-plan) keys))) - (loop* :for action :in actions - :as o = (action-operation action) - :as c = (action-component action) - :do (traverse-action plan o c t)) - plan)) - - (defgeneric traverse-sub-actions (operation component &key &allow-other-keys)) - (define-convenience-action-methods traverse-sub-actions (operation component &key)) - (defmethod traverse-sub-actions ((operation operation) (component component) - &rest keys &key &allow-other-keys) - (apply 'traverse-actions (direct-dependencies t operation component) - :system (component-system component) keys)) - - (defmethod plan-actions ((plan filtered-sequential-plan)) - (with-slots (keep-operation keep-component) plan - (loop* :for action :in (call-next-method) - :as o = (action-operation action) - :as c = (action-component action) - :when (and (typep o keep-operation) (typep c keep-component)) - :collect (make-action o c)))) - - (defun* (required-components) (system &rest keys &key (goal-operation 'load-op) &allow-other-keys) - "Given a SYSTEM and a GOAL-OPERATION (default LOAD-OP), traverse the dependencies and -return a list of the components involved in building the desired action." - (remove-duplicates - (mapcar 'action-component - (plan-actions - (apply 'traverse-sub-actions goal-operation system - (remove-plist-key :goal-operation keys)))) - :from-end t))) - -;;;; ------------------------------------------------------------------------- -;;;; Invoking Operations - -(uiop/package:define-package :asdf/operate - (:recycle :asdf/operate :asdf) - (:use :uiop/common-lisp :uiop :asdf/upgrade :asdf/cache - :asdf/component :asdf/system :asdf/operation :asdf/action - :asdf/find-system :asdf/find-component :asdf/lisp-action :asdf/plan) - (:export - #:operate #:oos - #:build-op #:make - #:load-system #:load-systems #:load-systems* - #:compile-system #:test-system #:require-system - #:module-provide-asdf - #:component-loaded-p #:already-loaded-systems)) -(in-package :asdf/operate) - -(with-upgradability () - (defgeneric operate (operation component &key &allow-other-keys) - (:documentation - "Operate does mainly four things for the user: - -1. Resolves the OPERATION designator into an operation object. - OPERATION is typically a symbol denoting an operation class, instantiated with MAKE-OPERATION. -2. Resolves the COMPONENT designator into a component object. - COMPONENT is typically a string or symbol naming a system, loaded from disk using FIND-SYSTEM. -3. It then calls MAKE-PLAN with the operation and system as arguments. -4. Finally calls PERFORM-PLAN on the resulting plan to actually build the system. - -The entire computation is wrapped in WITH-COMPILATION-UNIT and error handling code. -If a VERSION argument is supplied, then operate also ensures that the system found satisfies it -using the VERSION-SATISFIES method. -If a PLAN-CLASS argument is supplied, that class is used for the plan. - -The :FORCE or :FORCE-NOT argument to OPERATE can be: - T to force the inside of the specified system to be rebuilt (resp. not), - without recursively forcing the other systems we depend on. - :ALL to force all systems including other systems we depend on to be rebuilt (resp. not). - (SYSTEM1 SYSTEM2 ... SYSTEMN) to force systems named in a given list -:FORCE-NOT has precedence over :FORCE; builtin systems cannot be forced. - -For backward compatibility, all keyword arguments are passed to MAKE-OPERATION -when instantiating a new operation, that will in turn be inherited by new operations. -But do NOT depend on it, for this is deprecated behavior.")) - - (define-convenience-action-methods operate (operation component &key) - :if-no-component (error 'missing-component :requires component)) - - (defvar *in-operate* nil - "Are we in operate?") - - ;; This method ensures that an ASDF upgrade is attempted as the very first thing, - ;; with suitable state preservation in case in case it actually happens, - ;; and that a few suitable dynamic bindings are established. - (defmethod operate :around (operation component &rest keys - &key verbose - (on-warnings *compile-file-warnings-behaviour*) - (on-failure *compile-file-failure-behaviour*) &allow-other-keys) - (nest - (with-asdf-cache ()) - (let ((in-operate *in-operate*) - (*in-operate* t) - (operation-remaker ;; how to remake the operation after ASDF was upgraded (if it was) - (etypecase operation - (operation (let ((name (type-of operation))) - #'(lambda () (make-operation name)))) - ((or symbol string) (constantly operation)))) - (component-path (typecase component ;; to remake the component after ASDF upgrade - (component (component-find-path component)) - (t component))))) - ;; Before we operate on any system, make sure ASDF is up-to-date, - ;; for if an upgrade is ever attempted at any later time, there may be BIG trouble. - (progn - (unless in-operate - (when (upgrade-asdf) - ;; If we were upgraded, restart OPERATE the hardest of ways, for - ;; its function may have been redefined. - (return-from operate - (apply 'operate (funcall operation-remaker) component-path keys))))) - ;; Setup proper bindings around any operate call. - (let* ((*verbose-out* (and verbose *standard-output*)) - (*compile-file-warnings-behaviour* on-warnings) - (*compile-file-failure-behaviour* on-failure)) - (call-next-method)))) - - (defmethod operate :before ((operation operation) (component component) - &key version &allow-other-keys) - (unless (version-satisfies component version) - (error 'missing-component-of-version :requires component :version version))) - - (defmethod operate ((operation operation) (component component) - &rest keys &key plan-class &allow-other-keys) - (let ((plan (apply 'make-plan plan-class operation component keys))) - (apply 'perform-plan plan keys) - (values operation plan))) - - (defun oos (operation component &rest args &key &allow-other-keys) - (apply 'operate operation component args)) - - (setf (documentation 'oos 'function) - (format nil "Short for _operate on system_ and an alias for the OPERATE function.~%~%~a" - (documentation 'operate 'function)))) - - -;;;; Common operations -(when-upgrading () - (defmethod component-depends-on ((o prepare-op) (s system)) - (call-next-method))) -(with-upgradability () - (defclass build-op (non-propagating-operation) () - (:documentation "Since ASDF3, BUILD-OP is the recommended 'master' operation, -to operate by default on a system or component, via the function BUILD. -Its meaning is configurable via the :BUILD-OPERATION option of a component. -which typically specifies the name of a specific operation to which to delegate the build, -as a symbol or as a string later read as a symbol (after loading the defsystem-depends-on); -if NIL is specified (the default), BUILD-OP falls back to LOAD-OP, -that will load the system in the current image.")) - (defmethod component-depends-on ((o build-op) (c component)) - `((,(or (component-build-operation c) 'load-op) ,c) - ,@(call-next-method))) - - (defun make (system &rest keys) - "The recommended way to interact with ASDF3.1 is via (ASDF:MAKE :FOO). -It will build system FOO using the operation BUILD-OP, -the meaning of which is configurable by the system, and -defaults to LOAD-OP, to load it in current image." - (apply 'operate 'build-op system keys) - t) - - (defun load-system (system &rest keys &key force force-not verbose version &allow-other-keys) - "Shorthand for `(operate 'asdf:load-op system)`. See OPERATE for details." - (declare (ignore force force-not verbose version)) - (apply 'operate 'load-op system keys) - t) - - (defun load-systems* (systems &rest keys) - "Loading multiple systems at once." - (dolist (s systems) (apply 'load-system s keys))) - - (defun load-systems (&rest systems) - "Loading multiple systems at once." - (load-systems* systems)) - - (defun compile-system (system &rest args &key force force-not verbose version &allow-other-keys) - "Shorthand for `(asdf:operate 'asdf:compile-op system)`. See OPERATE for details." - (declare (ignore force force-not verbose version)) - (apply 'operate 'compile-op system args) - t) - - (defun test-system (system &rest args &key force force-not verbose version &allow-other-keys) - "Shorthand for `(asdf:operate 'asdf:test-op system)`. See OPERATE for details." - (declare (ignore force force-not verbose version)) - (apply 'operate 'test-op system args) - t)) - -;;;;; Define the function REQUIRE-SYSTEM, that, similarly to REQUIRE, -;; only tries to load its specified target if it's not loaded yet. -(with-upgradability () - (defun component-loaded-p (component) - "Has the given COMPONENT been successfully loaded in the current image (yet)? -Note that this returns true even if the component is not up to date." - (if-let ((component (find-component component () :registered t))) - (action-already-done-p nil (make-operation 'load-op) component))) - - (defun already-loaded-systems () - "return a list of the names of the systems that have been successfully loaded so far" - (mapcar 'coerce-name (remove-if-not 'component-loaded-p (registered-systems*)))) - - (defun require-system (system &rest keys &key &allow-other-keys) - "Ensure the specified SYSTEM is loaded, passing the KEYS to OPERATE, but do not update the -system or its dependencies if they have already been loaded." - (unless (component-loaded-p system) - (apply 'load-system system :force-not (already-loaded-systems) keys)))) - - -;;;; Define the class REQUIRE-SYSTEM, to be hooked into CL:REQUIRE when possible, -;; i.e. for ABCL, CLISP, ClozureCL, CMUCL, ECL, MKCL and SBCL -;; Note that despite the two being homonyms, the _function_ require-system -;; and the _class_ require-system are quite distinct entities, fulfilling independent purposes. -(with-upgradability () - (defvar *modules-being-required* nil) - - (defclass require-system (system) - ((module :initarg :module :initform nil :accessor required-module)) - (:documentation "A SYSTEM subclass whose processing is handled by -the implementation's REQUIRE rather than by internal ASDF mechanisms.")) - - (defmethod perform ((o compile-op) (c require-system)) - nil) - - (defmethod perform ((o load-op) (s require-system)) - (let* ((module (or (required-module s) (coerce-name s))) - (*modules-being-required* (cons module *modules-being-required*))) - (assert (null (component-children s))) - (require module))) - - (defmethod resolve-dependency-combination (component (combinator (eql :require)) arguments) - (unless (and (length=n-p arguments 1) - (typep (car arguments) '(or string (and symbol (not null))))) - (parameter-error (compatfmt "~@") - 'resolve-dependency-combination - (cons combinator arguments) component combinator)) - ;; :require must be prepared for some implementations providing modules using ASDF, - ;; as SBCL used to do, and others may might do. Thus, the system provided in the end - ;; would be a downcased name as per module-provide-asdf above. For the same reason, - ;; we cannot assume that the system in the end will be of type require-system, - ;; but must check whether we can use find-system and short-circuit cl:require. - ;; Otherwise, calling cl:require could result in nasty reentrant calls between - ;; cl:require and asdf:operate that could potentially blow up the stack, - ;; all the while defeating the consistency of the dependency graph. - (let* ((module (car arguments)) ;; NB: we already checked that it was not null - ;; CMUCL, MKCL, SBCL like their module names to be all upcase. - (module-name (string module)) - (system-name (string-downcase module)) - (system (find-system system-name nil))) - (or system (let ((system (make-instance 'require-system :name system-name :module module-name))) - (register-system system) - system)))) - - (defun module-provide-asdf (name) - ;; We must use string-downcase, because modules are traditionally specified as symbols, - ;; that implementations traditionally normalize as uppercase, for which we seek a system - ;; with a name that is traditionally in lowercase. Case is lost along the way. That's fine. - ;; We could make complex, non-portable rules to try to preserve case, and just documenting - ;; them would be a hell that it would be a disservice to inflict on users. - (let ((module-name (string name)) - (system-name (string-downcase name))) - (unless (member module-name *modules-being-required* :test 'equal) - (let ((*modules-being-required* (cons module-name *modules-being-required*)) - #+sbcl (sb-impl::*requiring* (remove module-name sb-impl::*requiring* :test 'equal))) - (handler-bind - ((style-warning #'muffle-warning) - (missing-component (constantly nil)) - (fatal-condition - #'(lambda (e) - (format *error-output* (compatfmt "~@~%") - name e)))) - (let ((*verbose-out* (make-broadcast-stream))) - (let ((system (find-system system-name nil))) - (when system - (require-system system-name :verbose nil) - t))))))))) - - -;;;; Some upgrade magic -(with-upgradability () - (defun restart-upgraded-asdf () - ;; If we're in the middle of something, restart it. - (let ((systems-being-defined - (when *asdf-cache* - (prog1 - (loop :for k :being :the hash-keys :of *asdf-cache* - :when (eq (first k) 'find-system) :collect (second k)) - (clrhash *asdf-cache*))))) - ;; Regardless, clear defined systems, since they might be invalid - ;; after an incompatible ASDF upgrade. - (clear-defined-systems) - ;; The configuration also may have to be upgraded. - (upgrade-configuration) - ;; If we were in the middle of an operation, be sure to restore the system being defined. - (dolist (s systems-being-defined) (find-system s nil)))) - (register-hook-function '*post-upgrade-cleanup-hook* 'restart-upgraded-asdf) - - ;; The following function's symbol is from asdf/find-system. - ;; It is defined here to resolve what would otherwise be forward package references. - (defun mark-component-preloaded (component) - "Mark a component as preloaded." - (let ((component (find-component component nil :registered t))) - ;; Recurse to children, so asdf/plan will hopefully be happy. - (map () 'mark-component-preloaded (component-children component)) - ;; Mark the timestamps of the common lisp-action operations as 0. - (let ((times (component-operation-times component))) - (dolist (o '(load-op compile-op prepare-op)) - (setf (gethash (make-operation o) times) 0)))))) - -;;;; ------------------------------------------------------------------------- -;;;; Defsystem - -(uiop/package:define-package :asdf/parse-defsystem - (:recycle :asdf/parse-defsystem :asdf/defsystem :asdf) - (:nicknames :asdf/defsystem) ;; previous name, to be compatible with, in case anyone cares - (:use :uiop/common-lisp :asdf/driver :asdf/upgrade - :asdf/cache :asdf/component :asdf/system - :asdf/find-system :asdf/find-component :asdf/action :asdf/lisp-action :asdf/operate) - (:import-from :asdf/system #:depends-on #:weakly-depends-on) - (:export - #:defsystem #:register-system-definition - #:class-for-type #:*default-component-class* - #:determine-system-directory #:parse-component-form - #:non-toplevel-system #:non-system-system #:bad-system-name - #:sysdef-error-component #:check-component-input)) -(in-package :asdf/parse-defsystem) - -;;; Pathname -(with-upgradability () - (defun determine-system-directory (pathname) - ;; The defsystem macro calls this function to determine the pathname of a system as follows: - ;; 1. If the pathname argument is an pathname object (NOT a namestring), - ;; that is already an absolute pathname, return it. - ;; 2. Otherwise, the directory containing the LOAD-PATHNAME - ;; is considered (as deduced from e.g. *LOAD-PATHNAME*), and - ;; if it is indeed available and an absolute pathname, then - ;; the PATHNAME argument is normalized to a relative pathname - ;; as per PARSE-UNIX-NAMESTRING (with ENSURE-DIRECTORY T) - ;; and merged into that DIRECTORY as per SUBPATHNAME. - ;; Note: avoid *COMPILE-FILE-PATHNAME* because the .asd is loaded as source, - ;; but may be from within the EVAL-WHEN of a file compilation. - ;; If no absolute pathname was found, we return NIL. - (check-type pathname (or null string pathname)) - (pathname-directory-pathname - (resolve-symlinks* - (ensure-absolute-pathname - (parse-unix-namestring pathname :type :directory) - #'(lambda () (ensure-absolute-pathname - (load-pathname) 'get-pathname-defaults nil)) - nil))))) - - -;;; Component class -(with-upgradability () - ;; What :file gets interpreted as, unless overridden by a :default-component-class - (defvar *default-component-class* 'cl-source-file) - - (defun class-for-type (parent type) - (or (coerce-class type :package :asdf/interface :super 'component :error nil) - (and (eq type :file) - (coerce-class - (or (loop :for p = parent :then (component-parent p) :while p - :thereis (module-default-component-class p)) - *default-component-class*) - :package :asdf/interface :super 'component :error nil)) - (sysdef-error "don't recognize component type ~S" type)))) - - -;;; Check inputs -(with-upgradability () - (define-condition non-system-system (system-definition-error) - ((name :initarg :name :reader non-system-system-name) - (class-name :initarg :class-name :reader non-system-system-class-name)) - (:report (lambda (c s) - (format s (compatfmt "~@") - (non-system-system-name c) (non-system-system-class-name c) 'system)))) - - (define-condition non-toplevel-system (system-definition-error) - ((parent :initarg :parent :reader non-toplevel-system-parent) - (name :initarg :name :reader non-toplevel-system-name)) - (:report (lambda (c s) - (format s (compatfmt "~@") - (non-toplevel-system-parent c) (non-toplevel-system-name c))))) - - (define-condition bad-system-name (warning) - ((name :initarg :name :reader component-name) - (source-file :initarg :source-file :reader system-source-file)) - (:report (lambda (c s) - (let* ((file (system-source-file c)) - (name (component-name c)) - (asd (pathname-name file))) - (format s (compatfmt "~@") - file name asd (strcat asd "/") (strcat asd "/test")))))) - - (defun sysdef-error-component (msg type name value) - (sysdef-error (strcat msg (compatfmt "~&~@")) - type name value)) - - (defun check-component-input (type name weakly-depends-on - depends-on components) - "A partial test of the values of a component." - (unless (listp depends-on) - (sysdef-error-component ":depends-on must be a list." - type name depends-on)) - (unless (listp weakly-depends-on) - (sysdef-error-component ":weakly-depends-on must be a list." - type name weakly-depends-on)) - (unless (listp components) - (sysdef-error-component ":components must be NIL or a list of components." - type name components))) - - ;; Given a form used as :version specification, in the context of a system definition - ;; in a file at PATHNAME, for given COMPONENT with given PARENT, normalize the form - ;; to an acceptable ASDF-format version. - (defun* (normalize-version) (form &key pathname component parent) - (labels ((invalid (&optional (continuation "using NIL instead")) - (warn (compatfmt "~@") - form component parent pathname continuation)) - (invalid-parse (control &rest args) - (unless (if-let (target (find-component parent component)) (builtin-system-p target)) - (apply 'warn control args) - (invalid)))) - (if-let (v (typecase form - ((or string null) form) - (real - (invalid "Substituting a string") - (format nil "~D" form)) ;; 1.0 becomes "1.0" - (cons - (case (first form) - ((:read-file-form) - (destructuring-bind (subpath &key (at 0)) (rest form) - (safe-read-file-form (subpathname pathname subpath) - :at at :package :asdf-user))) - ((:read-file-line) - (destructuring-bind (subpath &key (at 0)) (rest form) - (safe-read-file-line (subpathname pathname subpath) - :at at))) - (otherwise - (invalid)))) - (t - (invalid)))) - (if-let (pv (parse-version v #'invalid-parse)) - (unparse-version pv) - (invalid)))))) - - -;;; "inline methods" -(with-upgradability () - (defparameter* +asdf-methods+ - '(perform-with-restarts perform explain output-files operation-done-p)) - - (defun %remove-component-inline-methods (component) - (dolist (name +asdf-methods+) - (map () - ;; this is inefficient as most of the stored - ;; methods will not be for this particular gf - ;; But this is hardly performance-critical - #'(lambda (m) - (remove-method (symbol-function name) m)) - (component-inline-methods component))) - (component-inline-methods component) nil) - - (defun %define-component-inline-methods (ret rest) - (loop* :for (key value) :on rest :by #'cddr - :for name = (and (keywordp key) (find key +asdf-methods+ :test 'string=)) - :when name :do - (destructuring-bind (op &rest body) value - (loop :for arg = (pop body) - :while (atom arg) - :collect arg :into qualifiers - :finally - (destructuring-bind (o c) arg - (pushnew - (eval `(defmethod ,name ,@qualifiers ((,o ,op) (,c (eql ,ret))) ,@body)) - (component-inline-methods ret))))))) - - (defun %refresh-component-inline-methods (component rest) - ;; clear methods, then add the new ones - (%remove-component-inline-methods component) - (%define-component-inline-methods component rest))) - - -;;; Main parsing function -(with-upgradability () - (defun parse-dependency-def (dd) - (if (listp dd) - (case (first dd) - (:feature - (unless (= (length dd) 3) - (sysdef-error "Ill-formed feature dependency: ~s" dd)) - (let ((embedded (parse-dependency-def (third dd)))) - `(:feature ,(second dd) ,embedded))) - (feature - (sysdef-error "`feature' has been removed from the dependency spec language of ASDF. Use :feature instead in ~s." dd)) - (:require - (unless (= (length dd) 2) - (sysdef-error "Ill-formed require dependency: ~s" dd)) - dd) - (:version - (unless (= (length dd) 3) - (sysdef-error "Ill-formed version dependency: ~s" dd)) - `(:version ,(coerce-name (second dd)) ,(third dd))) - (otherwise (sysdef-error "Ill-formed dependency: ~s" dd))) - (coerce-name dd))) - - (defun parse-dependency-defs (dd-list) - "Parse the dependency defs in DD-LIST into canonical form by translating all -system names contained using COERCE-NAME. Return the result." - (mapcar 'parse-dependency-def dd-list)) - - (defun* (parse-component-form) (parent options &key previous-serial-component) - (destructuring-bind - (type name &rest rest &key - (builtin-system-p () bspp) - ;; the following list of keywords is reproduced below in the - ;; remove-plist-keys form. important to keep them in sync - components pathname perform explain output-files operation-done-p - weakly-depends-on depends-on serial - do-first if-component-dep-fails version - ;; list ends - &allow-other-keys) options - (declare (ignore perform explain output-files operation-done-p builtin-system-p)) - (check-component-input type name weakly-depends-on depends-on components) - (when (and parent - (find-component parent name) - (not ;; ignore the same object when rereading the defsystem - (typep (find-component parent name) - (class-for-type parent type)))) - (error 'duplicate-names :name name)) - (when do-first (error "DO-FIRST is not supported anymore as of ASDF 3")) - (let* ((name (coerce-name name)) - (args `(:name ,name - :pathname ,pathname - ,@(when parent `(:parent ,parent)) - ,@(remove-plist-keys - '(:components :pathname :if-component-dep-fails :version - :perform :explain :output-files :operation-done-p - :weakly-depends-on :depends-on :serial) - rest))) - (component (find-component parent name)) - (class (class-for-type parent type))) - (when (and parent (subtypep class 'system)) - (error 'non-toplevel-system :parent parent :name name)) - (if component ; preserve identity - (apply 'reinitialize-instance component args) - (setf component (apply 'make-instance class args))) - (component-pathname component) ; eagerly compute the absolute pathname - (when (typep component 'system) - ;; cache information for introspection - (setf (slot-value component 'depends-on) - (parse-dependency-defs depends-on) - (slot-value component 'weakly-depends-on) - ;; these must be a list of systems, cannot be features or versioned systems - (mapcar 'coerce-name weakly-depends-on))) - (let ((sysfile (system-source-file (component-system component)))) ;; requires the previous - (when (and (typep component 'system) (not bspp)) - (setf (builtin-system-p component) (lisp-implementation-pathname-p sysfile))) - (setf version (normalize-version version :component name :parent parent :pathname sysfile))) - ;; Don't use the accessor: kluge to avoid upgrade issue on CCL 1.8. - ;; A better fix is required. - (setf (slot-value component 'version) version) - (when (typep component 'parent-component) - (setf (component-children component) - (loop - :with previous-component = nil - :for c-form :in components - :for c = (parse-component-form component c-form - :previous-serial-component previous-component) - :for name = (component-name c) - :collect c - :when serial :do (setf previous-component name))) - (compute-children-by-name component)) - (when previous-serial-component - (push previous-serial-component depends-on)) - (when weakly-depends-on - ;; ASDF4: deprecate this feature and remove it. - (appendf depends-on - (remove-if (complement #'(lambda (x) (find-system x nil))) weakly-depends-on))) - ;; Used by POIU. ASDF4: rename to component-depends-on? - (setf (component-sideway-dependencies component) depends-on) - (%refresh-component-inline-methods component rest) - (when if-component-dep-fails - (error "The system definition for ~S uses deprecated ~ - ASDF option :IF-COMPONENT-DEP-FAILS. ~ - Starting with ASDF 3, please use :IF-FEATURE instead" - (coerce-name (component-system component)))) - component))) - - (defun register-system-definition - (name &rest options &key pathname (class 'system) (source-file () sfp) - defsystem-depends-on &allow-other-keys) - ;; The system must be registered before we parse the body, - ;; otherwise we recur when trying to find an existing system - ;; of the same name to reuse options (e.g. pathname) from. - ;; To avoid infinite recursion in cases where you defsystem a system - ;; that is registered to a different location to find-system, - ;; we also need to remember it in the asdf-cache. - (nest - (with-asdf-cache ()) - (let* ((name (coerce-name name)) - (source-file (if sfp source-file (resolve-symlinks* (load-pathname)))))) - (flet ((fix-case (x) (if (logical-pathname-p source-file) (string-downcase x) x)))) - (let* ((asd-name (and source-file - (equal "asd" (fix-case (pathname-type source-file))) - (fix-case (pathname-name source-file)))) - (primary-name (primary-system-name name))) - (when (and asd-name (not (equal asd-name primary-name))) - (warn (make-condition 'bad-system-name :source-file source-file :name name)))) - (let* (;; NB: handle defsystem-depends-on BEFORE to create the system object, - ;; so that in case it fails, there is no incomplete object polluting the build. - (checked-defsystem-depends-on - (let* ((dep-forms (parse-dependency-defs defsystem-depends-on)) - (deps (loop :for spec :in dep-forms - :when (resolve-dependency-spec nil spec) - :collect :it))) - (load-systems* deps) - dep-forms)) - (registered (system-registered-p name)) - (registered! (if registered - (rplaca registered (get-file-stamp source-file)) - (register-system - (make-instance 'system :name name :source-file source-file)))) - (system (reset-system (cdr registered!) - :name name :source-file source-file)) - (component-options - (append - (remove-plist-keys '(:defsystem-depends-on :class) options) - ;; cache defsystem-depends-on in canonical form - (when checked-defsystem-depends-on - `(:defsystem-depends-on ,checked-defsystem-depends-on)))) - (directory (determine-system-directory pathname))) - ;; This works hand in hand with asdf/find-system:find-system-if-being-defined: - (set-asdf-cache-entry `(find-system ,name) (list system))) - ;; We change-class AFTER we loaded the defsystem-depends-on - ;; since the class might be defined as part of those. - (let ((class (class-for-type nil class))) - (unless (subtypep class 'system) - (error 'non-system-system :name name :class-name (class-name class))) - (unless (eq (type-of system) class) - (change-class system class))) - (parse-component-form nil (list* :module name :pathname directory component-options)))) - - (defmacro defsystem (name &body options) - `(apply 'register-system-definition ',name ',options))) -;;;; ------------------------------------------------------------------------- -;;;; ASDF-Bundle - -(uiop/package:define-package :asdf/bundle - (:recycle :asdf/bundle :asdf) - (:use :uiop/common-lisp :uiop :asdf/upgrade - :asdf/component :asdf/system :asdf/find-system :asdf/find-component :asdf/operation - :asdf/action :asdf/lisp-action :asdf/plan :asdf/operate :asdf/defsystem) - (:export - #:bundle-op #:bundle-type #:program-system - #:bundle-system #:bundle-pathname-type #:direct-dependency-files - #:monolithic-op #:monolithic-bundle-op #:operation-monolithic-p - #:basic-compile-bundle-op #:prepare-bundle-op - #:compile-bundle-op #:load-bundle-op #:monolithic-compile-bundle-op #:monolithic-load-bundle-op - #:lib-op #:monolithic-lib-op - #:dll-op #:monolithic-dll-op - #:deliver-asd-op #:monolithic-deliver-asd-op - #:program-op #:image-op #:compiled-file #:precompiled-system #:prebuilt-system - #:user-system-p #:user-system #:trivial-system-p - #:prologue-code #:epilogue-code #:static-library)) -(in-package :asdf/bundle) - -(with-upgradability () - (defclass bundle-op (operation) - ;; NB: use of instance-allocated slots for operations is DEPRECATED - ;; and only supported in a temporary fashion for backward compatibility. - ;; Supported replacement: Define slots on program-system instead. - ((bundle-type :initform :no-output-file :reader bundle-type :allocation :class)) - (:documentation "base class for operations that bundle outputs from multiple components")) - - (defclass monolithic-op (operation) () - (:documentation "A MONOLITHIC operation operates on a system *and all of its -dependencies*. So, for example, a monolithic concatenate operation will -concatenate together a system's components and all of its dependencies, but a -simple concatenate operation will concatenate only the components of the system -itself.")) - - (defclass monolithic-bundle-op (bundle-op monolithic-op) - ;; Old style way of specifying prologue and epilogue on ECL: in the monolithic operation. - ;; DEPRECATED. Supported replacement: Define slots on program-system instead. - ((prologue-code :initform nil :accessor prologue-code) - (epilogue-code :initform nil :accessor epilogue-code)) - (:documentation "operations that are both monolithic-op and bundle-op")) - - (defclass program-system (system) - ;; New style (ASDF3.1) way of specifying prologue and epilogue on ECL: in the system - ((prologue-code :initform nil :initarg :prologue-code :reader prologue-code) - (epilogue-code :initform nil :initarg :epilogue-code :reader epilogue-code) - (no-uiop :initform nil :initarg :no-uiop :reader no-uiop) - (prefix-lisp-object-files :initarg :prefix-lisp-object-files - :initform nil :accessor prefix-lisp-object-files) - (postfix-lisp-object-files :initarg :postfix-lisp-object-files - :initform nil :accessor postfix-lisp-object-files) - (extra-object-files :initarg :extra-object-files - :initform nil :accessor extra-object-files) - (extra-build-args :initarg :extra-build-args - :initform nil :accessor extra-build-args))) - - (defmethod prologue-code ((x system)) nil) - (defmethod epilogue-code ((x system)) nil) - (defmethod no-uiop ((x system)) nil) - (defmethod prefix-lisp-object-files ((x system)) nil) - (defmethod postfix-lisp-object-files ((x system)) nil) - (defmethod extra-object-files ((x system)) nil) - (defmethod extra-build-args ((x system)) nil) - - (defclass link-op (bundle-op) () - (:documentation "Abstract operation for linking files together")) - - (defclass gather-operation (bundle-op) - ((gather-operation :initform nil :allocation :class :reader gather-operation) - (gather-type :initform :no-output-file :allocation :class :reader gather-type)) - (:documentation "Abstract operation for gathering many input files from a system")) - - (defun operation-monolithic-p (op) - (typep op 'monolithic-op)) - - ;; Dependencies of a gather-op are the actions of the dependent operation - ;; for all the (sorted) required components for loading the system. - ;; Monolithic operations typically use lib-op as the dependent operation, - ;; and all system-level dependencies as required components. - ;; Non-monolithic operations typically use compile-op as the dependent operation, - ;; and all transitive sub-components as required components (excluding other systems). - (defmethod component-depends-on ((o gather-operation) (s system)) - (let* ((mono (operation-monolithic-p o)) - (go (make-operation (or (gather-operation o) 'compile-op))) - (bundle-p (typep go 'bundle-op)) - ;; In a non-mono operation, don't recurse to other systems. - ;; In a mono operation gathering bundles, don't recurse inside systems. - (component-type (if mono (if bundle-p 'system t) '(not system))) - ;; In the end, only keep system bundles or non-system bundles, depending. - (keep-component (if bundle-p 'system '(not system))) - (deps - ;; Required-components only looks at the dependencies of an action, excluding the action - ;; itself, so it may be safely used by an action recursing on its dependencies (which - ;; may or may not be an overdesigned API, since in practice we never use it that way). - ;; Therefore, if we use :goal-operation 'load-op :keep-operation 'load-op, which looks - ;; cleaner, we will miss the load-op on the requested system itself, which doesn't - ;; matter for a regular system, but matters, a lot, for a package-inferred-system. - ;; Using load-op as the goal operation and basic-compile-op as the keep-operation works - ;; for our needs of gathering all the files we want to include in a bundle. - ;; Note that we use basic-compile-op rather than compile-op so it will still work on - ;; systems that would somehow load dependencies with load-bundle-op. - (required-components - s :other-systems mono :component-type component-type :keep-component keep-component - :goal-operation 'load-op :keep-operation 'basic-compile-op))) - `((,go ,@deps) ,@(call-next-method)))) - - ;; Create a single fasl for the entire library - (defclass basic-compile-bundle-op (bundle-op basic-compile-op) - ((gather-type :initform #-(or clasp ecl mkcl) :fasl #+(or clasp ecl mkcl) :object - :allocation :class) - (bundle-type :initform :fasb :allocation :class)) - (:documentation "Base class for compiling into a bundle")) - - ;; Analog to prepare-op, for load-bundle-op and compile-bundle-op - (defclass prepare-bundle-op (sideway-operation) - ((sideway-operation - :initform #+(or clasp ecl mkcl) 'load-bundle-op #-(or clasp ecl mkcl) 'load-op - :allocation :class)) - (:documentation "Operation class for loading the bundles of a system's dependencies")) - - (defclass lib-op (link-op gather-operation non-propagating-operation) - ((gather-type :initform :object :allocation :class) - (bundle-type :initform :lib :allocation :class)) - (:documentation "Compile the system and produce a linkable static library (.a/.lib) -for all the linkable object files associated with the system. Compare with DLL-OP. - -On most implementations, these object files only include extensions to the runtime -written in C or another language with a compiler producing linkable object files. -On CLASP, ECL, MKCL, these object files _also_ include the contents of Lisp files -themselves. In any case, this operation will produce what you need to further build -a static runtime for your system, or a dynamic library to load in an existing runtime.")) - - ;; What works: on ECL, CLASP(?), MKCL, we link the many .o files from the system into the .so; - ;; on other implementations, we combine (usually concatenate) the .fasl files into one. - (defclass compile-bundle-op (basic-compile-bundle-op selfward-operation gather-operation - #+(or clasp ecl mkcl) link-op) - ((selfward-operation :initform '(prepare-bundle-op) :allocation :class)) - (:documentation "This operator is an alternative to COMPILE-OP. Build a system -and all of its dependencies, but build only a single (\"monolithic\") FASL, instead -of one per source file, which may be more resource efficient. That monolithic -FASL should be loaded with LOAD-BUNDLE-OP, rather than LOAD-OP.")) - - (defclass load-bundle-op (basic-load-op selfward-operation) - ((selfward-operation :initform '(prepare-bundle-op compile-bundle-op) :allocation :class)) - (:documentation "This operator is an alternative to LOAD-OP. Build a system -and all of its dependencies, using COMPILE-BUNDLE-OP. The difference with -respect to LOAD-OP is that it builds only a single FASL, which may be -faster and more resource efficient.")) - - ;; NB: since the monolithic-op's can't be sideway-operation's, - ;; if we wanted lib-op, dll-op, deliver-asd-op to be sideway-operation's, - ;; we'd have to have the monolithic-op not inherit from the main op, - ;; but instead inherit from a basic-FOO-op as with basic-compile-bundle-op above. - - (defclass dll-op (link-op gather-operation non-propagating-operation) - ((gather-type :initform :object :allocation :class) - (bundle-type :initform :dll :allocation :class)) - (:documentation "Compile the system and produce a dynamic loadable library (.so/.dll) -for all the linkable object files associated with the system. Compare with LIB-OP.")) - - (defclass deliver-asd-op (basic-compile-op selfward-operation) - ((selfward-operation - ;; TODO: implement link-op on all implementations, and make that - ;; '(compile-bundle-op lib-op #-(or clasp ecl mkcl) dll-op) - :initform '(compile-bundle-op #+(or clasp ecl mkcl) lib-op) - :allocation :class)) - (:documentation "produce an asd file for delivering the system as a single fasl")) - - - (defclass monolithic-deliver-asd-op (deliver-asd-op monolithic-bundle-op) - ((selfward-operation - ;; TODO: implement link-op on all implementations, and make that - ;; '(monolithic-compile-bundle-op monolithic-lib-op #-(or clasp ecl mkcl) monolithic-dll-op) - :initform '(monolithic-compile-bundle-op #+(or clasp ecl mkcl) monolithic-lib-op) - :allocation :class)) - (:documentation "produce fasl and asd files for combined system and dependencies.")) - - (defclass monolithic-compile-bundle-op - (basic-compile-bundle-op monolithic-bundle-op - #+(or clasp ecl mkcl) link-op gather-operation non-propagating-operation) - () - (:documentation "Create a single fasl for the system and its dependencies.")) - - (defclass monolithic-load-bundle-op (load-bundle-op monolithic-bundle-op) - ((selfward-operation :initform 'monolithic-compile-bundle-op :allocation :class)) - (:documentation "Load a single fasl for the system and its dependencies.")) - - (defclass monolithic-lib-op (lib-op monolithic-bundle-op non-propagating-operation) - ((gather-type :initform :object :allocation :class)) - (:documentation "Compile the system and produce a linkable static library (.a/.lib) -for all the linkable object files associated with the system or its dependencies. See LIB-OP.")) - - (defclass monolithic-dll-op (dll-op monolithic-bundle-op non-propagating-operation) - ((gather-type :initform :object :allocation :class)) - (:documentation "Compile the system and produce a dynamic loadable library (.so/.dll) -for all the linkable object files associated with the system or its dependencies. See LIB-OP")) - - (defclass image-op (monolithic-bundle-op selfward-operation - #+(or clasp ecl mkcl) link-op #+(or clasp ecl mkcl) gather-operation) - ((bundle-type :initform :image :allocation :class) - (gather-operation :initform 'lib-op :allocation :class) - #+(or clasp ecl mkcl) (gather-type :initform :static-library :allocation :class) - (selfward-operation :initform '(#-(or clasp ecl mkcl) load-op) :allocation :class)) - (:documentation "create an image file from the system and its dependencies")) - - (defclass program-op (image-op) - ((bundle-type :initform :program :allocation :class)) - (:documentation "create an executable file from the system and its dependencies")) - - ;; From the ASDF-internal bundle-type identifier, get a filesystem-usable pathname type. - (defun bundle-pathname-type (bundle-type) - (etypecase bundle-type - ((or null string) ;; pass through nil or string literal - bundle-type) - ((eql :no-output-file) ;; marker for a bundle-type that has NO output file - (error "No output file, therefore no pathname type")) - ((eql :fasl) ;; the type of a fasl - (compile-file-type)) ; on image-based platforms, used as input and output - ((eql :fasb) ;; the type of a fasl - #-(or clasp ecl mkcl) (compile-file-type) ; on image-based platforms, used as input and output - #+(or clasp ecl mkcl) "fasb") ; on C-linking platforms, only used as output for system bundles - ((member :image) - #+allegro "dxl" - #+(and clisp os-windows) "exe" - #-(or allegro (and clisp os-windows)) "image") - ;; NB: on CLASP and ECL these implementations, we better agree with - ;; (compile-file-type :type bundle-type)) - ((eql :object) ;; the type of a linkable object file - (os-cond ((os-unix-p) "o") - ((os-windows-p) (if (featurep '(:or :mingw32 :mingw64)) "o" "obj")))) - ((member :lib :static-library) ;; the type of a linkable library - (os-cond ((os-unix-p) "a") - ((os-windows-p) (if (featurep '(:or :mingw32 :mingw64)) "a" "lib")))) - ((member :dll :shared-library) ;; the type of a shared library - (os-cond ((os-macosx-p) "dylib") ((os-unix-p) "so") ((os-windows-p) "dll"))) - ((eql :program) ;; the type of an executable program - (os-cond ((os-unix-p) nil) ((os-windows-p) "exe"))))) - - ;; Compute the output-files for a given bundle action - (defun bundle-output-files (o c) - (let ((bundle-type (bundle-type o))) - (unless (or (eq bundle-type :no-output-file) ;; NIL already means something regarding type. - (and (null (input-files o c)) (not (member bundle-type '(:image :program))))) - (let ((name (or (component-build-pathname c) - (let ((suffix - (unless (typep o 'program-op) - ;; "." is no good separator for Logical Pathnames, so we use "--" - (if (operation-monolithic-p o) - "--all-systems" - ;; These use a different type .fasb or .a instead of .fasl - #-(or clasp ecl mkcl) "--system")))) - (format nil "~A~@[~A~]" (component-name c) suffix)))) - (type (bundle-pathname-type bundle-type))) - (values (list (subpathname (component-pathname c) name :type type)) - (eq (class-of o) (coerce-class (component-build-operation c) - :package :asdf/interface - :super 'operation - :error nil))))))) - - (defmethod output-files ((o bundle-op) (c system)) - (bundle-output-files o c)) - - #-(or clasp ecl mkcl) - (progn - (defmethod perform ((o image-op) (c system)) - (dump-image (output-file o c) :executable (typep o 'program-op))) - (defmethod perform :before ((o program-op) (c system)) - (setf *image-entry-point* (ensure-function (component-entry-point c))))) - - (defclass compiled-file (file-component) - ((type :initform #-(or clasp ecl mkcl) (compile-file-type) #+(or clasp ecl mkcl) "fasb")) - (:documentation "Class for a file that is already compiled, -e.g. as part of the implementation, of an outer build system that calls into ASDF, -or of opaque libraries shipped along the source code.")) - - (defclass precompiled-system (system) - ((build-pathname :initarg :fasb :initarg :fasl)) - (:documentation "Class For a system that is delivered as a precompiled fasl")) - - (defclass prebuilt-system (system) - ((build-pathname :initarg :static-library :initarg :lib - :accessor prebuilt-system-static-library)) - (:documentation "Class for a system delivered with a linkable static library (.a/.lib)"))) - - -;;; -;;; BUNDLE-OP -;;; -;;; This operation takes all components from one or more systems and -;;; creates a single output file, which may be -;;; a FASL, a statically linked library, a shared library, etc. -;;; The different targets are defined by specialization. -;;; -(when-upgrading (:version "3.2.0") - ;; Cancel any previously defined method - (defmethod initialize-instance :after ((instance bundle-op) &rest initargs &key &allow-other-keys) - (declare (ignore initargs)))) - -(with-upgradability () - (defgeneric trivial-system-p (component)) - - (defun user-system-p (s) - (and (typep s 'system) - (not (builtin-system-p s)) - (not (trivial-system-p s))))) - -(eval-when (#-lispworks :compile-toplevel :load-toplevel :execute) - (deftype user-system () '(and system (satisfies user-system-p)))) - -;;; -;;; First we handle monolithic bundles. -;;; These are standalone systems which contain everything, -;;; including other ASDF systems required by the current one. -;;; A PROGRAM is always monolithic. -;;; -;;; MONOLITHIC SHARED LIBRARIES, PROGRAMS, FASL -;;; -(with-upgradability () - (defun direct-dependency-files (o c &key (test 'identity) (key 'output-files) &allow-other-keys) - ;; This function selects output files from direct dependencies; - ;; your component-depends-on method must gather the correct dependencies in the correct order. - (while-collecting (collect) - (map-direct-dependencies - t o c #'(lambda (sub-o sub-c) - (loop :for f :in (funcall key sub-o sub-c) - :when (funcall test f) :do (collect f)))))) - - (defun pathname-type-equal-function (type) - #'(lambda (p) (equalp (pathname-type p) type))) - - (defmethod input-files ((o gather-operation) (c system)) - (unless (eq (bundle-type o) :no-output-file) - (direct-dependency-files - o c :key 'output-files - :test (pathname-type-equal-function (bundle-pathname-type (gather-type o)))))) - - ;; Find the operation that produces a given bundle-type - (defun select-bundle-operation (type &optional monolithic) - (ecase type - ((:dll :shared-library) - (if monolithic 'monolithic-dll-op 'dll-op)) - ((:lib :static-library) - (if monolithic 'monolithic-lib-op 'lib-op)) - ((:fasb) - (if monolithic 'monolithic-compile-bundle-op 'compile-bundle-op)) - ((:image) - 'image-op) - ((:program) - 'program-op)))) - -;;; -;;; LOAD-BUNDLE-OP -;;; -;;; This is like ASDF's LOAD-OP, but using bundle fasl files. -;;; -(with-upgradability () - (defmethod component-depends-on ((o load-bundle-op) (c system)) - `((,o ,@(component-sideway-dependencies c)) - (,(if (user-system-p c) 'compile-bundle-op 'load-op) ,c) - ,@(call-next-method))) - - (defmethod input-files ((o load-bundle-op) (c system)) - (when (user-system-p c) - (output-files (find-operation o 'compile-bundle-op) c))) - - (defmethod perform ((o load-bundle-op) (c system)) - (when (input-files o c) - (perform-lisp-load-fasl o c))) - - (defmethod mark-operation-done :after ((o load-bundle-op) (c system)) - (mark-operation-done (find-operation o 'load-op) c))) - -;;; -;;; PRECOMPILED FILES -;;; -;;; This component can be used to distribute ASDF systems in precompiled form. -;;; Only useful when the dependencies have also been precompiled. -;;; -(with-upgradability () - (defmethod trivial-system-p ((s system)) - (every #'(lambda (c) (typep c 'compiled-file)) (component-children s))) - - (defmethod input-files ((o operation) (c compiled-file)) - (list (component-pathname c))) - (defmethod perform ((o load-op) (c compiled-file)) - (perform-lisp-load-fasl o c)) - (defmethod perform ((o load-source-op) (c compiled-file)) - (perform (find-operation o 'load-op) c)) - (defmethod perform ((o operation) (c compiled-file)) - nil)) - -;;; -;;; Pre-built systems -;;; -(with-upgradability () - (defmethod trivial-system-p ((s prebuilt-system)) - t) - - (defmethod perform ((o link-op) (c prebuilt-system)) - nil) - - (defmethod perform ((o basic-compile-bundle-op) (c prebuilt-system)) - nil) - - (defmethod perform ((o lib-op) (c prebuilt-system)) - nil) - - (defmethod perform ((o dll-op) (c prebuilt-system)) - nil) - - (defmethod component-depends-on ((o gather-operation) (c prebuilt-system)) - nil) - - (defmethod output-files ((o lib-op) (c prebuilt-system)) - (values (list (prebuilt-system-static-library c)) t))) - - -;;; -;;; PREBUILT SYSTEM CREATOR -;;; -(with-upgradability () - (defmethod output-files ((o deliver-asd-op) (s system)) - (list (make-pathname :name (component-name s) :type "asd" - :defaults (component-pathname s)))) - - (defmethod perform ((o deliver-asd-op) (s system)) - (let* ((inputs (input-files o s)) - (fasl (first inputs)) - (library (second inputs)) - (asd (first (output-files o s))) - (name (if (and fasl asd) (pathname-name asd) (return-from perform))) - (version (component-version s)) - (dependencies - (if (operation-monolithic-p o) - ;; We want only dependencies, and we use basic-load-op rather than load-op so that - ;; this will keep working on systems that load dependencies with load-bundle-op - (remove-if-not 'builtin-system-p - (required-components s :component-type 'system - :keep-operation 'basic-load-op)) - (while-collecting (x) ;; resolve the sideway-dependencies of s - (map-direct-dependencies - t 'load-op s - #'(lambda (o c) - (when (and (typep o 'load-op) (typep c 'system)) - (x c))))))) - (depends-on (mapcar 'coerce-name dependencies))) - (when (pathname-equal asd (system-source-file s)) - (cerror "overwrite the asd file" - "~/asdf-action:format-action/ is going to overwrite the system definition file ~S ~ -which is probably not what you want; you probably need to tweak your output translations." - (cons o s) asd)) - (with-open-file (s asd :direction :output :if-exists :supersede - :if-does-not-exist :create) - (format s ";;; Prebuilt~:[~; monolithic~] ASDF definition for system ~A~%" - (operation-monolithic-p o) name) - (format s ";;; Built for ~A ~A on a ~A/~A ~A~%" - (lisp-implementation-type) - (lisp-implementation-version) - (software-type) - (machine-type) - (software-version)) - (let ((*package* (find-package :asdf-user))) - (pprint `(defsystem ,name - :class prebuilt-system - :version ,version - :depends-on ,depends-on - :components ((:compiled-file ,(pathname-name fasl))) - ,@(when library `(:lib ,(file-namestring library)))) - s) - (terpri s))))) - - #-(or clasp ecl mkcl) - (defmethod perform ((o basic-compile-bundle-op) (c system)) - (let* ((input-files (input-files o c)) - (fasl-files (remove (compile-file-type) input-files :key #'pathname-type :test-not #'equalp)) - (non-fasl-files (remove (compile-file-type) input-files :key #'pathname-type :test #'equalp)) - (output-files (output-files o c)) - (output-file (first output-files))) - (assert (eq (not input-files) (not output-files))) - (when input-files - (when non-fasl-files - (error "On ~A, asdf/bundle can only bundle FASL files, but these were also produced: ~S" - (implementation-type) non-fasl-files)) - (when (or (prologue-code c) (epilogue-code c)) - (error "prologue-code and epilogue-code are not supported on ~A" - (implementation-type))) - (with-staging-pathname (output-file) - (combine-fasls fasl-files output-file))))) - - (defmethod input-files ((o load-op) (s precompiled-system)) - (bundle-output-files (find-operation o 'compile-bundle-op) s)) - - (defmethod perform ((o load-op) (s precompiled-system)) - (perform-lisp-load-fasl o s)) - - (defmethod component-depends-on ((o load-bundle-op) (s precompiled-system)) - #+xcl (declare (ignorable o)) - `((load-op ,s) ,@(call-next-method)))) - -#| ;; Example use: -(asdf:defsystem :precompiled-asdf-utils :class asdf::precompiled-system :fasl (asdf:apply-output-translations (asdf:system-relative-pathname :asdf-utils "asdf-utils.system.fasl"))) -(asdf:load-system :precompiled-asdf-utils) -|# - -#+(or clasp ecl mkcl) -(with-upgradability () - (defun system-module-pathname (module) - (let ((name (coerce-name module))) - (some - 'file-exists-p - (list - #+clasp (compile-file-pathname (make-pathname :name name :defaults "sys:") :output-type :object) - #+ecl (compile-file-pathname (make-pathname :name name :defaults "sys:") :type :lib) - #+ecl (compile-file-pathname (make-pathname :name (strcat "lib" name) :defaults "sys:") :type :lib) - #+ecl (compile-file-pathname (make-pathname :name name :defaults "sys:") :type :object) - #+mkcl (make-pathname :name name :type (bundle-pathname-type :lib) :defaults #p"sys:") - #+mkcl (make-pathname :name name :type (bundle-pathname-type :lib) :defaults #p"sys:contrib;"))))) - - (defun make-prebuilt-system (name &optional (pathname (system-module-pathname name))) - "Creates a prebuilt-system if PATHNAME isn't NIL." - (when pathname - (make-instance 'prebuilt-system - :name (coerce-name name) - :static-library (resolve-symlinks* pathname)))) - - (defun linkable-system (x) - (or (if-let (s (find-system x)) - (and (system-source-file x) s)) - (if-let (p (system-module-pathname (coerce-name x))) - (make-prebuilt-system x p)))) - - (defmethod component-depends-on :around ((o image-op) (c system)) - (let* ((next (call-next-method)) - (deps (make-hash-table :test 'equal)) - (linkable (loop* :for (do . dcs) :in next :collect - (cons do - (loop :for dc :in dcs - :for dep = (and dc (resolve-dependency-spec c dc)) - :when dep - :do (setf (gethash (coerce-name (component-system dep)) deps) t) - :collect (or (and (typep dep 'system) (linkable-system dep)) dep)))))) - `((lib-op - ,@(unless (no-uiop c) - (list (linkable-system "cmp") - (unless (or (gethash "uiop" deps) (gethash "asdf" deps)) - (or (linkable-system "uiop") - (linkable-system "asdf") - "asdf"))))) - ,@linkable))) - - (defmethod perform ((o link-op) (c system)) - (let* ((object-files (input-files o c)) - (output (output-files o c)) - (bundle (first output)) - (programp (typep o 'program-op)) - (kind (bundle-type o))) - (when output - (apply 'create-image - bundle (append - (when programp (prefix-lisp-object-files c)) - object-files - (when programp (postfix-lisp-object-files c))) - :kind kind - :prologue-code (when programp (prologue-code c)) - :epilogue-code (when programp (epilogue-code c)) - :build-args (when programp (extra-build-args c)) - :extra-object-files (when programp (extra-object-files c)) - :no-uiop (no-uiop c) - (when programp `(:entry-point ,(component-entry-point c)))))))) -;;;; ------------------------------------------------------------------------- -;;;; Concatenate-source - -(uiop/package:define-package :asdf/concatenate-source - (:recycle :asdf/concatenate-source :asdf) - (:use :uiop/common-lisp :uiop :asdf/upgrade - :asdf/component :asdf/operation - :asdf/system :asdf/find-system - :asdf/action :asdf/lisp-action :asdf/plan :asdf/bundle) - (:export - #:concatenate-source-op - #:load-concatenated-source-op - #:compile-concatenated-source-op - #:load-compiled-concatenated-source-op - #:monolithic-concatenate-source-op - #:monolithic-load-concatenated-source-op - #:monolithic-compile-concatenated-source-op - #:monolithic-load-compiled-concatenated-source-op)) -(in-package :asdf/concatenate-source) - -;;; -;;; Concatenate sources -;;; -(with-upgradability () - ;; Base classes for both regular and monolithic concatenate-source operations - (defclass basic-concatenate-source-op (bundle-op) - ((bundle-type :initform "lisp" :allocation :class))) - (defclass basic-load-concatenated-source-op (basic-load-op selfward-operation) ()) - (defclass basic-compile-concatenated-source-op (basic-compile-op selfward-operation) ()) - (defclass basic-load-compiled-concatenated-source-op (basic-load-op selfward-operation) ()) - - ;; Regular concatenate-source operations - (defclass concatenate-source-op (basic-concatenate-source-op non-propagating-operation) () - (:documentation "Operation to concatenate all sources in a system into a single file")) - (defclass load-concatenated-source-op (basic-load-concatenated-source-op) - ((selfward-operation :initform '(prepare-op concatenate-source-op) :allocation :class)) - (:documentation "Operation to load the result of concatenate-source-op as source")) - (defclass compile-concatenated-source-op (basic-compile-concatenated-source-op) - ((selfward-operation :initform '(prepare-op concatenate-source-op) :allocation :class)) - (:documentation "Operation to compile the result of concatenate-source-op")) - (defclass load-compiled-concatenated-source-op (basic-load-compiled-concatenated-source-op) - ((selfward-operation :initform '(prepare-op compile-concatenated-source-op) :allocation :class)) - (:documentation "Operation to load the result of compile-concatenated-source-op")) - - (defclass monolithic-concatenate-source-op - (basic-concatenate-source-op monolithic-bundle-op non-propagating-operation) () - (:documentation "Operation to concatenate all sources in a system and its dependencies -into a single file")) - (defclass monolithic-load-concatenated-source-op (basic-load-concatenated-source-op) - ((selfward-operation :initform 'monolithic-concatenate-source-op :allocation :class)) - (:documentation "Operation to load the result of monolithic-concatenate-source-op as source")) - (defclass monolithic-compile-concatenated-source-op (basic-compile-concatenated-source-op) - ((selfward-operation :initform 'monolithic-concatenate-source-op :allocation :class)) - (:documentation "Operation to compile the result of monolithic-concatenate-source-op")) - (defclass monolithic-load-compiled-concatenated-source-op - (basic-load-compiled-concatenated-source-op) - ((selfward-operation :initform 'monolithic-compile-concatenated-source-op :allocation :class)) - (:documentation "Operation to load the result of monolithic-compile-concatenated-source-op")) - - (defmethod input-files ((operation basic-concatenate-source-op) (s system)) - (loop :with encoding = (or (component-encoding s) *default-encoding*) - :with other-encodings = '() - :with around-compile = (around-compile-hook s) - :with other-around-compile = '() - :for c :in (required-components ;; see note about similar call to required-components - s :goal-operation 'load-op ;; in bundle.lisp - :keep-operation 'basic-compile-op - :other-systems (operation-monolithic-p operation)) - :append - (when (typep c 'cl-source-file) - (let ((e (component-encoding c))) - (unless (equal e encoding) - (let ((a (assoc e other-encodings))) - (if a (push (component-find-path c) (cdr a)) - (push (list a (component-find-path c)) other-encodings))))) - (unless (equal around-compile (around-compile-hook c)) - (push (component-find-path c) other-around-compile)) - (input-files (make-operation 'compile-op) c)) :into inputs - :finally - (when other-encodings - (warn "~S uses encoding ~A but has sources that use these encodings:~{ ~A~}" - operation encoding - (mapcar #'(lambda (x) (cons (car x) (list (reverse (cdr x))))) - other-encodings))) - (when other-around-compile - (warn "~S uses around-compile hook ~A but has sources that use these hooks: ~A" - operation around-compile other-around-compile)) - (return inputs))) - (defmethod output-files ((o basic-compile-concatenated-source-op) (s system)) - (lisp-compilation-output-files o s)) - - (defmethod perform ((o basic-concatenate-source-op) (s system)) - (let* ((ins (input-files o s)) - (out (output-file o s)) - (tmp (tmpize-pathname out))) - (concatenate-files ins tmp) - (rename-file-overwriting-target tmp out))) - (defmethod perform ((o basic-load-concatenated-source-op) (s system)) - (perform-lisp-load-source o s)) - (defmethod perform ((o basic-compile-concatenated-source-op) (s system)) - (perform-lisp-compilation o s)) - (defmethod perform ((o basic-load-compiled-concatenated-source-op) (s system)) - (perform-lisp-load-fasl o s))) - -;;;; --------------------------------------------------------------------------- -;;;; asdf-output-translations - -(uiop/package:define-package :asdf/output-translations - (:recycle :asdf/output-translations :asdf) - (:use :uiop/common-lisp :uiop :asdf/upgrade) - (:export - #:*output-translations* #:*output-translations-parameter* - #:invalid-output-translation - #:output-translations #:output-translations-initialized-p - #:initialize-output-translations #:clear-output-translations - #:disable-output-translations #:ensure-output-translations - #:apply-output-translations - #:validate-output-translations-directive #:validate-output-translations-form - #:validate-output-translations-file #:validate-output-translations-directory - #:parse-output-translations-string #:wrapping-output-translations - #:user-output-translations-pathname #:system-output-translations-pathname - #:user-output-translations-directory-pathname #:system-output-translations-directory-pathname - #:environment-output-translations #:process-output-translations - #:compute-output-translations - #+abcl #:translate-jar-pathname - )) -(in-package :asdf/output-translations) - -;; (setf output-translations) between 2.27 and 3.0.3 was using a defsetf macro -;; for the sake of obsolete versions of GCL 2.6. Make sure it doesn't come to haunt us. -(when-upgrading (:version "3.1.2") (fmakunbound '(setf output-translations))) - -(with-upgradability () - (define-condition invalid-output-translation (invalid-configuration warning) - ((format :initform (compatfmt "~@")))) - - (defvar *output-translations* () - "Either NIL (for uninitialized), or a list of one element, -said element itself being a sorted list of mappings. -Each mapping is a pair of a source pathname and destination pathname, -and the order is by decreasing length of namestring of the source pathname.") - - (defun output-translations () - "Return the configured output-translations, if any" - (car *output-translations*)) - - ;; Set the output-translations, by sorting the provided new-value. - (defun set-output-translations (new-value) - (setf *output-translations* - (list - (stable-sort (copy-list new-value) #'> - :key #'(lambda (x) - (etypecase (car x) - ((eql t) -1) - (pathname - (let ((directory - (normalize-pathname-directory-component - (pathname-directory (car x))))) - (if (listp directory) (length directory) 0)))))))) - new-value) - (defun (setf output-translations) (new-value) (set-output-translations new-value)) - - (defun output-translations-initialized-p () - "Have the output-translations been initialized yet?" - (and *output-translations* t)) - - (defun clear-output-translations () - "Undoes any initialization of the output translations." - (setf *output-translations* '()) - (values)) - (register-clear-configuration-hook 'clear-output-translations) - - - ;;; Validation of the configuration directives... - - (defun validate-output-translations-directive (directive) - (or (member directive '(:enable-user-cache :disable-cache nil)) - (and (consp directive) - (or (and (length=n-p directive 2) - (or (and (eq (first directive) :include) - (typep (second directive) '(or string pathname null))) - (and (location-designator-p (first directive)) - (or (location-designator-p (second directive)) - (location-function-p (second directive)))))) - (and (length=n-p directive 1) - (location-designator-p (first directive))))))) - - (defun validate-output-translations-form (form &key location) - (validate-configuration-form - form - :output-translations - 'validate-output-translations-directive - :location location :invalid-form-reporter 'invalid-output-translation)) - - (defun validate-output-translations-file (file) - (validate-configuration-file - file 'validate-output-translations-form :description "output translations")) - - (defun validate-output-translations-directory (directory) - (validate-configuration-directory - directory :output-translations 'validate-output-translations-directive - :invalid-form-reporter 'invalid-output-translation)) - - - ;;; Parse the ASDF_OUTPUT_TRANSLATIONS environment variable and/or some file contents - (defun parse-output-translations-string (string &key location) - (cond - ((or (null string) (equal string "")) - '(:output-translations :inherit-configuration)) - ((not (stringp string)) - (error (compatfmt "~@") string)) - ((eql (char string 0) #\") - (parse-output-translations-string (read-from-string string) :location location)) - ((eql (char string 0) #\() - (validate-output-translations-form (read-from-string string) :location location)) - (t - (loop - :with inherit = nil - :with directives = () - :with start = 0 - :with end = (length string) - :with source = nil - :with separator = (inter-directory-separator) - :for i = (or (position separator string :start start) end) :do - (let ((s (subseq string start i))) - (cond - (source - (push (list source (if (equal "" s) nil s)) directives) - (setf source nil)) - ((equal "" s) - (when inherit - (error (compatfmt "~@") - string)) - (setf inherit t) - (push :inherit-configuration directives)) - (t - (setf source s))) - (setf start (1+ i)) - (when (> start end) - (when source - (error (compatfmt "~@") - string)) - (unless inherit - (push :ignore-inherited-configuration directives)) - (return `(:output-translations ,@(nreverse directives))))))))) - - - ;; The default sources of configuration for output-translations - (defparameter* *default-output-translations* - '(environment-output-translations - user-output-translations-pathname - user-output-translations-directory-pathname - system-output-translations-pathname - system-output-translations-directory-pathname)) - - ;; Compulsory implementation-dependent wrapping for the translations: - ;; handle implementation-provided systems. - (defun wrapping-output-translations () - `(:output-translations - ;; Some implementations have precompiled ASDF systems, - ;; so we must disable translations for implementation paths. - #+(or clasp #|clozure|# ecl mkcl sbcl) - ,@(let ((h (resolve-symlinks* (lisp-implementation-directory)))) - (when h `(((,h ,*wild-path*) ())))) - #+mkcl (,(translate-logical-pathname "CONTRIB:") ()) - ;; All-import, here is where we want user stuff to be: - :inherit-configuration - ;; These are for convenience, and can be overridden by the user: - #+abcl (#p"/___jar___file___root___/**/*.*" (:user-cache #p"**/*.*")) - #+abcl (#p"jar:file:/**/*.jar!/**/*.*" (:function translate-jar-pathname)) - ;; We enable the user cache by default, and here is the place we do: - :enable-user-cache)) - - ;; Relative pathnames of output-translations configuration to XDG configuration directory - (defparameter *output-translations-file* (parse-unix-namestring "common-lisp/asdf-output-translations.conf")) - (defparameter *output-translations-directory* (parse-unix-namestring "common-lisp/asdf-output-translations.conf.d/")) - - ;; Locating various configuration pathnames, depending on input or output intent. - (defun user-output-translations-pathname (&key (direction :input)) - (xdg-config-pathname *output-translations-file* direction)) - (defun system-output-translations-pathname (&key (direction :input)) - (find-preferred-file (system-config-pathnames *output-translations-file*) - :direction direction)) - (defun user-output-translations-directory-pathname (&key (direction :input)) - (xdg-config-pathname *output-translations-directory* direction)) - (defun system-output-translations-directory-pathname (&key (direction :input)) - (find-preferred-file (system-config-pathnames *output-translations-directory*) - :direction direction)) - (defun environment-output-translations () - (getenv "ASDF_OUTPUT_TRANSLATIONS")) - - - ;;; Processing the configuration. - - (defgeneric process-output-translations (spec &key inherit collect)) - - (defun inherit-output-translations (inherit &key collect) - (when inherit - (process-output-translations (first inherit) :collect collect :inherit (rest inherit)))) - - (defun* (process-output-translations-directive) (directive &key inherit collect) - (if (atom directive) - (ecase directive - ((:enable-user-cache) - (process-output-translations-directive '(t :user-cache) :collect collect)) - ((:disable-cache) - (process-output-translations-directive '(t t) :collect collect)) - ((:inherit-configuration) - (inherit-output-translations inherit :collect collect)) - ((:ignore-inherited-configuration :ignore-invalid-entries nil) - nil)) - (let ((src (first directive)) - (dst (second directive))) - (if (eq src :include) - (when dst - (process-output-translations (pathname dst) :inherit nil :collect collect)) - (when src - (let ((trusrc (or (eql src t) - (let ((loc (resolve-location src :ensure-directory t :wilden t))) - (if (absolute-pathname-p loc) (resolve-symlinks* loc) loc))))) - (cond - ((location-function-p dst) - (funcall collect - (list trusrc (ensure-function (second dst))))) - ((typep dst 'boolean) - (funcall collect (list trusrc t))) - (t - (let* ((trudst (resolve-location dst :ensure-directory t :wilden t))) - (funcall collect (list trudst t)) - (funcall collect (list trusrc trudst))))))))))) - - (defmethod process-output-translations ((x symbol) &key - (inherit *default-output-translations*) - collect) - (process-output-translations (funcall x) :inherit inherit :collect collect)) - (defmethod process-output-translations ((pathname pathname) &key inherit collect) - (cond - ((directory-pathname-p pathname) - (process-output-translations (validate-output-translations-directory pathname) - :inherit inherit :collect collect)) - ((probe-file* pathname :truename *resolve-symlinks*) - (process-output-translations (validate-output-translations-file pathname) - :inherit inherit :collect collect)) - (t - (inherit-output-translations inherit :collect collect)))) - (defmethod process-output-translations ((string string) &key inherit collect) - (process-output-translations (parse-output-translations-string string) - :inherit inherit :collect collect)) - (defmethod process-output-translations ((x null) &key inherit collect) - (inherit-output-translations inherit :collect collect)) - (defmethod process-output-translations ((form cons) &key inherit collect) - (dolist (directive (cdr (validate-output-translations-form form))) - (process-output-translations-directive directive :inherit inherit :collect collect))) - - - ;;; Top-level entry-points to configure output-translations - - (defun compute-output-translations (&optional parameter) - "read the configuration, return it" - (remove-duplicates - (while-collecting (c) - (inherit-output-translations - `(wrapping-output-translations ,parameter ,@*default-output-translations*) :collect #'c)) - :test 'equal :from-end t)) - - ;; Saving the user-provided parameter to output-translations, if any, - ;; so we can recompute the translations after code upgrade. - (defvar *output-translations-parameter* nil) - - ;; Main entry-point for users. - (defun initialize-output-translations (&optional (parameter *output-translations-parameter*)) - "read the configuration, initialize the internal configuration variable, -return the configuration" - (setf *output-translations-parameter* parameter - (output-translations) (compute-output-translations parameter))) - - (defun disable-output-translations () - "Initialize output translations in a way that maps every file to itself, -effectively disabling the output translation facility." - (initialize-output-translations - '(:output-translations :disable-cache :ignore-inherited-configuration))) - - ;; checks an initial variable to see whether the state is initialized - ;; or cleared. In the former case, return current configuration; in - ;; the latter, initialize. ASDF will call this function at the start - ;; of (asdf:find-system). - (defun ensure-output-translations () - (if (output-translations-initialized-p) - (output-translations) - (initialize-output-translations))) - - - ;; Top-level entry-point to _use_ output-translations - (defun* (apply-output-translations) (path) - (etypecase path - (logical-pathname - path) - ((or pathname string) - (ensure-output-translations) - (loop* :with p = (resolve-symlinks* path) - :for (source destination) :in (car *output-translations*) - :for root = (when (or (eq source t) - (and (pathnamep source) - (not (absolute-pathname-p source)))) - (pathname-root p)) - :for absolute-source = (cond - ((eq source t) (wilden root)) - (root (merge-pathnames* source root)) - (t source)) - :when (or (eq source t) (pathname-match-p p absolute-source)) - :return (translate-pathname* p absolute-source destination root source) - :finally (return p))))) - - - ;; Hook into uiop's output-translation mechanism - #-cormanlisp - (setf *output-translation-function* 'apply-output-translations) - - - ;;; Implementation-dependent hacks - #+abcl ;; ABCL: make it possible to use systems provided in the ABCL jar. - (defun translate-jar-pathname (source wildcard) - (declare (ignore wildcard)) - (flet ((normalize-device (pathname) - (if (find :windows *features*) - pathname - (make-pathname :defaults pathname :device :unspecific)))) - (let* ((jar - (pathname (first (pathname-device source)))) - (target-root-directory-namestring - (format nil "/___jar___file___root___/~@[~A/~]" - (and (find :windows *features*) - (pathname-device jar)))) - (relative-source - (relativize-pathname-directory source)) - (relative-jar - (relativize-pathname-directory (ensure-directory-pathname jar))) - (target-root-directory - (normalize-device - (pathname-directory-pathname - (parse-namestring target-root-directory-namestring)))) - (target-root - (merge-pathnames* relative-jar target-root-directory)) - (target - (merge-pathnames* relative-source target-root))) - (normalize-device (apply-output-translations target)))))) - -;;;; ----------------------------------------------------------------- -;;;; Source Registry Configuration, by Francois-Rene Rideau -;;;; See the Manual and https://bugs.launchpad.net/asdf/+bug/485918 - -(uiop/package:define-package :asdf/source-registry - (:recycle :asdf/source-registry :asdf) - (:use :uiop/common-lisp :uiop :asdf/upgrade :asdf/find-system) - (:export - #:*source-registry-parameter* #:*default-source-registries* - #:invalid-source-registry - #:source-registry-initialized-p - #:initialize-source-registry #:clear-source-registry #:*source-registry* - #:ensure-source-registry #:*source-registry-parameter* - #:*default-source-registry-exclusions* #:*source-registry-exclusions* - #:*wild-asd* #:directory-asd-files #:register-asd-directory - #:*recurse-beyond-asds* #:collect-asds-in-directory #:collect-sub*directories-asd-files - #:validate-source-registry-directive #:validate-source-registry-form - #:validate-source-registry-file #:validate-source-registry-directory - #:parse-source-registry-string #:wrapping-source-registry - #:default-user-source-registry #:default-system-source-registry - #:user-source-registry #:system-source-registry - #:user-source-registry-directory #:system-source-registry-directory - #:environment-source-registry #:process-source-registry #:inherit-source-registry - #:compute-source-registry #:flatten-source-registry - #:sysdef-source-registry-search)) -(in-package :asdf/source-registry) - -(with-upgradability () - (define-condition invalid-source-registry (invalid-configuration warning) - ((format :initform (compatfmt "~@")))) - - ;; Default list of directories under which the source-registry tree search won't recurse - (defvar *default-source-registry-exclusions* - '(;;-- Using ack 1.2 exclusions - ".bzr" ".cdv" - ;; "~.dep" "~.dot" "~.nib" "~.plst" ; we don't support ack wildcards - ".git" ".hg" ".pc" ".svn" "CVS" "RCS" "SCCS" "_darcs" - "_sgbak" "autom4te.cache" "cover_db" "_build" - ;;-- debian often builds stuff under the debian directory... BAD. - "debian")) - - ;; Actual list of directories under which the source-registry tree search won't recurse - (defvar *source-registry-exclusions* *default-source-registry-exclusions*) - - ;; The state of the source-registry after search in configured locations - (defvar *source-registry* nil - "Either NIL (for uninitialized), or an equal hash-table, mapping -system names to pathnames of .asd files") - - ;; Saving the user-provided parameter to the source-registry, if any, - ;; so we can recompute the source-registry after code upgrade. - (defvar *source-registry-parameter* nil) - - (defun source-registry-initialized-p () - (typep *source-registry* 'hash-table)) - - (defun clear-source-registry () - "Undoes any initialization of the source registry." - (setf *source-registry* nil) - (values)) - (register-clear-configuration-hook 'clear-source-registry) - - (defparameter *wild-asd* - (make-pathname :directory nil :name *wild* :type "asd" :version :newest)) - - (defun directory-asd-files (directory) - (directory-files directory *wild-asd*)) - - (defun collect-asds-in-directory (directory collect) - (let ((asds (directory-asd-files directory))) - (map () collect asds) - asds)) - - (defvar *recurse-beyond-asds* t - "Should :tree entries of the source-registry recurse in subdirectories -after having found a .asd file? True by default.") - - ;; When walking down a filesystem tree, if in a directory there is a .cl-source-registry.cache, - ;; read its contents instead of further recursively querying the filesystem. - (defun process-source-registry-cache (directory collect) - (let ((cache (ignore-errors - (safe-read-file-form (subpathname directory ".cl-source-registry.cache"))))) - (when (and (listp cache) (eq :source-registry-cache (first cache))) - (loop :for s :in (rest cache) :do (funcall collect (subpathname directory s))) - t))) - - (defun collect-sub*directories-asd-files - (directory &key (exclude *default-source-registry-exclusions*) collect - (recurse-beyond-asds *recurse-beyond-asds*) ignore-cache) - (let ((visited (make-hash-table :test 'equalp))) - (flet ((collectp (dir) - (unless (and (not ignore-cache) (process-source-registry-cache directory collect)) - (let ((asds (collect-asds-in-directory dir collect))) - (or recurse-beyond-asds (not asds))))) - (recursep (x) ; x will be a directory pathname - (and - (not (member (car (last (pathname-directory x))) exclude :test #'equal)) - (flet ((pathname-key (x) - (namestring (truename* x)))) - (let ((visitedp (gethash (pathname-key x) visited))) - (if visitedp nil - (setf (gethash (pathname-key x) visited) t))))))) - (collect-sub*directories directory #'collectp #'recursep (constantly nil))))) - - - ;;; Validate the configuration forms - - (defun validate-source-registry-directive (directive) - (or (member directive '(:default-registry)) - (and (consp directive) - (let ((rest (rest directive))) - (case (first directive) - ((:include :directory :tree) - (and (length=n-p rest 1) - (location-designator-p (first rest)))) - ((:exclude :also-exclude) - (every #'stringp rest)) - ((:default-registry) - (null rest))))))) - - (defun validate-source-registry-form (form &key location) - (validate-configuration-form - form :source-registry 'validate-source-registry-directive - :location location :invalid-form-reporter 'invalid-source-registry)) - - (defun validate-source-registry-file (file) - (validate-configuration-file - file 'validate-source-registry-form :description "a source registry")) - - (defun validate-source-registry-directory (directory) - (validate-configuration-directory - directory :source-registry 'validate-source-registry-directive - :invalid-form-reporter 'invalid-source-registry)) - - - ;;; Parse the configuration string - - (defun parse-source-registry-string (string &key location) - (cond - ((or (null string) (equal string "")) - '(:source-registry :inherit-configuration)) - ((not (stringp string)) - (error (compatfmt "~@") string)) - ((find (char string 0) "\"(") - (validate-source-registry-form (read-from-string string) :location location)) - (t - (loop - :with inherit = nil - :with directives = () - :with start = 0 - :with end = (length string) - :with separator = (inter-directory-separator) - :for pos = (position separator string :start start) :do - (let ((s (subseq string start (or pos end)))) - (flet ((check (dir) - (unless (absolute-pathname-p dir) - (error (compatfmt "~@") string)) - dir)) - (cond - ((equal "" s) ; empty element: inherit - (when inherit - (error (compatfmt "~@") - string)) - (setf inherit t) - (push ':inherit-configuration directives)) - ((string-suffix-p s "//") ;; TODO: allow for doubling of separator even outside Unix? - (push `(:tree ,(check (subseq s 0 (- (length s) 2)))) directives)) - (t - (push `(:directory ,(check s)) directives)))) - (cond - (pos - (setf start (1+ pos))) - (t - (unless inherit - (push '(:ignore-inherited-configuration) directives)) - (return `(:source-registry ,@(nreverse directives)))))))))) - - (defun register-asd-directory (directory &key recurse exclude collect) - (if (not recurse) - (collect-asds-in-directory directory collect) - (collect-sub*directories-asd-files - directory :exclude exclude :collect collect))) - - (defparameter* *default-source-registries* - '(environment-source-registry - user-source-registry - user-source-registry-directory - default-user-source-registry - system-source-registry - system-source-registry-directory - default-system-source-registry) - "List of default source registries" "3.1.0.102") - - (defparameter *source-registry-file* (parse-unix-namestring "common-lisp/source-registry.conf")) - (defparameter *source-registry-directory* (parse-unix-namestring "common-lisp/source-registry.conf.d/")) - - (defun wrapping-source-registry () - `(:source-registry - #+(or clasp ecl sbcl) (:tree ,(resolve-symlinks* (lisp-implementation-directory))) - :inherit-configuration - #+mkcl (:tree ,(translate-logical-pathname "SYS:")) - #+cmucl (:tree #p"modules:") - #+scl (:tree #p"file://modules/"))) - (defun default-user-source-registry () - `(:source-registry - (:tree (:home "common-lisp/")) - #+sbcl (:directory (:home ".sbcl/systems/")) - (:directory ,(xdg-data-home "common-lisp/systems/")) - (:tree ,(xdg-data-home "common-lisp/source/")) - :inherit-configuration)) - (defun default-system-source-registry () - `(:source-registry - ,@(loop :for dir :in (xdg-data-dirs "common-lisp/") - :collect `(:directory (,dir "systems/")) - :collect `(:tree (,dir "source/"))) - :inherit-configuration)) - (defun user-source-registry (&key (direction :input)) - (xdg-config-pathname *source-registry-file* direction)) - (defun system-source-registry (&key (direction :input)) - (find-preferred-file (system-config-pathnames *source-registry-file*) - :direction direction)) - (defun user-source-registry-directory (&key (direction :input)) - (xdg-config-pathname *source-registry-directory* direction)) - (defun system-source-registry-directory (&key (direction :input)) - (find-preferred-file (system-config-pathnames *source-registry-directory*) - :direction direction)) - (defun environment-source-registry () - (getenv "CL_SOURCE_REGISTRY")) - - - ;;; Process the source-registry configuration - - (defgeneric process-source-registry (spec &key inherit register)) - - (defun* (inherit-source-registry) (inherit &key register) - (when inherit - (process-source-registry (first inherit) :register register :inherit (rest inherit)))) - - (defun* (process-source-registry-directive) (directive &key inherit register) - (destructuring-bind (kw &rest rest) (if (consp directive) directive (list directive)) - (ecase kw - ((:include) - (destructuring-bind (pathname) rest - (process-source-registry (resolve-location pathname) :inherit nil :register register))) - ((:directory) - (destructuring-bind (pathname) rest - (when pathname - (funcall register (resolve-location pathname :ensure-directory t))))) - ((:tree) - (destructuring-bind (pathname) rest - (when pathname - (funcall register (resolve-location pathname :ensure-directory t) - :recurse t :exclude *source-registry-exclusions*)))) - ((:exclude) - (setf *source-registry-exclusions* rest)) - ((:also-exclude) - (appendf *source-registry-exclusions* rest)) - ((:default-registry) - (inherit-source-registry - '(default-user-source-registry default-system-source-registry) :register register)) - ((:inherit-configuration) - (inherit-source-registry inherit :register register)) - ((:ignore-inherited-configuration) - nil))) - nil) - - (defmethod process-source-registry ((x symbol) &key inherit register) - (process-source-registry (funcall x) :inherit inherit :register register)) - (defmethod process-source-registry ((pathname pathname) &key inherit register) - (cond - ((directory-pathname-p pathname) - (let ((*here-directory* (resolve-symlinks* pathname))) - (process-source-registry (validate-source-registry-directory pathname) - :inherit inherit :register register))) - ((probe-file* pathname :truename *resolve-symlinks*) - (let ((*here-directory* (pathname-directory-pathname pathname))) - (process-source-registry (validate-source-registry-file pathname) - :inherit inherit :register register))) - (t - (inherit-source-registry inherit :register register)))) - (defmethod process-source-registry ((string string) &key inherit register) - (process-source-registry (parse-source-registry-string string) - :inherit inherit :register register)) - (defmethod process-source-registry ((x null) &key inherit register) - (inherit-source-registry inherit :register register)) - (defmethod process-source-registry ((form cons) &key inherit register) - (let ((*source-registry-exclusions* *default-source-registry-exclusions*)) - (dolist (directive (cdr (validate-source-registry-form form))) - (process-source-registry-directive directive :inherit inherit :register register)))) - - - ;; Flatten the user-provided configuration into an ordered list of directories and trees - (defun flatten-source-registry (&optional (parameter *source-registry-parameter*)) - (remove-duplicates - (while-collecting (collect) - (with-pathname-defaults () ;; be location-independent - (inherit-source-registry - `(wrapping-source-registry - ,parameter - ,@*default-source-registries*) - :register #'(lambda (directory &key recurse exclude) - (collect (list directory :recurse recurse :exclude exclude)))))) - :test 'equal :from-end t)) - - ;; MAYBE: move this utility function to uiop/pathname and export it? - (defun pathname-directory-depth (p) - (length (normalize-pathname-directory-component (pathname-directory p)))) - - (defun preferred-source-path-p (x y) - "Return T iff X is to be preferred over Y as a source path" - (let ((lx (pathname-directory-depth x)) - (ly (pathname-directory-depth y))) - (or (< lx ly) - (and (= lx ly) - (string< (namestring x) - (namestring y)))))) - - ;; Will read the configuration and initialize all internal variables. - (defun compute-source-registry (&optional (parameter *source-registry-parameter*) - (registry *source-registry*)) - (dolist (entry (flatten-source-registry parameter)) - (destructuring-bind (directory &key recurse exclude) entry - (let* ((h (make-hash-table :test 'equal))) ; table to detect duplicates - (register-asd-directory - directory :recurse recurse :exclude exclude :collect - #'(lambda (asd) - (let* ((name (pathname-name asd)) - (name (if (typep asd 'logical-pathname) - ;; logical pathnames are upper-case, - ;; at least in the CLHS and on SBCL, - ;; yet (coerce-name :foo) is lower-case. - ;; won't work well with (load-system "Foo") - ;; instead of (load-system 'foo) - (string-downcase name) - name))) - (unless (gethash name registry) ; already shadowed by something else - (if-let (old (gethash name h)) - ;; If the name appears multiple times, - ;; prefer the one with the shallowest directory, - ;; or if they have same depth, compare unix-namestring with string< - (multiple-value-bind (better worse) - (if (preferred-source-path-p asd old) - (progn (setf (gethash name h) asd) (values asd old)) - (values old asd)) - (when *verbose-out* - (warn (compatfmt "~@") - directory recurse name better worse))) - (setf (gethash name h) asd)))))) - (maphash #'(lambda (k v) (setf (gethash k registry) v)) h)))) - (values)) - - (defun initialize-source-registry (&optional (parameter *source-registry-parameter*)) - ;; Record the parameter used to configure the registry - (setf *source-registry-parameter* parameter) - ;; Clear the previous registry database: - (setf *source-registry* (make-hash-table :test 'equal)) - ;; Do it! - (compute-source-registry parameter)) - - ;; Checks an initial variable to see whether the state is initialized - ;; or cleared. In the former case, return current configuration; in - ;; the latter, initialize. ASDF will call this function at the start - ;; of (asdf:find-system) to make sure the source registry is initialized. - ;; However, it will do so *without* a parameter, at which point it - ;; will be too late to provide a parameter to this function, though - ;; you may override the configuration explicitly by calling - ;; initialize-source-registry directly with your parameter. - (defun ensure-source-registry (&optional parameter) - (unless (source-registry-initialized-p) - (initialize-source-registry parameter)) - (values)) - - (defun sysdef-source-registry-search (system) - (ensure-source-registry) - (values (gethash (primary-system-name system) *source-registry*)))) - - -;;;; ------------------------------------------------------------------------- -;;;; Package systems in the style of quick-build or faslpath - -(uiop:define-package :asdf/package-inferred-system - (:recycle :asdf/package-inferred-system :asdf/package-system :asdf) - (:use :uiop/common-lisp :uiop - :asdf/defsystem ;; Using the old name of :asdf/parse-defsystem for compatibility - :asdf/upgrade :asdf/component :asdf/system :asdf/find-system :asdf/lisp-action) - (:export - #:package-inferred-system #:sysdef-package-inferred-system-search - #:package-system ;; backward compatibility only. To be removed. - #:register-system-packages - #:*defpackage-forms* #:*package-inferred-systems* #:package-inferred-system-missing-package-error)) -(in-package :asdf/package-inferred-system) - -(with-upgradability () - ;; The names of the recognized defpackage forms. - (defparameter *defpackage-forms* '(defpackage define-package)) - - (defun initial-package-inferred-systems-table () - ;; Mark all existing packages are preloaded. - (let ((h (make-hash-table :test 'equal))) - (dolist (p (list-all-packages)) - (dolist (n (package-names p)) - (setf (gethash n h) t))) - h)) - - ;; Mapping from package names to systems that provide them. - (defvar *package-inferred-systems* (initial-package-inferred-systems-table)) - - (defclass package-inferred-system (system) - () - (:documentation "Class for primary systems for which secondary systems are automatically -in the one-file, one-file, one-system style: system names are mapped to files under the primary -system's system-source-directory, dependencies are inferred from the first defpackage form in -every such file")) - - ;; DEPRECATED. For backward compatibility only. To be removed in an upcoming release: - (defclass package-system (package-inferred-system) ()) - - ;; Is a given form recognizable as a defpackage form? - (defun defpackage-form-p (form) - (and (consp form) - (member (car form) *defpackage-forms*))) - - ;; Find the first defpackage form in a stream, if any - (defun stream-defpackage-form (stream) - (loop :for form = (read stream nil nil) :while form - :when (defpackage-form-p form) :return form)) - - (defun file-defpackage-form (file) - "Return the first DEFPACKAGE form in FILE." - (with-input-file (f file) - (stream-defpackage-form f))) - - (define-condition package-inferred-system-missing-package-error (system-definition-error) - ((system :initarg :system :reader error-system) - (pathname :initarg :pathname :reader error-pathname)) - (:report (lambda (c s) - (format s (compatfmt "~@") - (error-system c) (error-pathname c))))) - - (defun package-dependencies (defpackage-form) - "Return a list of packages depended on by the package -defined in DEFPACKAGE-FORM. A package is depended upon if -the DEFPACKAGE-FORM uses it or imports a symbol from it." - (assert (defpackage-form-p defpackage-form)) - (remove-duplicates - (while-collecting (dep) - (loop* :for (option . arguments) :in (cddr defpackage-form) :do - (ecase option - ((:use :mix :reexport :use-reexport :mix-reexport) - (dolist (p arguments) (dep (string p)))) - ((:import-from :shadowing-import-from) - (dep (string (first arguments)))) - ((:nicknames :documentation :shadow :export :intern :unintern :recycle))))) - :from-end t :test 'equal)) - - (defun package-designator-name (package) - "Normalize a package designator to a string" - (etypecase package - (package (package-name package)) - (string package) - (symbol (string package)))) - - (defun register-system-packages (system packages) - "Register SYSTEM as providing PACKAGES." - (let ((name (or (eq system t) (coerce-name system)))) - (dolist (p (ensure-list packages)) - (setf (gethash (package-designator-name p) *package-inferred-systems*) name)))) - - (defun package-name-system (package-name) - "Return the name of the SYSTEM providing PACKAGE-NAME, if such exists, -otherwise return a default system name computed from PACKAGE-NAME." - (check-type package-name string) - (or (gethash package-name *package-inferred-systems*) - (string-downcase package-name))) - - ;; Given a file in package-inferred-system style, find its dependencies - (defun package-inferred-system-file-dependencies (file &optional system) - (if-let (defpackage-form (file-defpackage-form file)) - (remove t (mapcar 'package-name-system (package-dependencies defpackage-form))) - (error 'package-inferred-system-missing-package-error :system system :pathname file))) - - ;; Given package-inferred-system object, check whether its specification matches - ;; the provided parameters - (defun same-package-inferred-system-p (system name directory subpath around-compile dependencies) - (and (eq (type-of system) 'package-inferred-system) - (equal (component-name system) name) - (pathname-equal directory (component-pathname system)) - (equal dependencies (component-sideway-dependencies system)) - (equal around-compile (around-compile-hook system)) - (let ((children (component-children system))) - (and (length=n-p children 1) - (let ((child (first children))) - (and (eq (type-of child) 'cl-source-file) - (equal (component-name child) "lisp") - (and (slot-boundp child 'relative-pathname) - (equal (slot-value child 'relative-pathname) subpath)))))))) - - ;; sysdef search function to push into *system-definition-search-functions* - (defun sysdef-package-inferred-system-search (system) - (let ((primary (primary-system-name system))) - (unless (equal primary system) - (let ((top (find-system primary nil))) - (when (typep top 'package-inferred-system) - (if-let (dir (component-pathname top)) - (let* ((sub (subseq system (1+ (length primary)))) - (f (probe-file* (subpathname dir sub :type "lisp") - :truename *resolve-symlinks*))) - (when (file-pathname-p f) - (let ((dependencies (package-inferred-system-file-dependencies f system)) - (previous (registered-system system)) - (around-compile (around-compile-hook top))) - (if (same-package-inferred-system-p previous system dir sub around-compile dependencies) - previous - (eval `(defsystem ,system - :class package-inferred-system - :source-file nil - :pathname ,dir - :depends-on ,dependencies - :around-compile ,around-compile - :components ((cl-source-file "lisp" :pathname ,sub))))))))))))))) - -(with-upgradability () - (pushnew 'sysdef-package-inferred-system-search *system-definition-search-functions*) - (setf *system-definition-search-functions* - (remove (find-symbol* :sysdef-package-system-search :asdf/package-system nil) - *system-definition-search-functions*))) -;;;; ------------------------------------------------------------------------- -;;; Backward-compatible interfaces - -(uiop/package:define-package :asdf/backward-interface - (:recycle :asdf/backward-interface :asdf) - (:use :uiop/common-lisp :uiop :asdf/upgrade - :asdf/component :asdf/system :asdf/find-system :asdf/operation :asdf/action - :asdf/lisp-action :asdf/plan :asdf/operate :asdf/output-translations) - (:export - #:*asdf-verbose* - #:operation-error #:compile-error #:compile-failed #:compile-warned - #:error-component #:error-operation #:traverse - #:component-load-dependencies - #:enable-asdf-binary-locations-compatibility - #:operation-on-failure #:operation-on-warnings #:on-failure #:on-warnings - #:component-property - #:run-shell-command - #:system-definition-pathname - #:explain)) -(in-package :asdf/backward-interface) - -;; NB: the warning status of these functions may have to be distinguished later, -;; as some get removed faster than the others in client code. -(with-asdf-deprecation (:style-warning "3.2") - - ;; These conditions from ASDF 1 and 2 are used by many packages in Quicklisp; - ;; but ASDF3 replaced them with somewhat different variants of uiop:compile-condition - ;; that do not involve ASDF actions. - ;; TODO: find the offenders and stop them. - (progn - (define-condition operation-error (error) ;; Bad, backward-compatible name - ;; Used by SBCL, cffi-tests, clsql-mysql, clsql-uffi, qt, elephant, uffi-tests, sb-grovel - ((component :reader error-component :initarg :component) - (operation :reader error-operation :initarg :operation)) - (:report (lambda (c s) - (format s (compatfmt "~@<~A while invoking ~A on ~A~@:>") - (type-of c) (error-operation c) (error-component c))))) - (define-condition compile-error (operation-error) ()) - (define-condition compile-failed (compile-error) ()) - (define-condition compile-warned (compile-error) ())) - - ;; In Quicklisp 2015-05, still used by lisp-executable, staple, repl-utilities, cffi - (defun component-load-dependencies (component) ;; from ASDF 2.000 to 2.26 - "DEPRECATED. Please use COMPONENT-SIDEWAY-DEPENDENCIES instead; or better, -define your operations with proper use of SIDEWAY-OPERATION, SELFWARD-OPERATION, -or define methods on PREPARE-OP, etc." - ;; Old deprecated name for the same thing. Please update your software. - (component-sideway-dependencies component)) - - ;; These old interfaces from ASDF1 have never been very meaningful - ;; but are still used in obscure places. - ;; In Quicklisp 2015-05, still used by cl-protobufs and clx. - (defgeneric operation-on-warnings (operation) - (:documentation "DEPRECATED. Please use UIOP:*COMPILE-FILE-WARNINGS-BEHAVIOUR* instead.")) - (defgeneric operation-on-failure (operation) - (:documentation "DEPRECATED. Please use UIOP:*COMPILE-FILE-FAILURE-BEHAVIOUR* instead.")) - (defgeneric (setf operation-on-warnings) (x operation) - (:documentation "DEPRECATED. Please SETF UIOP:*COMPILE-FILE-WARNINGS-BEHAVIOUR* instead.")) - (defgeneric (setf operation-on-failure) (x operation) - (:documentation "DEPRECATED. Please SETF UIOP:*COMPILE-FILE-FAILURE-BEHAVIOUR* instead.")) - (progn - (defmethod operation-on-warnings ((o operation)) - *compile-file-warnings-behaviour*) - (defmethod operation-on-failure ((o operation)) - *compile-file-failure-behaviour*) - (defmethod (setf operation-on-warnings) (x (o operation)) - (setf *compile-file-warnings-behaviour* x)) - (defmethod (setf operation-on-failure) (x (o operation)) - (setf *compile-file-failure-behaviour* x))) - - ;; Quicklisp 2015-05: Still used by SLIME's swank-asdf (!), common-lisp-stat, - ;; js-parser, osicat, babel, staple, weblocks, cl-png, plain-odbc, autoproject, - ;; cl-blapack, com.informatimago, cells-gtk3, asdf-dependency-grovel, - ;; cl-glfw, cffi, jwacs, montezuma - (defun system-definition-pathname (x) - ;; As of 2.014.8, we mean to make this function obsolete, - ;; but that won't happen until all clients have been updated. - "DEPRECATED. This function used to expose ASDF internals with subtle -differences with respect to user expectations, that have been refactored -away since. We recommend you use ASDF:SYSTEM-SOURCE-FILE instead for a -mostly compatible replacement that we're supporting, or even -ASDF:SYSTEM-SOURCE-DIRECTORY or ASDF:SYSTEM-RELATIVE-PATHNAME -if that's whay you mean." ;;) - (system-source-file x)) - - ;; TRAVERSE is the function used to compute a plan in ASDF 1 and 2. - ;; It was never officially exposed but some people still used it. - (defgeneric traverse (operation component &key &allow-other-keys) - (:documentation - "DEPRECATED. Use MAKE-PLAN and PLAN-ACTIONS, or REQUIRED-COMPONENTS, -or some other supported interface instead. - -Generate and return a plan for performing OPERATION on COMPONENT. - -The plan returned is a list of dotted-pairs. Each pair is the CONS -of ASDF operation object and a COMPONENT object. The pairs will be -processed in order by OPERATE.")) - (progn - (define-convenience-action-methods traverse (operation component &key))) - (defmethod traverse ((o operation) (c component) &rest keys &key plan-class &allow-other-keys) - (plan-actions (apply 'make-plan plan-class o c keys))) - - - ;; ASDF-Binary-Locations compatibility - ;; This remains supported for legacy user, but not recommended for new users. - ;; We suspect there are no more legacy users in 2016. - (defun enable-asdf-binary-locations-compatibility - (&key - (centralize-lisp-binaries nil) - (default-toplevel-directory - ;; Use ".cache/common-lisp/" instead ??? - (subpathname (user-homedir-pathname) ".fasls/")) - (include-per-user-information nil) - (map-all-source-files (or #+(or clasp clisp ecl mkcl) t nil)) - (source-to-target-mappings nil) - (file-types `(,(compile-file-type) - "build-report" - #+clasp (compile-file-type :output-type :object) - #+ecl (compile-file-type :type :object) - #+mkcl (compile-file-type :fasl-p nil) - #+clisp "lib" #+sbcl "cfasl" - #+sbcl "sbcl-warnings" #+clozure "ccl-warnings"))) - "DEPRECATED. Use asdf-output-translations instead." - #+(or clasp clisp ecl mkcl) - (when (null map-all-source-files) - (error "asdf:enable-asdf-binary-locations-compatibility doesn't support :map-all-source-files nil on CLISP, ECL and MKCL")) - (let* ((patterns (if map-all-source-files (list *wild-file*) - (loop :for type :in file-types - :collect (make-pathname :type type :defaults *wild-file*)))) - (destination-directory - (if centralize-lisp-binaries - `(,default-toplevel-directory - ,@(when include-per-user-information - (cdr (pathname-directory (user-homedir-pathname)))) - :implementation ,*wild-inferiors*) - `(:root ,*wild-inferiors* :implementation)))) - (initialize-output-translations - `(:output-translations - ,@source-to-target-mappings - #+abcl (#p"jar:file:/**/*.jar!/**/*.*" (:function translate-jar-pathname)) - #+abcl (#p"/___jar___file___root___/**/*.*" (,@destination-directory)) - ,@(loop :for pattern :in patterns - :collect `((:root ,*wild-inferiors* ,pattern) - (,@destination-directory ,pattern))) - (t t) - :ignore-inherited-configuration)))) - (progn - (defmethod operate :before (operation-class system &rest args &key &allow-other-keys) - (declare (ignore operation-class system args)) - (when (find-symbol* '#:output-files-for-system-and-operation :asdf nil) - (error "ASDF 2 is not compatible with ASDF-BINARY-LOCATIONS, which you are using. -ASDF 2 now achieves the same purpose with its builtin ASDF-OUTPUT-TRANSLATIONS, -which should be easier to configure. Please stop using ASDF-BINARY-LOCATIONS, -and instead use ASDF-OUTPUT-TRANSLATIONS. See the ASDF manual for details. -In case you insist on preserving your previous A-B-L configuration, but -do not know how to achieve the same effect with A-O-T, you may use function -ASDF:ENABLE-ASDF-BINARY-LOCATIONS-COMPATIBILITY as documented in the manual; -call that function where you would otherwise have loaded and configured A-B-L.")))) - - - ;; run-shell-command from ASDF 2, lightly fixed from ASDF 1, copied from MK-DEFSYSTEM. Die! - (defun run-shell-command (control-string &rest args) - "PLEASE DO NOT USE. This function is not just DEPRECATED, but also dysfunctional. -Please use UIOP:RUN-PROGRAM instead." - #-(and ecl os-windows) - (let ((command (apply 'format nil control-string args))) - (asdf-message "; $ ~A~%" command) - (let ((exit-code - (ignore-errors - (nth-value 2 (run-program command :force-shell t :ignore-error-status t - :output *verbose-out*))))) - (typecase exit-code - ((integer 0 255) exit-code) - (t 255)))) - #+(and ecl os-windows) - (not-implemented-error "run-shell-command" "for ECL on Windows.")) - - ;; HOW do we get rid of variables??? With a symbol-macro that issues a warning? - ;; In Quicklisp 2015-05, cl-protobufs still uses it, but that should be fixed in next version. - (progn - (defvar *asdf-verbose* nil)) ;; backward-compatibility with ASDF2 only. Unused. - - ;; Do NOT use in new code. NOT SUPPORTED. - ;; NB: When this goes away, remove the slot PROPERTY in COMPONENT. - ;; In Quicklisp 2014-05, it's still used by yaclml, amazon-ecs, blackthorn-engine, cl-tidy. - ;; See TODO for further cleanups required before to get rid of it. - (defgeneric component-property (component property)) - (defgeneric (setf component-property) (new-value component property)) - - (defmethod component-property ((c component) property) - (cdr (assoc property (slot-value c 'properties) :test #'equal))) - - (defmethod (setf component-property) (new-value (c component) property) - (let ((a (assoc property (slot-value c 'properties) :test #'equal))) - (if a - (setf (cdr a) new-value) - (setf (slot-value c 'properties) - (acons property new-value (slot-value c 'properties))))) - new-value) - - - ;; This method survives from ASDF 1, but really it is superseded by action-description. - (defgeneric explain (operation component) - (:documentation "Display a message describing an action. - -DEPRECATED. Use ASDF:ACTION-DESCRIPTION and/or ASDF::FORMAT-ACTION instead.")) - (progn - (define-convenience-action-methods explain (operation component))) - (defmethod explain ((o operation) (c component)) - (asdf-message (compatfmt "~&~@<; ~@;~A~:>~%") (action-description o c)))) -;;;; ------------------------------------------------------------------------- -;;; Internal hacks for backward-compatibility - -(uiop/package:define-package :asdf/backward-internals - (:recycle :asdf/backward-internals :asdf) - (:use :uiop/common-lisp :uiop :asdf/upgrade :asdf/find-system) - (:export #:load-sysdef)) -(in-package :asdf/backward-internals) - -(with-asdf-deprecation (:style-warning "3.2") - (defun load-sysdef (name pathname) - (declare (ignore name pathname)) - ;; Needed for backward compatibility with swank-asdf from SLIME 2015-12-01 or older. - (error "Use asdf:load-asd instead of asdf::load-sysdef"))) -;;;; --------------------------------------------------------------------------- -;;;; Handle ASDF package upgrade, including implementation-dependent magic. - -(uiop/package:define-package :asdf/interface - (:nicknames :asdf :asdf-utilities) - (:recycle :asdf/interface :asdf) - (:unintern - #:loaded-systems ; makes for annoying SLIME completion - #:output-files-for-system-and-operation) ; ASDF-BINARY-LOCATION function we use to detect ABL - (:use :uiop/common-lisp :uiop :asdf/upgrade :asdf/cache - :asdf/component :asdf/system :asdf/find-system :asdf/find-component - :asdf/operation :asdf/action :asdf/lisp-action - :asdf/output-translations :asdf/source-registry - :asdf/plan :asdf/operate :asdf/parse-defsystem :asdf/bundle :asdf/concatenate-source - :asdf/backward-internals :asdf/backward-interface :asdf/package-inferred-system) - ;; Note: (1) we are NOT automatically reexporting everything from previous packages. - ;; (2) we only reexport UIOP functionality when backward-compatibility requires it. - (:export - #:defsystem #:find-system #:load-asd #:locate-system #:coerce-name #:primary-system-name - #:oos #:operate #:make-plan #:perform-plan #:sequential-plan - #:system-definition-pathname - #:search-for-system-definition #:find-component #:component-find-path - #:compile-system #:load-system #:load-systems #:load-systems* - #:require-system #:test-system #:clear-system - #:operation #:make-operation #:find-operation - #:upward-operation #:downward-operation #:sideway-operation #:selfward-operation - #:non-propagating-operation - #:build-op #:make - #:load-op #:prepare-op #:compile-op - #:prepare-source-op #:load-source-op #:test-op - #:feature #:version #:version-satisfies #:upgrade-asdf - #:implementation-identifier #:implementation-type #:hostname - #:input-files #:output-files #:output-file #:perform #:perform-with-restarts - #:operation-done-p #:explain #:action-description #:component-sideway-dependencies - #:needed-in-image-p - #:component-load-dependencies #:run-shell-command ; deprecated, do not use - #:bundle-op #:monolithic-bundle-op #:precompiled-system #:compiled-file #:bundle-system - #:program-system - #:basic-compile-bundle-op #:prepare-bundle-op - #:compile-bundle-op #:load-bundle-op #:monolithic-compile-bundle-op #:monolithic-load-bundle-op - #:lib-op #:dll-op #:deliver-asd-op #:program-op #:image-op - #:monolithic-lib-op #:monolithic-dll-op #:monolithic-deliver-asd-op - #:concatenate-source-op - #:load-concatenated-source-op - #:compile-concatenated-source-op - #:load-compiled-concatenated-source-op - #:monolithic-concatenate-source-op - #:monolithic-load-concatenated-source-op - #:monolithic-compile-concatenated-source-op - #:monolithic-load-compiled-concatenated-source-op - #:operation-monolithic-p - #:required-components - #:component-loaded-p - - #:component #:parent-component #:child-component #:system #:module - #:file-component #:source-file #:c-source-file #:java-source-file - #:cl-source-file #:cl-source-file.cl #:cl-source-file.lsp - #:static-file #:doc-file #:html-file - #:file-type #:source-file-type - - #:register-preloaded-system #:sysdef-preloaded-system-search - #:register-immutable-system #:sysdef-immutable-system-search - - #:package-inferred-system #:register-system-packages - #:package-system ;; backward-compatibility during migration, to be removed in a further release. - - #:component-children ; component accessors - #:component-children-by-name - #:component-pathname - #:component-relative-pathname - #:component-name - #:component-version - #:component-parent - #:component-system - #:component-encoding - #:component-external-format - - #:component-depends-on ; backward-compatible name rather than action-depends-on - #:module-components ; backward-compatibility - #:operation-on-warnings #:operation-on-failure ; backward-compatibility - #:component-property ; backward-compatibility - #:traverse ; backward-compatibility - - #:system-description - #:system-long-description - #:system-author - #:system-maintainer - #:system-license - #:system-licence - #:system-source-file - #:system-source-directory - #:system-relative-pathname - #:system-homepage - #:system-mailto - #:system-bug-tracker - #:system-long-name - #:system-source-control - #:map-systems - #:system-defsystem-depends-on - #:system-depends-on - #:system-weakly-depends-on - - #:*system-definition-search-functions* ; variables - #:*central-registry* - #:*compile-file-warnings-behaviour* - #:*compile-file-failure-behaviour* - #:*resolve-symlinks* - #:*asdf-verbose* ;; unused. For backward-compatibility only. - #:*verbose-out* - - #:asdf-version - - #:compile-condition #:compile-file-error #:compile-warned-error #:compile-failed-error - #:compile-warned-warning #:compile-failed-warning - #:operation-error #:compile-failed #:compile-warned #:compile-error ;; backward compatibility - #:error-name - #:error-pathname - #:load-system-definition-error - #:error-component #:error-operation - #:system-definition-error - #:missing-component - #:missing-component-of-version - #:missing-dependency - #:missing-dependency-of-version - #:circular-dependency ; errors - #:duplicate-names #:non-toplevel-system #:non-system-system #:bad-system-name - #:package-inferred-system-missing-package-error - #:operation-definition-warning #:operation-definition-error - - #:try-recompiling ; restarts - #:retry - #:accept - #:coerce-entry-to-directory - #:remove-entry-from-registry - #:clear-configuration-and-retry - - - #:*encoding-detection-hook* - #:*encoding-external-format-hook* - #:*default-encoding* - #:*utf-8-external-format* - - #:clear-configuration - #:*output-translations-parameter* - #:initialize-output-translations - #:disable-output-translations - #:clear-output-translations - #:ensure-output-translations - #:apply-output-translations - #:compile-file* - #:compile-file-pathname* - #:*warnings-file-type* #:enable-deferred-warnings-check #:disable-deferred-warnings-check - #:enable-asdf-binary-locations-compatibility - #:*default-source-registries* - #:*source-registry-parameter* - #:initialize-source-registry - #:compute-source-registry - #:clear-source-registry - #:ensure-source-registry - #:process-source-registry - #:system-registered-p #:registered-systems #:already-loaded-systems - #:resolve-location - #:asdf-message - #:*user-cache* - #:user-output-translations-pathname - #:system-output-translations-pathname - #:user-output-translations-directory-pathname - #:system-output-translations-directory-pathname - #:user-source-registry - #:system-source-registry - #:user-source-registry-directory - #:system-source-registry-directory - )) - -;;;; --------------------------------------------------------------------------- -;;;; ASDF-USER, where the action happens. - -(uiop/package:define-package :asdf/user - (:nicknames :asdf-user) - ;; NB: releases before 3.1.2 this :use'd only uiop/package instead of uiop below. - ;; They also :use'd uiop/common-lisp, that reexports common-lisp and is not included in uiop. - ;; ASDF3 releases from 2.27 to 2.31 called uiop asdf-driver and asdf/foo uiop/foo. - ;; ASDF1 and ASDF2 releases (2.26 and earlier) create a temporary package - ;; that only :use's :cl and :asdf - (:use :uiop/common-lisp :uiop :asdf/interface)) -;;;; ----------------------------------------------------------------------- -;;;; ASDF Footer: last words and cleanup - -(uiop/package:define-package :asdf/footer - (:recycle :asdf/footer :asdf) - (:use :uiop/common-lisp :uiop - :asdf/upgrade :asdf/find-system :asdf/operate :asdf/bundle) - ;; Happily, all those implementations all have the same module-provider hook interface. - #+(or abcl clasp cmucl clozure ecl mkcl sbcl) - (:import-from #+abcl :sys #+(or clasp cmucl ecl) :ext #+clozure :ccl #+mkcl :mk-ext #+sbcl sb-ext - #:*module-provider-functions* - #+ecl #:*load-hooks*) - #+(or clasp mkcl) (:import-from :si #:*load-hooks*)) - -(in-package :asdf/footer) - -;;;; Register ASDF itself and all its subsystems as preloaded. -(with-upgradability () - (dolist (s '("asdf" "uiop" "asdf-package-system")) - ;; Don't bother with these system names, no one relies on them anymore: - ;; "asdf-utils" "asdf-bundle" "asdf-driver" "asdf-defsystem" - (register-preloaded-system s :version *asdf-version*))) - - -;;;; Hook ASDF into the implementation's REQUIRE and other entry points. -#+(or abcl clasp clisp clozure cmucl ecl mkcl sbcl) -(with-upgradability () - ;; Hook into CL:REQUIRE. - #-clisp (pushnew 'module-provide-asdf *module-provider-functions*) - #+clisp (if-let (x (find-symbol* '#:*module-provider-functions* :custom nil)) - (eval `(pushnew 'module-provide-asdf ,x))) - - #+(or clasp ecl mkcl) - (progn - (pushnew '("fasb" . si::load-binary) *load-hooks* :test 'equal :key 'car) - - #+os-windows - (unless (assoc "asd" *load-hooks* :test 'equal) - (appendf *load-hooks* '(("asd" . si::load-source)))) - - ;; Wrap module provider functions in an idempotent, upgrade friendly way - (defvar *wrapped-module-provider* (make-hash-table)) - (setf (gethash 'module-provide-asdf *wrapped-module-provider*) 'module-provide-asdf) - (defun wrap-module-provider (provider name) - (let ((results (multiple-value-list (funcall provider name)))) - (when (first results) (register-preloaded-system (coerce-name name))) - (values-list results))) - (defun wrap-module-provider-function (provider) - (ensure-gethash provider *wrapped-module-provider* - (constantly - #'(lambda (module-name) - (wrap-module-provider provider module-name))))) - (setf *module-provider-functions* - (mapcar #'wrap-module-provider-function *module-provider-functions*)))) - -#+cmucl ;; Hook into the CMUCL herald. -(with-upgradability () - (defun herald-asdf (stream) - (format stream " ASDF ~A" (asdf-version))) - (setf (getf ext:*herald-items* :asdf) '(herald-asdf))) - - -;;;; Done! -(with-upgradability () - #+allegro ;; restore *w-o-n-r-c* setting as saved in uiop/common-lisp - (when (boundp 'excl:*warn-on-nested-reader-conditionals*) - (setf excl:*warn-on-nested-reader-conditionals* uiop/common-lisp::*acl-warn-save*)) - - ;; Advertise the features we provide. - (dolist (f '(:asdf :asdf2 :asdf3 :asdf3.1 :asdf3.2 :asdf-package-system)) (pushnew f *features*)) - - ;; Provide both lowercase and uppercase, to satisfy more people, especially LispWorks users. - (provide "asdf") (provide "ASDF") - - ;; Finally, call a function that will cleanup in case this is an upgrade of an older ASDF. - (cleanup-upgraded-asdf)) - -(when *load-verbose* - (asdf-message ";; ASDF, version ~a~%" (asdf-version))) diff --git a/quicklisp/client-info.sexp b/quicklisp/client-info.sexp deleted file mode 100644 index 78d13cc..0000000 --- a/quicklisp/client-info.sexp +++ /dev/null @@ -1,28 +0,0 @@ -(:version "2021-02-13" - :client-info-format "1" - - :subscription-url - "http://beta.quicklisp.org/client/quicklisp.sexp" - :canonical-client-info-url - "http://beta.quicklisp.org/client/2021-02-13/client-info.sexp" - - :client-tar - (:url "http://beta.quicklisp.org/client/2021-02-13/quicklisp.tar" - :size 266240 - :md5 "542cf39ce18d25b245976a5ea26e4b9b" - :sha256 - "a8a3c8c91b51dd185175abad4d7c3999ebb4e2520be5a6cee2127035ac6c87be") - - :setup - (:url "http://beta.quicklisp.org/client/2021-02-11/setup.lisp" - :size 5057 - :md5 "76f4570ecee8066924f915cb882dba64" - :sha256 - "549fe3e7e0f2669daede98437c99cd60e02c0b8536d3d135c9aa9d346ed951b6") - - :asdf - (:url "http://beta.quicklisp.org/asdf/3.2.1/asdf.lisp" - :size 643253 - :md5 "1765635a8b5c545b586cb33c2dcdec0d" - :sha256 - "51912f3f7c2c62c204f515d97346d56011528399bbf0a76a123318343ebd8bf0")) diff --git a/quicklisp/dists/quicklisp/archives/3bz-20201220-git.tgz b/quicklisp/dists/quicklisp/archives/3bz-20201220-git.tgz deleted file mode 100644 index fc2b6e9..0000000 Binary files a/quicklisp/dists/quicklisp/archives/3bz-20201220-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/Parenscript-2.7.1.tgz b/quicklisp/dists/quicklisp/archives/Parenscript-2.7.1.tgz deleted file mode 100644 index bc20ad4..0000000 Binary files a/quicklisp/dists/quicklisp/archives/Parenscript-2.7.1.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/alexandria-20220707-git.tgz b/quicklisp/dists/quicklisp/archives/alexandria-20220707-git.tgz deleted file mode 100644 index 2db0abe..0000000 Binary files a/quicklisp/dists/quicklisp/archives/alexandria-20220707-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/anaphora-20220220-git.tgz b/quicklisp/dists/quicklisp/archives/anaphora-20220220-git.tgz deleted file mode 100644 index c701295..0000000 Binary files a/quicklisp/dists/quicklisp/archives/anaphora-20220220-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/babel-20230214-git.tgz b/quicklisp/dists/quicklisp/archives/babel-20230214-git.tgz deleted file mode 100644 index d4d4f99..0000000 Binary files a/quicklisp/dists/quicklisp/archives/babel-20230214-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/bordeaux-threads-v0.8.8.tgz b/quicklisp/dists/quicklisp/archives/bordeaux-threads-v0.8.8.tgz deleted file mode 100644 index e598d75..0000000 Binary files a/quicklisp/dists/quicklisp/archives/bordeaux-threads-v0.8.8.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/cffi-20230214-git.tgz b/quicklisp/dists/quicklisp/archives/cffi-20230214-git.tgz deleted file mode 100644 index 69d4ef1..0000000 Binary files a/quicklisp/dists/quicklisp/archives/cffi-20230214-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/chipz-20220220-git.tgz b/quicklisp/dists/quicklisp/archives/chipz-20220220-git.tgz deleted file mode 100644 index 01debba..0000000 Binary files a/quicklisp/dists/quicklisp/archives/chipz-20220220-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/chunga-20221106-git.tgz b/quicklisp/dists/quicklisp/archives/chunga-20221106-git.tgz deleted file mode 100644 index c67d758..0000000 Binary files a/quicklisp/dists/quicklisp/archives/chunga-20221106-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/cl+ssl-20230214-git.tgz b/quicklisp/dists/quicklisp/archives/cl+ssl-20230214-git.tgz deleted file mode 100644 index 38119ce..0000000 Binary files a/quicklisp/dists/quicklisp/archives/cl+ssl-20230214-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/cl-base64-20201016-git.tgz b/quicklisp/dists/quicklisp/archives/cl-base64-20201016-git.tgz deleted file mode 100644 index 1d58f71..0000000 Binary files a/quicklisp/dists/quicklisp/archives/cl-base64-20201016-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/cl-cookie-20220707-git.tgz b/quicklisp/dists/quicklisp/archives/cl-cookie-20220707-git.tgz deleted file mode 100644 index 0708e4f..0000000 Binary files a/quicklisp/dists/quicklisp/archives/cl-cookie-20220707-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/cl-fad-20220220-git.tgz b/quicklisp/dists/quicklisp/archives/cl-fad-20220220-git.tgz deleted file mode 100644 index 58bed3b..0000000 Binary files a/quicklisp/dists/quicklisp/archives/cl-fad-20220220-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/cl-isaac-20221106-git.tgz b/quicklisp/dists/quicklisp/archives/cl-isaac-20221106-git.tgz deleted file mode 100644 index 3fcf37f..0000000 Binary files a/quicklisp/dists/quicklisp/archives/cl-isaac-20221106-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/cl-jpeg-20230214-git.tgz b/quicklisp/dists/quicklisp/archives/cl-jpeg-20230214-git.tgz deleted file mode 100644 index 1b83650..0000000 Binary files a/quicklisp/dists/quicklisp/archives/cl-jpeg-20230214-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/cl-ppcre-20220220-git.tgz b/quicklisp/dists/quicklisp/archives/cl-ppcre-20220220-git.tgz deleted file mode 100644 index 2ecd439..0000000 Binary files a/quicklisp/dists/quicklisp/archives/cl-ppcre-20220220-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/cl-tga-20160318-git.tgz b/quicklisp/dists/quicklisp/archives/cl-tga-20160318-git.tgz deleted file mode 100644 index d7c9dcb..0000000 Binary files a/quicklisp/dists/quicklisp/archives/cl-tga-20160318-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/cl-utilities-1.2.4.tgz b/quicklisp/dists/quicklisp/archives/cl-utilities-1.2.4.tgz deleted file mode 100644 index 2888186..0000000 Binary files a/quicklisp/dists/quicklisp/archives/cl-utilities-1.2.4.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/cl-who-20220331-git.tgz b/quicklisp/dists/quicklisp/archives/cl-who-20220331-git.tgz deleted file mode 100644 index 8a430f2..0000000 Binary files a/quicklisp/dists/quicklisp/archives/cl-who-20220331-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/clack-20230214-git.tgz b/quicklisp/dists/quicklisp/archives/clack-20230214-git.tgz deleted file mode 100644 index 8af902d..0000000 Binary files a/quicklisp/dists/quicklisp/archives/clack-20230214-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/closer-mop-20230214-git.tgz b/quicklisp/dists/quicklisp/archives/closer-mop-20230214-git.tgz deleted file mode 100644 index ea299a5..0000000 Binary files a/quicklisp/dists/quicklisp/archives/closer-mop-20230214-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/deflate-20200218-git.tgz b/quicklisp/dists/quicklisp/archives/deflate-20200218-git.tgz deleted file mode 100644 index 87d7611..0000000 Binary files a/quicklisp/dists/quicklisp/archives/deflate-20200218-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/dexador-20230214-git.tgz b/quicklisp/dists/quicklisp/archives/dexador-20230214-git.tgz deleted file mode 100644 index c277ce8..0000000 Binary files a/quicklisp/dists/quicklisp/archives/dexador-20230214-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/documentation-utils-20190710-git.tgz b/quicklisp/dists/quicklisp/archives/documentation-utils-20190710-git.tgz deleted file mode 100644 index 2ce8dc0..0000000 Binary files a/quicklisp/dists/quicklisp/archives/documentation-utils-20190710-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/drakma-v2.0.9.tgz b/quicklisp/dists/quicklisp/archives/drakma-v2.0.9.tgz deleted file mode 100644 index c525cb3..0000000 Binary files a/quicklisp/dists/quicklisp/archives/drakma-v2.0.9.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/fast-http-20191007-git.tgz b/quicklisp/dists/quicklisp/archives/fast-http-20191007-git.tgz deleted file mode 100644 index 288763b..0000000 Binary files a/quicklisp/dists/quicklisp/archives/fast-http-20191007-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/fast-io-20221106-git.tgz b/quicklisp/dists/quicklisp/archives/fast-io-20221106-git.tgz deleted file mode 100644 index 155ae3c..0000000 Binary files a/quicklisp/dists/quicklisp/archives/fast-io-20221106-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/flexi-streams-20220220-git.tgz b/quicklisp/dists/quicklisp/archives/flexi-streams-20220220-git.tgz deleted file mode 100644 index e4deabd..0000000 Binary files a/quicklisp/dists/quicklisp/archives/flexi-streams-20220220-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/float-features-20230214-git.tgz b/quicklisp/dists/quicklisp/archives/float-features-20230214-git.tgz deleted file mode 100644 index dc09d2f..0000000 Binary files a/quicklisp/dists/quicklisp/archives/float-features-20230214-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/global-vars-20141106-git.tgz b/quicklisp/dists/quicklisp/archives/global-vars-20141106-git.tgz deleted file mode 100644 index 2af239b..0000000 Binary files a/quicklisp/dists/quicklisp/archives/global-vars-20141106-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/hunchentoot-v1.3.0.tgz b/quicklisp/dists/quicklisp/archives/hunchentoot-v1.3.0.tgz deleted file mode 100644 index 01c6201..0000000 Binary files a/quicklisp/dists/quicklisp/archives/hunchentoot-v1.3.0.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/ieee-floats-20220220-git.tgz b/quicklisp/dists/quicklisp/archives/ieee-floats-20220220-git.tgz deleted file mode 100644 index 91b7fce..0000000 Binary files a/quicklisp/dists/quicklisp/archives/ieee-floats-20220220-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/introspect-environment-20220220-git.tgz b/quicklisp/dists/quicklisp/archives/introspect-environment-20220220-git.tgz deleted file mode 100644 index bfdb2a6..0000000 Binary files a/quicklisp/dists/quicklisp/archives/introspect-environment-20220220-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/iterate-release-b0f9a9c6-git.tgz b/quicklisp/dists/quicklisp/archives/iterate-release-b0f9a9c6-git.tgz deleted file mode 100644 index c1985d2..0000000 Binary files a/quicklisp/dists/quicklisp/archives/iterate-release-b0f9a9c6-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/jzon-20230215-git.tgz b/quicklisp/dists/quicklisp/archives/jzon-20230215-git.tgz deleted file mode 100644 index 4e967ff..0000000 Binary files a/quicklisp/dists/quicklisp/archives/jzon-20230215-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/lack-20230214-git.tgz b/quicklisp/dists/quicklisp/archives/lack-20230214-git.tgz deleted file mode 100644 index 0b01994..0000000 Binary files a/quicklisp/dists/quicklisp/archives/lack-20230214-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/lisp-namespace-20221106-git.tgz b/quicklisp/dists/quicklisp/archives/lisp-namespace-20221106-git.tgz deleted file mode 100644 index 7d5d223..0000000 Binary files a/quicklisp/dists/quicklisp/archives/lisp-namespace-20221106-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/local-time-20230214-git.tgz b/quicklisp/dists/quicklisp/archives/local-time-20230214-git.tgz deleted file mode 100644 index 7f4190a..0000000 Binary files a/quicklisp/dists/quicklisp/archives/local-time-20230214-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/md5-20210630-git.tgz b/quicklisp/dists/quicklisp/archives/md5-20210630-git.tgz deleted file mode 100644 index b0ea414..0000000 Binary files a/quicklisp/dists/quicklisp/archives/md5-20210630-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/mmap-20230214-git.tgz b/quicklisp/dists/quicklisp/archives/mmap-20230214-git.tgz deleted file mode 100644 index f909e4a..0000000 Binary files a/quicklisp/dists/quicklisp/archives/mmap-20230214-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/monkeylib-binary-data-20111203-git.tgz b/quicklisp/dists/quicklisp/archives/monkeylib-binary-data-20111203-git.tgz deleted file mode 100644 index 41d9202..0000000 Binary files a/quicklisp/dists/quicklisp/archives/monkeylib-binary-data-20111203-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/named-readtables-20220331-git.tgz b/quicklisp/dists/quicklisp/archives/named-readtables-20220331-git.tgz deleted file mode 100644 index 6216c85..0000000 Binary files a/quicklisp/dists/quicklisp/archives/named-readtables-20220331-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/nibbles-20220331-git.tgz b/quicklisp/dists/quicklisp/archives/nibbles-20220331-git.tgz deleted file mode 100644 index ce4cddf..0000000 Binary files a/quicklisp/dists/quicklisp/archives/nibbles-20220331-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/opticl-20220220-git.tgz b/quicklisp/dists/quicklisp/archives/opticl-20220220-git.tgz deleted file mode 100644 index de1af28..0000000 Binary files a/quicklisp/dists/quicklisp/archives/opticl-20220220-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/opticl-core-20171019-git.tgz b/quicklisp/dists/quicklisp/archives/opticl-core-20171019-git.tgz deleted file mode 100644 index 60a5f18..0000000 Binary files a/quicklisp/dists/quicklisp/archives/opticl-core-20171019-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/parse-declarations-20101006-darcs.tgz b/quicklisp/dists/quicklisp/archives/parse-declarations-20101006-darcs.tgz deleted file mode 100644 index 121e223..0000000 Binary files a/quicklisp/dists/quicklisp/archives/parse-declarations-20101006-darcs.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/parse-float-20200218-git.tgz b/quicklisp/dists/quicklisp/archives/parse-float-20200218-git.tgz deleted file mode 100644 index 56a109f..0000000 Binary files a/quicklisp/dists/quicklisp/archives/parse-float-20200218-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/parse-number-v1.7.tgz b/quicklisp/dists/quicklisp/archives/parse-number-v1.7.tgz deleted file mode 100644 index 96a85f3..0000000 Binary files a/quicklisp/dists/quicklisp/archives/parse-number-v1.7.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/pngload-20220707-git.tgz b/quicklisp/dists/quicklisp/archives/pngload-20220707-git.tgz deleted file mode 100644 index b28b818..0000000 Binary files a/quicklisp/dists/quicklisp/archives/pngload-20220707-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/proc-parse-20190813-git.tgz b/quicklisp/dists/quicklisp/archives/proc-parse-20190813-git.tgz deleted file mode 100644 index 5b85412..0000000 Binary files a/quicklisp/dists/quicklisp/archives/proc-parse-20190813-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/puri-20201016-git.tgz b/quicklisp/dists/quicklisp/archives/puri-20201016-git.tgz deleted file mode 100644 index d425fa7..0000000 Binary files a/quicklisp/dists/quicklisp/archives/puri-20201016-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/quri-20221106-git.tgz b/quicklisp/dists/quicklisp/archives/quri-20221106-git.tgz deleted file mode 100644 index fddb4bd..0000000 Binary files a/quicklisp/dists/quicklisp/archives/quri-20221106-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/retrospectiff-20211209-git.tgz b/quicklisp/dists/quicklisp/archives/retrospectiff-20211209-git.tgz deleted file mode 100644 index 88fe8a0..0000000 Binary files a/quicklisp/dists/quicklisp/archives/retrospectiff-20211209-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/rfc2388-20180831-git.tgz b/quicklisp/dists/quicklisp/archives/rfc2388-20180831-git.tgz deleted file mode 100644 index 2e0497a..0000000 Binary files a/quicklisp/dists/quicklisp/archives/rfc2388-20180831-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/salza2-2.1.tgz b/quicklisp/dists/quicklisp/archives/salza2-2.1.tgz deleted file mode 100644 index aa23921..0000000 Binary files a/quicklisp/dists/quicklisp/archives/salza2-2.1.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/serapeum-20230214-git.tgz b/quicklisp/dists/quicklisp/archives/serapeum-20230214-git.tgz deleted file mode 100644 index 49fc315..0000000 Binary files a/quicklisp/dists/quicklisp/archives/serapeum-20230214-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/skippy-1.3.12.tgz b/quicklisp/dists/quicklisp/archives/skippy-1.3.12.tgz deleted file mode 100644 index 85536b8..0000000 Binary files a/quicklisp/dists/quicklisp/archives/skippy-1.3.12.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/slime-v2.28.tgz b/quicklisp/dists/quicklisp/archives/slime-v2.28.tgz deleted file mode 100644 index 99fa907..0000000 Binary files a/quicklisp/dists/quicklisp/archives/slime-v2.28.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/smart-buffer-20211020-git.tgz b/quicklisp/dists/quicklisp/archives/smart-buffer-20211020-git.tgz deleted file mode 100644 index 30741f5..0000000 Binary files a/quicklisp/dists/quicklisp/archives/smart-buffer-20211020-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/split-sequence-v2.0.1.tgz b/quicklisp/dists/quicklisp/archives/split-sequence-v2.0.1.tgz deleted file mode 100644 index 04180d2..0000000 Binary files a/quicklisp/dists/quicklisp/archives/split-sequence-v2.0.1.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/static-vectors-v1.8.9.tgz b/quicklisp/dists/quicklisp/archives/static-vectors-v1.8.9.tgz deleted file mode 100644 index 7e2e614..0000000 Binary files a/quicklisp/dists/quicklisp/archives/static-vectors-v1.8.9.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/string-case-20180711-git.tgz b/quicklisp/dists/quicklisp/archives/string-case-20180711-git.tgz deleted file mode 100644 index f2b8c26..0000000 Binary files a/quicklisp/dists/quicklisp/archives/string-case-20180711-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/swap-bytes-v1.2.tgz b/quicklisp/dists/quicklisp/archives/swap-bytes-v1.2.tgz deleted file mode 100644 index 8649625..0000000 Binary files a/quicklisp/dists/quicklisp/archives/swap-bytes-v1.2.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/trivia-20220707-git.tgz b/quicklisp/dists/quicklisp/archives/trivia-20220707-git.tgz deleted file mode 100644 index 549bade..0000000 Binary files a/quicklisp/dists/quicklisp/archives/trivia-20220707-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/trivial-backtrace-20230214-git.tgz b/quicklisp/dists/quicklisp/archives/trivial-backtrace-20230214-git.tgz deleted file mode 100644 index b16509f..0000000 Binary files a/quicklisp/dists/quicklisp/archives/trivial-backtrace-20230214-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/trivial-cltl2-20211230-git.tgz b/quicklisp/dists/quicklisp/archives/trivial-cltl2-20211230-git.tgz deleted file mode 100644 index a96f976..0000000 Binary files a/quicklisp/dists/quicklisp/archives/trivial-cltl2-20211230-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/trivial-features-20211209-git.tgz b/quicklisp/dists/quicklisp/archives/trivial-features-20211209-git.tgz deleted file mode 100644 index 17dc6dd..0000000 Binary files a/quicklisp/dists/quicklisp/archives/trivial-features-20211209-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/trivial-file-size-20221106-git.tgz b/quicklisp/dists/quicklisp/archives/trivial-file-size-20221106-git.tgz deleted file mode 100644 index 88579cf..0000000 Binary files a/quicklisp/dists/quicklisp/archives/trivial-file-size-20221106-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/trivial-garbage-20211230-git.tgz b/quicklisp/dists/quicklisp/archives/trivial-garbage-20211230-git.tgz deleted file mode 100644 index 2c045a7..0000000 Binary files a/quicklisp/dists/quicklisp/archives/trivial-garbage-20211230-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/trivial-gray-streams-20210124-git.tgz b/quicklisp/dists/quicklisp/archives/trivial-gray-streams-20210124-git.tgz deleted file mode 100644 index ba08dc4..0000000 Binary files a/quicklisp/dists/quicklisp/archives/trivial-gray-streams-20210124-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/trivial-indent-20210531-git.tgz b/quicklisp/dists/quicklisp/archives/trivial-indent-20210531-git.tgz deleted file mode 100644 index 09440e2..0000000 Binary files a/quicklisp/dists/quicklisp/archives/trivial-indent-20210531-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/trivial-macroexpand-all-20171023-git.tgz b/quicklisp/dists/quicklisp/archives/trivial-macroexpand-all-20171023-git.tgz deleted file mode 100644 index 6f15e69..0000000 Binary files a/quicklisp/dists/quicklisp/archives/trivial-macroexpand-all-20171023-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/trivial-mimes-20230214-git.tgz b/quicklisp/dists/quicklisp/archives/trivial-mimes-20230214-git.tgz deleted file mode 100644 index f03bfe1..0000000 Binary files a/quicklisp/dists/quicklisp/archives/trivial-mimes-20230214-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/type-i-20230214-git.tgz b/quicklisp/dists/quicklisp/archives/type-i-20230214-git.tgz deleted file mode 100644 index e3ffd9f..0000000 Binary files a/quicklisp/dists/quicklisp/archives/type-i-20230214-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/usocket-0.8.5.tgz b/quicklisp/dists/quicklisp/archives/usocket-0.8.5.tgz deleted file mode 100644 index 47e5046..0000000 Binary files a/quicklisp/dists/quicklisp/archives/usocket-0.8.5.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/xsubseq-20170830-git.tgz b/quicklisp/dists/quicklisp/archives/xsubseq-20170830-git.tgz deleted file mode 100644 index fdeab48..0000000 Binary files a/quicklisp/dists/quicklisp/archives/xsubseq-20170830-git.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/zpb-exif-release-1.2.5.tgz b/quicklisp/dists/quicklisp/archives/zpb-exif-release-1.2.5.tgz deleted file mode 100644 index 8a92928..0000000 Binary files a/quicklisp/dists/quicklisp/archives/zpb-exif-release-1.2.5.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/archives/zpng-1.2.2.tgz b/quicklisp/dists/quicklisp/archives/zpng-1.2.2.tgz deleted file mode 100644 index e039095..0000000 Binary files a/quicklisp/dists/quicklisp/archives/zpng-1.2.2.tgz and /dev/null differ diff --git a/quicklisp/dists/quicklisp/distinfo.txt b/quicklisp/dists/quicklisp/distinfo.txt deleted file mode 100644 index cb20e3c..0000000 --- a/quicklisp/dists/quicklisp/distinfo.txt +++ /dev/null @@ -1,7 +0,0 @@ -name: quicklisp -version: 2023-02-15 -system-index-url: http://beta.quicklisp.org/dist/quicklisp/2023-02-15/systems.txt -release-index-url: http://beta.quicklisp.org/dist/quicklisp/2023-02-15/releases.txt -archive-base-url: http://beta.quicklisp.org/ -canonical-distinfo-url: http://beta.quicklisp.org/dist/quicklisp/2023-02-15/distinfo.txt -distinfo-subscription-url: http://beta.quicklisp.org/dist/quicklisp.txt diff --git a/quicklisp/dists/quicklisp/enabled.txt b/quicklisp/dists/quicklisp/enabled.txt deleted file mode 100644 index e69de29..0000000 diff --git a/quicklisp/dists/quicklisp/installed/releases/3bz.txt b/quicklisp/dists/quicklisp/installed/releases/3bz.txt deleted file mode 100644 index 1f1c41b..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/3bz.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/3bz-20201220-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/alexandria.txt b/quicklisp/dists/quicklisp/installed/releases/alexandria.txt deleted file mode 100644 index a158d9a..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/alexandria.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/alexandria-20220707-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/anaphora.txt b/quicklisp/dists/quicklisp/installed/releases/anaphora.txt deleted file mode 100644 index 27a2f99..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/anaphora.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/anaphora-20220220-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/babel.txt b/quicklisp/dists/quicklisp/installed/releases/babel.txt deleted file mode 100644 index 94646a0..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/babel.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/babel-20230214-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/bordeaux-threads.txt b/quicklisp/dists/quicklisp/installed/releases/bordeaux-threads.txt deleted file mode 100644 index 17bb4be..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/bordeaux-threads.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/bordeaux-threads-v0.8.8/ diff --git a/quicklisp/dists/quicklisp/installed/releases/cffi.txt b/quicklisp/dists/quicklisp/installed/releases/cffi.txt deleted file mode 100644 index 708bb40..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/cffi.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cffi-20230214-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/chipz.txt b/quicklisp/dists/quicklisp/installed/releases/chipz.txt deleted file mode 100644 index 0c8d67f..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/chipz.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/chipz-20220220-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/chunga.txt b/quicklisp/dists/quicklisp/installed/releases/chunga.txt deleted file mode 100644 index ec70aa8..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/chunga.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/chunga-20221106-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/cl+ssl.txt b/quicklisp/dists/quicklisp/installed/releases/cl+ssl.txt deleted file mode 100644 index 4f83023..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/cl+ssl.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl+ssl-20230214-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/cl-base64.txt b/quicklisp/dists/quicklisp/installed/releases/cl-base64.txt deleted file mode 100644 index 6d21e3a..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/cl-base64.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-base64-20201016-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/cl-cookie.txt b/quicklisp/dists/quicklisp/installed/releases/cl-cookie.txt deleted file mode 100644 index b616167..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/cl-cookie.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-cookie-20220707-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/cl-fad.txt b/quicklisp/dists/quicklisp/installed/releases/cl-fad.txt deleted file mode 100644 index 1d038cd..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/cl-fad.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-fad-20220220-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/cl-isaac.txt b/quicklisp/dists/quicklisp/installed/releases/cl-isaac.txt deleted file mode 100644 index 994a06b..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/cl-isaac.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-isaac-20221106-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/cl-jpeg.txt b/quicklisp/dists/quicklisp/installed/releases/cl-jpeg.txt deleted file mode 100644 index 4b60615..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/cl-jpeg.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-jpeg-20230214-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/cl-ppcre.txt b/quicklisp/dists/quicklisp/installed/releases/cl-ppcre.txt deleted file mode 100644 index d06fdba..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/cl-ppcre.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-ppcre-20220220-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/cl-tga.txt b/quicklisp/dists/quicklisp/installed/releases/cl-tga.txt deleted file mode 100644 index aabbe83..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/cl-tga.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-tga-20160318-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/cl-utilities.txt b/quicklisp/dists/quicklisp/installed/releases/cl-utilities.txt deleted file mode 100644 index 203806d..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/cl-utilities.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-utilities-1.2.4/ diff --git a/quicklisp/dists/quicklisp/installed/releases/cl-who.txt b/quicklisp/dists/quicklisp/installed/releases/cl-who.txt deleted file mode 100644 index c3dba46..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/cl-who.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-who-20220331-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/clack.txt b/quicklisp/dists/quicklisp/installed/releases/clack.txt deleted file mode 100644 index 7c4fdb7..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/clack.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/clack-20230214-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/closer-mop.txt b/quicklisp/dists/quicklisp/installed/releases/closer-mop.txt deleted file mode 100644 index e029b03..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/closer-mop.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/closer-mop-20230214-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/deflate.txt b/quicklisp/dists/quicklisp/installed/releases/deflate.txt deleted file mode 100644 index 47d14e9..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/deflate.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/deflate-20200218-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/dexador.txt b/quicklisp/dists/quicklisp/installed/releases/dexador.txt deleted file mode 100644 index 6d7d25b..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/dexador.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/dexador-20230214-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/documentation-utils.txt b/quicklisp/dists/quicklisp/installed/releases/documentation-utils.txt deleted file mode 100644 index 9041a79..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/documentation-utils.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/documentation-utils-20190710-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/drakma.txt b/quicklisp/dists/quicklisp/installed/releases/drakma.txt deleted file mode 100644 index 7335219..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/drakma.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/drakma-v2.0.9/ diff --git a/quicklisp/dists/quicklisp/installed/releases/fast-http.txt b/quicklisp/dists/quicklisp/installed/releases/fast-http.txt deleted file mode 100644 index b82193a..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/fast-http.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/fast-http-20191007-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/fast-io.txt b/quicklisp/dists/quicklisp/installed/releases/fast-io.txt deleted file mode 100644 index dd0a651..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/fast-io.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/fast-io-20221106-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/flexi-streams.txt b/quicklisp/dists/quicklisp/installed/releases/flexi-streams.txt deleted file mode 100644 index e48a65f..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/flexi-streams.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/flexi-streams-20220220-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/float-features.txt b/quicklisp/dists/quicklisp/installed/releases/float-features.txt deleted file mode 100644 index 99b27d0..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/float-features.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/float-features-20230214-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/global-vars.txt b/quicklisp/dists/quicklisp/installed/releases/global-vars.txt deleted file mode 100644 index 23b85fa..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/global-vars.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/global-vars-20141106-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/hunchentoot.txt b/quicklisp/dists/quicklisp/installed/releases/hunchentoot.txt deleted file mode 100644 index a11cafd..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/hunchentoot.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/hunchentoot-v1.3.0/ diff --git a/quicklisp/dists/quicklisp/installed/releases/ieee-floats.txt b/quicklisp/dists/quicklisp/installed/releases/ieee-floats.txt deleted file mode 100644 index 2d90b97..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/ieee-floats.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/ieee-floats-20220220-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/introspect-environment.txt b/quicklisp/dists/quicklisp/installed/releases/introspect-environment.txt deleted file mode 100644 index f415ce9..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/introspect-environment.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/introspect-environment-20220220-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/iterate.txt b/quicklisp/dists/quicklisp/installed/releases/iterate.txt deleted file mode 100644 index 0629485..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/iterate.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/iterate-release-b0f9a9c6-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/jzon.txt b/quicklisp/dists/quicklisp/installed/releases/jzon.txt deleted file mode 100644 index 3b961ff..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/jzon.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/jzon-20230215-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/lack.txt b/quicklisp/dists/quicklisp/installed/releases/lack.txt deleted file mode 100644 index 8beb8ac..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/lack.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/lisp-namespace.txt b/quicklisp/dists/quicklisp/installed/releases/lisp-namespace.txt deleted file mode 100644 index ac6185b..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/lisp-namespace.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lisp-namespace-20221106-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/local-time.txt b/quicklisp/dists/quicklisp/installed/releases/local-time.txt deleted file mode 100644 index e7b7db7..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/local-time.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/local-time-20230214-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/md5.txt b/quicklisp/dists/quicklisp/installed/releases/md5.txt deleted file mode 100644 index 495bef8..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/md5.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/md5-20210630-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/mmap.txt b/quicklisp/dists/quicklisp/installed/releases/mmap.txt deleted file mode 100644 index 0f35a81..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/mmap.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/mmap-20230214-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/monkeylib-binary-data.txt b/quicklisp/dists/quicklisp/installed/releases/monkeylib-binary-data.txt deleted file mode 100644 index 8e5c88b..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/monkeylib-binary-data.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/monkeylib-binary-data-20111203-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/named-readtables.txt b/quicklisp/dists/quicklisp/installed/releases/named-readtables.txt deleted file mode 100644 index 8cbe2de..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/named-readtables.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/named-readtables-20220331-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/nibbles.txt b/quicklisp/dists/quicklisp/installed/releases/nibbles.txt deleted file mode 100644 index dcd071d..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/nibbles.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/nibbles-20220331-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/opticl-core.txt b/quicklisp/dists/quicklisp/installed/releases/opticl-core.txt deleted file mode 100644 index a16a5c9..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/opticl-core.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/opticl-core-20171019-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/opticl.txt b/quicklisp/dists/quicklisp/installed/releases/opticl.txt deleted file mode 100644 index 01b8f1e..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/opticl.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/opticl-20220220-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/parenscript.txt b/quicklisp/dists/quicklisp/installed/releases/parenscript.txt deleted file mode 100644 index 2492a66..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/parenscript.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/Parenscript-2.7.1/ diff --git a/quicklisp/dists/quicklisp/installed/releases/parse-declarations.txt b/quicklisp/dists/quicklisp/installed/releases/parse-declarations.txt deleted file mode 100644 index 309f6f1..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/parse-declarations.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/parse-declarations-20101006-darcs/ diff --git a/quicklisp/dists/quicklisp/installed/releases/parse-float.txt b/quicklisp/dists/quicklisp/installed/releases/parse-float.txt deleted file mode 100644 index 1d576c2..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/parse-float.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/parse-float-20200218-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/parse-number.txt b/quicklisp/dists/quicklisp/installed/releases/parse-number.txt deleted file mode 100644 index a8cbf6e..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/parse-number.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/parse-number-v1.7/ diff --git a/quicklisp/dists/quicklisp/installed/releases/pngload.txt b/quicklisp/dists/quicklisp/installed/releases/pngload.txt deleted file mode 100644 index 21b55f8..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/pngload.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/pngload-20220707-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/proc-parse.txt b/quicklisp/dists/quicklisp/installed/releases/proc-parse.txt deleted file mode 100644 index 795420e..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/proc-parse.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/proc-parse-20190813-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/puri.txt b/quicklisp/dists/quicklisp/installed/releases/puri.txt deleted file mode 100644 index c072d10..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/puri.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/puri-20201016-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/quri.txt b/quicklisp/dists/quicklisp/installed/releases/quri.txt deleted file mode 100644 index 5ee8664..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/quri.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/quri-20221106-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/retrospectiff.txt b/quicklisp/dists/quicklisp/installed/releases/retrospectiff.txt deleted file mode 100644 index e6ad9eb..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/retrospectiff.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/retrospectiff-20211209-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/rfc2388.txt b/quicklisp/dists/quicklisp/installed/releases/rfc2388.txt deleted file mode 100644 index a744abf..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/rfc2388.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/rfc2388-20180831-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/salza2.txt b/quicklisp/dists/quicklisp/installed/releases/salza2.txt deleted file mode 100644 index 4148944..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/salza2.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/salza2-2.1/ diff --git a/quicklisp/dists/quicklisp/installed/releases/serapeum.txt b/quicklisp/dists/quicklisp/installed/releases/serapeum.txt deleted file mode 100644 index d21ab5d..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/serapeum.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/serapeum-20230214-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/skippy.txt b/quicklisp/dists/quicklisp/installed/releases/skippy.txt deleted file mode 100644 index d95a118..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/skippy.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/skippy-1.3.12/ diff --git a/quicklisp/dists/quicklisp/installed/releases/slime.txt b/quicklisp/dists/quicklisp/installed/releases/slime.txt deleted file mode 100644 index 882435d..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/slime.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/slime-v2.28/ diff --git a/quicklisp/dists/quicklisp/installed/releases/smart-buffer.txt b/quicklisp/dists/quicklisp/installed/releases/smart-buffer.txt deleted file mode 100644 index 3ec10a2..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/smart-buffer.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/smart-buffer-20211020-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/split-sequence.txt b/quicklisp/dists/quicklisp/installed/releases/split-sequence.txt deleted file mode 100644 index 6f06382..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/split-sequence.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/split-sequence-v2.0.1/ diff --git a/quicklisp/dists/quicklisp/installed/releases/static-vectors.txt b/quicklisp/dists/quicklisp/installed/releases/static-vectors.txt deleted file mode 100644 index 3cdf986..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/static-vectors.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/static-vectors-v1.8.9/ diff --git a/quicklisp/dists/quicklisp/installed/releases/string-case.txt b/quicklisp/dists/quicklisp/installed/releases/string-case.txt deleted file mode 100644 index 2be9b12..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/string-case.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/string-case-20180711-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/swap-bytes.txt b/quicklisp/dists/quicklisp/installed/releases/swap-bytes.txt deleted file mode 100644 index 26f6e13..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/swap-bytes.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/swap-bytes-v1.2/ diff --git a/quicklisp/dists/quicklisp/installed/releases/trivia.txt b/quicklisp/dists/quicklisp/installed/releases/trivia.txt deleted file mode 100644 index 00acad9..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/trivia.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivia-20220707-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/trivial-backtrace.txt b/quicklisp/dists/quicklisp/installed/releases/trivial-backtrace.txt deleted file mode 100644 index 49401ba..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/trivial-backtrace.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-backtrace-20230214-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/trivial-cltl2.txt b/quicklisp/dists/quicklisp/installed/releases/trivial-cltl2.txt deleted file mode 100644 index 0d233d0..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/trivial-cltl2.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-cltl2-20211230-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/trivial-features.txt b/quicklisp/dists/quicklisp/installed/releases/trivial-features.txt deleted file mode 100644 index 53b69f3..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/trivial-features.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-features-20211209-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/trivial-file-size.txt b/quicklisp/dists/quicklisp/installed/releases/trivial-file-size.txt deleted file mode 100644 index 4405087..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/trivial-file-size.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-file-size-20221106-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/trivial-garbage.txt b/quicklisp/dists/quicklisp/installed/releases/trivial-garbage.txt deleted file mode 100644 index f34f06a..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/trivial-garbage.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-garbage-20211230-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/trivial-gray-streams.txt b/quicklisp/dists/quicklisp/installed/releases/trivial-gray-streams.txt deleted file mode 100644 index ea816ec..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/trivial-gray-streams.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-gray-streams-20210124-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/trivial-indent.txt b/quicklisp/dists/quicklisp/installed/releases/trivial-indent.txt deleted file mode 100644 index cb25c9d..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/trivial-indent.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-indent-20210531-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/trivial-macroexpand-all.txt b/quicklisp/dists/quicklisp/installed/releases/trivial-macroexpand-all.txt deleted file mode 100644 index 1dbdf2c..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/trivial-macroexpand-all.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-macroexpand-all-20171023-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/trivial-mimes.txt b/quicklisp/dists/quicklisp/installed/releases/trivial-mimes.txt deleted file mode 100644 index a7a474f..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/trivial-mimes.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-mimes-20230214-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/type-i.txt b/quicklisp/dists/quicklisp/installed/releases/type-i.txt deleted file mode 100644 index 8a2efe6..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/type-i.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/type-i-20230214-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/usocket.txt b/quicklisp/dists/quicklisp/installed/releases/usocket.txt deleted file mode 100644 index 0bfff5a..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/usocket.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/usocket-0.8.5/ diff --git a/quicklisp/dists/quicklisp/installed/releases/xsubseq.txt b/quicklisp/dists/quicklisp/installed/releases/xsubseq.txt deleted file mode 100644 index 2550d1c..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/xsubseq.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/xsubseq-20170830-git/ diff --git a/quicklisp/dists/quicklisp/installed/releases/zpb-exif.txt b/quicklisp/dists/quicklisp/installed/releases/zpb-exif.txt deleted file mode 100644 index e3febe8..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/zpb-exif.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/zpb-exif-release-1.2.5/ diff --git a/quicklisp/dists/quicklisp/installed/releases/zpng.txt b/quicklisp/dists/quicklisp/installed/releases/zpng.txt deleted file mode 100644 index 626cfe7..0000000 --- a/quicklisp/dists/quicklisp/installed/releases/zpng.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/zpng-1.2.2/ diff --git a/quicklisp/dists/quicklisp/installed/systems/3bz.txt b/quicklisp/dists/quicklisp/installed/systems/3bz.txt deleted file mode 100644 index 23d60b8..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/3bz.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/3bz-20201220-git/3bz.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/alexandria.txt b/quicklisp/dists/quicklisp/installed/systems/alexandria.txt deleted file mode 100644 index 14c4b06..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/alexandria.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/alexandria-20220707-git/alexandria.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/anaphora.txt b/quicklisp/dists/quicklisp/installed/systems/anaphora.txt deleted file mode 100644 index e6d9aa7..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/anaphora.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/anaphora-20220220-git/anaphora.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/babel-streams.txt b/quicklisp/dists/quicklisp/installed/systems/babel-streams.txt deleted file mode 100644 index e8db949..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/babel-streams.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/babel-20230214-git/babel-streams.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/babel-tests.txt b/quicklisp/dists/quicklisp/installed/systems/babel-tests.txt deleted file mode 100644 index 5e3b4e9..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/babel-tests.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/babel-20230214-git/babel-tests.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/babel.txt b/quicklisp/dists/quicklisp/installed/systems/babel.txt deleted file mode 100644 index 7fddf76..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/babel.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/babel-20230214-git/babel.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/bordeaux-threads.txt b/quicklisp/dists/quicklisp/installed/systems/bordeaux-threads.txt deleted file mode 100644 index 068166f..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/bordeaux-threads.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/bordeaux-threads-v0.8.8/bordeaux-threads.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cffi-examples.txt b/quicklisp/dists/quicklisp/installed/systems/cffi-examples.txt deleted file mode 100644 index bb38725..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cffi-examples.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cffi-20230214-git/cffi-examples.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cffi-grovel.txt b/quicklisp/dists/quicklisp/installed/systems/cffi-grovel.txt deleted file mode 100644 index d409292..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cffi-grovel.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cffi-20230214-git/cffi-grovel.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cffi-libffi.txt b/quicklisp/dists/quicklisp/installed/systems/cffi-libffi.txt deleted file mode 100644 index f08de59..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cffi-libffi.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cffi-20230214-git/cffi-libffi.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cffi-tests.txt b/quicklisp/dists/quicklisp/installed/systems/cffi-tests.txt deleted file mode 100644 index 1dd3671..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cffi-tests.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cffi-20230214-git/cffi-tests.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cffi-toolchain.txt b/quicklisp/dists/quicklisp/installed/systems/cffi-toolchain.txt deleted file mode 100644 index f390b06..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cffi-toolchain.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cffi-20230214-git/cffi-toolchain.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cffi-uffi-compat.txt b/quicklisp/dists/quicklisp/installed/systems/cffi-uffi-compat.txt deleted file mode 100644 index 65018ba..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cffi-uffi-compat.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cffi-20230214-git/cffi-uffi-compat.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cffi.txt b/quicklisp/dists/quicklisp/installed/systems/cffi.txt deleted file mode 100644 index d318d14..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cffi.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cffi-20230214-git/cffi.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/chipz.txt b/quicklisp/dists/quicklisp/installed/systems/chipz.txt deleted file mode 100644 index 39a2791..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/chipz.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/chipz-20220220-git/chipz.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/chunga.txt b/quicklisp/dists/quicklisp/installed/systems/chunga.txt deleted file mode 100644 index 7c57053..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/chunga.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/chunga-20221106-git/chunga.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cl+ssl.test.txt b/quicklisp/dists/quicklisp/installed/systems/cl+ssl.test.txt deleted file mode 100644 index 265036a..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cl+ssl.test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl+ssl-20230214-git/cl+ssl.test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cl+ssl.txt b/quicklisp/dists/quicklisp/installed/systems/cl+ssl.txt deleted file mode 100644 index b72eead..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cl+ssl.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl+ssl-20230214-git/cl+ssl.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cl-base64.txt b/quicklisp/dists/quicklisp/installed/systems/cl-base64.txt deleted file mode 100644 index e943aeb..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cl-base64.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-base64-20201016-git/cl-base64.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cl-cookie-test.txt b/quicklisp/dists/quicklisp/installed/systems/cl-cookie-test.txt deleted file mode 100644 index ef3b22e..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cl-cookie-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-cookie-20220707-git/cl-cookie-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cl-cookie.txt b/quicklisp/dists/quicklisp/installed/systems/cl-cookie.txt deleted file mode 100644 index af2c832..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cl-cookie.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-cookie-20220707-git/cl-cookie.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cl-fad.txt b/quicklisp/dists/quicklisp/installed/systems/cl-fad.txt deleted file mode 100644 index 2b9129f..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cl-fad.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-fad-20220220-git/cl-fad.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cl-isaac.txt b/quicklisp/dists/quicklisp/installed/systems/cl-isaac.txt deleted file mode 100644 index 5d3fa0e..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cl-isaac.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-isaac-20221106-git/cl-isaac.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cl-jpeg.txt b/quicklisp/dists/quicklisp/installed/systems/cl-jpeg.txt deleted file mode 100644 index c6a7ba2..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cl-jpeg.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-jpeg-20230214-git/cl-jpeg.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cl-postgres+local-time.txt b/quicklisp/dists/quicklisp/installed/systems/cl-postgres+local-time.txt deleted file mode 100644 index 843160d..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cl-postgres+local-time.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/local-time-20230214-git/cl-postgres+local-time.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cl-ppcre-unicode.txt b/quicklisp/dists/quicklisp/installed/systems/cl-ppcre-unicode.txt deleted file mode 100644 index 35e4c03..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cl-ppcre-unicode.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-ppcre-20220220-git/cl-ppcre-unicode.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cl-ppcre.txt b/quicklisp/dists/quicklisp/installed/systems/cl-ppcre.txt deleted file mode 100644 index 3d27acc..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cl-ppcre.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-ppcre-20220220-git/cl-ppcre.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cl-tga.txt b/quicklisp/dists/quicklisp/installed/systems/cl-tga.txt deleted file mode 100644 index 78795da..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cl-tga.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-tga-20160318-git/cl-tga.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cl-utilities.txt b/quicklisp/dists/quicklisp/installed/systems/cl-utilities.txt deleted file mode 100644 index 54cb798..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cl-utilities.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-utilities-1.2.4/cl-utilities.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/cl-who.txt b/quicklisp/dists/quicklisp/installed/systems/cl-who.txt deleted file mode 100644 index defd8da..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/cl-who.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/cl-who-20220331-git/cl-who.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/clack-handler-fcgi.txt b/quicklisp/dists/quicklisp/installed/systems/clack-handler-fcgi.txt deleted file mode 100644 index c0bd27a..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/clack-handler-fcgi.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/clack-20230214-git/clack-handler-fcgi.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/clack-handler-hunchentoot.txt b/quicklisp/dists/quicklisp/installed/systems/clack-handler-hunchentoot.txt deleted file mode 100644 index 1b3f6cd..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/clack-handler-hunchentoot.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/clack-20230214-git/clack-handler-hunchentoot.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/clack-handler-toot.txt b/quicklisp/dists/quicklisp/installed/systems/clack-handler-toot.txt deleted file mode 100644 index 1c594f0..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/clack-handler-toot.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/clack-20230214-git/clack-handler-toot.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/clack-handler-wookie.txt b/quicklisp/dists/quicklisp/installed/systems/clack-handler-wookie.txt deleted file mode 100644 index bdf15b8..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/clack-handler-wookie.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/clack-20230214-git/clack-handler-wookie.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/clack-socket.txt b/quicklisp/dists/quicklisp/installed/systems/clack-socket.txt deleted file mode 100644 index d9ee8c8..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/clack-socket.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/clack-20230214-git/clack-socket.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/clack-test.txt b/quicklisp/dists/quicklisp/installed/systems/clack-test.txt deleted file mode 100644 index 1068951..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/clack-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/clack-20230214-git/clack-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/clack.txt b/quicklisp/dists/quicklisp/installed/systems/clack.txt deleted file mode 100644 index 29cc76c..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/clack.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/clack-20230214-git/clack.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/closer-mop.txt b/quicklisp/dists/quicklisp/installed/systems/closer-mop.txt deleted file mode 100644 index e5c5d5d..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/closer-mop.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/closer-mop-20230214-git/closer-mop.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/com.gigamonkeys.binary-data.txt b/quicklisp/dists/quicklisp/installed/systems/com.gigamonkeys.binary-data.txt deleted file mode 100644 index 8d17995..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/com.gigamonkeys.binary-data.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/monkeylib-binary-data-20111203-git/com.gigamonkeys.binary-data.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/com.inuoe.jzon-tests.txt b/quicklisp/dists/quicklisp/installed/systems/com.inuoe.jzon-tests.txt deleted file mode 100644 index dd2ee2e..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/com.inuoe.jzon-tests.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/jzon-20230215-git/test/com.inuoe.jzon-tests.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/com.inuoe.jzon.txt b/quicklisp/dists/quicklisp/installed/systems/com.inuoe.jzon.txt deleted file mode 100644 index 52c544f..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/com.inuoe.jzon.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/jzon-20230215-git/src/com.inuoe.jzon.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/deflate.txt b/quicklisp/dists/quicklisp/installed/systems/deflate.txt deleted file mode 100644 index d492805..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/deflate.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/deflate-20200218-git/deflate.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/dexador-test.txt b/quicklisp/dists/quicklisp/installed/systems/dexador-test.txt deleted file mode 100644 index 1d5123f..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/dexador-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/dexador-20230214-git/dexador-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/dexador.txt b/quicklisp/dists/quicklisp/installed/systems/dexador.txt deleted file mode 100644 index 3fce194..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/dexador.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/dexador-20230214-git/dexador.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/documentation-utils.txt b/quicklisp/dists/quicklisp/installed/systems/documentation-utils.txt deleted file mode 100644 index ba9038c..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/documentation-utils.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/documentation-utils-20190710-git/documentation-utils.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/drakma-test.txt b/quicklisp/dists/quicklisp/installed/systems/drakma-test.txt deleted file mode 100644 index 09900a9..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/drakma-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/drakma-v2.0.9/drakma-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/drakma.txt b/quicklisp/dists/quicklisp/installed/systems/drakma.txt deleted file mode 100644 index c27190e..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/drakma.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/drakma-v2.0.9/drakma.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/fast-http-test.txt b/quicklisp/dists/quicklisp/installed/systems/fast-http-test.txt deleted file mode 100644 index 3566ad9..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/fast-http-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/fast-http-20191007-git/fast-http-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/fast-http.txt b/quicklisp/dists/quicklisp/installed/systems/fast-http.txt deleted file mode 100644 index 9ccf091..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/fast-http.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/fast-http-20191007-git/fast-http.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/fast-io-test.txt b/quicklisp/dists/quicklisp/installed/systems/fast-io-test.txt deleted file mode 100644 index 33f2ca9..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/fast-io-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/fast-io-20221106-git/fast-io-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/fast-io.txt b/quicklisp/dists/quicklisp/installed/systems/fast-io.txt deleted file mode 100644 index 5515ae4..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/fast-io.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/fast-io-20221106-git/fast-io.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/flexi-streams-test.txt b/quicklisp/dists/quicklisp/installed/systems/flexi-streams-test.txt deleted file mode 100644 index 90aaa06..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/flexi-streams-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/flexi-streams-20220220-git/flexi-streams-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/flexi-streams.txt b/quicklisp/dists/quicklisp/installed/systems/flexi-streams.txt deleted file mode 100644 index 4bd6b15..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/flexi-streams.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/flexi-streams-20220220-git/flexi-streams.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/float-features-tests.txt b/quicklisp/dists/quicklisp/installed/systems/float-features-tests.txt deleted file mode 100644 index b04659c..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/float-features-tests.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/float-features-20230214-git/float-features-tests.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/float-features.txt b/quicklisp/dists/quicklisp/installed/systems/float-features.txt deleted file mode 100644 index 879cafd..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/float-features.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/float-features-20230214-git/float-features.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/global-vars-test.txt b/quicklisp/dists/quicklisp/installed/systems/global-vars-test.txt deleted file mode 100644 index f64bd74..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/global-vars-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/global-vars-20141106-git/global-vars-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/global-vars.txt b/quicklisp/dists/quicklisp/installed/systems/global-vars.txt deleted file mode 100644 index ecfea8a..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/global-vars.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/global-vars-20141106-git/global-vars.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/hunchentoot.txt b/quicklisp/dists/quicklisp/installed/systems/hunchentoot.txt deleted file mode 100644 index 88d6861..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/hunchentoot.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/hunchentoot-v1.3.0/hunchentoot.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/ieee-floats.txt b/quicklisp/dists/quicklisp/installed/systems/ieee-floats.txt deleted file mode 100644 index e18d502..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/ieee-floats.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/ieee-floats-20220220-git/ieee-floats.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/introspect-environment-test.txt b/quicklisp/dists/quicklisp/installed/systems/introspect-environment-test.txt deleted file mode 100644 index aaecb2b..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/introspect-environment-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/introspect-environment-20220220-git/introspect-environment-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/introspect-environment.txt b/quicklisp/dists/quicklisp/installed/systems/introspect-environment.txt deleted file mode 100644 index c4f3ba7..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/introspect-environment.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/introspect-environment-20220220-git/introspect-environment.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/iterate.txt b/quicklisp/dists/quicklisp/installed/systems/iterate.txt deleted file mode 100644 index d656b11..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/iterate.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/iterate-release-b0f9a9c6-git/iterate.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack-app-directory.txt b/quicklisp/dists/quicklisp/installed/systems/lack-app-directory.txt deleted file mode 100644 index 631b5af..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack-app-directory.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack-app-directory.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack-app-file.txt b/quicklisp/dists/quicklisp/installed/systems/lack-app-file.txt deleted file mode 100644 index 1ba06f6..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack-app-file.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack-app-file.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack-component.txt b/quicklisp/dists/quicklisp/installed/systems/lack-component.txt deleted file mode 100644 index 53baecc..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack-component.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack-component.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack-middleware-accesslog.txt b/quicklisp/dists/quicklisp/installed/systems/lack-middleware-accesslog.txt deleted file mode 100644 index 0b59894..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack-middleware-accesslog.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack-middleware-accesslog.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack-middleware-auth-basic.txt b/quicklisp/dists/quicklisp/installed/systems/lack-middleware-auth-basic.txt deleted file mode 100644 index 5e6e95f..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack-middleware-auth-basic.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack-middleware-auth-basic.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack-middleware-backtrace.txt b/quicklisp/dists/quicklisp/installed/systems/lack-middleware-backtrace.txt deleted file mode 100644 index d9289de..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack-middleware-backtrace.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack-middleware-backtrace.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack-middleware-csrf.txt b/quicklisp/dists/quicklisp/installed/systems/lack-middleware-csrf.txt deleted file mode 100644 index f810f3b..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack-middleware-csrf.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack-middleware-csrf.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack-middleware-mount.txt b/quicklisp/dists/quicklisp/installed/systems/lack-middleware-mount.txt deleted file mode 100644 index 894bebe..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack-middleware-mount.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack-middleware-mount.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack-middleware-session.txt b/quicklisp/dists/quicklisp/installed/systems/lack-middleware-session.txt deleted file mode 100644 index 37d5da2..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack-middleware-session.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack-middleware-session.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack-middleware-static.txt b/quicklisp/dists/quicklisp/installed/systems/lack-middleware-static.txt deleted file mode 100644 index 917378b..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack-middleware-static.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack-middleware-static.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack-request.txt b/quicklisp/dists/quicklisp/installed/systems/lack-request.txt deleted file mode 100644 index 290b40c..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack-request.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack-request.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack-response.txt b/quicklisp/dists/quicklisp/installed/systems/lack-response.txt deleted file mode 100644 index 3307964..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack-response.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack-response.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack-session-store-dbi.txt b/quicklisp/dists/quicklisp/installed/systems/lack-session-store-dbi.txt deleted file mode 100644 index b8588ef..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack-session-store-dbi.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack-session-store-dbi.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack-session-store-redis.txt b/quicklisp/dists/quicklisp/installed/systems/lack-session-store-redis.txt deleted file mode 100644 index f876997..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack-session-store-redis.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack-session-store-redis.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack-test.txt b/quicklisp/dists/quicklisp/installed/systems/lack-test.txt deleted file mode 100644 index 59b8628..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack-util-writer-stream.txt b/quicklisp/dists/quicklisp/installed/systems/lack-util-writer-stream.txt deleted file mode 100644 index c4f2469..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack-util-writer-stream.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack-util-writer-stream.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack-util.txt b/quicklisp/dists/quicklisp/installed/systems/lack-util.txt deleted file mode 100644 index 3cfcc30..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack-util.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack-util.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lack.txt b/quicklisp/dists/quicklisp/installed/systems/lack.txt deleted file mode 100644 index ba7de2b..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lack.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/lack.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lisp-namespace.test.txt b/quicklisp/dists/quicklisp/installed/systems/lisp-namespace.test.txt deleted file mode 100644 index 849d20c..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lisp-namespace.test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lisp-namespace-20221106-git/lisp-namespace.test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/lisp-namespace.txt b/quicklisp/dists/quicklisp/installed/systems/lisp-namespace.txt deleted file mode 100644 index 124597a..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/lisp-namespace.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lisp-namespace-20221106-git/lisp-namespace.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/local-time.txt b/quicklisp/dists/quicklisp/installed/systems/local-time.txt deleted file mode 100644 index 3dbee34..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/local-time.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/local-time-20230214-git/local-time.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/md5.txt b/quicklisp/dists/quicklisp/installed/systems/md5.txt deleted file mode 100644 index 34d5973..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/md5.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/md5-20210630-git/md5.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/mmap-test.txt b/quicklisp/dists/quicklisp/installed/systems/mmap-test.txt deleted file mode 100644 index 77a7a6f..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/mmap-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/mmap-20230214-git/mmap-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/mmap.txt b/quicklisp/dists/quicklisp/installed/systems/mmap.txt deleted file mode 100644 index 1bfdecd..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/mmap.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/mmap-20230214-git/mmap.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/multilang-documentation-utils.txt b/quicklisp/dists/quicklisp/installed/systems/multilang-documentation-utils.txt deleted file mode 100644 index e2b03c9..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/multilang-documentation-utils.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/documentation-utils-20190710-git/multilang-documentation-utils.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/named-readtables.txt b/quicklisp/dists/quicklisp/installed/systems/named-readtables.txt deleted file mode 100644 index 19aba74..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/named-readtables.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/named-readtables-20220331-git/named-readtables.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/nibbles.txt b/quicklisp/dists/quicklisp/installed/systems/nibbles.txt deleted file mode 100644 index f8c9445..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/nibbles.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/nibbles-20220331-git/nibbles.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/opticl-core.txt b/quicklisp/dists/quicklisp/installed/systems/opticl-core.txt deleted file mode 100644 index 40adc6a..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/opticl-core.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/opticl-core-20171019-git/opticl-core.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/opticl-doc.txt b/quicklisp/dists/quicklisp/installed/systems/opticl-doc.txt deleted file mode 100644 index cbe06a6..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/opticl-doc.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/opticl-20220220-git/opticl-doc.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/opticl.txt b/quicklisp/dists/quicklisp/installed/systems/opticl.txt deleted file mode 100644 index 76035fb..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/opticl.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/opticl-20220220-git/opticl.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/parenscript.tests.txt b/quicklisp/dists/quicklisp/installed/systems/parenscript.tests.txt deleted file mode 100644 index 9627ee0..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/parenscript.tests.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/Parenscript-2.7.1/parenscript.tests.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/parenscript.txt b/quicklisp/dists/quicklisp/installed/systems/parenscript.txt deleted file mode 100644 index d03eaf4..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/parenscript.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/Parenscript-2.7.1/parenscript.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/parse-declarations-1.0.txt b/quicklisp/dists/quicklisp/installed/systems/parse-declarations-1.0.txt deleted file mode 100644 index c81ba5b..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/parse-declarations-1.0.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/parse-declarations-20101006-darcs/parse-declarations-1.0.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/parse-float.txt b/quicklisp/dists/quicklisp/installed/systems/parse-float.txt deleted file mode 100644 index 52e62e4..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/parse-float.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/parse-float-20200218-git/parse-float.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/parse-number.txt b/quicklisp/dists/quicklisp/installed/systems/parse-number.txt deleted file mode 100644 index 1b9c100..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/parse-number.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/parse-number-v1.7/parse-number.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/pngload.test.txt b/quicklisp/dists/quicklisp/installed/systems/pngload.test.txt deleted file mode 100644 index fc7d8bd..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/pngload.test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/pngload-20220707-git/pngload.test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/pngload.txt b/quicklisp/dists/quicklisp/installed/systems/pngload.txt deleted file mode 100644 index 969716c..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/pngload.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/pngload-20220707-git/pngload.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/proc-parse-test.txt b/quicklisp/dists/quicklisp/installed/systems/proc-parse-test.txt deleted file mode 100644 index 612fb8f..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/proc-parse-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/proc-parse-20190813-git/proc-parse-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/proc-parse.txt b/quicklisp/dists/quicklisp/installed/systems/proc-parse.txt deleted file mode 100644 index e1bea3d..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/proc-parse.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/proc-parse-20190813-git/proc-parse.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/puri.txt b/quicklisp/dists/quicklisp/installed/systems/puri.txt deleted file mode 100644 index 4997b68..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/puri.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/puri-20201016-git/puri.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/quri-test.txt b/quicklisp/dists/quicklisp/installed/systems/quri-test.txt deleted file mode 100644 index e7f47d8..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/quri-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/quri-20221106-git/quri-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/quri.txt b/quicklisp/dists/quicklisp/installed/systems/quri.txt deleted file mode 100644 index b8e67ae..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/quri.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/quri-20221106-git/quri.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/retrospectiff.txt b/quicklisp/dists/quicklisp/installed/systems/retrospectiff.txt deleted file mode 100644 index 70a9e4e..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/retrospectiff.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/retrospectiff-20211209-git/retrospectiff.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/rfc2388.txt b/quicklisp/dists/quicklisp/installed/systems/rfc2388.txt deleted file mode 100644 index dd2422c..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/rfc2388.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/rfc2388-20180831-git/rfc2388.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/salza2.txt b/quicklisp/dists/quicklisp/installed/systems/salza2.txt deleted file mode 100644 index e2c74cb..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/salza2.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/salza2-2.1/salza2.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/serapeum.txt b/quicklisp/dists/quicklisp/installed/systems/serapeum.txt deleted file mode 100644 index a4d6875..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/serapeum.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/serapeum-20230214-git/serapeum.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/skippy.txt b/quicklisp/dists/quicklisp/installed/systems/skippy.txt deleted file mode 100644 index 6b02a50..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/skippy.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/skippy-1.3.12/skippy.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/smart-buffer-test.txt b/quicklisp/dists/quicklisp/installed/systems/smart-buffer-test.txt deleted file mode 100644 index c3c3b59..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/smart-buffer-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/smart-buffer-20211020-git/smart-buffer-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/smart-buffer.txt b/quicklisp/dists/quicklisp/installed/systems/smart-buffer.txt deleted file mode 100644 index 96a7d64..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/smart-buffer.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/smart-buffer-20211020-git/smart-buffer.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/split-sequence.txt b/quicklisp/dists/quicklisp/installed/systems/split-sequence.txt deleted file mode 100644 index 426026f..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/split-sequence.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/split-sequence-v2.0.1/split-sequence.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/static-vectors.txt b/quicklisp/dists/quicklisp/installed/systems/static-vectors.txt deleted file mode 100644 index 347c038..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/static-vectors.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/static-vectors-v1.8.9/static-vectors.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/string-case.txt b/quicklisp/dists/quicklisp/installed/systems/string-case.txt deleted file mode 100644 index c257584..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/string-case.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/string-case-20180711-git/string-case.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/swank.txt b/quicklisp/dists/quicklisp/installed/systems/swank.txt deleted file mode 100644 index b5e9645..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/swank.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/slime-v2.28/swank.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/swap-bytes.txt b/quicklisp/dists/quicklisp/installed/systems/swap-bytes.txt deleted file mode 100644 index 956d89d..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/swap-bytes.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/swap-bytes-v1.2/swap-bytes.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/t-clack-handler-fcgi.txt b/quicklisp/dists/quicklisp/installed/systems/t-clack-handler-fcgi.txt deleted file mode 100644 index 2485f7f..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/t-clack-handler-fcgi.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/clack-20230214-git/t-clack-handler-fcgi.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/t-clack-handler-hunchentoot.txt b/quicklisp/dists/quicklisp/installed/systems/t-clack-handler-hunchentoot.txt deleted file mode 100644 index 58bf753..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/t-clack-handler-hunchentoot.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/clack-20230214-git/t-clack-handler-hunchentoot.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/t-clack-handler-toot.txt b/quicklisp/dists/quicklisp/installed/systems/t-clack-handler-toot.txt deleted file mode 100644 index 69bc383..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/t-clack-handler-toot.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/clack-20230214-git/t-clack-handler-toot.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/t-clack-handler-wookie.txt b/quicklisp/dists/quicklisp/installed/systems/t-clack-handler-wookie.txt deleted file mode 100644 index c491dea..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/t-clack-handler-wookie.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/clack-20230214-git/t-clack-handler-wookie.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/t-lack-component.txt b/quicklisp/dists/quicklisp/installed/systems/t-lack-component.txt deleted file mode 100644 index 98c7652..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/t-lack-component.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/t-lack-component.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-accesslog.txt b/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-accesslog.txt deleted file mode 100644 index 4958415..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-accesslog.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/t-lack-middleware-accesslog.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-auth-basic.txt b/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-auth-basic.txt deleted file mode 100644 index 4f954e2..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-auth-basic.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/t-lack-middleware-auth-basic.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-backtrace.txt b/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-backtrace.txt deleted file mode 100644 index fdad8e2..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-backtrace.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/t-lack-middleware-backtrace.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-csrf.txt b/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-csrf.txt deleted file mode 100644 index e53b99f..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-csrf.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/t-lack-middleware-csrf.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-mount.txt b/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-mount.txt deleted file mode 100644 index c6b0df0..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-mount.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/t-lack-middleware-mount.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-session.txt b/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-session.txt deleted file mode 100644 index 4c2c59f..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-session.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/t-lack-middleware-session.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-static.txt b/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-static.txt deleted file mode 100644 index d6dc021..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/t-lack-middleware-static.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/t-lack-middleware-static.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/t-lack-request.txt b/quicklisp/dists/quicklisp/installed/systems/t-lack-request.txt deleted file mode 100644 index 56e4665..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/t-lack-request.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/t-lack-request.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/t-lack-session-store-dbi.txt b/quicklisp/dists/quicklisp/installed/systems/t-lack-session-store-dbi.txt deleted file mode 100644 index 135f95a..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/t-lack-session-store-dbi.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/t-lack-session-store-dbi.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/t-lack-session-store-redis.txt b/quicklisp/dists/quicklisp/installed/systems/t-lack-session-store-redis.txt deleted file mode 100644 index 1b5e7ac..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/t-lack-session-store-redis.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/t-lack-session-store-redis.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/t-lack-util.txt b/quicklisp/dists/quicklisp/installed/systems/t-lack-util.txt deleted file mode 100644 index 5a5285b..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/t-lack-util.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/t-lack-util.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/t-lack.txt b/quicklisp/dists/quicklisp/installed/systems/t-lack.txt deleted file mode 100644 index c6508b1..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/t-lack.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/lack-20230214-git/t-lack.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivia.balland2006.txt b/quicklisp/dists/quicklisp/installed/systems/trivia.balland2006.txt deleted file mode 100644 index e9b4a2f..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivia.balland2006.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivia-20220707-git/trivia.balland2006.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivia.benchmark.txt b/quicklisp/dists/quicklisp/installed/systems/trivia.benchmark.txt deleted file mode 100644 index 79e5335..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivia.benchmark.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivia-20220707-git/trivia.benchmark.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivia.cffi.txt b/quicklisp/dists/quicklisp/installed/systems/trivia.cffi.txt deleted file mode 100644 index 66cf521..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivia.cffi.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivia-20220707-git/trivia.cffi.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivia.fset.txt b/quicklisp/dists/quicklisp/installed/systems/trivia.fset.txt deleted file mode 100644 index 03921a6..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivia.fset.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivia-20220707-git/trivia.fset.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivia.level0.txt b/quicklisp/dists/quicklisp/installed/systems/trivia.level0.txt deleted file mode 100644 index 33d67d2..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivia.level0.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivia-20220707-git/trivia.level0.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivia.level1.txt b/quicklisp/dists/quicklisp/installed/systems/trivia.level1.txt deleted file mode 100644 index 71e1f74..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivia.level1.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivia-20220707-git/trivia.level1.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivia.level2.txt b/quicklisp/dists/quicklisp/installed/systems/trivia.level2.txt deleted file mode 100644 index 2ef8d44..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivia.level2.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivia-20220707-git/trivia.level2.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivia.ppcre.txt b/quicklisp/dists/quicklisp/installed/systems/trivia.ppcre.txt deleted file mode 100644 index b17ec1c..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivia.ppcre.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivia-20220707-git/trivia.ppcre.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivia.quasiquote.txt b/quicklisp/dists/quicklisp/installed/systems/trivia.quasiquote.txt deleted file mode 100644 index 3748067..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivia.quasiquote.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivia-20220707-git/trivia.quasiquote.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivia.test.txt b/quicklisp/dists/quicklisp/installed/systems/trivia.test.txt deleted file mode 100644 index c92b737..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivia.test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivia-20220707-git/trivia.test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivia.trivial.txt b/quicklisp/dists/quicklisp/installed/systems/trivia.trivial.txt deleted file mode 100644 index ffd86c2..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivia.trivial.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivia-20220707-git/trivia.trivial.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivia.txt b/quicklisp/dists/quicklisp/installed/systems/trivia.txt deleted file mode 100644 index 7029292..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivia.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivia-20220707-git/trivia.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivial-backtrace-test.txt b/quicklisp/dists/quicklisp/installed/systems/trivial-backtrace-test.txt deleted file mode 100644 index dfb0fc9..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivial-backtrace-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-backtrace-20230214-git/trivial-backtrace-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivial-backtrace.txt b/quicklisp/dists/quicklisp/installed/systems/trivial-backtrace.txt deleted file mode 100644 index bbe07a5..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivial-backtrace.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-backtrace-20230214-git/trivial-backtrace.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivial-cltl2.txt b/quicklisp/dists/quicklisp/installed/systems/trivial-cltl2.txt deleted file mode 100644 index 5fecf5d..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivial-cltl2.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-cltl2-20211230-git/trivial-cltl2.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivial-features-tests.txt b/quicklisp/dists/quicklisp/installed/systems/trivial-features-tests.txt deleted file mode 100644 index ec8a4de..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivial-features-tests.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-features-20211209-git/trivial-features-tests.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivial-features.txt b/quicklisp/dists/quicklisp/installed/systems/trivial-features.txt deleted file mode 100644 index 9bcbd92..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivial-features.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-features-20211209-git/trivial-features.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivial-file-size.txt b/quicklisp/dists/quicklisp/installed/systems/trivial-file-size.txt deleted file mode 100644 index c69c27e..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivial-file-size.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-file-size-20221106-git/trivial-file-size.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivial-garbage.txt b/quicklisp/dists/quicklisp/installed/systems/trivial-garbage.txt deleted file mode 100644 index f341bb4..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivial-garbage.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-garbage-20211230-git/trivial-garbage.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivial-gray-streams-test.txt b/quicklisp/dists/quicklisp/installed/systems/trivial-gray-streams-test.txt deleted file mode 100644 index de67fed..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivial-gray-streams-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-gray-streams-20210124-git/trivial-gray-streams-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivial-gray-streams.txt b/quicklisp/dists/quicklisp/installed/systems/trivial-gray-streams.txt deleted file mode 100644 index 4a8aa23..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivial-gray-streams.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-gray-streams-20210124-git/trivial-gray-streams.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivial-indent.txt b/quicklisp/dists/quicklisp/installed/systems/trivial-indent.txt deleted file mode 100644 index f3d0258..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivial-indent.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-indent-20210531-git/trivial-indent.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivial-macroexpand-all.txt b/quicklisp/dists/quicklisp/installed/systems/trivial-macroexpand-all.txt deleted file mode 100644 index 742b9f9..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivial-macroexpand-all.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-macroexpand-all-20171023-git/trivial-macroexpand-all.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/trivial-mimes.txt b/quicklisp/dists/quicklisp/installed/systems/trivial-mimes.txt deleted file mode 100644 index 2b2c0b0..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/trivial-mimes.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/trivial-mimes-20230214-git/trivial-mimes.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/type-i.test.txt b/quicklisp/dists/quicklisp/installed/systems/type-i.test.txt deleted file mode 100644 index eee9569..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/type-i.test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/type-i-20230214-git/type-i.test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/type-i.txt b/quicklisp/dists/quicklisp/installed/systems/type-i.txt deleted file mode 100644 index 9063493..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/type-i.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/type-i-20230214-git/type-i.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/usocket-server.txt b/quicklisp/dists/quicklisp/installed/systems/usocket-server.txt deleted file mode 100644 index a6d9473..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/usocket-server.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/usocket-0.8.5/usocket-server.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/usocket-test.txt b/quicklisp/dists/quicklisp/installed/systems/usocket-test.txt deleted file mode 100644 index a456ca1..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/usocket-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/usocket-0.8.5/usocket-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/usocket.txt b/quicklisp/dists/quicklisp/installed/systems/usocket.txt deleted file mode 100644 index 81c1d2d..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/usocket.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/usocket-0.8.5/usocket.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/xsubseq-test.txt b/quicklisp/dists/quicklisp/installed/systems/xsubseq-test.txt deleted file mode 100644 index b25223c..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/xsubseq-test.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/xsubseq-20170830-git/xsubseq-test.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/xsubseq.txt b/quicklisp/dists/quicklisp/installed/systems/xsubseq.txt deleted file mode 100644 index 9e5abb3..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/xsubseq.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/xsubseq-20170830-git/xsubseq.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/zpb-exif.txt b/quicklisp/dists/quicklisp/installed/systems/zpb-exif.txt deleted file mode 100644 index f5dc4b9..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/zpb-exif.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/zpb-exif-release-1.2.5/zpb-exif.asd diff --git a/quicklisp/dists/quicklisp/installed/systems/zpng.txt b/quicklisp/dists/quicklisp/installed/systems/zpng.txt deleted file mode 100644 index 068000b..0000000 --- a/quicklisp/dists/quicklisp/installed/systems/zpng.txt +++ /dev/null @@ -1 +0,0 @@ -dists/quicklisp/software/zpng-1.2.2/zpng.asd diff --git a/quicklisp/dists/quicklisp/preference.txt b/quicklisp/dists/quicklisp/preference.txt deleted file mode 100644 index 770f0f7..0000000 --- a/quicklisp/dists/quicklisp/preference.txt +++ /dev/null @@ -1 +0,0 @@ -3893948434 \ No newline at end of file diff --git a/quicklisp/dists/quicklisp/releases.cdb b/quicklisp/dists/quicklisp/releases.cdb deleted file mode 100644 index c18d842..0000000 Binary files a/quicklisp/dists/quicklisp/releases.cdb and /dev/null differ diff --git a/quicklisp/dists/quicklisp/releases.txt b/quicklisp/dists/quicklisp/releases.txt deleted file mode 100644 index 76844a2..0000000 --- a/quicklisp/dists/quicklisp/releases.txt +++ /dev/null @@ -1,2233 +0,0 @@ -# project url size file-md5 content-sha1 prefix [system-file1..system-fileN] -1am http://beta.quicklisp.org/archive/1am/2014-11-06/1am-20141106-git.tgz 3490 c5e83c329157518e3ebfeef63e4ac269 83dfee1159cc630cc2453681a7caaf745f987d41 1am-20141106-git 1am.asd -3b-bmfont http://beta.quicklisp.org/archive/3b-bmfont/2023-02-14/3b-bmfont-20230214-git.tgz 10484 fd15c61503cc1eff52f7436352aa6da4 b2b947e8fdfe890a66d8f4233f56ab5020630faf 3b-bmfont-20230214-git 3b-bmfont.asd -3b-hdr http://beta.quicklisp.org/archive/3b-hdr/2020-09-25/3b-hdr-20200925-git.tgz 182755 09cc67fd82f54bab475eb7c6f9398faa 7d8d4c183aac97708d77283daf1ce247a25ca001 3b-hdr-20200925-git 3b-hdr.asd -3b-swf http://beta.quicklisp.org/archive/3b-swf/2012-01-07/3b-swf-20120107-git.tgz 75453 c130b35b44de03caa7cdf043d9d27dee 2dc75635c4d6a641618a63e61a9aa98252bbd2b7 3b-swf-20120107-git 3b-swf-swc.asd 3b-swf.asd -3bgl-shader http://beta.quicklisp.org/archive/3bgl-shader/2020-04-27/3bgl-shader-20200427-git.tgz 95653 b6cd3e5994902c8a6e841667bbfebe1c bc6c83bfe52c5e50aa8e41f6a353cc981476d6a1 3bgl-shader-20200427-git 3bgl-shader-example.asd 3bgl-shader.asd -3bmd http://beta.quicklisp.org/archive/3bmd/2022-07-07/3bmd-20220707-git.tgz 25952 f7cbf49b12fa470fe3cebb1d8c1ef2b9 b7560c27d7a3c4aa8ddf10ba92d10b84f73a120f 3bmd-20220707-git 3bmd-ext-code-blocks.asd 3bmd-ext-definition-lists.asd 3bmd-ext-math.asd 3bmd-ext-tables.asd 3bmd-ext-wiki-links.asd 3bmd-youtube-tests.asd 3bmd-youtube.asd 3bmd.asd -3bz http://beta.quicklisp.org/archive/3bz/2020-12-20/3bz-20201220-git.tgz 33098 a60b2ab5b383bfedeab4c127d164b853 51eeba0bbf0964e4f7a45042543a8480c503cb7c 3bz-20201220-git 3bz.asd -3d-matrices http://beta.quicklisp.org/archive/3d-matrices/2022-03-31/3d-matrices-20220331-git.tgz 43263 f5f13b1ab3357be804eae26a12fad77c 9d568427f6fa36e78b6a46fea0ee85c9931e66b0 3d-matrices-20220331-git 3d-matrices-test.asd 3d-matrices.asd -3d-quaternions http://beta.quicklisp.org/archive/3d-quaternions/2022-11-06/3d-quaternions-20221106-git.tgz 14931 fb4a2ef4581c7883fc525dc3808f4c72 f9006042024e18cde33202f81c7ab1b08c1c43f1 3d-quaternions-20221106-git 3d-quaternions-test.asd 3d-quaternions.asd -3d-transforms http://beta.quicklisp.org/archive/3d-transforms/2022-03-31/3d-transforms-20220331-git.tgz 9617 51a46b516cd8a2f9a18e239254cc1e24 482481bb8a9e3a5a7ff0f7963b53cfb14254a2fa 3d-transforms-20220331-git 3d-transforms-test.asd 3d-transforms.asd -3d-vectors http://beta.quicklisp.org/archive/3d-vectors/2022-11-06/3d-vectors-20221106-git.tgz 29549 993bc247aa898452f1cc123545d5cf3b ca4c6b3369bfc6b5c4fffd3fca54f01ef6e79b81 3d-vectors-20221106-git 3d-vectors-test.asd 3d-vectors.asd -40ants-asdf-system http://beta.quicklisp.org/archive/40ants-asdf-system/2023-02-14/40ants-asdf-system-20230214-git.tgz 6396 f34b041a6454c46f28f0280b8b476ab4 4f567e0825cc899f12a5db98fd61e459bd39683a 40ants-asdf-system-20230214-git 40ants-asdf-system-tests.asd 40ants-asdf-system.asd t/test-40ants-system.asd -a-cl-logger http://beta.quicklisp.org/archive/a-cl-logger/2022-03-31/a-cl-logger-20220331-git.tgz 18775 cb879ce95653e5651b18839845b7ad09 5b900ebb45096e77b20b4edbc4bc9618bf45854c a-cl-logger-20220331-git a-cl-logger-logstash.asd a-cl-logger.asd -able http://beta.quicklisp.org/archive/able/2017-12-27/able-20171227-git.tgz 30476 bf42d58fb2f32f239e9f98561fb11be1 3d1693e9704ba4fcd19a151baf16e3600447d83b able-20171227-git able.asd -abstract-arrays http://beta.quicklisp.org/archive/abstract-arrays/2023-02-14/abstract-arrays-20230214-git.tgz 8504 d5ee772ebc0b2fab7c0b303945ce8fe8 dcb982046add8946cd5aba21344b168c8ad11913 abstract-arrays-20230214-git abstract-arrays.asd -access http://beta.quicklisp.org/archive/access/2022-07-07/access-20220707-git.tgz 14684 b7f64a742caf1d5a1dbc4eee614703ee cd51a17e1bf7588058b767f7eb54597b4dc8d918 access-20220707-git access.asd -acclimation http://beta.quicklisp.org/archive/acclimation/2022-11-06/acclimation-20221106-git.tgz 6241 988de4fdc9712ab129df433c0cf24715 724c3bcaa0b56004c9caf3f6abd76ff21673ccfe acclimation-20221106-git Temperature/acclimation-temperature.asd acclimation.asd -action-list http://beta.quicklisp.org/archive/action-list/2022-11-06/action-list-20221106-git.tgz 13096 e454f9f31f0e277b46a4d8d3ac2eb72f acb8ab9528355552e92972a20476475f1d216136 action-list-20221106-git action-list.asd -adhoc http://beta.quicklisp.org/archive/adhoc/2022-03-31/adhoc-20220331-git.tgz 309177 7580aa5e43a36e8ca4ffe0d8e8d7d9d1 8079841b6ea89eb3f482e95b473d7678980d8338 adhoc-20220331-git adhoc-tests.asd adhoc.asd -adopt http://beta.quicklisp.org/archive/adopt/2022-03-31/adopt-20220331-hg.tgz 24761 bc066e05fa9eec803f69ff6b6b142b1d 811e2413d8530f20a8f62b3e76fc0546b7e7804a adopt-20220331-hg adopt.asd -adopt-subcommands http://beta.quicklisp.org/archive/adopt-subcommands/2021-05-31/adopt-subcommands-v0.2.2.tgz 10475 66bc9a0c3b0797aaf4244d40ac6ea03e 853b9148d18112a9a7c7ed53002f536c4f233a58 adopt-subcommands-v0.2.2 adopt-subcommands-test.asd adopt-subcommands.asd -adp http://beta.quicklisp.org/archive/adp/2023-02-14/adp-20230214-git.tgz 56539 dc2f754805487ec71764c2f7c49df3f1 768c069da132c3cc55b47760390a9b20189cf493 adp-20230214-git adp.asd -advanced-readtable http://beta.quicklisp.org/archive/advanced-readtable/2013-07-20/advanced-readtable-20130720-git.tgz 10570 bcb3c8a4757047bf7a41117265b74a3f 163baeafd28c4f4cb0c3fb42529df5ee75a711cc advanced-readtable-20130720-git advanced-readtable.asd -aether http://beta.quicklisp.org/archive/aether/2021-12-09/aether-v1.1.0.tgz 52398 c44a7ba571b139605bbf17c4b5cd3176 74a1e54230e1e4cebd54568c94c920c620708666 aether-v1.1.0 aether-tests.asd aether.asd -agnostic-lizard http://beta.quicklisp.org/archive/agnostic-lizard/2022-11-06/agnostic-lizard-20221106-git.tgz 32519 1dde4a11c3d831d5ba7118aaf583fef7 68f930dcd9330b85affea18199f9880a0b582190 agnostic-lizard-20221106-git agnostic-lizard-debugger-prototype.asd agnostic-lizard.asd -agutil http://beta.quicklisp.org/archive/agutil/2021-05-31/agutil-20210531-git.tgz 7087 99de7cd320ae2696c1707ca5b55cf40a e0472fd8324ea893d6cb8ae7225015d881938010 agutil-20210531-git agutil.asd -ahungry-fleece http://beta.quicklisp.org/archive/ahungry-fleece/2023-02-14/ahungry-fleece-20230214-git.tgz 96899 f83eb504c3dcc9412e892059408ac1f3 347219e6e1a710222794aee3be4e3379e529a4b8 ahungry-fleece-20230214-git ahungry-fleece.asd skel/skeleton.asd -alexa http://beta.quicklisp.org/archive/alexa/2018-08-31/alexa-20180831-git.tgz 11101 322aae1831d32c65e4f7512a749e5794 d27375e85ec943d49b3fcb77b3ab606b2dd63e92 alexa-20180831-git alexa-tests.asd alexa.asd -alexandria http://beta.quicklisp.org/archive/alexandria/2022-07-07/alexandria-20220707-git.tgz 56838 b99150be4c664857c2d29fcaee7a3421 3ddb9890ee52585da5d9ab071a067677dba79a2a alexandria-20220707-git alexandria.asd -alexandria-plus http://beta.quicklisp.org/archive/alexandria-plus/2022-11-06/alexandria-plus-20221106-git.tgz 200298 1914fbe89e36fbc3290b3a6837d152b8 6aa8350b1dd34ff4fc2203f1e04d6e46111e6a10 alexandria-plus-20221106-git alexandria+.asd -algebraic-data-library http://beta.quicklisp.org/archive/algebraic-data-library/2018-08-31/algebraic-data-library-20180831-git.tgz 2657 4e0c9d6480ef5824821e38ef88ce7c0f 35e8cb9da56cd9b6f4bc6bbd9b6e7094f28e367a algebraic-data-library-20180831-git algebraic-data-library.asd -also-alsa http://beta.quicklisp.org/archive/also-alsa/2022-07-07/also-alsa-20220707-git.tgz 13834 01541a5ca990deab87d93e354d17dcb2 88ac5159a97642c6ce4940997693b7368a7373be also-alsa-20220707-git also-alsa.asd -amazon-ecs http://beta.quicklisp.org/archive/amazon-ecs/2011-04-18/amazon-ecs-20110418-git.tgz 18915 6fdd5ad095bd4a492e0d5cd07b7fae98 f8aa169d0a8e927a8357b210570f72d0198d630d amazon-ecs-20110418-git amazon-ecs.asd -amb http://beta.quicklisp.org/archive/amb/2023-02-14/amb-20230214-git.tgz 7971 fceb8c2e37562bdd4d542ba50ad4770d 4058816ebbdf24d461ed95a619e3d745633874a9 amb-20230214-git amb.asd -anaphora http://beta.quicklisp.org/archive/anaphora/2022-02-20/anaphora-20220220-git.tgz 6303 f773589c518c8fd4d1be7baf2ff757a3 327160e2015ef1a72e6b98977c8dcde00b8ef2ea anaphora-20220220-git anaphora.asd -anaphoric-variants http://beta.quicklisp.org/archive/anaphoric-variants/2012-10-13/anaphoric-variants-1.0.1.tgz 3961 1958c6eed506b8dd7f7ebf4fb85142ed affec75bb8b78489722f937336342d2e003695db anaphoric-variants-1.0.1 anaphoric-variants.asd -anatevka http://beta.quicklisp.org/archive/anatevka/2022-11-06/anatevka-v1.0.0.tgz 59207 2a1d8820217793f1788960b1d7d3f1ca e981edb8939aa9001f40bee236913931ea45d0b8 anatevka-v1.0.0 anatevka-tests.asd anatevka.asd -antik http://beta.quicklisp.org/archive/antik/2019-10-08/antik-master-df14cb8c-git.tgz 1655490 1bfdd37b226dd77d2a83a8262c7f5c75 027e6a3fca896a523a6cd49cb6ae501605c6d953 antik-master-df14cb8c-git antik-base.asd antik.asd foreign-array.asd physical-dimension.asd science-data.asd -anypool http://beta.quicklisp.org/archive/anypool/2021-05-31/anypool-20210531-git.tgz 6088 c752d80e52cc4b64c8b671c3fc58c7fd 4de957af66eedc303fb342784e3d6ee20f64398b anypool-20210531-git anypool.asd lack-middleware-anypool.asd -apply-argv http://beta.quicklisp.org/archive/apply-argv/2015-06-08/apply-argv-20150608-git.tgz 2451 d6c331fb609e14d8e99c2c5235767ae5 41176149bfe25382fbeee01eef0ca9aaca6aa6ec apply-argv-20150608-git apply-argv.asd -april http://beta.quicklisp.org/archive/april/2023-02-14/april-20230214-git.tgz 359914 9d47a2f5ed7dd6f4cf9e1b29c223302b 43438fead9b2e3577644a3b8802c5e1ec2e8b878 april-20230214-git aplesque/aplesque.asd april.asd demos/cnn/april-demo.cnn.asd demos/fnn/april-demo.fnn.asd demos/ncurses/april-demo.ncurses.asd extensions/uzuki/april-xt.uzuki.asd libraries/dfns/array/april-lib.dfns.array.asd libraries/dfns/graph/april-lib.dfns.graph.asd libraries/dfns/numeric/april-lib.dfns.numeric.asd libraries/dfns/power/april-lib.dfns.power.asd libraries/dfns/string/april-lib.dfns.string.asd libraries/dfns/tree/april-lib.dfns.tree.asd maxpc-apache/maxpc-apache.asd varray/varray.asd vex/vex.asd -arc-compat http://beta.quicklisp.org/archive/arc-compat/2022-03-31/arc-compat-20220331-git.tgz 69019 68d46922fc1fde93ea196b59a3f6cdfb 6b675a56446b4f22b61be3887119ff660e17f132 arc-compat-20220331-git arc-compat.asd -architecture.builder-protocol http://beta.quicklisp.org/archive/architecture.builder-protocol/2022-11-06/architecture.builder-protocol-20221106-git.tgz 48668 36e4b1e7fef0851ce1fff4964a58ea59 208c0474daedb09d106013354dba3689b544caeb architecture.builder-protocol-20221106-git architecture.builder-protocol.asd architecture.builder-protocol.inspection.asd architecture.builder-protocol.json.asd architecture.builder-protocol.print-tree.asd architecture.builder-protocol.universal-builder.asd architecture.builder-protocol.xpath.asd -architecture.hooks http://beta.quicklisp.org/archive/architecture.hooks/2018-12-10/architecture.hooks-20181210-git.tgz 15541 698bdb1309cae19fb8f0e1e425ba4cd9 c5d4bd17509ba19d55913a247ef56853d51a4169 architecture.hooks-20181210-git cl-hooks.asd -architecture.service-provider http://beta.quicklisp.org/archive/architecture.service-provider/2019-10-07/architecture.service-provider-20191007-git.tgz 22626 7260877f29b3fe3ad6e94126360f0bd3 9ae3133023dfc49a6e891ce2a3d1eefdc25c0513 architecture.service-provider-20191007-git architecture.service-provider-and-hooks.asd architecture.service-provider.asd -archive http://beta.quicklisp.org/archive/archive/2016-03-18/archive-20160318-git.tgz 19507 5332faf00d7b8416c0468770fa9aaf1f 83bcf90b745c5d8967086741072f3b7496733868 archive-20160318-git archive.asd -arithmetic-operators-as-words http://beta.quicklisp.org/archive/arithmetic-operators-as-words/2020-06-10/arithmetic-operators-as-words-20200610-git.tgz 1443 8318181de7b11bd524aaf15f595615a6 3f27abd9563ba2d59a546085e1c3d9cde3215558 arithmetic-operators-as-words-20200610-git arithmetic-operators-as-words.asd -arnesi http://beta.quicklisp.org/archive/arnesi/2017-04-03/arnesi-20170403-git.tgz 84553 bbb34e1a646b2cc489766690c741d964 c83ef816a3596038ebc507611c2c17bb822a1024 arnesi-20170403-git arnesi.asd -array-operations http://beta.quicklisp.org/archive/array-operations/2022-07-07/array-operations-1.0.0.tgz 352381 7cb89adc0a97d66adb3c23d352116199 4ec8bb709ee312eae007365f54cb38b0672e6723 array-operations-1.0.0 array-operations.asd -array-utils http://beta.quicklisp.org/archive/array-utils/2022-11-06/array-utils-20221106-git.tgz 5975 777f19e789fe5d44aa2d9ab91cc716a1 9f2676c45c7e73a4fe5ec97204e90c2d3db12d1c array-utils-20221106-git array-utils-test.asd array-utils.asd -arrival http://beta.quicklisp.org/archive/arrival/2021-12-09/arrival-20211209-git.tgz 207106 01522ff0010a4061f541f2c57dfa9a07 a2394c5c45002581e0f3cfc0431ce0e2d1c1b1ad arrival-20211209-git arrival.asd -arrow-macros http://beta.quicklisp.org/archive/arrow-macros/2020-12-20/arrow-macros-20201220-git.tgz 6170 e88ff276ed8c1701d36d72dd2ba93dc4 959ad0c1e73017a47a8721165fc28b670c45e8ce arrow-macros-20201220-git arrow-macros-test.asd arrow-macros.asd -arrows http://beta.quicklisp.org/archive/arrows/2018-10-18/arrows-20181018-git.tgz 5067 c60b5d79680de19baad018a0fe87bc48 82ebf99cf60c78e451f73e515b418f7c2f40b18b arrows-20181018-git arrows.asd -asd-generator http://beta.quicklisp.org/archive/asd-generator/2019-01-07/asd-generator-20190107-git.tgz 17944 3d89b79133f9d2e7bff3e7735a299f96 b9e465de3e179e7a7c0b73aa62be878777b014ea asd-generator-20190107-git asd-generator.asd test/asd-generator-test.asd -asdf-dependency-graph http://beta.quicklisp.org/archive/asdf-dependency-graph/2023-02-14/asdf-dependency-graph-20230214-git.tgz 50654 3e34f14053cfb3f64c1cbaa08ad53c3b f50f3a8f5127911db99ff5e29245744f31ddf1d7 asdf-dependency-graph-20230214-git asdf-dependency-graph.asd -asdf-dependency-grovel http://beta.quicklisp.org/archive/asdf-dependency-grovel/2017-04-03/asdf-dependency-grovel-20170403-git.tgz 41965 e5f32a1e82dd83fa6446c28c2e43a73d ecfb684ceed8f4a95d124aa4f5398ec35a2dc5e2 asdf-dependency-grovel-20170403-git asdf-dependency-grovel.asd tests/test-serial-system.asd -asdf-encodings http://beta.quicklisp.org/archive/asdf-encodings/2019-10-07/asdf-encodings-20191007-git.tgz 9259 76bd0a61aa4df19e683d16592e0e62cd e3a8f15e4b8e4c4b39d4bcbbb67c6e7c308cf3d1 asdf-encodings-20191007-git asdf-encodings.asd -asdf-finalizers http://beta.quicklisp.org/archive/asdf-finalizers/2022-11-06/asdf-finalizers-20221106-git.tgz 6608 91f4b318b51986184f3d4570d6eefb52 3838733d2c72f1dfc49fd2adb186f490d9f4601a asdf-finalizers-20221106-git asdf-finalizers.asd list-of.asd -asdf-flv http://beta.quicklisp.org/archive/asdf-flv/2016-04-21/asdf-flv-version-2.1.tgz 2116 2b74b721b7e5335d2230d6b95fc6be56 7f61773346be3e61c241d597d02a3ec533d15989 asdf-flv-version-2.1 net.didierverna.asdf-flv.asd -asdf-linguist http://beta.quicklisp.org/archive/asdf-linguist/2015-09-23/asdf-linguist-20150923-git.tgz 4653 110db875b9d5cbdbc41fff8b50cc6688 b5929afb75c89ab6729d90da79686bc0885d7b55 asdf-linguist-20150923-git asdf-linguist.asd -asdf-manager http://beta.quicklisp.org/archive/asdf-manager/2016-02-08/asdf-manager-20160208-git.tgz 3156 67452d33f1e027b145ca8bfd0fa2806c eda6b453d5d3481e2d4e164c3206ae84012e7edd asdf-manager-20160208-git asdf-manager-test.asd asdf-manager.asd -asdf-package-system http://beta.quicklisp.org/archive/asdf-package-system/2015-06-08/asdf-package-system-20150608-git.tgz 1383 9eee9d811aec4894843ac1d8ae6cbccd 910495edcf74671f08ba09181539bf644e0cbb3f asdf-package-system-20150608-git asdf-package-system.asd -asdf-system-connections http://beta.quicklisp.org/archive/asdf-system-connections/2017-01-24/asdf-system-connections-20170124-git.tgz 4933 23bdbb69c433568e3e15ed705b803992 c49a358d1e61207c282e985905eae1810205fc2b asdf-system-connections-20170124-git asdf-system-connections.asd -asdf-viz http://beta.quicklisp.org/archive/asdf-viz/2020-06-10/asdf-viz-20200610-git.tgz 4137355 39c59335d40c2659e6091818ca8a207c be6f6901c363b7919b006c30c7a34ccff61248ed asdf-viz-20200610-git asdf-viz.asd -aserve http://beta.quicklisp.org/archive/aserve/2021-12-09/aserve-20211209-git.tgz 524184 7bfef6f4c9ca23b31eed3f82cc0b77f7 f516da5921d99d4de0d20ef4e6c974cc1199a374 aserve-20211209-git zaserve.asd -asn1 http://beta.quicklisp.org/archive/asn1/2022-03-31/asn1-20220331-git.tgz 5680 cd75024e68a69a16f4d75e7d1039a926 a7c5c3e14ebdf88c72206ed0908485185c321ac2 asn1-20220331-git asn1.asd -assert-p http://beta.quicklisp.org/archive/assert-p/2020-06-10/assert-p-20200610-git.tgz 17334 be2bb62f2e88664c514771abca4b0f7f f5a85d7f2dca68cee7c9800fbeed09254e4c81fe assert-p-20200610-git assert-p.asd -assertion-error http://beta.quicklisp.org/archive/assertion-error/2019-12-27/assertion-error-20191227-git.tgz 14185 797ad3c5cad14fb25eec76ccfb79b66a d9aff6bf141a59631d4371eace22a865bd29b0e6 assertion-error-20191227-git assertion-error.asd -assoc-utils http://beta.quicklisp.org/archive/assoc-utils/2022-11-06/assoc-utils-20221106-git.tgz 3346 31f7e9581f26f46e3a1faf8054a1b9e3 47726262f7d343bd4e1487213512c94447325c24 assoc-utils-20221106-git assoc-utils-test.asd assoc-utils.asd -asteroids http://beta.quicklisp.org/archive/asteroids/2019-10-07/asteroids-20191007-git.tgz 3522066 e6956f404d402140e6573e24d849fc7d 89a44fb3225d6525e4bd26d20992a10ae2a0917a asteroids-20191007-git asteroids.asd -astonish http://beta.quicklisp.org/archive/astonish/2021-01-24/astonish-20210124-git.tgz 15247 916d460e9a7245bae98f7b6dd0624096 cc4a3529a123420f92d3ec89b0925b74435d0750 astonish-20210124-git astonish.asd -async-process http://beta.quicklisp.org/archive/async-process/2021-05-31/async-process-20210531-git.tgz 309213 c382958d8638e1862c82b8815ac29a5a 026520b995abd94284df9c9737dedd9008781686 async-process-20210531-git src/async-process.asd -atdoc http://beta.quicklisp.org/archive/atdoc/2012-03-05/atdoc-20120305-git.tgz 36850 e9c40fd27b136fd9db0d0f13dc7d51a7 e60e3ca611b8eb9ff908091482932c14a119066a atdoc-20120305-git atdoc.asd example/blocks-world.asd -atomics http://beta.quicklisp.org/archive/atomics/2021-06-30/atomics-20210630-git.tgz 8265 25ab51fdd4d325ec6ca450037d4cbb3f 4afd3410480a8d7f3341576f37b9af9c8200bc32 atomics-20210630-git atomics-test.asd atomics.asd -audio-tag http://beta.quicklisp.org/archive/audio-tag/2021-05-31/audio-tag-20210531-git.tgz 10075 b6830b2edb7c5ca12bd090e351b8c408 014212d5271772cbde7b51c8c4b4a029cc5c49ba audio-tag-20210531-git audio-tag.asd -authenticated-encryption http://beta.quicklisp.org/archive/authenticated-encryption/2018-10-18/authenticated-encryption-20181018-git.tgz 3639 02feacbc3a7b22144c368c498d5c4376 e966e0e3779ca5769c995cf4dc16e241c708a37f authenticated-encryption-20181018-git authenticated-encryption-test.asd authenticated-encryption.asd -auto-restart http://beta.quicklisp.org/archive/auto-restart/2022-11-06/auto-restart-20221106-git.tgz 9648 3ba908d56d0b9c2c2303dc0bb53e9d1c 9a3dc452410014bd161b0b395ddb375f97c84126 auto-restart-20221106-git auto-restart.asd -autoexport http://beta.quicklisp.org/archive/autoexport/2021-10-20/autoexport-20211020-git.tgz 2029 120310ec516c312fe9c3beb0748725f2 ab588be898104c35422832e55470fb95c0fa0ff6 autoexport-20211020-git autoexport.asd -avatar-api http://beta.quicklisp.org/archive/avatar-api/2015-06-08/avatar-api-20150608-git.tgz 2129 52a2e667536e10f80124ae2436f5d9a6 9fda0ec095f9fbdb8073605703d792a0eb3e8398 avatar-api-20150608-git avatar-api-test.asd avatar-api.asd -avl-tree http://beta.quicklisp.org/archive/avl-tree/2022-07-07/avl-tree-20220707-git.tgz 3953 7ab19b2c7b65ee678af10e4ccb9d4623 ec3e3cb1b0216220cb887bae7ecb236c562cc2e0 avl-tree-20220707-git avl-tree.asd -aws-foundation http://beta.quicklisp.org/archive/aws-foundation/2018-07-11/aws-foundation-20180711-git.tgz 4880 1cc177097ef8968147370f9970f04174 a973090f169db7cbacba714b68499f442b084902 aws-foundation-20180711-git aws-foundation.asd -aws-sdk-lisp http://beta.quicklisp.org/archive/aws-sdk-lisp/2023-02-15/aws-sdk-lisp-20230215-git.tgz 3954828 c649347f65a0d75294610d4ec2ffbbac dc4f0896bd7b91659dd49f1f1d91e9f995d55e2b aws-sdk-lisp-20230215-git aws-sdk.asd -aws-sign4 http://beta.quicklisp.org/archive/aws-sign4/2020-12-20/aws-sign4-20201220-git.tgz 35606 52b5e933857d6fcd6d9ae09d96749994 670ce82da4d18c9f30c13ae086246e14fd530e9d aws-sign4-20201220-git aws-sign4.asd -ayah-captcha http://beta.quicklisp.org/archive/ayah-captcha/2018-02-28/ayah-captcha-20180228-git.tgz 4660 396998f1fc484ded0afe3209ff00a380 59257d29def50e9701cdef4d34f13242cc85db4b ayah-captcha-20180228-git ayah-captcha.asd demo/ayah-captcha-demo.asd -babel http://beta.quicklisp.org/archive/babel/2023-02-14/babel-20230214-git.tgz 273967 7deba1b454acd18cabd21b43a0cc8778 38cea7fb441910001a5688c6e96ea38ae0428494 babel-20230214-git babel-streams.asd babel-tests.asd babel.asd -base-blobs http://beta.quicklisp.org/archive/base-blobs/2020-10-16/base-blobs-stable-git.tgz 3079693 7a1c3235949ef927220323889dce7249 8f7937f45ea5d3a21575fbf1040324ed215cbb8c base-blobs-stable-git base-blobs.asd -base64 http://beta.quicklisp.org/archive/base64/2018-10-18/base64-20181018-git.tgz 2014 e7d77c873d9111e6e0a6704422805b24 3d8e62f5d3313d09e1a9ecd8d66f25b24eb58e73 base64-20181018-git base64.asd -basic-binary-ipc http://beta.quicklisp.org/archive/basic-binary-ipc/2021-12-09/basic-binary-ipc-20211209-git.tgz 58637 7f583c2411e886d3ddd4a90b37f3a9dc 3a0def3af86e1570ff7d37dd97306f3ad6cbf27d basic-binary-ipc-20211209-git basic-binary-ipc-tests.asd basic-binary-ipc.asd -bdef http://beta.quicklisp.org/archive/bdef/2023-02-14/bdef-20230214-git.tgz 19690 91e31521d3bc425774f99f75827d0e73 a6e21ca7bdf8dc0c610ab42e35f6fb344947b0ec bdef-20230214-git bdef.asd -beast http://beta.quicklisp.org/archive/beast/2021-10-20/beast-20211020-hg.tgz 12339 a088a4e43b030e5ff48e562e94b80db7 1e373942753fe2895c3b3b34877d91e320c7fb7d beast-20211020-hg beast.asd -beirc http://beta.quicklisp.org/archive/beirc/2015-05-05/beirc-20150505-git.tgz 27301 50b1ea2e799d918ee68ff607f2ed7c98 091f2c11d2b297704101697235a411841ceb23ad beirc-20150505-git beirc.asd -big-string http://beta.quicklisp.org/archive/big-string/2019-03-07/big-string-20190307-hg.tgz 3949 bdffed5d0ef77e065911aba09e1bdf8c 5489c493ce7ca3c482880797a0d80c9c84e91384 big-string-20190307-hg big-string.asd -bike http://beta.quicklisp.org/archive/bike/2022-07-07/bike-20220707-git.tgz 78962 17cd85f35b856d28aa04d23fbc79f449 f5a670efd5302c0171e5c68744058c289e26e3f0 bike-20220707-git bike-examples.asd bike-internals.asd bike-tests.asd bike.asd -binary-io http://beta.quicklisp.org/archive/binary-io/2020-10-16/binary-io-20201016-git.tgz 9283 cc19c739c754326ce39f668c3edd603d 5b60a4449b7b4285c20c9fa33460f4eb2f5c7a97 binary-io-20201016-git binary-io.asd -binary-parser http://beta.quicklisp.org/archive/binary-parser/2023-02-14/binary-parser-20230214-git.tgz 2492 40f1b9846aa74640c5080bf6a8e954d7 a3570b0e23f6484cfca9f3e419fbc61c280c43b4 binary-parser-20230214-git binary-parser.asd -binary-search-tree http://beta.quicklisp.org/archive/binary-search-tree/2022-07-07/binary-search-tree-20220707-git.tgz 3254 fb5752dfe2131214c386706e6117f820 5f2558000a5fa12c88316f309d3791d627f0018e binary-search-tree-20220707-git binary-search-tree.asd -binary-types http://beta.quicklisp.org/archive/binary-types/2013-06-15/binary-types-20130615-git.tgz 21337 e26f69cddf40a07beb89d9066830c44a 2f1a13a9ef75be93d53cf55d7c4c07260a620c3e binary-types-20130615-git binary-types.asd -binascii http://beta.quicklisp.org/archive/binascii/2015-07-09/binascii-20150709-git.tgz 196802 23f4db8372bd521725dd78dd667c2be1 e02502e8146770e87fa5b6e461b7729ee1117ad2 binascii-20150709-git binascii.asd -binding-arrows http://beta.quicklisp.org/archive/binding-arrows/2021-06-30/binding-arrows-20210630-git.tgz 12131 395c745f69dfec48737fb43fc931072a e6fc30da4383db57dec5db83864b5b4a24f111f0 binding-arrows-20210630-git binding-arrows.asd -binfix http://beta.quicklisp.org/archive/binfix/2019-08-13/binfix-20190813-git.tgz 103896 916f3d55cf63c374ff9afacf03f9e9cc b3848eabd74026fd5a24d290bff94cdacd7d6dd3 binfix-20190813-git binfix.asd -binomial-heap http://beta.quicklisp.org/archive/binomial-heap/2013-04-20/binomial-heap-20130420-git.tgz 6211 ca40cb01b88a3fe902cc4cc25fb2d242 81583c3945e9f392cb8943713ed18724f72296f2 binomial-heap-20130420-git binomial-heap.asd -binpack http://beta.quicklisp.org/archive/binpack/2023-02-14/binpack-20230214-git.tgz 67476 d0123719a5a384ca424abae1014fc798 ebb4fbf971896e6b9abd7438c3a044e0505430ec binpack-20230214-git binpack-test.asd binpack.asd -birch http://beta.quicklisp.org/archive/birch/2022-02-20/birch-20220220-git.tgz 20542 d7b94daa0f1851bae5acdda905d589da b07baf6e919e6ab2ed540da9f1a17b22b0194472 birch-20220220-git birch.asd birch.test.asd -bit-ops http://beta.quicklisp.org/archive/bit-ops/2018-02-28/bit-ops-20180228-git.tgz 7131 487abc6e8afc586eb96300931a43d7be 923abf5d89d48ea17333f812c9c4bc1ab3092d90 bit-ops-20180228-git bit-ops.asd bit-ops.test.asd -bit-smasher http://beta.quicklisp.org/archive/bit-smasher/2022-11-06/bit-smasher-20221106-git.tgz 9053 516aac75a3ca28c5d7f7c5d2fd4683bc 8552278fad19ed76274364f37ba945999b600af6 bit-smasher-20221106-git bit-smasher-test.asd bit-smasher.asd -bitfield http://beta.quicklisp.org/archive/bitfield/2021-12-30/bitfield-20211230-git.tgz 6978 dcd68bdb6892f03bd1dbb17fb6a018c8 f9c2389f2b34e76652144ad95887111d59ff07ec bitfield-20211230-git code/bitfield.asd -bitfield-schema http://beta.quicklisp.org/archive/bitfield-schema/2012-01-07/bitfield-schema-20120107-git.tgz 6659 fac865d5c6379fd8e4a8526b99ec0662 5b4bf17a55e13ed80e657a545b9ea1ca5ceb77ec bitfield-schema-20120107-git bitfield-schema.asd -bitio http://beta.quicklisp.org/archive/bitio/2022-02-20/bitio-20220220-git.tgz 20937 05e53d3beed1200433f39106db8cc4c3 76d1eeb13197363c4a1715de9e4c4704e23c7781 bitio-20220220-git bitio.asd -bk-tree http://beta.quicklisp.org/archive/bk-tree/2013-04-20/bk-tree-20130420-git.tgz 21425 5ae53564f2a64abdc1424a054f965485 e0690274745029d8135d91abcdb18598e60e2999 bk-tree-20130420-git bk-tree.asd -bknr-datastore http://beta.quicklisp.org/archive/bknr-datastore/2022-02-20/bknr-datastore-20220220-git.tgz 630242 df1d3dd090e0f88ec0991c74d9872527 45b04866cea0ea3743cb018ed557dd36b97f1695 bknr-datastore-20220220-git src/bknr.data.impex.asd src/bknr.datastore.asd src/bknr.impex.asd src/bknr.indices.asd src/bknr.skip-list.asd src/bknr.utils.asd src/bknr.xml.asd -bknr-web http://beta.quicklisp.org/archive/bknr-web/2014-07-13/bknr-web-20140713-git.tgz 172044 e867c9d79b03ea02d3e8af6d5d4a1fd7 80c17f624bf44065d7992880117d8a2373cf6744 bknr-web-20140713-git modules/bknr.modules.asd modules/spider/leech.asd src/bknr.web.asd src/html-match/html-match.asd -black-tie http://beta.quicklisp.org/archive/black-tie/2022-07-07/black-tie-20220707-git.tgz 13783 9db759d346da259a336e656fa978adeb b06e4726fc01461e4073eb0584c21644b35558fc black-tie-20220707-git black-tie.asd -blackbird http://beta.quicklisp.org/archive/blackbird/2022-11-06/blackbird-20221106-git.tgz 12734 61e1103e5fa158485b11abf491e41417 d06ad3be5b9cf79694114945f36f506207fc6f22 blackbird-20221106-git blackbird-test.asd blackbird.asd -bnf http://beta.quicklisp.org/archive/bnf/2022-02-20/bnf-20220220-git.tgz 4209 bbe941af9603e210dcc8da1a2c52a758 684c928911467941546e798661338e373ccb840f bnf-20220220-git bnf.asd spec/bnf.test.asd -bobbin http://beta.quicklisp.org/archive/bobbin/2020-10-16/bobbin-20201016-hg.tgz 6329 d1153e0b4a8367d2bd2999d4b9d4ffc5 8e5f5d627e6bb104b54de473fb5abe916d1d680e bobbin-20201016-hg bobbin.asd -bodge-blobs-support http://beta.quicklisp.org/archive/bodge-blobs-support/2020-10-16/bodge-blobs-support-stable-git.tgz 2376 14151bc3bd37194b6d16a279e423ce03 f57f21f32160247bc3f674a73c7c165cdcc663f7 bodge-blobs-support-stable-git bodge-blobs-support.asd -bodge-chipmunk http://beta.quicklisp.org/archive/bodge-chipmunk/2020-10-16/bodge-chipmunk-stable-git.tgz 573748 d3d0ce97b33380a19f48b47c3735c37e f72a179ba3d13e849e1b61877fab83c0d99711e1 bodge-chipmunk-stable-git bodge-chipmunk.asd -bodge-concurrency http://beta.quicklisp.org/archive/bodge-concurrency/2020-10-16/bodge-concurrency-stable-git.tgz 4049 79a73e12c8c4a70871067f68dade5b9e bd81a970496d4163fe1394dde017faaa45681dd3 bodge-concurrency-stable-git bodge-concurrency.asd -bodge-glad http://beta.quicklisp.org/archive/bodge-glad/2020-10-16/bodge-glad-stable-git.tgz 55615 8696869c8bdaf569287ef8f1f31f3f15 d4f3c4bd83a053d7e9371a194a9cdacf31d35a12 bodge-glad-stable-git bodge-glad.asd -bodge-glfw http://beta.quicklisp.org/archive/bodge-glfw/2020-10-16/bodge-glfw-stable-git.tgz 806212 59b75f4c658ed119447fc68dcd7dc545 6d0e70f5fc86b33bb848db7041c25a776d8ea637 bodge-glfw-stable-git bodge-glfw.asd -bodge-heap http://beta.quicklisp.org/archive/bodge-heap/2020-10-16/bodge-heap-stable-git.tgz 3310 0f641e0438af5c6d9fd40199a2e663b8 5ef371ace55126b39d9be22d6415ea94cad524c3 bodge-heap-stable-git bodge-heap.asd -bodge-host http://beta.quicklisp.org/archive/bodge-host/2021-12-09/bodge-host-stable-git.tgz 11177 fa34933a06300625a432c29778c6ae61 67db398fc17c61936ce402a7af8a6d723a77dcfb bodge-host-stable-git bodge-host.asd -bodge-libc-essentials http://beta.quicklisp.org/archive/bodge-libc-essentials/2020-10-16/bodge-libc-essentials-stable-git.tgz 2264 91cd137de7bc7c81014e057320b15be6 f4e6073aff1f377285054ff52d1efae5a046b18c bodge-libc-essentials-stable-git bodge-libc-essentials.asd -bodge-math http://beta.quicklisp.org/archive/bodge-math/2020-10-16/bodge-math-stable-git.tgz 6347 5a37cba2138f762ac18c7819b082bae3 595bfd536066837202344127d1299fca02e78c71 bodge-math-stable-git bodge-math.asd -bodge-memory http://beta.quicklisp.org/archive/bodge-memory/2020-10-16/bodge-memory-stable-git.tgz 2712 40afeaca44d7157599420e1821743c34 9858f8a1f18d58a12755c79e88399d60c4de7b87 bodge-memory-stable-git bodge-memory.asd -bodge-nanovg http://beta.quicklisp.org/archive/bodge-nanovg/2020-10-16/bodge-nanovg-stable-git.tgz 2130841 56467b37c015a2207d72e52254a6ff1f f731ed3414124e777ffbc190baab60da9e505a70 bodge-nanovg-stable-git bodge-nanovg.asd -bodge-nuklear http://beta.quicklisp.org/archive/bodge-nuklear/2020-10-16/bodge-nuklear-stable-git.tgz 2014134 5f48d8782dbd8b30bfd3dbc664d3f412 29ad11538c79aa3a67feea7fde09d558927df4af bodge-nuklear-stable-git bodge-nuklear.asd -bodge-ode http://beta.quicklisp.org/archive/bodge-ode/2020-10-16/bodge-ode-stable-git.tgz 2330922 67af727dd796765c220516e430d1ae02 a45886fcaddce838dfad7822077f33ead66fbdf1 bodge-ode-stable-git bodge-ode.asd -bodge-openal http://beta.quicklisp.org/archive/bodge-openal/2020-10-16/bodge-openal-stable-git.tgz 847505 8767b3f5b6247665659180c5559debe4 42f4dab30f0461b5175d9cef9e4c0c17871c4383 bodge-openal-stable-git bodge-openal.asd -bodge-queue http://beta.quicklisp.org/archive/bodge-queue/2020-10-16/bodge-queue-stable-git.tgz 2583 1fa840983aa191d81fee17de2f2fc1ed 9de215906b47296d6e890603ee3083a9c8188ef1 bodge-queue-stable-git bodge-queue.asd -bodge-sndfile http://beta.quicklisp.org/archive/bodge-sndfile/2020-10-16/bodge-sndfile-stable-git.tgz 3990428 087ac59a98cc6a5d85d10f5fd64008d7 5f6dad7f7b32affa25840bd96832838f621da339 bodge-sndfile-stable-git bodge-sndfile.asd -bodge-utilities http://beta.quicklisp.org/archive/bodge-utilities/2022-07-07/bodge-utilities-stable-git.tgz 7697 f107197acafedd38240392fbc7b11a49 1650543412386b218ca1bc3619b71f9849ba1335 bodge-utilities-stable-git bodge-utilities.asd -bordeaux-fft http://beta.quicklisp.org/archive/bordeaux-fft/2015-06-08/bordeaux-fft-20150608-http.tgz 13857 99bee7dc569e71f40783551c792295bd a0caf5c27a3c3734178472333279926177ffb23a bordeaux-fft-20150608-http bordeaux-fft.asd -bordeaux-threads http://beta.quicklisp.org/archive/bordeaux-threads/2022-07-07/bordeaux-threads-v0.8.8.tgz 3029861 28d2015e426a29b67aeccf7469021c3c 517bf464180fef2fe81f877b716dd6ede1bba331 bordeaux-threads-v0.8.8 bordeaux-threads.asd -bourbaki http://beta.quicklisp.org/archive/bourbaki/2011-01-10/bourbaki-20110110-http.tgz 133787 64d23b156e8cf295c76a144e6522749b c224635f433be2ab0e45fd2e0ec13c6d735751ab bourbaki-20110110-http bourbaki.asd -bp http://beta.quicklisp.org/archive/bp/2023-02-14/bp-20230214-git.tgz 80920 5d023423b072e023e4aebd6e33d2aa6c bcca970eb79bee1fc07969d9769327e61d086a95 bp-20230214-git bp.asd -bst http://beta.quicklisp.org/archive/bst/2022-11-06/bst-20221106-git.tgz 18634 4f0d375bce2ef4a3c89d0f40d69b3b53 d1f3a60bdd58d697f40429b19e352dc33c1ef5bd bst-20221106-git bst.asd -bt-semaphore http://beta.quicklisp.org/archive/bt-semaphore/2018-07-11/bt-semaphore-20180711-git.tgz 4185 f70c869eaf18e277056a16eb3a21fd4a 23d9c3966166a46e5c42bbdacab7a2f684bfcd0c bt-semaphore-20180711-git bt-semaphore-test.asd bt-semaphore.asd -btrie http://beta.quicklisp.org/archive/btrie/2014-07-13/btrie-20140713-git.tgz 6389 1fdf3a46133861b59f7a1063f5fe6696 9d9e506112d4b87225944df068090c68d4b2c563 btrie-20140713-git btrie.asd -bubble-operator-upwards http://beta.quicklisp.org/archive/bubble-operator-upwards/2012-11-25/bubble-operator-upwards-1.0.tgz 2943 390c6f1aad23154fc613a1941ab0ee90 e5c62a9e32928fc4e4d38f9949acd9b30b0a7187 bubble-operator-upwards-1.0 bubble-operator-upwards.asd -buildapp http://beta.quicklisp.org/archive/buildapp/2015-12-18/buildapp-1.5.6.tgz 16389 b6c1450b19370d7e4ac21bf565b62c89 33832bc72acbd9b3c4a097b054bd0de1921b873a buildapp-1.5.6 buildapp.asd -buildnode http://beta.quicklisp.org/archive/buildnode/2017-04-03/buildnode-20170403-git.tgz 66725 b917f0d6c20489febbef0d5b954c350d dfe5d7aec7c73eb6797069f1d5b7fdc2d60fb610 buildnode-20170403-git buildnode-excel.asd buildnode-html5.asd buildnode-kml.asd buildnode-xhtml.asd buildnode-xul.asd buildnode.asd -burgled-batteries http://beta.quicklisp.org/archive/burgled-batteries/2016-08-25/burgled-batteries-20160825-git.tgz 42019 d20613a907e062fd32128fe25aead746 3124f87459f2bf2ad793179593df364aa383c3b1 burgled-batteries-20160825-git burgled-batteries-tests.asd burgled-batteries.asd -burgled-batteries.syntax http://beta.quicklisp.org/archive/burgled-batteries.syntax/2021-05-31/burgled-batteries.syntax-20210531-git.tgz 8237 bbee40c9fb275fa8e9e17f78e8f155b8 d239c8d9d3579d14f8905765be6caa9320b2816d burgled-batteries.syntax-20210531-git burgled-batteries.syntax-test.asd burgled-batteries.syntax.asd -bytecurry.asdf-ext http://beta.quicklisp.org/archive/bytecurry.asdf-ext/2015-05-05/bytecurry.asdf-ext-20150505-git.tgz 2750 9fb33756e2edcb3ab0074dd8c32b73e4 32af33d3211f1d3aa8cb3a32d125ee5e49ae4236 bytecurry.asdf-ext-20150505-git bytecurry.asdf-ext.asd -bytecurry.mocks http://beta.quicklisp.org/archive/bytecurry.mocks/2020-03-25/bytecurry.mocks-20200325-git.tgz 4189 9a0dfcbd9ead50439763674cd9fea60c 22bde407990ff5eecc36b47f3500716ef4de4811 bytecurry.mocks-20200325-git bytecurry.mocks.asd -c2ffi-blob http://beta.quicklisp.org/archive/c2ffi-blob/2020-10-16/c2ffi-blob-stable-git.tgz 31810192 c190cf57ac9b9fc4bee219269f478940 d4ac9c0ff84cb336d9f662c890ce80ac33b81182 c2ffi-blob-stable-git c2ffi-blob.asd -cacau http://beta.quicklisp.org/archive/cacau/2020-06-10/cacau-20200610-git.tgz 316796 9cfdc54a8168b70f0dd9a7d1ac99ec02 6d047cae0a43c3cc2a695ee06b481201091241f8 cacau-20200610-git cacau-asdf.asd cacau-test.asd cacau.asd examples/asdf-intregration/cacau-examples-asdf-integration-test.asd examples/asdf-intregration/cacau-examples-asdf-integration.asd -cache-while http://beta.quicklisp.org/archive/cache-while/2021-08-07/cache-while-20210807-git.tgz 1555 732b05f16109d0120c0616c1b7ab200f 760207de6a47fe0e26b31cdaf242de0f729c809d cache-while-20210807-git cache-while.asd -cacle http://beta.quicklisp.org/archive/cacle/2019-05-21/cacle-20190521-git.tgz 16699 8ea845a295a43d0794dc43c22d36ec2c edfe4bf4dc852fac85daf536ae908816aa269d28 cacle-20190521-git cacle.asd -calispel http://beta.quicklisp.org/archive/calispel/2017-08-30/calispel-20170830-git.tgz 28640 1fba6e4b2055f5d1f0a78387e29552b1 1035e7249ad45cc5fb7aa5d6e362b0a80fefb7b8 calispel-20170830-git calispel.asd -cambl http://beta.quicklisp.org/archive/cambl/2018-12-10/cambl-20181210-git.tgz 45991 e5857aaf953cfdb3ebb1c4c49a02e92c 8d9ad22f71869a88fa184ae7e2510e73ff7c669e cambl-20181210-git cambl-test.asd cambl.asd fprog.asd -can http://beta.quicklisp.org/archive/can/2018-03-28/can-20180328-git.tgz 2565 6ef0d28d5aa6bc2936078cc116b70f39 0e6ad110295f63dba70e4f4d5f467734c8b52e20 can-20180328-git can-test.asd can.asd -canonicalized-initargs http://beta.quicklisp.org/archive/canonicalized-initargs/2021-04-11/canonicalized-initargs_2.0.tgz 7268 1da53e811cdc982f3d4c208b48440e86 cecd08ca17ea43dbc1850e5bb807925e22796399 canonicalized-initargs_2.0 canonicalized-initargs.asd tests/canonicalized-initargs_tests.asd -caramel http://beta.quicklisp.org/archive/caramel/2013-04-20/caramel-20130420-git.tgz 4745 b6e6020c467971a5118dd7dba8276270 5d89e63be813fb25e31975f4d42db250aa2aecb2 caramel-20130420-git caramel.asd -cardiogram http://beta.quicklisp.org/archive/cardiogram/2021-10-20/cardiogram-20211020-git.tgz 11619 5784e0a9cb33e8b03dade402e02f3592 c97938b979095994667ecaf4362a886c21492b57 cardiogram-20211020-git cardiogram.asd example/cardioex.asd -cari3s http://beta.quicklisp.org/archive/cari3s/2020-03-25/cari3s-20200325-git.tgz 25096 393eb58f2f0e592f324d71a50c08f004 ed6be61d844c7a624978e7489bb62aaa19cc4e45 cari3s-20200325-git cari3s.asd -carrier http://beta.quicklisp.org/archive/carrier/2018-12-10/carrier-20181210-git.tgz 3881 f831e7a8f590a9c634eaacdc8f145fe5 d2f6c847ae390bf95b2b392f562fbe17e6530563 carrier-20181210-git carrier.asd -cartesian-product-switch http://beta.quicklisp.org/archive/cartesian-product-switch/2012-09-09/cartesian-product-switch-2.0.tgz 4502 0f48da4205f8cd3b201eae1e07131fcd 82200c07f66d5d80ebeb62388108699e03e27f49 cartesian-product-switch-2.0 cartesian-product-switch.asd -caveman http://beta.quicklisp.org/archive/caveman/2022-11-06/caveman-20221106-git.tgz 19305 d9a8e73fd4f9491806313d49b9f14166 89b0cd4720778dd458678901c32a9ef10b83fbc5 caveman-20221106-git caveman-middleware-dbimanager.asd caveman2-db.asd caveman2-test.asd caveman2.asd -caveman2-widgets http://beta.quicklisp.org/archive/caveman2-widgets/2018-02-28/caveman2-widgets-20180228-git.tgz 115350 960ba92d1ac86f49ce553bffd7136b25 446246d6fb1f1a2891175b7e88f45704fa72c728 caveman2-widgets-20180228-git caveman2-widgets-test.asd caveman2-widgets.asd -caveman2-widgets-bootstrap http://beta.quicklisp.org/archive/caveman2-widgets-bootstrap/2018-02-28/caveman2-widgets-bootstrap-20180228-git.tgz 4962 b6fc04d5468c9b3d6a502024eaaa8750 7ce56c2e7c5eb75f32208c90695e44a3006c10be caveman2-widgets-bootstrap-20180228-git caveman2-widgets-bootstrap-test.asd caveman2-widgets-bootstrap.asd -ccl-compat http://beta.quicklisp.org/archive/ccl-compat/2017-11-30/ccl-compat-20171130-git.tgz 7068 3229bd0be4ffa2a90e882433253a0100 fc117e973fdd6c08994c81baf99e5cc025877654 ccl-compat-20171130-git ccl-compat.asd -ccldoc http://beta.quicklisp.org/archive/ccldoc/2020-04-27/ccldoc-20200427-git.tgz 47058 27125f8c5fc4e77ed05d8b98c82c9d1a 6b9aa6ee639c5b054c84e6236306b5dd1d0a9189 ccldoc-20200427-git source/ccldoc-libraries.asd source/ccldoc.asd -cells http://beta.quicklisp.org/archive/cells/2023-02-14/cells-20230214-git.tgz 20827903 e776a556cf9b7b69c90ef3890faa55c1 e06606c6a160a3b6092d6d09e217b4876ae1eb8b cells-20230214-git cells.asd -cephes.cl http://beta.quicklisp.org/archive/cephes.cl/2022-11-06/cephes.cl-20221106-git.tgz 772297 271e2fa8cce16ad2318be8b66a075b93 90240be6e893076c0dcb9d3913f402cd2cefaca2 cephes.cl-20221106-git cephes.asd -cepl http://beta.quicklisp.org/archive/cepl/2021-02-28/cepl-release-quicklisp-d1a10b6c-git.tgz 436157 43cba4741a3ae9a738a7f7134cb4f156 aa98687dd705f2b00485cdd7ba40a4a1f45901b4 cepl-release-quicklisp-d1a10b6c-git cepl.asd cepl.build.asd -cepl.camera http://beta.quicklisp.org/archive/cepl.camera/2018-02-28/cepl.camera-release-quicklisp-1292212a-git.tgz 3590 ea3319909269d1defe329ae8e126a314 6ef8df0aa73f50df2b63f462301c0bf9331d6007 cepl.camera-release-quicklisp-1292212a-git cepl.camera.asd -cepl.devil http://beta.quicklisp.org/archive/cepl.devil/2018-02-28/cepl.devil-release-quicklisp-ea5f8514-git.tgz 1930 3ca7236c320de5b217c7cd924bf8e063 6b6f880612fd28a8573cc6b4795bfa663131cf83 cepl.devil-release-quicklisp-ea5f8514-git cepl.devil.asd -cepl.drm-gbm http://beta.quicklisp.org/archive/cepl.drm-gbm/2019-05-21/cepl.drm-gbm-20190521-git.tgz 4081 1303fc696e495ec12e2ece9ee4dc6344 b74136275913799eaae407b967c32eac5baec46c cepl.drm-gbm-20190521-git cepl.drm-gbm.asd -cepl.glop http://beta.quicklisp.org/archive/cepl.glop/2018-02-28/cepl.glop-release-quicklisp-8ec09801-git.tgz 2915 33579536bbfc7037efe4ee830ecaed5f b72f80288063b5d214cf27257d1bcdf8b703878b cepl.glop-release-quicklisp-8ec09801-git cepl.glop.asd -cepl.sdl2 http://beta.quicklisp.org/archive/cepl.sdl2/2018-02-28/cepl.sdl2-release-quicklisp-6da5a030-git.tgz 4119 8e30fec5d59a4cf8f21525d1cdb9f7d3 61e4d1868d907fc092236d7f6ad8b36b685b181c cepl.sdl2-release-quicklisp-6da5a030-git cepl.sdl2.asd -cepl.sdl2-image http://beta.quicklisp.org/archive/cepl.sdl2-image/2018-02-28/cepl.sdl2-image-release-quicklisp-94a77649-git.tgz 2449 7e83fbc6868c8a13579dd590377c15fa c784ddba948e3260da76df22b18b7cc41fba7fda cepl.sdl2-image-release-quicklisp-94a77649-git cepl.sdl2-image.asd -cepl.sdl2-ttf http://beta.quicklisp.org/archive/cepl.sdl2-ttf/2018-01-31/cepl.sdl2-ttf-release-quicklisp-11b498a3-git.tgz 2404 d5e31a84c08ec2bf453a0a9cf00fa4e9 7c4640f10b7220bee04db63eef4cbf6ecae2f757 cepl.sdl2-ttf-release-quicklisp-11b498a3-git cepl.sdl2-ttf.asd -cepl.skitter http://beta.quicklisp.org/archive/cepl.skitter/2018-02-28/cepl.skitter-release-quicklisp-f52b9240-git.tgz 1755 64a97da55e6074842428311cafc99bed 63f431bc9eaa088c5c77dda2f4d983c9aa17bfdb cepl.skitter-release-quicklisp-f52b9240-git cepl.skitter.glop.asd cepl.skitter.sdl2.asd -cepl.spaces http://beta.quicklisp.org/archive/cepl.spaces/2018-03-28/cepl.spaces-release-quicklisp-c7f83f26-git.tgz 24762 53d77882ea7a52043103f436138b5496 765133bddb709078ff096c43c9ff4d98cf8fabe2 cepl.spaces-release-quicklisp-c7f83f26-git cepl.spaces.asd -ceramic http://beta.quicklisp.org/archive/ceramic/2021-08-07/ceramic-20210807-git.tgz 86784 07197067eedb1db6de1e27d74f72a495 79c7d3bfc3315beb09afa2f9fcc36f08f54e0af8 ceramic-20210807-git ceramic.asd t/app/ceramic-test-app.asd -cerberus http://beta.quicklisp.org/archive/cerberus/2022-11-06/cerberus-20221106-git.tgz 1718735 324301e8c8784f6dd94942fad3797c81 430e102fc3926d67eb0c69eab66328095c68bcdb cerberus-20221106-git cerberus.asd -cesdi http://beta.quicklisp.org/archive/cesdi/2020-07-15/cesdi_1.0.1.tgz 6265 f98c6571658b61ac2c83125917250545 81c12dc086fb0c2f75ea1f8da8bdc027835736f2 cesdi_1.0.1 cesdi.asd tests/cesdi_tests.asd -cffi http://beta.quicklisp.org/archive/cffi/2023-02-14/cffi-20230214-git.tgz 262992 e113997d4edbaed2d5bc4fa751d00ef9 24eed79e9d4d7901357d43d0ba61c0986e830a69 cffi-20230214-git cffi-examples.asd cffi-grovel.asd cffi-libffi.asd cffi-tests.asd cffi-toolchain.asd cffi-uffi-compat.asd cffi.asd -cffi-c-ref http://beta.quicklisp.org/archive/cffi-c-ref/2020-10-16/cffi-c-ref-stable-git.tgz 4291 b97790196796d5231f13ae4b57059214 6bc0609f487c3d5d566c5f2e078361e3418a35dc cffi-c-ref-stable-git cffi-c-ref.asd -chain http://beta.quicklisp.org/archive/chain/2021-12-09/chain-20211209-git.tgz 1011 1663332e4a6262e9019a2397da3a38f3 25922dd7187baa100341af0b0ce2bc7ae7f387fd chain-20211209-git chain.asd -chameleon http://beta.quicklisp.org/archive/chameleon/2022-02-20/chameleon-v2.1.1.tgz 5863 895418e7a107ab0617627fbe578c5e4e 4cb3d3166e9dd801ddd66a2931a12dbc31624367 chameleon-v2.1.1 chameleon.asd -chancery http://beta.quicklisp.org/archive/chancery/2020-10-16/chancery-20201016-hg.tgz 15393 dd75eddc0307826b7035ff17abac679e e0a0e4441f2807a657d669ce84920556b142ca83 chancery-20201016-hg chancery.asd chancery.test.asd -changed-stream http://beta.quicklisp.org/archive/changed-stream/2013-01-28/changed-stream-20130128-git.tgz 233624 08dfb9234851b9bbe3d2b774efc809b6 153aecf366d19d2091f7e4c8a4aa22293cd0a66b changed-stream-20130128-git changed-stream.asd changed-stream.test.asd -chanl http://beta.quicklisp.org/archive/chanl/2021-04-11/chanl-20210411-git.tgz 27608 efaa5705b5feaa718290d25a95e2a684 0926e91860356aa2b291a418782e1a22cdf45d29 chanl-20210411-git chanl.asd -cheat-js http://beta.quicklisp.org/archive/cheat-js/2012-10-13/cheat-js-20121013-git.tgz 27000 d23fc2a4dfd3a0ce8c7fb42c773feb2d 288b962ed29320e097d0bf871dcd0189aa5de94d cheat-js-20121013-git cheat-js.asd -check-bnf http://beta.quicklisp.org/archive/check-bnf/2022-07-07/check-bnf-20220707-git.tgz 14160 a7bdaad354f4b3a094c0a3369bbbe1a2 91a97257278590771724c7cbab8a94c83f39c65f check-bnf-20220707-git check-bnf.asd spec/check-bnf.test.asd -check-it http://beta.quicklisp.org/archive/check-it/2015-07-09/check-it-20150709-git.tgz 19988 0baae55e5a9c8c884202cbc51e634c42 49933b16fc112096734546df0d91bb76bef3044e check-it-20150709-git check-it.asd -checkl http://beta.quicklisp.org/archive/checkl/2018-03-28/checkl-20180328-git.tgz 8294 a5050385e2ef2977ba2112ea88128535 aca1cf3498cb81a443772c0bc306b11e037d5dd6 checkl-20180328-git checkl-docs.asd checkl-test.asd checkl.asd -chemical-compounds http://beta.quicklisp.org/archive/chemical-compounds/2011-10-01/chemical-compounds-1.0.2.tgz 5119 05d45cf42a61e9dabab409d345b778c1 1fc077075d4b580f4b363a131f670bab602e8886 chemical-compounds-1.0.2 chemical-compounds.asd -chillax http://beta.quicklisp.org/archive/chillax/2015-03-02/chillax-20150302-git.tgz 207342 f173c34bb131fe6192f5c6c87bf1be7e 860cd942dd71757d22f1b81d24919e36cca850c5 chillax-20150302-git chillax.asd chillax.core.asd chillax.jsown.asd chillax.view-server.asd chillax.yason.asd -chipmunk-blob http://beta.quicklisp.org/archive/chipmunk-blob/2020-10-16/chipmunk-blob-stable-git.tgz 722617 289c1b1ec15f4357595966ba19df64e5 30464528704e2f69b8cd95eb0dabf4c69fb3b53a chipmunk-blob-stable-git chipmunk-blob.asd -chipz http://beta.quicklisp.org/archive/chipz/2022-02-20/chipz-20220220-git.tgz 37175 b14d05a5a12c3e5cf4bf50e98c679fd7 0305f9a94d9ba92516d4552f35b7a6e15256b0a7 chipz-20220220-git chipz.asd -chirp http://beta.quicklisp.org/archive/chirp/2021-10-20/chirp-20211020-git.tgz 88205 965a8f391d8e997749257e9e80924f03 c9322faf479c1817f33bca9ae1fdab3a56530ede chirp-20211020-git chirp-core.asd chirp-dexador.asd chirp-drakma.asd chirp.asd -chlorophyll http://beta.quicklisp.org/archive/chlorophyll/2023-02-14/chlorophyll-20230214-git.tgz 6950 04edc4f484763aae4a5c9dab602e2ed1 fee8e86af1dfc3491b2f19acaacfd6f008d20f26 chlorophyll-20230214-git chlorophyll-test.asd chlorophyll.asd -chrome-native-messaging http://beta.quicklisp.org/archive/chrome-native-messaging/2015-03-02/chrome-native-messaging-20150302-git.tgz 1973 3fae36a2473eb7095d50f8472d31bd6c beeb53f51396f5fd05217c00b07306835a566943 chrome-native-messaging-20150302-git chrome-native-messaging.asd -chronicity http://beta.quicklisp.org/archive/chronicity/2019-02-02/chronicity-20190202-git.tgz 30517 43ca1a6e3f5f16f3c3fa8708aa6f8abb 8d561cd975aec6eceaabd245b8fc4e26f9450081 chronicity-20190202-git chronicity-test.asd chronicity.asd -chtml-matcher http://beta.quicklisp.org/archive/chtml-matcher/2011-10-01/chtml-matcher-20111001-git.tgz 9772 b78c982a080fa6264d0524f5aabb6440 c328ea450fd88170ce98235761bcd3973ce2fc1e chtml-matcher-20111001-git chtml-matcher.asd -chunga http://beta.quicklisp.org/archive/chunga/2022-11-06/chunga-20221106-git.tgz 20910 c992ac1d4cc33c37546bf47345e11bb8 439c5e9b4ebe022e15657b3d160f1959a168df04 chunga-20221106-git chunga.asd -ci http://beta.quicklisp.org/archive/ci/2023-02-14/ci-20230214-git.tgz 22502 91cfd629d5146f024a50b3ed11e36a46 1c54110b213e0d9a35b87c43078ffbe083d7909b ci-20230214-git 40ants-ci-tests.asd 40ants-ci.asd -ci-utils http://beta.quicklisp.org/archive/ci-utils/2022-11-06/ci-utils-20221106-git.tgz 18550 cb5f4a8997d8ca84442f4d30970390e6 56401f4a6b0510ff36b5aed32b24d0e3099cc0de ci-utils-20221106-git ci-utils-features.asd ci-utils.asd -ciao http://beta.quicklisp.org/archive/ciao/2023-02-15/ciao-20230215-git.tgz 7530 fe0de9cc2c9705bf7d6d4ac45ef4a74c 3910890bb7bd418686a7fc013b092a38cf0cff04 ciao-20230215-git ciao.asd -circular-streams http://beta.quicklisp.org/archive/circular-streams/2016-12-04/circular-streams-20161204-git.tgz 3335 2383f3b82fa3335d9106e1354a678db8 aaeec87552396bc112300d66e93905c546e2c0ec circular-streams-20161204-git circular-streams-test.asd circular-streams.asd -city-hash http://beta.quicklisp.org/archive/city-hash/2020-09-25/city-hash-20200925-git.tgz 33787 dd5a769949cb213dc9138e71cdf4431e 27ea6a0862e8090ebdfb73c599dffbf5c3700fb6 city-hash-20200925-git city-hash-test.asd city-hash.asd -cl+ssl http://beta.quicklisp.org/archive/cl+ssl/2023-02-14/cl+ssl-20230214-git.tgz 91812 2d82274c8ed984f3d1be43869f2e25ba 7356b29a174f77ab424b952e9a90b690c1eece7c cl+ssl-20230214-git cl+ssl.asd cl+ssl.test.asd -cl-6502 http://beta.quicklisp.org/archive/cl-6502/2021-10-20/cl-6502-20211020-git.tgz 71980 f0502522fbba255a8de5a04494265762 f55e04108665aa220401d15ec2b08b8cf6739e35 cl-6502-20211020-git cl-6502.asd -cl-abnf http://beta.quicklisp.org/archive/cl-abnf/2020-03-25/cl-abnf-20200325-git.tgz 8343 4d550c68017593ef5c5c0ef945e095e0 02ec1aaf88657f245033848b58f9b22cd51b37a5 cl-abnf-20200325-git abnf.asd -cl-abstract-classes http://beta.quicklisp.org/archive/cl-abstract-classes/2019-03-07/cl-abstract-classes-20190307-hg.tgz 4719 9f70affac8015d8fc4e29f16c642890e 9c691e814b9e541e024751edd4e3e26c87082b0b cl-abstract-classes-20190307-hg abstract-classes.asd singleton-classes.asd -cl-acronyms http://beta.quicklisp.org/archive/cl-acronyms/2015-03-02/cl-acronyms-20150302-git.tgz 927131 99e7304da8f6408227323fdab76e07db 695aaa263b152453e6f8130afb6cfcea1165a463 cl-acronyms-20150302-git cl-acronyms.asd -cl-advice http://beta.quicklisp.org/archive/cl-advice/2023-02-14/cl-advice-20230214-git.tgz 22859 f3fb9cd09a80276d8cc8d7d174a419aa d2f06884723dbb69ab1cb0524d0fcc65f5e61e51 cl-advice-20230214-git cl-advice-tests.asd cl-advice.asd -cl-algebraic-data-type http://beta.quicklisp.org/archive/cl-algebraic-data-type/2019-10-07/cl-algebraic-data-type-20191007-git.tgz 7396 022de40e52b252919ea9c7f77ab90435 eec9f2941bcad980c2f76a5f94df20f1f920c87f cl-algebraic-data-type-20191007-git cl-algebraic-data-type.asd -cl-all http://beta.quicklisp.org/archive/cl-all/2022-11-06/cl-all-20221106-git.tgz 5680 6e7033978bdce4b8d490b9f6bb3e8e4e a80d69fe7ef5f8a6207ab1eb138787101ca637fc cl-all-20221106-git cl-all.asd -cl-amqp http://beta.quicklisp.org/archive/cl-amqp/2019-10-08/cl-amqp-v0.4.1.tgz 58162 1867a1d1ecdf4606ed8c50d583b1b876 92e5c46f853154df29fb8e8a1a62bbbf23b34332 cl-amqp-v0.4.1 cl-amqp.asd cl-amqp.test.asd -cl-ana http://beta.quicklisp.org/archive/cl-ana/2022-07-07/cl-ana-20220707-git.tgz 599176 829cbfe76c264714cb0fe620835450fa cc2c05f00c2cef2c711ddc51ae277fef59aa7cad cl-ana-20220707-git array-utils/cl-ana.array-utils.asd binary-tree/cl-ana.binary-tree.asd calculus/cl-ana.calculus.asd cl-ana.asd clos-utils/cl-ana.clos-utils.asd columnar-table/cl-ana.columnar-table.asd csv-table/cl-ana.csv-table.asd error-propogation/cl-ana.error-propogation.asd file-utils/cl-ana.file-utils.asd fitting/cl-ana.fitting.asd functional-utils/cl-ana.functional-utils.asd generic-math/cl-ana.generic-math.asd gnuplot-interface/cl-ana.gnuplot-interface.asd gsl-cffi/cl-ana.gsl-cffi.asd hash-table-utils/cl-ana.hash-table-utils.asd hdf-cffi/cl-ana.hdf-cffi.asd hdf-table/cl-ana.hdf-table.asd hdf-typespec/cl-ana.hdf-typespec.asd hdf-utils/cl-ana.hdf-utils.asd histogram/cl-ana.histogram.asd int-char/cl-ana.int-char.asd linear-algebra/cl-ana.linear-algebra.asd list-utils/cl-ana.list-utils.asd lorentz/cl-ana.lorentz.asd macro-utils/cl-ana.macro-utils.asd makeres-block/cl-ana.makeres-block.asd makeres-branch/cl-ana.makeres-branch.asd makeres-graphviz/cl-ana.makeres-graphviz.asd makeres-macro/cl-ana.makeres-macro.asd makeres-progress/cl-ana.makeres-progress.asd makeres-table/cl-ana.makeres-table.asd makeres-utils/cl-ana.makeres-utils.asd makeres/cl-ana.makeres.asd map/cl-ana.map.asd math-functions/cl-ana.math-functions.asd memoization/cl-ana.memoization.asd ntuple-table/cl-ana.ntuple-table.asd package-utils/cl-ana.package-utils.asd pathname-utils/cl-ana.pathname-utils.asd plotting/cl-ana.plotting.asd quantity/cl-ana.quantity.asd reusable-table/cl-ana.reusable-table.asd serialization/cl-ana.serialization.asd spline/cl-ana.spline.asd statistical-learning/cl-ana.statistical-learning.asd statistics/cl-ana.statistics.asd string-utils/cl-ana.string-utils.asd symbol-utils/cl-ana.symbol-utils.asd table-utils/cl-ana.table-utils.asd table-viewing/cl-ana.table-viewing.asd table/cl-ana.table.asd tensor/cl-ana.tensor.asd typed-table/cl-ana.typed-table.asd typespec/cl-ana.typespec.asd -cl-annot http://beta.quicklisp.org/archive/cl-annot/2015-06-08/cl-annot-20150608-git.tgz 10039 35d8f79311bda4dd86002d11edcd0a21 31e415954f5e033907cd5d88ee4735e4ed940f12 cl-annot-20150608-git cl-annot.asd -cl-annot-prove http://beta.quicklisp.org/archive/cl-annot-prove/2015-09-23/cl-annot-prove-20150923-git.tgz 9244 d7ee8d5c35f1aaa036b77bbd1092b77c 25a765cde6977c027de5adf3067647623e96ba05 cl-annot-prove-20150923-git cl-annot-prove-test.asd cl-annot-prove.asd -cl-annot-revisit http://beta.quicklisp.org/archive/cl-annot-revisit/2022-11-06/cl-annot-revisit-20221106-git.tgz 35123 d88a764c6faa1b7ad3251bb6e3cec8ab ea75baa9b9645609d7bac80e34e3eaf50823c60d cl-annot-revisit-20221106-git cl-annot-revisit-compat.asd cl-annot-revisit-test.asd cl-annot-revisit.asd -cl-anonfun http://beta.quicklisp.org/archive/cl-anonfun/2011-12-03/cl-anonfun-20111203-git.tgz 2163 915bda1a7653d42090f8d20a1ad85d0b a0a38ada878271e7bc8ebc9cb75a0bd7b5cc7aa5 cl-anonfun-20111203-git cl-anonfun.asd -cl-ansi-term http://beta.quicklisp.org/archive/cl-ansi-term/2021-10-20/cl-ansi-term-20211020-git.tgz 40855 0aced1136f76570831e1c239b820891c 18e4f0fc7add176f7a3e584d4cac7b7ab17716e8 cl-ansi-term-20211020-git cl-ansi-term.asd -cl-ansi-text http://beta.quicklisp.org/archive/cl-ansi-text/2021-10-20/cl-ansi-text-20211020-git.tgz 6787 5411766beeb4180218b449454b67837f 9840fc96d3395eb1cb2da6590d341ac86c4fa52d cl-ansi-text-20211020-git cl-ansi-text.asd cl-ansi-text.test.asd -cl-apertium-stream-parser http://beta.quicklisp.org/archive/cl-apertium-stream-parser/2022-03-31/cl-apertium-stream-parser-20220331-git.tgz 7302 33a86e0427fe37d2c46a4d56dbbae81e 00030654274b4c0ec453eb932e598a635fb4054b cl-apertium-stream-parser-20220331-git cl-apertium-stream.asd -cl-apple-plist http://beta.quicklisp.org/archive/cl-apple-plist/2011-11-05/cl-apple-plist-20111105-git.tgz 2720 95b6163c11c22fbb84c1f43c6703e612 b973e5c37b48d524c34b1ea2e8b89f636d69ad06 cl-apple-plist-20111105-git cl-apple-plist.asd -cl-arff-parser http://beta.quicklisp.org/archive/cl-arff-parser/2013-04-21/cl-arff-parser-20130421-git.tgz 4500 8ae977859eb11df65a1694b52436b0b5 d2342be9fa7b9a7aea26935b6268b7f556f7ff81 cl-arff-parser-20130421-git cl-arff-parser.asd -cl-argparse http://beta.quicklisp.org/archive/cl-argparse/2021-05-31/cl-argparse-20210531-git.tgz 7385 fe3efa33c6024235af44973dfb585b22 a918459cb3cee0b33fe29d189c0c4be28c38998d cl-argparse-20210531-git src/cl-argparse.asd -cl-aristid http://beta.quicklisp.org/archive/cl-aristid/2020-09-25/cl-aristid-20200925-git.tgz 4076577 472e0faacec6384973f9f5e24d78f942 127e11031f6eea32ff06fdee9f9329487095ac21 cl-aristid-20200925-git cl-aristid.asd -cl-arxiv-api http://beta.quicklisp.org/archive/cl-arxiv-api/2017-04-03/cl-arxiv-api-20170403-git.tgz 9013 3537c564323f050ba434a8198e525455 7c066716a5453b08d60181849bfb302517009806 cl-arxiv-api-20170403-git cl-arxiv-api.asd -cl-ascii-art http://beta.quicklisp.org/archive/cl-ascii-art/2017-10-19/cl-ascii-art-20171019-git.tgz 2500481 cf7fe4d84658d5d65d899e5b2c2f88fe 1fce75ccdd44c7ff91be24c51e6d570f009ccd94 cl-ascii-art-20171019-git cl-ascii-art.asd -cl-ascii-table http://beta.quicklisp.org/archive/cl-ascii-table/2020-06-10/cl-ascii-table-20200610-git.tgz 3572 6f2eaaae3fb03ba719d77ed3ffaeaf4f 4e3b075ac1131295ec488222930019dc43725617 cl-ascii-table-20200610-git cl-ascii-table.asd -cl-association-rules http://beta.quicklisp.org/archive/cl-association-rules/2017-04-03/cl-association-rules-20170403-git.tgz 4370 641b30a4fcf913cf91acbe6aaf2cae1a cf2b99cd6350ac6eef1a1301b6f80d5d27d5e305 cl-association-rules-20170403-git cl-association-rules.asd -cl-async http://beta.quicklisp.org/archive/cl-async/2022-11-06/cl-async-20221106-git.tgz 57994 c9d0db085e1b533b2b3a45dd54e4ae36 44b5e8296cc993a8d3f796d909dadd6ace6e5bd7 cl-async-20221106-git cl-async-repl.asd cl-async-ssl.asd cl-async-test.asd cl-async.asd -cl-async-await http://beta.quicklisp.org/archive/cl-async-await/2020-10-16/cl-async-await-20201016-git.tgz 14628 66d91f98068c3e9c57274f291bbf13fd 0728371bd39642b3d703378c21477c85a6bbfa4a cl-async-await-20201016-git cl-async-await.asd -cl-async-future http://beta.quicklisp.org/archive/cl-async-future/2015-01-13/cl-async-future-20150113-git.tgz 5719 961dbcb0bad3515ac7170f96dfd626ef 50751c2b573e0323f4c4687427df1d15b901cc38 cl-async-future-20150113-git cl-async-future.asd -cl-aubio http://beta.quicklisp.org/archive/cl-aubio/2020-04-27/cl-aubio-20200427-git.tgz 2886851 4125b5ea70516056040c017f9d6f5cd0 2b171fc15cf98fe4e5051370b50a1f1256f1a190 cl-aubio-20200427-git cl-aubio.asd -cl-autorepo http://beta.quicklisp.org/archive/cl-autorepo/2018-07-11/cl-autorepo-20180711-git.tgz 2223 333fc8779ce41c4e87ed5bdae6a18047 93fa8ee37a34306d513fbdcdfef0b32b6e50723d cl-autorepo-20180711-git cl-autorepo.asd -cl-autowrap http://beta.quicklisp.org/archive/cl-autowrap/2022-11-06/cl-autowrap-20221106-git.tgz 74898 9e8dd3ff69edfd16082efc353cf9f218 bb5cd1c163f526c8527d9b7c2a2505166c59bbfd cl-autowrap-20221106-git cl-autowrap-test.asd cl-autowrap.asd cl-plus-c.asd -cl-azure http://beta.quicklisp.org/archive/cl-azure/2016-08-25/cl-azure-20160825-git.tgz 16121 b85ed39bbbe3dc96b008dba7f7832365 e6bc24f54ee60ad9c51143995e36e9344f450b57 cl-azure-20160825-git cl-azure.asd -cl-base16 http://beta.quicklisp.org/archive/cl-base16/2020-09-25/cl-base16-20200925-git.tgz 15063 7f03987a109fbea2e7f28a4bf4f50ca4 1aff70774c128088935caf98ba76ed3a0c075248 cl-base16-20200925-git cl-base16.asd -cl-base32 http://beta.quicklisp.org/archive/cl-base32/2013-04-20/cl-base32-20130420-git.tgz 3417 e5066e4e4947e6f9d4debcbb38c008b9 ae9f24b9a9f4055650d2cc5aafd986cd4251b19b cl-base32-20130420-git cl-base32.asd -cl-base58 http://beta.quicklisp.org/archive/cl-base58/2015-01-13/cl-base58-20150113-git.tgz 2327 18cbd835ced24e94b0eff6380d7ee088 114d203cecd45d09c54756b5042d493c31f37d51 cl-base58-20150113-git cl-base58-test.asd cl-base58.asd -cl-base64 http://beta.quicklisp.org/archive/cl-base64/2020-10-16/cl-base64-20201016-git.tgz 10373 f556f7c61f785c84abdc1beb63c906ae f995d12a8885d3738a7ddea4ea8ef00ca8c88a2a cl-base64-20201016-git cl-base64.asd -cl-bayesnet http://beta.quicklisp.org/archive/cl-bayesnet/2013-04-20/cl-bayesnet-20130420-git.tgz 1176067 bfbc8a2a51d5b76c4c53993d2280d94f ff6228f63582e6f4a5665fb845bce62df365347a cl-bayesnet-20130420-git cl-bayesnet.asd -cl-bcrypt http://beta.quicklisp.org/archive/cl-bcrypt/2023-02-14/cl-bcrypt-20230214-git.tgz 8014 5269404c7efb98175ee74fcac8396694 3ea9031afd095656013f4cc2f9392a6e781892b4 cl-bcrypt-20230214-git cl-bcrypt.asd cl-bcrypt.test.asd -cl-beanstalk http://beta.quicklisp.org/archive/cl-beanstalk/2022-07-07/cl-beanstalk-20220707-git.tgz 8830 38783b6a33a9d7686f834c5534d74b42 8505a2d7dcb085806c3d00797f2b02ec7f2af615 cl-beanstalk-20220707-git cl-beanstalk.asd -cl-bencode http://beta.quicklisp.org/archive/cl-bencode/2018-02-28/cl-bencode-20180228-git.tgz 6343 4eaa85d018a4fbb35378c07c727bf585 0548331a29e838863d1f0573ca8c788647ea8196 cl-bencode-20180228-git bencode.asd -cl-bert http://beta.quicklisp.org/archive/cl-bert/2014-11-06/cl-bert-20141106-git.tgz 3107 146379540abc497d942ef89d33df9672 d7082e37cc22c2d99b2dba50f6cf8ea1060f85a9 cl-bert-20141106-git bert.asd -cl-bibtex http://beta.quicklisp.org/archive/cl-bibtex/2018-12-10/cl-bibtex-20181210-git.tgz 76724 83cf40c69b449a4b543538f67fdf69cd 05c1cf877743b2f32a2d8f87fc871858d9b403a5 cl-bibtex-20181210-git bibtex.asd -cl-bip39 http://beta.quicklisp.org/archive/cl-bip39/2018-07-11/cl-bip39-20180711-git.tgz 10742 a791287d7b55d8a813f3239016b321ea f24dffe751c80eaa3e0042545289be79c7447be2 cl-bip39-20180711-git cl-bip39.asd -cl-bloggy http://beta.quicklisp.org/archive/cl-bloggy/2021-10-20/cl-bloggy-20211020-git.tgz 50904 b2526535b115d8c221b5c838d31ffd06 b27037d7e59cb27896e6fdf0b979a1f822b9a755 cl-bloggy-20211020-git cl-bloggy.asd -cl-bloom http://beta.quicklisp.org/archive/cl-bloom/2018-02-28/cl-bloom-20180228-git.tgz 4302 89f0727b66223ccb6aeb294fc0cc011f ad6f0142aefcc1bfbeeec81e09627a2a74e78047 cl-bloom-20180228-git cl-bloom.asd -cl-bloom-filter http://beta.quicklisp.org/archive/cl-bloom-filter/2022-11-06/cl-bloom-filter-20221106-git.tgz 4588 6a682728a968b6a4aeb0b852ef78b97d 0e7b2be8b1553ff11d0c9accbfce250fbc29513f cl-bloom-filter-20221106-git cl-bloom-filter.asd -cl-bmas http://beta.quicklisp.org/archive/cl-bmas/2022-11-06/cl-bmas-20221106-git.tgz 497282 55d3eb56231b464f3c661ba0a0e60d64 c8b6182e1a2194baa55ac76c27a5027fce367022 cl-bmas-20221106-git bmas.asd -cl-bnf http://beta.quicklisp.org/archive/cl-bnf/2023-02-14/cl-bnf-20230214-git.tgz 6524 f201cd699fa1803373a5f2e158752a0d 1c1c8c09c7c51e5b6cbaf36296755314302b9fd1 cl-bnf-20230214-git cl-bnf-examples.asd cl-bnf-tests.asd cl-bnf.asd -cl-bootstrap http://beta.quicklisp.org/archive/cl-bootstrap/2018-08-31/cl-bootstrap-20180831-git.tgz 161893 cee57823b000ebedbf0ca2a5bc745e8b 832338aec105f68f8982c4e6ecdc1209361ce3e8 cl-bootstrap-20180831-git cl-bootstrap-demo.asd cl-bootstrap-test.asd cl-bootstrap.asd -cl-bplustree http://beta.quicklisp.org/archive/cl-bplustree/2018-03-28/cl-bplustree-20180328-git.tgz 8921 e5a31bafa8e9e42a5da16d675b852697 84702c33e5625e787ea4df04d7d5c2cf82336bde cl-bplustree-20180328-git cl-bplustree.asd -cl-bson http://beta.quicklisp.org/archive/cl-bson/2017-04-03/cl-bson-20170403-git.tgz 35505 c9359beeeb67fde4566ca3fdcd2e7ba6 74baa529bd8c1038f4dc509baabba84f545f001f cl-bson-20170403-git cl-bson-test.asd cl-bson.asd -cl-buchberger http://beta.quicklisp.org/archive/cl-buchberger/2020-10-16/cl-buchberger-20201016-git.tgz 7929 c2c1e6f2fd6cf9c61bb2c803478c416a 8d5eef1b76316d207172e92fd4c30ff644d49586 cl-buchberger-20201016-git cl-buchberger.asd -cl-bus http://beta.quicklisp.org/archive/cl-bus/2021-12-09/cl-bus-20211209-git.tgz 2514 2c6172af8198fb4837956f40e3c702c1 e4e347ce849044de9cdf15dbbf68ba538e50aaec cl-bus-20211209-git cl-bus.asd -cl-ca http://beta.quicklisp.org/archive/cl-ca/2016-12-04/cl-ca-20161204-git.tgz 4056 e20a120a4bdea1da122f67d1c748c164 250c6a1fd47118fd4634c1ca7b67f6eec8822e29 cl-ca-20161204-git cl-ca.asd -cl-cache-tables http://beta.quicklisp.org/archive/cl-cache-tables/2017-10-19/cl-cache-tables-20171019-git.tgz 5219 24fcc0c7e5c4b56aa4d3c0ccf8013804 8467ba23db68b1b2136216eb37934664bbc56560 cl-cache-tables-20171019-git cl-cache-tables.asd -cl-cairo2 http://beta.quicklisp.org/archive/cl-cairo2/2021-10-20/cl-cairo2-20211020-git.tgz 223436 5695cf9b084f31f141a754611b54ab76 34fc6c321105781ff8edce95e921dddf81f85a40 cl-cairo2-20211020-git a-cl-cairo2-loader.asd cl-cairo2-demos.asd cl-cairo2-xlib.asd cl-cairo2.asd -cl-capstone http://beta.quicklisp.org/archive/cl-capstone/2022-03-31/cl-capstone-20220331-git.tgz 13490 ec4e4521f3b4886788b07f7668f88a80 ce108d8fb0ec89d2e08b3f388c3aa9e812751fe8 cl-capstone-20220331-git capstone.asd -cl-case-control http://beta.quicklisp.org/archive/cl-case-control/2014-11-06/cl-case-control-20141106-git.tgz 4262 9bd926eaf15cc7053ef7e6676491aa23 a2d273abfa6ff8f0680f0f9d6545064ba133908a cl-case-control-20141106-git cl-case-control.asd -cl-catmull-rom-spline http://beta.quicklisp.org/archive/cl-catmull-rom-spline/2022-02-20/cl-catmull-rom-spline-20220220-git.tgz 25468 373b0bf5ef596bd00f8755ee2bef7b07 3e3caa267dd52c682afd652d58bb6cc7ef5eb0cb cl-catmull-rom-spline-20220220-git cl-catmull-rom-spline.asd -cl-cblas http://beta.quicklisp.org/archive/cl-cblas/2022-11-06/cl-cblas-20221106-git.tgz 62256 3c517950f3e7990d06fa47dc49aa8ad0 85245e35d8177510f53b4ffc116ba938944e8bc8 cl-cblas-20221106-git cblas.asd -cl-cerf http://beta.quicklisp.org/archive/cl-cerf/2021-05-31/cl-cerf-20210531-git.tgz 1923 fc9737d516b648716dbe5fdb70938e42 2eec3e62b0bebeee2b74fc545261be8a8264eee8 cl-cerf-20210531-git cl-cerf.asd -cl-cffi-gtk http://beta.quicklisp.org/archive/cl-cffi-gtk/2023-02-14/cl-cffi-gtk-20230214-git.tgz 6290916 6cb0ffdc8ec746a45b44776b5648d568 5a7e29bf280fb1e84a2c71978a74d8c12b49b6a5 cl-cffi-gtk-20230214-git cairo/cl-cffi-gtk-cairo.asd demo/cairo-demo/cl-cffi-gtk-demo-cairo.asd demo/glib-demo/cl-cffi-gtk-demo-glib.asd demo/gobject-demo/cl-cffi-gtk-demo-gobject.asd demo/gtk-example/cl-cffi-gtk-example-gtk.asd demo/opengl-demo/cl-cffi-gtk-opengl-demo.asd gdk-pixbuf/cl-cffi-gtk-gdk-pixbuf.asd gdk/cl-cffi-gtk-gdk.asd gio/cl-cffi-gtk-gio.asd glib/cl-cffi-gtk-glib.asd gobject/cl-cffi-gtk-gobject.asd gtk/cl-cffi-gtk.asd pango/cl-cffi-gtk-pango.asd -cl-change-case http://beta.quicklisp.org/archive/cl-change-case/2021-04-11/cl-change-case-20210411-git.tgz 4792 df72a3d71a6c65e149704688aec859b9 d19d49e30d952a38429ac25dc2005999bcfe003c cl-change-case-20210411-git cl-change-case.asd -cl-charms http://beta.quicklisp.org/archive/cl-charms/2022-11-06/cl-charms-20221106-git.tgz 27272 9e7c2e906b93ccc30c182273ea95111a d066e06d27bfac4f8c981291eb4ee36becf0f781 cl-charms-20221106-git cl-charms-paint.asd cl-charms-timer.asd cl-charms.asd -cl-cheshire-cat http://beta.quicklisp.org/archive/cl-cheshire-cat/2012-11-25/cl-cheshire-cat-20121125-git.tgz 23482 729d03cde121deedf97f3669c262e82e d2797915bed6422d5516abeb9f3c4a33809c306b cl-cheshire-cat-20121125-git cl-cheshire-cat.asd -cl-clblas http://beta.quicklisp.org/archive/cl-clblas/2018-10-18/cl-clblas-20181018-git.tgz 8535 ae2ac2ceba89561bc472677ab373017f ecca33c74178a2f77c94fdb3f40a9fee5e87c399 cl-clblas-20181018-git cl-clblas-test.asd cl-clblas.asd -cl-cli http://beta.quicklisp.org/archive/cl-cli/2015-12-18/cl-cli-20151218-git.tgz 6467 820e5c7dde6800fcfa44b1fbc7a9d62b 95d3aaf9325b6317343844e8b40efdf7c302a47f cl-cli-20151218-git cl-cli.asd -cl-cli-parser http://beta.quicklisp.org/archive/cl-cli-parser/2015-06-08/cl-cli-parser-20150608-git.tgz 8093 38fc199ad50a98819a3cd0d82665fe68 a7e3a4d60a6069b08ecd5ebf477609c6927710c3 cl-cli-parser-20150608-git cli-parser.asd -cl-clon http://beta.quicklisp.org/archive/cl-clon/2021-04-11/clon-1.0b25.tgz 247117 ff8cb8e1a7988e4d0475a3a51e804f9e 39a0a227047d8afb94f980638e14faef500feccd clon-1.0b25 core/net.didierverna.clon.core.asd demos/advanced.asd demos/simple.asd net.didierverna.clon.asd setup/net.didierverna.clon.setup.asd -cl-closure-template http://beta.quicklisp.org/archive/cl-closure-template/2015-08-04/cl-closure-template-20150804-git.tgz 98945 d2b36fa36a3bbb532c7898c2ff6211f7 b58d01914b50c26a7a43ed1e0848562a212017b3 cl-closure-template-20150804-git closure-template.asd -cl-clsparse http://beta.quicklisp.org/archive/cl-clsparse/2019-08-13/cl-clsparse-20190813-git.tgz 5431 f52ee9a080bc55364c817ea7c032588d e9b211b3f6c39cca6e07516292673c76271b2349 cl-clsparse-20190813-git cl-clsparse.asd -cl-cmark http://beta.quicklisp.org/archive/cl-cmark/2023-02-14/cl-cmark-20230214-git.tgz 38216 0f1be80a1e0a8751253aae87563a2872 90172d26e07c1a83238fdf7abe626eb9b3063129 cl-cmark-20230214-git cmark.asd libcmark.asd -cl-cognito http://beta.quicklisp.org/archive/cl-cognito/2018-12-10/cl-cognito-20181210-git.tgz 10532 6372b22b37cd2f092542cf4add7f336b a31ce281d683c6d15bd458f2dc366ea5ba641b86 cl-cognito-20181210-git cl-cognito.asd -cl-coinpayments http://beta.quicklisp.org/archive/cl-coinpayments/2021-08-07/cl-coinpayments-20210807-git.tgz 12852 31e348c2de72c1babf5ca0e557027e32 cd40b660e6f9c03b206f9270df3e8ab6137f95c2 cl-coinpayments-20210807-git cl-coinpayments.asd -cl-collider http://beta.quicklisp.org/archive/cl-collider/2023-02-14/cl-collider-20230214-git.tgz 64903 dffa9e796ea3d8f70920782c9e682380 cc12b7882c2be278c2e7784aa5109ccf4a83380b cl-collider-20230214-git cl-collider.asd osc/sc-osc.asd -cl-colors http://beta.quicklisp.org/archive/cl-colors/2018-03-28/cl-colors-20180328-git.tgz 14566 5e59ea59b32a0254df9610a5662ae2ec 08d7a2af682802fce159e47ff3511112f24e892a cl-colors-20180328-git cl-colors.asd -cl-colors2 http://beta.quicklisp.org/archive/cl-colors2/2023-02-14/cl-colors2-20230214-git.tgz 34671 e2eba904786558a8d936af511984ba0f aa4f2aad79e1232d78e121d7cac49162d85e7930 cl-colors2-20230214-git cl-colors2.asd -cl-confidence http://beta.quicklisp.org/archive/cl-confidence/2023-02-14/cl-confidence-20230214-git.tgz 36942 5a6a3ad8e18c78f84b76b11db09aebfa 1b84771dc9ac4eabb9e12174e756a408d8f70304 cl-confidence-20230214-git org.melusina.confidence.asd -cl-conllu http://beta.quicklisp.org/archive/cl-conllu/2021-12-09/cl-conllu-20211209-git.tgz 40657 420f86447668686ec1c3ee7c68fc610c 6c22fa31a05e26e11a2da8f3e0b834a1fca38fcd cl-conllu-20211209-git cl-conllu.asd -cl-conspack http://beta.quicklisp.org/archive/cl-conspack/2023-02-14/cl-conspack-20230214-git.tgz 48411 a3adc000989298fcf565df2b59046560 ce086621f92b76912c72081061fd43cdb5f390ab cl-conspack-20230214-git cl-conspack-test.asd cl-conspack.asd -cl-cont http://beta.quicklisp.org/archive/cl-cont/2011-02-19/cl-cont-20110219-darcs.tgz 11715 204ad0178da3de604e92fab5ac1c20b6 f24ffb4d90a98f4ab82841279f29ac64615069de cl-cont-20110219-darcs cl-cont-test.asd cl-cont.asd -cl-containers http://beta.quicklisp.org/archive/cl-containers/2023-02-14/cl-containers-20230214-git.tgz 231525 6e25fb9d721f352abb407da09cc88a84 2cf36faee9705a3f0b6f3997fc469be5b3e74454 cl-containers-20230214-git cl-containers-test.asd cl-containers.asd -cl-cookie http://beta.quicklisp.org/archive/cl-cookie/2022-07-07/cl-cookie-20220707-git.tgz 5275 87eb880bb2cf1f7d068dace80b6dc83e c376c6cc0013aa678a2df622039eb3db77965ce4 cl-cookie-20220707-git cl-cookie-test.asd cl-cookie.asd -cl-coroutine http://beta.quicklisp.org/archive/cl-coroutine/2016-09-29/cl-coroutine-20160929-git.tgz 3335 d89c78cb0a94768603c8f581227af23f 934dcbb769a9199affe633368462e104fbf2c03f cl-coroutine-20160929-git cl-coroutine-test.asd cl-coroutine.asd -cl-coveralls http://beta.quicklisp.org/archive/cl-coveralls/2021-04-11/cl-coveralls-20210411-git.tgz 7733 6042f6fd3f0d1aff5bffb99ee72f3459 fc7fea5d98341ae5580b60f3e8baa38f093ac5e6 cl-coveralls-20210411-git cl-coveralls-test.asd cl-coveralls.asd -cl-covid19 http://beta.quicklisp.org/archive/cl-covid19/2022-03-31/cl-covid19-20220331-git.tgz 7711577 78dcd44e5033ac2cd42b6ca3d0a473ff 54bb3d49d86b349f5f6aa9dc6febd21cc84cfeb2 cl-covid19-20220331-git cl-covid19.asd -cl-cpus http://beta.quicklisp.org/archive/cl-cpus/2018-04-30/cl-cpus-20180430-git.tgz 2505 8144fd890f060d558d896c2b10538f02 1c38814243fe2a8f437189d7a7496cd51574f1bb cl-cpus-20180430-git cl-cpus.asd -cl-cram http://beta.quicklisp.org/archive/cl-cram/2022-07-07/cl-cram-20220707-git.tgz 2926 0ec0afedaba353fb426ae1ad5e93ab59 987b1c557a0c03a9009afa987a24742ab2c76f0c cl-cram-20220707-git cl-cram.asd -cl-crc64 http://beta.quicklisp.org/archive/cl-crc64/2014-07-13/cl-crc64-20140713-git.tgz 3436 d97cf9231647235a938707e64a1766ad 3140afa99b2ee11f7cda85f9563b975c45cdb9d2 cl-crc64-20140713-git cl-crc64.asd -cl-creditcard http://beta.quicklisp.org/archive/cl-creditcard/2015-01-13/cl-creditcard-20150113-git.tgz 10834 35f506d0dcef15f26a46b6419c0f060b 0b816115dbedc264e2d3724088267220a8e43a5a cl-creditcard-20150113-git cl-authorize-net.asd cl-creditcard.asd -cl-cron http://beta.quicklisp.org/archive/cl-cron/2022-11-06/cl-cron-20221106-git.tgz 16377 9e168c76735db839b1ef8ee580ac41c5 270f69db8a96ac5a91c6eedb2142d6abbf786523 cl-cron-20221106-git cl-cron.asd -cl-crypt http://beta.quicklisp.org/archive/cl-crypt/2012-05-20/cl-crypt-20120520-git.tgz 7279 0e6b5ba0cd7a565686e847197622698f f66ea06ec261e994f5ba7d71236c93a3a4edd113 cl-crypt-20120520-git crypt.asd -cl-css http://beta.quicklisp.org/archive/cl-css/2014-09-14/cl-css-20140914-git.tgz 4907 a91f5a5d6a751af31d5c4fd8170f6ece 0b25eb863296f4d83523535c606514502ad6aac5 cl-css-20140914-git cl-css.asd -cl-csv http://beta.quicklisp.org/archive/cl-csv/2020-10-16/cl-csv-20201016-git.tgz 25202 3e067784236ab620857fe738dafedb4b 50b9ecb493ce094c7eba3b9bcb6998774b06c3d6 cl-csv-20201016-git cl-csv-clsql.asd cl-csv-data-table.asd cl-csv.asd -cl-cuda http://beta.quicklisp.org/archive/cl-cuda/2021-08-07/cl-cuda-20210807-git.tgz 73706 0502aed4f738192adee742b7757ee8d7 e73574a8fd2d4e821d6831deb8c3881a228648f8 cl-cuda-20210807-git cl-cuda-examples.asd cl-cuda-interop-examples.asd cl-cuda-interop.asd cl-cuda-misc.asd cl-cuda.asd -cl-custom-hash-table http://beta.quicklisp.org/archive/cl-custom-hash-table/2020-12-20/cl-custom-hash-table-20201220-git.tgz 7660 bd0f2f4a8e808911133af19c03e5c511 0c417f960bf62104ede823c1d48c380ea03c3d58 cl-custom-hash-table-20201220-git cl-custom-hash-table-test.asd cl-custom-hash-table.asd -cl-cxx http://beta.quicklisp.org/archive/cl-cxx/2023-02-14/cl-cxx-20230214-git.tgz 7800 5b9dd59a87687634c45a211cc4e1b183 0709e12767c5c2eb0283e2f2f1b6ed7920c3c6e1 cl-cxx-20230214-git cxx-test.asd cxx.asd -cl-cxx-jit http://beta.quicklisp.org/archive/cl-cxx-jit/2022-03-31/cl-cxx-jit-20220331-git.tgz 1258780 3375be6d93acf2e1c7e7ba1aba3f0f26 b76ae701c8f49f7be53aa91176e48f30faef60d3 cl-cxx-jit-20220331-git cxx-jit.asd -cl-darksky http://beta.quicklisp.org/archive/cl-darksky/2018-07-11/cl-darksky-20180711-git.tgz 2006 c62b43b0d00975df19b5c5e72433b462 4b55a096708a83a7fa703813c4ddb02178e45ab3 cl-darksky-20180711-git cl-darksky-test.asd cl-darksky.asd -cl-data-format-validation http://beta.quicklisp.org/archive/cl-data-format-validation/2014-07-13/cl-data-format-validation-20140713-git.tgz 37403 2d13446e593b3b0c46fb83ee9fc5da7f 0a085113a3c0e2c28735f4709b31ff46ee54b68b cl-data-format-validation-20140713-git data-format-validation.asd -cl-data-frame http://beta.quicklisp.org/archive/cl-data-frame/2021-05-31/cl-data-frame-20210531-git.tgz 8843 1d1f7444704e6b05f7ca4e95cf3cd222 e67914091fae9be9199cc85b51275c43e82b10a9 cl-data-frame-20210531-git cl-data-frame.asd -cl-data-structures http://beta.quicklisp.org/archive/cl-data-structures/2023-02-14/cl-data-structures-20230214-git.tgz 1241833 1c4f9750ff532e35a446dec5049834b3 51dc1eae3490b1c2571c28b2abca38a5d04f6f2b cl-data-structures-20230214-git cl-data-structures-tests.asd cl-data-structures.asd -cl-date-time-parser http://beta.quicklisp.org/archive/cl-date-time-parser/2014-07-13/cl-date-time-parser-20140713-git.tgz 10231 a5c384eafcdcf063499341b40c09129a 7633ae11684c9c8cd219f4cf615869bc2b5d2c42 cl-date-time-parser-20140713-git cl-date-time-parser.asd -cl-db3 http://beta.quicklisp.org/archive/cl-db3/2020-02-18/cl-db3-20200218-git.tgz 6162 42a8e17c70e8a4ded2771207546bf498 46fd1c5dff7709bd9a7fe3d8316aefc51446b2cc cl-db3-20200218-git db3.asd -cl-dbi http://beta.quicklisp.org/archive/cl-dbi/2023-02-14/cl-dbi-20230214-git.tgz 19617 716b062fdd557ec359196b71d8ab5205 0b4b67e0966f557acbc72640110beaa743360120 cl-dbi-20230214-git cl-dbi.asd dbd-mysql.asd dbd-postgres.asd dbd-sqlite3.asd dbi-test.asd dbi.asd -cl-dct http://beta.quicklisp.org/archive/cl-dct/2022-03-31/cl-dct-20220331-git.tgz 6828 3ccdd003cad721787fdfa1fca8516222 064e1eacdbce4f3a1ea7466b9ab7497b156c91ce cl-dct-20220331-git dct-test.asd dct.asd -cl-debug-print http://beta.quicklisp.org/archive/cl-debug-print/2021-08-07/cl-debug-print-20210807-git.tgz 2944 bf914351ab8d3ecc043f2772f3f659c8 4dd5eef46654f445f511e4f46627310e8dbe152d cl-debug-print-20210807-git cl-debug-print-test.asd cl-debug-print.asd cl-syntax-debug-print.asd -cl-decimals http://beta.quicklisp.org/archive/cl-decimals/2021-12-09/cl-decimals-20211209-git.tgz 8043 d545d06edcc98c0c2bd465ea1078681f c623daafd548125e0b92ed9788e4994ab55d8cc8 cl-decimals-20211209-git decimals.asd -cl-dejavu http://beta.quicklisp.org/archive/cl-dejavu/2021-01-24/cl-dejavu-20210124-git.tgz 5512426 08375ca2692adc30b20594cb91c3361e 2ea010200840ea7a82cb49619783a5be512a6533 cl-dejavu-20210124-git cl-dejavu.asd -cl-devil http://beta.quicklisp.org/archive/cl-devil/2015-03-02/cl-devil-20150302-git.tgz 7271 2386d79fa23a831b46dd3a851b635165 81f0c286536f30795267f35614562d2459c41cea cl-devil-20150302-git cl-devil.asd cl-ilu.asd cl-ilut.asd -cl-diceware http://beta.quicklisp.org/archive/cl-diceware/2015-09-23/cl-diceware-20150923-git.tgz 46217 1effc5add086f20640ecca3ea9fb6d44 26501cee6304c77b9db6320e1f2b3fbba88ede2b cl-diceware-20150923-git cl-diceware.asd -cl-difflib http://beta.quicklisp.org/archive/cl-difflib/2013-01-28/cl-difflib-20130128-git.tgz 11909 e8a3434843a368373b67d09983d2b809 2acef03b40d410454539b26882762b25f60da136 cl-difflib-20130128-git cl-difflib-tests.asd cl-difflib.asd -cl-digraph http://beta.quicklisp.org/archive/cl-digraph/2023-02-14/cl-digraph-20230214-hg.tgz 37666 e6ef3c5bd3429bd75b22bd50e1a25804 080957c5508c861d492e5439bab6c6df906f8070 cl-digraph-20230214-hg cl-digraph.asd cl-digraph.dot.asd cl-digraph.test.asd -cl-diskspace http://beta.quicklisp.org/archive/cl-diskspace/2022-03-31/cl-diskspace-20220331-git.tgz 4811 e0108e2388516db61506650273d570a9 2a14bde83c155dae101941a8bb65394326e4eafc cl-diskspace-20220331-git cl-diskspace.asd -cl-disque http://beta.quicklisp.org/archive/cl-disque/2017-12-27/cl-disque-20171227-git.tgz 12120 422f594efe55882f080273d68d26c561 f0a7b26834d07a6b35c03c16ba8aeeae18df6160 cl-disque-20171227-git cl-disque-test.asd cl-disque.asd -cl-djula-svg http://beta.quicklisp.org/archive/cl-djula-svg/2022-11-06/cl-djula-svg-20221106-git.tgz 3913 a3dad13ee80597292649c4d0dd577ca2 07b086e51c3cd4a5bb675aaf2e2b3892b2a6db3e cl-djula-svg-20221106-git cl-djula-svg.asd -cl-djula-tailwind http://beta.quicklisp.org/archive/cl-djula-tailwind/2022-11-06/cl-djula-tailwind-20221106-git.tgz 19195 97e86ba99d7afa52c284a14f4a56f763 087d8a078fc4bf6541e0243bfbd53c05b576e611 cl-djula-tailwind-20221106-git cl-djula-tailwind.asd -cl-docutils http://beta.quicklisp.org/archive/cl-docutils/2013-01-28/cl-docutils-20130128-git.tgz 115606 e83e70398da47984339dd29632a78072 014884afae1335295230482b54b560ed7bc51db6 cl-docutils-20130128-git docutils.asd -cl-dot http://beta.quicklisp.org/archive/cl-dot/2022-07-07/cl-dot-20220707-git.tgz 188392 185175a2da8e7ad5db5e8347c9d52016 f807802932bf6a30a2f6ff196fbe623cd67a893d cl-dot-20220707-git cl-dot.asd -cl-dotenv http://beta.quicklisp.org/archive/cl-dotenv/2018-10-18/cl-dotenv-20181018-git.tgz 5339 ea905b934f2a2dc8ee3bfc88fc35ac49 3fe52852f1350c31baa11f85094ad6b7c433ea42 cl-dotenv-20181018-git cl-dotenv-test.asd cl-dotenv.asd -cl-drawille http://beta.quicklisp.org/archive/cl-drawille/2021-08-07/cl-drawille-20210807-git.tgz 8525 105ab0a62c3f87f604e2f02ff9a761a1 5c7227a1ad1f81bcae14cb448637c601dec36f31 cl-drawille-20210807-git cl-drawille.asd -cl-drm http://beta.quicklisp.org/archive/cl-drm/2016-12-04/cl-drm-20161204-git.tgz 3310 dc45def8e5c9df2d9622193b400aa968 5f5474b54ced85e2eaba592dac37c07eb12f702c cl-drm-20161204-git cl-drm.asd -cl-dropbox http://beta.quicklisp.org/archive/cl-dropbox/2015-06-08/cl-dropbox-20150608-git.tgz 3127 cb8e142a42e59c3ad3ebc51243f0e9fd 692318495dcbb349116b544b33482119a1620ff7 cl-dropbox-20150608-git cl-dropbox.asd -cl-dsl http://beta.quicklisp.org/archive/cl-dsl/2013-07-20/cl-dsl-20130720-git.tgz 14073 fce58e9d8682e3224120cc794922de84 a93b21d4833d1d92609d2399028cbba3e908cbbf cl-dsl-20130720-git cl-dsl.asd -cl-durian http://beta.quicklisp.org/archive/cl-durian/2015-06-08/cl-durian-20150608-git.tgz 4819 9da8dd551e1ee63907a79bea0b1565d3 a0ca0ed4bf0257b86270d66bda9a963d0d30529b cl-durian-20150608-git cl-durian.asd -cl-earley-parser http://beta.quicklisp.org/archive/cl-earley-parser/2021-10-20/cl-earley-parser-20211020-git.tgz 6928 d8108fb9fb213e6e434b35e7b9c2e10a edb14920bbe5cc2cfbf7b58ca45bce1643945e85 cl-earley-parser-20211020-git cl-earley-parser.asd -cl-ecma-48 http://beta.quicklisp.org/archive/cl-ecma-48/2020-02-18/cl-ecma-48-20200218-http.tgz 22774 56ae2f232dd645265277ab2d7efbe6be 1e278da3a619022949333d7612ddcbdef11a507e cl-ecma-48-20200218-http cl-ecma-48.asd -cl-editdistance http://beta.quicklisp.org/archive/cl-editdistance/2022-03-31/cl-editdistance-20220331-git.tgz 11140 39bf900301a44e3ae6a4151ab2583d89 12cbec9df26ceb3f02f6e456fa355ec37e481ae5 cl-editdistance-20220331-git edit-distance-test.asd edit-distance.asd -cl-egl http://beta.quicklisp.org/archive/cl-egl/2019-05-21/cl-egl-20190521-git.tgz 3064 022f1ac3d01a265e700d0aa99ff47d71 03446e74bcaa71e61d1f0e9352c9df99ad3ad403 cl-egl-20190521-git cl-egl.asd -cl-elastic http://beta.quicklisp.org/archive/cl-elastic/2020-02-18/cl-elastic-20200218-git.tgz 5458 f43f47ae74b7710cb82d0da99188911f 4f3a41888a760f6964be8c7aa2a38738a7bffdcd cl-elastic-20200218-git cl-elastic-test.asd cl-elastic.asd -cl-emacs-if http://beta.quicklisp.org/archive/cl-emacs-if/2012-03-05/cl-emacs-if-20120305-git.tgz 5080 79a7e7ed0dce7b6b937481da97bc5490 3328115dfa0afe358d2301ce9d0335fb323b7b3f cl-emacs-if-20120305-git cl-emacs-if.asd -cl-emb http://beta.quicklisp.org/archive/cl-emb/2019-05-21/cl-emb-20190521-git.tgz 14557 b27bbe8de2206ab7c461700b58d4d527 04a32481580be674abe707cdfd25f20ff710ac7a cl-emb-20190521-git cl-emb.asd -cl-emoji http://beta.quicklisp.org/archive/cl-emoji/2020-02-18/cl-emoji-20200218-git.tgz 130250 62689fcd13290ef045ab41dff55882b3 45728356401d4dbcc426527cd0278d6a8d93bf9f cl-emoji-20200218-git cl-emoji-test.asd cl-emoji.asd -cl-enchant http://beta.quicklisp.org/archive/cl-enchant/2021-12-09/cl-enchant-20211209-git.tgz 7291 c12162b3a7c383815ff77c96aca0c11f ac71e6ec6e3396597c26b0757286c34b02399d8c cl-enchant-20211209-git enchant-autoload.asd enchant.asd -cl-enumeration http://beta.quicklisp.org/archive/cl-enumeration/2023-02-14/cl-enumeration-20230214-git.tgz 116100 254bcd39e3a9aa41b46cb3647e5408f1 b7b4d91883a5ae749de807903c753974f982d6dc cl-enumeration-20230214-git enumerations.asd -cl-env http://beta.quicklisp.org/archive/cl-env/2018-04-30/cl-env-20180430-git.tgz 2808 881867f2aee6a8f22acb2dc1db3b5a62 d79b84e8739451c189fa50a6df245db1d4dd0953 cl-env-20180430-git cl-env.asd -cl-environments http://beta.quicklisp.org/archive/cl-environments/2021-10-20/cl-environments-20211020-git.tgz 47800 a796decf21a5b595ff591ffca378994a 100ffebab3bc66bb81349b22ac7b286736bc7b74 cl-environments-20211020-git cl-environments.asd -cl-epmd http://beta.quicklisp.org/archive/cl-epmd/2014-02-11/cl-epmd-20140211-git.tgz 8497 535d47c3fdcbf90656549f48da838151 1e5e823a18ae86b707ebfae97acd4af7a31ef36e cl-epmd-20140211-git epmd-test.asd epmd.asd -cl-epoch http://beta.quicklisp.org/archive/cl-epoch/2018-12-10/cl-epoch-20181210-git.tgz 772 677d6391a0c4ae9b20e4115cb0681706 3266833985cfc3447642de88f2b808fd0e25d222 cl-epoch-20181210-git cl-epoch.asd -cl-erlang-term http://beta.quicklisp.org/archive/cl-erlang-term/2022-02-20/cl-erlang-term-20220220-git.tgz 18631 d59493f796dc4d7800bfc7e357b66649 045fe1ca2c2b9d3c269bbffb5a4c860058909cc2 cl-erlang-term-20220220-git erlang-term-test.asd erlang-term.asd -cl-etcd http://beta.quicklisp.org/archive/cl-etcd/2023-02-14/cl-etcd-20230214-git.tgz 18743 025131e131de1d214c4f098df9eb95f7 23afe066ebe0ed2affe7ec52c80c280181034591 cl-etcd-20230214-git cl-etcd.asd test/etcd-test.asd -cl-ev http://beta.quicklisp.org/archive/cl-ev/2015-09-23/cl-ev-20150923-git.tgz 6322 802c3966a9dbd25d22407825271e70fd d90c2e7c18e3710e25ecd2206430926dc4307891 cl-ev-20150923-git ev.asd -cl-events http://beta.quicklisp.org/archive/cl-events/2016-03-18/cl-events-20160318-git.tgz 7199 064df9efa3a6db5b1540d61a91671ca8 21f4cb9f76b3ffd12d7b6d5d17e0960cd8b57819 cl-events-20160318-git cl-events.asd cl-events.test.asd -cl-ewkb http://beta.quicklisp.org/archive/cl-ewkb/2011-06-19/cl-ewkb-20110619-git.tgz 9929 cbcc96a62750e5aee99f2261d4b2171c 262f1978c053c76a4fa288411f8fbd150d29fcbb cl-ewkb-20110619-git cl-ewkb.asd -cl-factoring http://beta.quicklisp.org/archive/cl-factoring/2022-11-06/cl-factoring-20221106-git.tgz 22749 10c430bffa1bb1feb9d382492ba18b94 773a33d4c38725d5eb0282dc64e2c880c48c38a5 cl-factoring-20221106-git cl-factoring.asd -cl-facts http://beta.quicklisp.org/archive/cl-facts/2022-11-06/cl-facts-20221106-git.tgz 47137472 7a117d020ad3c478d4e20cf8df49a1cd a76ed6e533896b75257787543fb9e325e89dcd55 cl-facts-20221106-git facts.asd -cl-fad http://beta.quicklisp.org/archive/cl-fad/2022-02-20/cl-fad-20220220-git.tgz 25285 5caa98f5badf1d84ae385a3937ee2e01 27b33b1f84fa87e34ec852d3a30903106863844a cl-fad-20220220-git cl-fad.asd -cl-fam http://beta.quicklisp.org/archive/cl-fam/2012-11-25/cl-fam-20121125-git.tgz 8597 4844d1092223363858a0963b56b09d10 9def84e89f75f5d2449f31db352fc1d6d51c156a cl-fam-20121125-git cl-fam.asd -cl-fastcgi http://beta.quicklisp.org/archive/cl-fastcgi/2021-01-24/cl-fastcgi-20210124-git.tgz 4536 e4339af9b66e7d2503b9ddd3b0d2d83b 5e26a1b4849db423804da361e2074440b128a7b9 cl-fastcgi-20210124-git cl-fastcgi.asd -cl-fbclient http://beta.quicklisp.org/archive/cl-fbclient/2014-01-13/cl-fbclient-20140113-git.tgz 9685 48d0afd4a519cac7c0b219063d51f6d9 09f3e78c416b6524ebe3c2d75e279eeda08b2277 cl-fbclient-20140113-git cl-fbclient.asd -cl-feedparser http://beta.quicklisp.org/archive/cl-feedparser/2021-10-20/cl-feedparser-20211020-git.tgz 1144177 d2297b5d48656ee0807575628d615d6b ccece16e6ca4b553ce6425e08a33c2ed5c511a1d cl-feedparser-20211020-git cl-feedparser.asd test/cl-feedparser-tests.asd -cl-fix http://beta.quicklisp.org/archive/cl-fix/2023-02-14/cl-fix-20230214-git.tgz 135950 b71913e3f4b1b7e24b7796d0f2f67d1e 2cb8c8955abe22f9f818daa27cfaa66756ebd49d cl-fix-20230214-git cl-fix.asd -cl-fixtures http://beta.quicklisp.org/archive/cl-fixtures/2020-03-25/cl-fixtures-20200325-git.tgz 14909 0cc96fe9bc78cf66a30f3d93b00a0741 f6f5929b83592b29e2001fe95b444315401bb79b cl-fixtures-20200325-git cl-fixtures-test.asd cl-fixtures.asd -cl-flac http://beta.quicklisp.org/archive/cl-flac/2019-07-10/cl-flac-20190710-git.tgz 290402 a987ae59d6785b72735a7a102cbc9907 399983a24191cc0bc3e9657d3b4ba3bb0c9d6142 cl-flac-20190710-git cl-flac.asd -cl-flat-tree http://beta.quicklisp.org/archive/cl-flat-tree/2019-08-13/cl-flat-tree-20190813-git.tgz 5132 8705ad941f264bdedb08e4a1ad6afcfb 3f0fb91a38e4246e34d9a76d4c1dddb4515063b5 cl-flat-tree-20190813-git flat-tree.asd -cl-flow http://beta.quicklisp.org/archive/cl-flow/2022-07-07/cl-flow-stable-git.tgz 7297 a7327a90e7ed318dacd05f4e088666f8 a460a382619e0a1ce0257aa6bb79db0290c34e7d cl-flow-stable-git cl-flow.asd -cl-flowd http://beta.quicklisp.org/archive/cl-flowd/2014-07-13/cl-flowd-20140713-git.tgz 5753 c8ec0147510ab231d0e3377beaf5f897 b5382880a7203fb47f6d55b6b587a5645eb2322e cl-flowd-20140713-git cl-flowd.asd -cl-fluent-logger http://beta.quicklisp.org/archive/cl-fluent-logger/2021-10-20/cl-fluent-logger-20211020-git.tgz 4724 19d236e9b972828f26d84f0aa4f053bf 4c8b44df1de4e803896bdfe72c55b3f5995738de cl-fluent-logger-20211020-git cl-fluent-logger.asd -cl-fluidinfo http://beta.quicklisp.org/archive/cl-fluidinfo/2013-03-12/cl-fluidinfo-20130312-git.tgz 8963 31baff1a738ad8dcf30b4f466d71366c 0c8485eba076578d271d6190ba75dd853ad5867c cl-fluidinfo-20130312-git cl-fluiddb-test.asd cl-fluiddb.asd cl-fluidinfo.asd -cl-fond http://beta.quicklisp.org/archive/cl-fond/2019-11-30/cl-fond-20191130-git.tgz 328112 15c6094682447b9bc49bfa253a064360 df52e6e1d9515e749da9cca6ee1e54d378153ea3 cl-fond-20191130-git cl-fond.asd -cl-form-types http://beta.quicklisp.org/archive/cl-form-types/2022-11-06/cl-form-types-20221106-git.tgz 32266 73a0defc9bb936037b89908e44cf09f8 52210f7df7e5761c1428673760feaa925e4c71a6 cl-form-types-20221106-git cl-form-types.asd -cl-forms http://beta.quicklisp.org/archive/cl-forms/2022-11-06/cl-forms-20221106-git.tgz 1103158 a0d3a715edf91ed8bd94bff1583dca14 b5825289e17f763a30bf3506db823b2b8ad7a608 cl-forms-20221106-git cl-forms.asd cl-forms.demo.asd cl-forms.djula.asd cl-forms.peppol.asd cl-forms.test.asd cl-forms.who.asd cl-forms.who.bootstrap.asd -cl-freeimage http://beta.quicklisp.org/archive/cl-freeimage/2017-04-03/cl-freeimage-20170403-git.tgz 10611 92c8fff7a488a73ff5793f43145cb641 ca94e56e0a67d03b054160c6a78c705b0172f14d cl-freeimage-20170403-git cl-freeimage.asd -cl-freetype2 http://beta.quicklisp.org/archive/cl-freetype2/2022-07-07/cl-freetype2-20220707-git.tgz 43380 4d079ca84ed1ec0cfdc82ef577b4db0c 0f77662025e1e11e95ece1c01c71027919332dfb cl-freetype2-20220707-git cl-freetype2-tests.asd cl-freetype2.asd -cl-fsnotify http://beta.quicklisp.org/archive/cl-fsnotify/2015-03-02/cl-fsnotify-20150302-git.tgz 5979 54fe23d75d2baa6f404aef9c4da39449 6a6f82a1fc13f6286e1e9ae071e4a827830192d4 cl-fsnotify-20150302-git cl-fsnotify.asd -cl-ftp http://beta.quicklisp.org/archive/cl-ftp/2015-06-08/cl-ftp-20150608-http.tgz 9367 0743157a9fe2eea7c4a3a79874df1d55 e2ffb352da8b73a6895499ab6a1c1004e8bc5198 cl-ftp-20150608-http cl-ftp.asd ftp.asd -cl-fuse http://beta.quicklisp.org/archive/cl-fuse/2020-09-25/cl-fuse-20200925-git.tgz 23682 0342ea914801f40d804629170a435e54 b0fa74fa7c0b78e39aae5161a32abe003e5b2b4e cl-fuse-20200925-git cl-fuse.asd -cl-fuse-meta-fs http://beta.quicklisp.org/archive/cl-fuse-meta-fs/2019-07-10/cl-fuse-meta-fs-20190710-git.tgz 16844 461f7023274fb273e6c759e881bdd636 ab7279115b939e7a1d701d8d74538109313db2dc cl-fuse-meta-fs-20190710-git cl-fuse-meta-fs.asd -cl-fuzz http://beta.quicklisp.org/archive/cl-fuzz/2018-10-18/cl-fuzz-20181018-git.tgz 4141 22e715b370ea886bbff1e09db20c4e32 bd6ff387648fcf0c47266b2be40c7214b6e84bb3 cl-fuzz-20181018-git cl-fuzz.asd -cl-fxml http://beta.quicklisp.org/archive/cl-fxml/2022-03-31/cl-fxml-20220331-git.tgz 4323 41c5406bcdd73e74e9118487765e0852 32d68d36b43491d8b77d1d6236b91cf4136dbbc5 cl-fxml-20220331-git cl-fxml.asd -cl-gamepad http://beta.quicklisp.org/archive/cl-gamepad/2023-02-14/cl-gamepad-20230214-git.tgz 53616 bd08e1727f9797d25d4db7a33ec1cf96 28dfe7521820689daded12cf0cc9668b527d2fd0 cl-gamepad-20230214-git cl-gamepad.asd -cl-gap-buffer http://beta.quicklisp.org/archive/cl-gap-buffer/2019-03-07/cl-gap-buffer-20190307-hg.tgz 4587 48de07c260d666659464734743de3646 05aa46f3548f072197a6e75c075b1b8ae60d15f7 cl-gap-buffer-20190307-hg cl-gap-buffer.asd -cl-gbm http://beta.quicklisp.org/archive/cl-gbm/2018-04-30/cl-gbm-20180430-git.tgz 2187 d5f7e5c5d37248986d4a882b44ac43a9 b504515681fb74f54f2e0c3dd4e05226a72ae03c cl-gbm-20180430-git cl-gbm.asd -cl-gcrypt http://beta.quicklisp.org/archive/cl-gcrypt/2021-12-09/cl-gcrypt-20211209-git.tgz 32846 fc5b2ce86bf8f759fef46e53fc8b8c52 c0cf80a69bd8a85ef4de9b9e68b610891c03925a cl-gcrypt-20211209-git cl-gcrypt-test.asd cl-gcrypt.asd -cl-gd http://beta.quicklisp.org/archive/cl-gd/2020-12-20/cl-gd-20201220-git.tgz 202126 647e64e38d0f0ee3979e19dcb821d011 ce3c9f685fe2790f3a214380f857b2e72967d512 cl-gd-20201220-git cl-gd-test.asd cl-gd.asd -cl-gdata http://beta.quicklisp.org/archive/cl-gdata/2017-11-30/cl-gdata-20171130-git.tgz 31765 94763ae151858d354d5e9d8af3bdc538 cbcb9f87b27846e757bf70cf5cea38394ec414d4 cl-gdata-20171130-git cl-gdata.asd -cl-gearman http://beta.quicklisp.org/archive/cl-gearman/2021-10-20/cl-gearman-20211020-git.tgz 8591 e484c2d2341a2e60205aab623af4dbcf e56570929b5f2eaee67a0f44b823e14a39638a74 cl-gearman-20211020-git cl-gearman-test.asd cl-gearman.asd -cl-gendoc http://beta.quicklisp.org/archive/cl-gendoc/2018-08-31/cl-gendoc-20180831-git.tgz 6187 f74903585bca304a72b9739261c5c980 c0b1fec403200e417008b960c5ddbb6bb6bc9f53 cl-gendoc-20180831-git cl-gendoc.asd -cl-gene-searcher http://beta.quicklisp.org/archive/cl-gene-searcher/2011-10-01/cl-gene-searcher-20111001-git.tgz 3309 1350073f7965574a146421e59533bb00 35abc2a2a5b5091f0bb821269bfc6980260ed1fa cl-gene-searcher-20111001-git cl-gene-searcher.asd -cl-general-accumulator http://beta.quicklisp.org/archive/cl-general-accumulator/2021-12-09/cl-general-accumulator-20211209-git.tgz 5359 021858f3e5e4ddce93b6f4b041a3359f 497efa78b935524304ccb66f5442eb2a7b3618a7 cl-general-accumulator-20211209-git general-accumulator.asd -cl-generator http://beta.quicklisp.org/archive/cl-generator/2022-11-06/cl-generator-20221106-git.tgz 4215 2bb80e518276f716caa085f45824149a 7c9878e45b290db148da677aa121dc70a7c1f698 cl-generator-20221106-git cl-generator-test.asd cl-generator.asd -cl-geocode http://beta.quicklisp.org/archive/cl-geocode/2019-08-13/cl-geocode-20190813-git.tgz 583489 9c5dea4fa9d4d25ecb5a12d58ca518d3 a6b99dd47185ed88a289271cc668ba1c6d5a9961 cl-geocode-20190813-git cl-geocode.asd -cl-geoip http://beta.quicklisp.org/archive/cl-geoip/2013-06-15/cl-geoip-20130615-git.tgz 1698 2d174e9d08cead4ae9a320273c332844 08916ca6c4253b06adce2a03210916935d88e797 cl-geoip-20130615-git cl-geoip.asd -cl-geometry http://beta.quicklisp.org/archive/cl-geometry/2016-05-31/cl-geometry-20160531-git.tgz 17003 c0aaccbb4e2df6c504e6c1cd15155353 940f33dadfdfc8be044a94b0166ad99b29893865 cl-geometry-20160531-git cl-geometry-tests.asd cl-geometry.asd -cl-geos http://beta.quicklisp.org/archive/cl-geos/2018-07-11/cl-geos-20180711-git.tgz 18007 087b13649ed86240dead36394b5fea89 a32b0710b2ab3febb1af0fccec6a9e294675abb3 cl-geos-20180711-git cl-geos.asd -cl-getopt http://beta.quicklisp.org/archive/cl-getopt/2021-12-09/cl-getopt-20211209-git.tgz 4596 536c66692013c587940270362a09f611 c6a7d761a15fa9332f500d987444d6d0c8e6c0d5 cl-getopt-20211209-git cl-getopt.asd -cl-getx http://beta.quicklisp.org/archive/cl-getx/2020-09-25/cl-getx-20200925-git.tgz 5801 5998519d91d569c66588020035ac78bf bedde1af62586c52a0bc955cffe15df31e6a061a cl-getx-20200925-git cl-getx.asd -cl-gimei http://beta.quicklisp.org/archive/cl-gimei/2021-10-20/cl-gimei-20211020-git.tgz 149064 20080ba9a58221b02c5f2de647c4bbba e1115122633adac652992deb4777015ed62f9444 cl-gimei-20211020-git cl-gimei.asd -cl-gists http://beta.quicklisp.org/archive/cl-gists/2018-02-28/cl-gists-20180228-git.tgz 10807 adbd22dbdccd05776ad5589add0983b8 1d8c375299852e4a7de3e5495eaa066147cb445d cl-gists-20180228-git cl-gists-test.asd cl-gists.asd -cl-git http://beta.quicklisp.org/archive/cl-git/2023-02-15/cl-git-20230215-git.tgz 77469 371b4a99ef62e14fb959e2caceccc8fd 8ef0a058ffd16390f052ab337dcbeb6e442fe1af cl-git-20230215-git cl-git.asd -cl-github-v3 http://beta.quicklisp.org/archive/cl-github-v3/2019-12-27/cl-github-v3-20191227-git.tgz 2857 e116ddd20a76120573acfe6583c24cb3 353704ab1cf6849d9e4a12e9e0f4dfb9c99d2135 cl-github-v3-20191227-git cl-github-v3.asd -cl-glfw http://beta.quicklisp.org/archive/cl-glfw/2015-03-02/cl-glfw-20150302-git.tgz 461048 c939bd97538b254d445f4b0904bbb8fa 03b779d59b8807cc72bdc2a5d407a393f24fa7fd cl-glfw-20150302-git cl-glfw-ftgl.asd cl-glfw-glu.asd cl-glfw-opengl-core.asd cl-glfw-opengl-version_1_0.asd cl-glfw-opengl-version_1_1.asd cl-glfw-opengl-version_1_2.asd cl-glfw-opengl-version_1_3.asd cl-glfw-opengl-version_1_4.asd cl-glfw-opengl-version_1_5.asd cl-glfw-opengl-version_2_0.asd cl-glfw-opengl-version_2_1.asd cl-glfw-types.asd cl-glfw.asd lib/cl-glfw-opengl-3dfx_multisample.asd lib/cl-glfw-opengl-3dfx_tbuffer.asd lib/cl-glfw-opengl-3dfx_texture_compression_fxt1.asd lib/cl-glfw-opengl-amd_blend_minmax_factor.asd lib/cl-glfw-opengl-amd_depth_clamp_separate.asd lib/cl-glfw-opengl-amd_draw_buffers_blend.asd lib/cl-glfw-opengl-amd_multi_draw_indirect.asd lib/cl-glfw-opengl-amd_name_gen_delete.asd lib/cl-glfw-opengl-amd_performance_monitor.asd lib/cl-glfw-opengl-amd_sample_positions.asd lib/cl-glfw-opengl-amd_seamless_cubemap_per_texture.asd lib/cl-glfw-opengl-amd_vertex_shader_tesselator.asd lib/cl-glfw-opengl-apple_aux_depth_stencil.asd lib/cl-glfw-opengl-apple_client_storage.asd lib/cl-glfw-opengl-apple_element_array.asd lib/cl-glfw-opengl-apple_fence.asd lib/cl-glfw-opengl-apple_float_pixels.asd lib/cl-glfw-opengl-apple_flush_buffer_range.asd lib/cl-glfw-opengl-apple_object_purgeable.asd lib/cl-glfw-opengl-apple_rgb_422.asd lib/cl-glfw-opengl-apple_row_bytes.asd lib/cl-glfw-opengl-apple_specular_vector.asd lib/cl-glfw-opengl-apple_texture_range.asd lib/cl-glfw-opengl-apple_transform_hint.asd lib/cl-glfw-opengl-apple_vertex_array_object.asd lib/cl-glfw-opengl-apple_vertex_array_range.asd lib/cl-glfw-opengl-apple_vertex_program_evaluators.asd lib/cl-glfw-opengl-apple_ycbcr_422.asd lib/cl-glfw-opengl-arb_blend_func_extended.asd lib/cl-glfw-opengl-arb_color_buffer_float.asd lib/cl-glfw-opengl-arb_copy_buffer.asd lib/cl-glfw-opengl-arb_depth_buffer_float.asd lib/cl-glfw-opengl-arb_depth_clamp.asd lib/cl-glfw-opengl-arb_depth_texture.asd lib/cl-glfw-opengl-arb_draw_buffers.asd lib/cl-glfw-opengl-arb_draw_buffers_blend.asd lib/cl-glfw-opengl-arb_draw_elements_base_vertex.asd lib/cl-glfw-opengl-arb_draw_indirect.asd lib/cl-glfw-opengl-arb_draw_instanced.asd lib/cl-glfw-opengl-arb_es2_compatibility.asd lib/cl-glfw-opengl-arb_fragment_program.asd lib/cl-glfw-opengl-arb_fragment_shader.asd lib/cl-glfw-opengl-arb_framebuffer_object.asd lib/cl-glfw-opengl-arb_framebuffer_object_deprecated.asd lib/cl-glfw-opengl-arb_framebuffer_srgb.asd lib/cl-glfw-opengl-arb_geometry_shader4.asd lib/cl-glfw-opengl-arb_get_program_binary.asd lib/cl-glfw-opengl-arb_gpu_shader5.asd lib/cl-glfw-opengl-arb_gpu_shader_fp64.asd lib/cl-glfw-opengl-arb_half_float_pixel.asd lib/cl-glfw-opengl-arb_half_float_vertex.asd lib/cl-glfw-opengl-arb_imaging.asd lib/cl-glfw-opengl-arb_imaging_deprecated.asd lib/cl-glfw-opengl-arb_instanced_arrays.asd lib/cl-glfw-opengl-arb_map_buffer_range.asd lib/cl-glfw-opengl-arb_matrix_palette.asd lib/cl-glfw-opengl-arb_multisample.asd lib/cl-glfw-opengl-arb_multitexture.asd lib/cl-glfw-opengl-arb_occlusion_query.asd lib/cl-glfw-opengl-arb_occlusion_query2.asd lib/cl-glfw-opengl-arb_pixel_buffer_object.asd lib/cl-glfw-opengl-arb_point_parameters.asd lib/cl-glfw-opengl-arb_point_sprite.asd lib/cl-glfw-opengl-arb_provoking_vertex.asd lib/cl-glfw-opengl-arb_robustness.asd lib/cl-glfw-opengl-arb_sample_shading.asd lib/cl-glfw-opengl-arb_sampler_objects.asd lib/cl-glfw-opengl-arb_seamless_cube_map.asd lib/cl-glfw-opengl-arb_separate_shader_objects.asd lib/cl-glfw-opengl-arb_shader_objects.asd lib/cl-glfw-opengl-arb_shader_subroutine.asd lib/cl-glfw-opengl-arb_shading_language_100.asd lib/cl-glfw-opengl-arb_shading_language_include.asd lib/cl-glfw-opengl-arb_shadow.asd lib/cl-glfw-opengl-arb_shadow_ambient.asd lib/cl-glfw-opengl-arb_tessellation_shader.asd lib/cl-glfw-opengl-arb_texture_border_clamp.asd lib/cl-glfw-opengl-arb_texture_buffer_object.asd lib/cl-glfw-opengl-arb_texture_buffer_object_rgb32.asd lib/cl-glfw-opengl-arb_texture_compression.asd lib/cl-glfw-opengl-arb_texture_compression_bptc.asd lib/cl-glfw-opengl-arb_texture_compression_rgtc.asd lib/cl-glfw-opengl-arb_texture_cube_map.asd lib/cl-glfw-opengl-arb_texture_cube_map_array.asd lib/cl-glfw-opengl-arb_texture_env_combine.asd lib/cl-glfw-opengl-arb_texture_env_dot3.asd lib/cl-glfw-opengl-arb_texture_float.asd lib/cl-glfw-opengl-arb_texture_gather.asd lib/cl-glfw-opengl-arb_texture_mirrored_repeat.asd lib/cl-glfw-opengl-arb_texture_multisample.asd lib/cl-glfw-opengl-arb_texture_rectangle.asd lib/cl-glfw-opengl-arb_texture_rg.asd lib/cl-glfw-opengl-arb_texture_rgb10_a2ui.asd lib/cl-glfw-opengl-arb_texture_swizzle.asd lib/cl-glfw-opengl-arb_timer_query.asd lib/cl-glfw-opengl-arb_transform_feedback2.asd lib/cl-glfw-opengl-arb_transpose_matrix.asd lib/cl-glfw-opengl-arb_uniform_buffer_object.asd lib/cl-glfw-opengl-arb_vertex_array_bgra.asd lib/cl-glfw-opengl-arb_vertex_array_object.asd lib/cl-glfw-opengl-arb_vertex_attrib_64bit.asd lib/cl-glfw-opengl-arb_vertex_blend.asd lib/cl-glfw-opengl-arb_vertex_buffer_object.asd lib/cl-glfw-opengl-arb_vertex_program.asd lib/cl-glfw-opengl-arb_vertex_shader.asd lib/cl-glfw-opengl-arb_vertex_type_2_10_10_10_rev.asd lib/cl-glfw-opengl-arb_viewport_array.asd lib/cl-glfw-opengl-arb_window_pos.asd lib/cl-glfw-opengl-ati_draw_buffers.asd lib/cl-glfw-opengl-ati_element_array.asd lib/cl-glfw-opengl-ati_envmap_bumpmap.asd lib/cl-glfw-opengl-ati_fragment_shader.asd lib/cl-glfw-opengl-ati_map_object_buffer.asd lib/cl-glfw-opengl-ati_meminfo.asd lib/cl-glfw-opengl-ati_pixel_format_float.asd lib/cl-glfw-opengl-ati_pn_triangles.asd lib/cl-glfw-opengl-ati_separate_stencil.asd lib/cl-glfw-opengl-ati_text_fragment_shader.asd lib/cl-glfw-opengl-ati_texture_env_combine3.asd lib/cl-glfw-opengl-ati_texture_float.asd lib/cl-glfw-opengl-ati_texture_mirror_once.asd lib/cl-glfw-opengl-ati_vertex_array_object.asd lib/cl-glfw-opengl-ati_vertex_attrib_array_object.asd lib/cl-glfw-opengl-ati_vertex_streams.asd lib/cl-glfw-opengl-ext_422_pixels.asd lib/cl-glfw-opengl-ext_abgr.asd lib/cl-glfw-opengl-ext_bgra.asd lib/cl-glfw-opengl-ext_bindable_uniform.asd lib/cl-glfw-opengl-ext_blend_color.asd lib/cl-glfw-opengl-ext_blend_equation_separate.asd lib/cl-glfw-opengl-ext_blend_func_separate.asd lib/cl-glfw-opengl-ext_blend_minmax.asd lib/cl-glfw-opengl-ext_blend_subtract.asd lib/cl-glfw-opengl-ext_clip_volume_hint.asd lib/cl-glfw-opengl-ext_cmyka.asd lib/cl-glfw-opengl-ext_color_subtable.asd lib/cl-glfw-opengl-ext_compiled_vertex_array.asd lib/cl-glfw-opengl-ext_convolution.asd lib/cl-glfw-opengl-ext_coordinate_frame.asd lib/cl-glfw-opengl-ext_copy_texture.asd lib/cl-glfw-opengl-ext_cull_vertex.asd lib/cl-glfw-opengl-ext_depth_bounds_test.asd lib/cl-glfw-opengl-ext_direct_state_access.asd lib/cl-glfw-opengl-ext_draw_buffers2.asd lib/cl-glfw-opengl-ext_draw_instanced.asd lib/cl-glfw-opengl-ext_draw_range_elements.asd lib/cl-glfw-opengl-ext_fog_coord.asd lib/cl-glfw-opengl-ext_framebuffer_blit.asd lib/cl-glfw-opengl-ext_framebuffer_multisample.asd lib/cl-glfw-opengl-ext_framebuffer_object.asd lib/cl-glfw-opengl-ext_framebuffer_srgb.asd lib/cl-glfw-opengl-ext_geometry_shader4.asd lib/cl-glfw-opengl-ext_gpu_program_parameters.asd lib/cl-glfw-opengl-ext_gpu_shader4.asd lib/cl-glfw-opengl-ext_histogram.asd lib/cl-glfw-opengl-ext_index_array_formats.asd lib/cl-glfw-opengl-ext_index_func.asd lib/cl-glfw-opengl-ext_index_material.asd lib/cl-glfw-opengl-ext_light_texture.asd lib/cl-glfw-opengl-ext_multi_draw_arrays.asd lib/cl-glfw-opengl-ext_multisample.asd lib/cl-glfw-opengl-ext_packed_depth_stencil.asd lib/cl-glfw-opengl-ext_packed_float.asd lib/cl-glfw-opengl-ext_packed_pixels.asd lib/cl-glfw-opengl-ext_paletted_texture.asd lib/cl-glfw-opengl-ext_pixel_buffer_object.asd lib/cl-glfw-opengl-ext_pixel_transform.asd lib/cl-glfw-opengl-ext_point_parameters.asd lib/cl-glfw-opengl-ext_polygon_offset.asd lib/cl-glfw-opengl-ext_provoking_vertex.asd lib/cl-glfw-opengl-ext_secondary_color.asd lib/cl-glfw-opengl-ext_separate_shader_objects.asd lib/cl-glfw-opengl-ext_separate_specular_color.asd lib/cl-glfw-opengl-ext_shader_image_load_store.asd lib/cl-glfw-opengl-ext_stencil_clear_tag.asd lib/cl-glfw-opengl-ext_stencil_two_side.asd lib/cl-glfw-opengl-ext_stencil_wrap.asd lib/cl-glfw-opengl-ext_subtexture.asd lib/cl-glfw-opengl-ext_texture.asd lib/cl-glfw-opengl-ext_texture3d.asd lib/cl-glfw-opengl-ext_texture_array.asd lib/cl-glfw-opengl-ext_texture_buffer_object.asd lib/cl-glfw-opengl-ext_texture_compression_latc.asd lib/cl-glfw-opengl-ext_texture_compression_rgtc.asd lib/cl-glfw-opengl-ext_texture_compression_s3tc.asd lib/cl-glfw-opengl-ext_texture_cube_map.asd lib/cl-glfw-opengl-ext_texture_env_combine.asd lib/cl-glfw-opengl-ext_texture_env_dot3.asd lib/cl-glfw-opengl-ext_texture_filter_anisotropic.asd lib/cl-glfw-opengl-ext_texture_integer.asd lib/cl-glfw-opengl-ext_texture_lod_bias.asd lib/cl-glfw-opengl-ext_texture_mirror_clamp.asd lib/cl-glfw-opengl-ext_texture_object.asd lib/cl-glfw-opengl-ext_texture_perturb_normal.asd lib/cl-glfw-opengl-ext_texture_shared_exponent.asd lib/cl-glfw-opengl-ext_texture_snorm.asd lib/cl-glfw-opengl-ext_texture_srgb.asd lib/cl-glfw-opengl-ext_texture_srgb_decode.asd lib/cl-glfw-opengl-ext_texture_swizzle.asd lib/cl-glfw-opengl-ext_timer_query.asd lib/cl-glfw-opengl-ext_transform_feedback.asd lib/cl-glfw-opengl-ext_vertex_array.asd lib/cl-glfw-opengl-ext_vertex_array_bgra.asd lib/cl-glfw-opengl-ext_vertex_attrib_64bit.asd lib/cl-glfw-opengl-ext_vertex_shader.asd lib/cl-glfw-opengl-ext_vertex_weighting.asd lib/cl-glfw-opengl-gremedy_frame_terminator.asd lib/cl-glfw-opengl-gremedy_string_marker.asd lib/cl-glfw-opengl-hp_convolution_border_modes.asd lib/cl-glfw-opengl-hp_image_transform.asd lib/cl-glfw-opengl-hp_occlusion_test.asd lib/cl-glfw-opengl-hp_texture_lighting.asd lib/cl-glfw-opengl-ibm_cull_vertex.asd lib/cl-glfw-opengl-ibm_multimode_draw_arrays.asd lib/cl-glfw-opengl-ibm_rasterpos_clip.asd lib/cl-glfw-opengl-ibm_texture_mirrored_repeat.asd lib/cl-glfw-opengl-ibm_vertex_array_lists.asd lib/cl-glfw-opengl-ingr_blend_func_separate.asd lib/cl-glfw-opengl-ingr_color_clamp.asd lib/cl-glfw-opengl-ingr_interlace_read.asd lib/cl-glfw-opengl-intel_parallel_arrays.asd lib/cl-glfw-opengl-mesa_pack_invert.asd lib/cl-glfw-opengl-mesa_packed_depth_stencil.asd lib/cl-glfw-opengl-mesa_program_debug.asd lib/cl-glfw-opengl-mesa_resize_buffers.asd lib/cl-glfw-opengl-mesa_shader_debug.asd lib/cl-glfw-opengl-mesa_trace.asd lib/cl-glfw-opengl-mesa_window_pos.asd lib/cl-glfw-opengl-mesa_ycbcr_texture.asd lib/cl-glfw-opengl-mesax_texture_stack.asd lib/cl-glfw-opengl-nv_conditional_render.asd lib/cl-glfw-opengl-nv_copy_depth_to_color.asd lib/cl-glfw-opengl-nv_copy_image.asd lib/cl-glfw-opengl-nv_depth_buffer_float.asd lib/cl-glfw-opengl-nv_depth_clamp.asd lib/cl-glfw-opengl-nv_evaluators.asd lib/cl-glfw-opengl-nv_explicit_multisample.asd lib/cl-glfw-opengl-nv_fence.asd lib/cl-glfw-opengl-nv_float_buffer.asd lib/cl-glfw-opengl-nv_fog_distance.asd lib/cl-glfw-opengl-nv_fragment_program.asd lib/cl-glfw-opengl-nv_fragment_program2.asd lib/cl-glfw-opengl-nv_framebuffer_multisample_coverage.asd lib/cl-glfw-opengl-nv_geometry_program4.asd lib/cl-glfw-opengl-nv_gpu_program4.asd lib/cl-glfw-opengl-nv_gpu_program5.asd lib/cl-glfw-opengl-nv_gpu_shader5.asd lib/cl-glfw-opengl-nv_half_float.asd lib/cl-glfw-opengl-nv_light_max_exponent.asd lib/cl-glfw-opengl-nv_multisample_coverage.asd lib/cl-glfw-opengl-nv_multisample_filter_hint.asd lib/cl-glfw-opengl-nv_occlusion_query.asd lib/cl-glfw-opengl-nv_packed_depth_stencil.asd lib/cl-glfw-opengl-nv_parameter_buffer_object.asd lib/cl-glfw-opengl-nv_pixel_data_range.asd lib/cl-glfw-opengl-nv_point_sprite.asd lib/cl-glfw-opengl-nv_present_video.asd lib/cl-glfw-opengl-nv_primitive_restart.asd lib/cl-glfw-opengl-nv_register_combiners.asd lib/cl-glfw-opengl-nv_register_combiners2.asd lib/cl-glfw-opengl-nv_shader_buffer_load.asd lib/cl-glfw-opengl-nv_shader_buffer_store.asd lib/cl-glfw-opengl-nv_tessellation_program5.asd lib/cl-glfw-opengl-nv_texgen_emboss.asd lib/cl-glfw-opengl-nv_texgen_reflection.asd lib/cl-glfw-opengl-nv_texture_barrier.asd lib/cl-glfw-opengl-nv_texture_env_combine4.asd lib/cl-glfw-opengl-nv_texture_expand_normal.asd lib/cl-glfw-opengl-nv_texture_multisample.asd lib/cl-glfw-opengl-nv_texture_rectangle.asd lib/cl-glfw-opengl-nv_texture_shader.asd lib/cl-glfw-opengl-nv_texture_shader2.asd lib/cl-glfw-opengl-nv_texture_shader3.asd lib/cl-glfw-opengl-nv_transform_feedback.asd lib/cl-glfw-opengl-nv_transform_feedback2.asd lib/cl-glfw-opengl-nv_vertex_array_range.asd lib/cl-glfw-opengl-nv_vertex_array_range2.asd lib/cl-glfw-opengl-nv_vertex_attrib_integer_64bit.asd lib/cl-glfw-opengl-nv_vertex_buffer_unified_memory.asd lib/cl-glfw-opengl-nv_vertex_program.asd lib/cl-glfw-opengl-nv_vertex_program2_option.asd lib/cl-glfw-opengl-nv_vertex_program3.asd lib/cl-glfw-opengl-nv_vertex_program4.asd lib/cl-glfw-opengl-oes_read_format.asd lib/cl-glfw-opengl-oml_interlace.asd lib/cl-glfw-opengl-oml_resample.asd lib/cl-glfw-opengl-oml_subsample.asd lib/cl-glfw-opengl-pgi_misc_hints.asd lib/cl-glfw-opengl-pgi_vertex_hints.asd lib/cl-glfw-opengl-rend_screen_coordinates.asd lib/cl-glfw-opengl-s3_s3tc.asd lib/cl-glfw-opengl-sgi_color_table.asd lib/cl-glfw-opengl-sgi_depth_pass_instrument.asd lib/cl-glfw-opengl-sgis_detail_texture.asd lib/cl-glfw-opengl-sgis_fog_function.asd lib/cl-glfw-opengl-sgis_multisample.asd lib/cl-glfw-opengl-sgis_pixel_texture.asd lib/cl-glfw-opengl-sgis_point_parameters.asd lib/cl-glfw-opengl-sgis_sharpen_texture.asd lib/cl-glfw-opengl-sgis_texture4d.asd lib/cl-glfw-opengl-sgis_texture_color_mask.asd lib/cl-glfw-opengl-sgis_texture_filter4.asd lib/cl-glfw-opengl-sgis_texture_select.asd lib/cl-glfw-opengl-sgix_async.asd lib/cl-glfw-opengl-sgix_depth_texture.asd lib/cl-glfw-opengl-sgix_flush_raster.asd lib/cl-glfw-opengl-sgix_fog_scale.asd lib/cl-glfw-opengl-sgix_fragment_lighting.asd lib/cl-glfw-opengl-sgix_framezoom.asd lib/cl-glfw-opengl-sgix_igloo_interface.asd lib/cl-glfw-opengl-sgix_instruments.asd lib/cl-glfw-opengl-sgix_line_quality_hint.asd lib/cl-glfw-opengl-sgix_list_priority.asd lib/cl-glfw-opengl-sgix_pixel_texture.asd lib/cl-glfw-opengl-sgix_polynomial_ffd.asd lib/cl-glfw-opengl-sgix_reference_plane.asd lib/cl-glfw-opengl-sgix_resample.asd lib/cl-glfw-opengl-sgix_scalebias_hint.asd lib/cl-glfw-opengl-sgix_shadow.asd lib/cl-glfw-opengl-sgix_shadow_ambient.asd lib/cl-glfw-opengl-sgix_slim.asd lib/cl-glfw-opengl-sgix_sprite.asd lib/cl-glfw-opengl-sgix_tag_sample_buffer.asd lib/cl-glfw-opengl-sgix_texture_coordinate_clamp.asd lib/cl-glfw-opengl-sgix_texture_lod_bias.asd lib/cl-glfw-opengl-sgix_texture_multi_buffer.asd lib/cl-glfw-opengl-sgix_ycrcba.asd lib/cl-glfw-opengl-sun_convolution_border_modes.asd lib/cl-glfw-opengl-sun_global_alpha.asd lib/cl-glfw-opengl-sun_mesh_array.asd lib/cl-glfw-opengl-sun_slice_accum.asd lib/cl-glfw-opengl-sun_triangle_list.asd lib/cl-glfw-opengl-sun_vertex.asd lib/cl-glfw-opengl-sunx_constant_data.asd lib/cl-glfw-opengl-win_phong_shading.asd lib/cl-glfw-opengl-win_specular_fog.asd -cl-glfw3 http://beta.quicklisp.org/archive/cl-glfw3/2021-05-31/cl-glfw3-20210531-git.tgz 14642 3309ed23c7dffce0cd6759550c3a21d9 f5b86163d1d8e2406793e9214670e34d7181e79f cl-glfw3-20210531-git cl-glfw3-examples.asd cl-glfw3.asd -cl-glib http://beta.quicklisp.org/archive/cl-glib/2023-02-14/cl-glib-20230214-git.tgz 4991 1f82adee5aef6002d44aa0392f312e94 72b4d838c035f8dc02ffb01e7f302902fead9b97 cl-glib-20230214-git cl-glib.asd cl-glib.gio.asd cl-glib.gobject.asd -cl-gltf http://beta.quicklisp.org/archive/cl-gltf/2022-03-31/cl-gltf-20220331-git.tgz 24847 e323a55e9c79708662372cf3154ed7a0 5c21728445377a6acce9320ab11251580f2339ec cl-gltf-20220331-git cl-gltf.asd -cl-gobject-introspection http://beta.quicklisp.org/archive/cl-gobject-introspection/2023-02-14/cl-gobject-introspection-20230214-git.tgz 85893 eba27e06efb2788a9e733604c7c768df 02e29c4d63a7947452e336fc5736dd6b1b38cd71 cl-gobject-introspection-20230214-git cl-gobject-introspection-test.asd cl-gobject-introspection.asd -cl-gobject-introspection-wrapper http://beta.quicklisp.org/archive/cl-gobject-introspection-wrapper/2023-02-14/cl-gobject-introspection-wrapper-20230214-git.tgz 8690 dea297cd02c4c39a5926be9a451155b4 7c77bdb4b17307794801ddf916f51b0f1ae63505 cl-gobject-introspection-wrapper-20230214-git cl-gobject-introspection-wrapper.asd -cl-gopher http://beta.quicklisp.org/archive/cl-gopher/2022-03-31/cl-gopher-20220331-git.tgz 10478 8b3636509524fdf9a1922efb052c4e59 1ab2500806e6a79516b7ed3391a3c3f682261f57 cl-gopher-20220331-git cl-gopher.asd -cl-gpio http://beta.quicklisp.org/archive/cl-gpio/2021-12-09/cl-gpio-20211209-git.tgz 9353 f9777c96836b5b2132d071f46a071ee5 f27176cbe4292ade24bf6b7afeff2f1713860eb2 cl-gpio-20211209-git cl-gpio.asd -cl-graph http://beta.quicklisp.org/archive/cl-graph/2023-02-14/cl-graph-20230214-git.tgz 60527 29210d37159580045eb8fbcbe0cbd9a1 13d8518850406c23bd33584128ebd4e6e4d9bebc cl-graph-20230214-git cl-graph+hu.dwim.graphviz.asd cl-graph.asd -cl-gravatar http://beta.quicklisp.org/archive/cl-gravatar/2011-03-20/cl-gravatar-20110320-git.tgz 2127 6d4e5c83f238a7c301a572ddc926ef9b ae2e3b442465a3395c5f7d0948346bcd9562664e cl-gravatar-20110320-git gravatar.asd -cl-graylog http://beta.quicklisp.org/archive/cl-graylog/2018-04-30/cl-graylog-20180430-git.tgz 3582 4a821f6c2a6496f3fa7fefb4052186d5 5aa806c058074da350fd0208d5049bf1d4b1e4b9 cl-graylog-20180430-git graylog-log5.asd graylog.asd -cl-grip http://beta.quicklisp.org/archive/cl-grip/2021-10-20/cl-grip-20211020-git.tgz 16546 cd100c21194692030f639ab925e69b66 f0b4db31df493490af718d38820aa183976cfccf cl-grip-20211020-git cl-grip.asd -cl-grnm http://beta.quicklisp.org/archive/cl-grnm/2018-01-31/cl-grnm-20180131-git.tgz 9511 9442e2489cf6894f4e61f9ec610d5c04 0609e0ac48299f120f71c2b86b7fec1f14897a08 cl-grnm-20180131-git cl-grnm.asd -cl-groupby http://beta.quicklisp.org/archive/cl-groupby/2017-08-30/cl-groupby-20170830-git.tgz 4240 5eab5f4784f0a154087daa7aa0caa930 9d7699457042096e05968c011013ad27b9271613 cl-groupby-20170830-git groupby.asd -cl-growl http://beta.quicklisp.org/archive/cl-growl/2016-12-08/cl-growl-20161208-git.tgz 9956 2a99024043323daf84837ae36fb89b2c 6dd1dfb8cec367fe2602a0b2b1bbaff83130f86c cl-growl-20161208-git cl-growl.asd -cl-gserver http://beta.quicklisp.org/archive/cl-gserver/2023-02-14/cl-gserver-20230214-git.tgz 896543 266ec290f330ccde7d26a42a66eece87 395fdccf4c4f2fe7c64072732899719b246cae30 cl-gserver-20230214-git sento.asd -cl-gss http://beta.quicklisp.org/archive/cl-gss/2018-02-28/cl-gss-20180228-git.tgz 11188 62e9ab1eb233059a0b7f2276a95814d0 23537f4151f9472047e0725bd9e1f2899e766088 cl-gss-20180228-git cl-gss.asd -cl-gtk2 http://beta.quicklisp.org/archive/cl-gtk2/2021-10-20/cl-gtk2-20211020-git.tgz 385017 1e4c2a29fb53cf8cce46c4a596f69823 a5dc2aafc070b34b1ab09fdcd59dfed9ddd7b9c0 cl-gtk2-20211020-git gdk/cl-gtk2-gdk.asd glib/cl-gtk2-glib.asd pango/cl-gtk2-pango.asd -cl-hamcrest http://beta.quicklisp.org/archive/cl-hamcrest/2023-02-14/cl-hamcrest-20230214-git.tgz 28077 964c65b688d66de4a01ffb728233b4de 2c9c01123ade034a409a34d68cf71f7442b6f9a1 cl-hamcrest-20230214-git hamcrest-tests.asd hamcrest.asd -cl-haml http://beta.quicklisp.org/archive/cl-haml/2018-02-28/cl-haml-20180228-git.tgz 17830 0cc73c605a2f182eec47b645ace67498 474bdbb68dfaea7ffefd3396a6b1c14c63ecdfcb cl-haml-20180228-git cl-haml.asd -cl-hamt http://beta.quicklisp.org/archive/cl-hamt/2020-03-25/cl-hamt-20200325-git.tgz 14108 00d8149d1b7178697404ae292761d56a 675720b4cfa7c1bd3c4e08298e0eeec2aba8db6a cl-hamt-20200325-git cl-hamt-examples.asd cl-hamt-test.asd cl-hamt.asd -cl-hash-table-destructuring http://beta.quicklisp.org/archive/cl-hash-table-destructuring/2016-05-31/cl-hash-table-destructuring-20160531-git.tgz 2604 05fb57c755f09ec4f2f5933fdaaedd4c 40d1d6441dd49fb7c51896d5f518d1addf4d2b7c cl-hash-table-destructuring-20160531-git cl-hash-table-destructuring.asd -cl-hash-util http://beta.quicklisp.org/archive/cl-hash-util/2019-01-07/cl-hash-util-20190107-git.tgz 7291 ff5044132c9684cf49f8b841096c67a2 c39b42dde00c70c608089c1c58c958bf46d152e9 cl-hash-util-20190107-git cl-hash-util-test.asd cl-hash-util.asd -cl-heap http://beta.quicklisp.org/archive/cl-heap/2013-03-12/cl-heap-0.1.6.tgz 26979 a12d71f7bbe22d6acdcc7cf36fb907b0 defa03668605e5a14a0431715adf2febf0aaa65a cl-heap-0.1.6 cl-heap-tests.asd cl-heap.asd -cl-heredoc http://beta.quicklisp.org/archive/cl-heredoc/2022-07-07/cl-heredoc-20220707-git.tgz 17336 5f94cf024fb30519725816ca9c59d167 2360919aeaa9f434b4fd486f9437bf6b372931d6 cl-heredoc-20220707-git cl-heredoc-test.asd cl-heredoc.asd -cl-html-diff http://beta.quicklisp.org/archive/cl-html-diff/2013-01-28/cl-html-diff-20130128-git.tgz 4134 70f93e60e968dad9a44ede60856dc343 62480247479faf7bad6c1bbd4f4135ac2485694e cl-html-diff-20130128-git cl-html-diff.asd -cl-html-parse http://beta.quicklisp.org/archive/cl-html-parse/2020-09-25/cl-html-parse-20200925-git.tgz 24755 3333eedf037a48900c663fceae3e4cfd e0ff6f78f80aa226f4f6939eae69e276a8fd710f cl-html-parse-20200925-git cl-html-parse.asd -cl-html-readme http://beta.quicklisp.org/archive/cl-html-readme/2021-02-28/cl-html-readme-quicklisp-current-release-fa304a63-git.tgz 13877 26b27e698d0dbd108e0aace4b9435465 7c3f4521f13121d47bd5e1b4d3a48e22da647873 cl-html-readme-quicklisp-current-release-fa304a63-git cl-html-readme.asd -cl-html5-parser http://beta.quicklisp.org/archive/cl-html5-parser/2019-05-21/cl-html5-parser-20190521-git.tgz 192746 149e5609d0a96c867fac6c22693c5e30 4b9882d952d5cf90ce0c874e0b134a04db64d0a4 cl-html5-parser-20190521-git cl-html5-parser.asd cxml/cl-html5-parser-cxml.asd tests/cl-html5-parser-tests.asd -cl-htmlprag http://beta.quicklisp.org/archive/cl-htmlprag/2016-06-28/cl-htmlprag-20160628-git.tgz 41128 8232a485fcb90e422bca541c4e81c263 3a1eb22bd66998acf5eb018237f4a85e0935d6c8 cl-htmlprag-20160628-git cl-htmlprag.asd -cl-httpsqs http://beta.quicklisp.org/archive/cl-httpsqs/2018-02-28/cl-httpsqs-20180228-git.tgz 2303 4ed58c978ada913cbff3fffa002f15eb 446c6bd9937ed987e9ed7bd0023b44512cb462c8 cl-httpsqs-20180228-git cl-httpsqs.asd -cl-hue http://beta.quicklisp.org/archive/cl-hue/2015-01-13/cl-hue-20150113-git.tgz 2734 c5703adb29241896c35f365be6470811 51c697d52abb18f0a370c50c7d9e83cf8d84c43a cl-hue-20150113-git cl-hue.asd -cl-i18n http://beta.quicklisp.org/archive/cl-i18n/2023-02-14/cl-i18n-20230214-git.tgz 59337 6c253b4697e566d31e783dde81322244 3f6dce20c04889099b00c0e6c4258a08594959d0 cl-i18n-20230214-git cl-i18n.asd -cl-iconv http://beta.quicklisp.org/archive/cl-iconv/2017-12-27/cl-iconv-20171227-git.tgz 4909 3b6bccf9f50224194d2d0910cd563a6a 3509872d765d9d3a7557cecaa8fadd804f46fc4c cl-iconv-20171227-git iconv.asd -cl-incognia http://beta.quicklisp.org/archive/cl-incognia/2021-12-30/cl-incognia-20211230-git.tgz 7012 3f30a8fb30e0a403116b47a0b8cb729e e91181c2917d878163efe19839d09767948ca860 cl-incognia-20211230-git cl-incognia.asd -cl-indentify http://beta.quicklisp.org/archive/cl-indentify/2023-02-14/cl-indentify-20230214-git.tgz 10563 8215b26e8c1c5ae486efb224eb47d6f2 25a33702c47db1751f7fccdfd13fa29ee1575bc4 cl-indentify-20230214-git cl-indentify.asd -cl-inflector http://beta.quicklisp.org/archive/cl-inflector/2015-01-13/cl-inflector-20150113-git.tgz 6368 8563dd864200dc23b64648581ccec94f 7ef99cde744b4c4645bac4ea440fc1f2a709fdee cl-inflector-20150113-git cl-inflector.asd -cl-influxdb http://beta.quicklisp.org/archive/cl-influxdb/2018-01-31/cl-influxdb-20180131-git.tgz 15600 a34f8d1f70690f6c19465f9bd65f491c 8eb53449dbba61449beec84d34dcc989b06dd5a3 cl-influxdb-20180131-git cl-influxdb.asd -cl-info http://beta.quicklisp.org/archive/cl-info/2022-11-06/cl-info-20221106-git.tgz 7970 e85ee72ba0170bfc151b6111f438422c 2654e76778bcea83f27c6176a2c6063b5e31e205 cl-info-20221106-git cl-info-test.asd cl-info.asd -cl-ini http://beta.quicklisp.org/archive/cl-ini/2020-12-20/cl-ini-20201220-git.tgz 2753 ba16d72675a2b96cb4c7e6f60d5a25f7 3371e6d7b1393111d724073515a531398d15d7da cl-ini-20201220-git cl-ini-test.asd cl-ini.asd -cl-inotify http://beta.quicklisp.org/archive/cl-inotify/2022-07-07/cl-inotify-20220707-git.tgz 11726 df666de01f79c34000246c032e7a074f 2164f205e0426b0f6812898fed71703008d186ba cl-inotify-20220707-git cl-inotify-tests.asd cl-inotify.asd -cl-intbytes http://beta.quicklisp.org/archive/cl-intbytes/2015-09-23/cl-intbytes-20150923-git.tgz 3789 690cdfa2b0bc4829eeb1f8606291f0f5 f2a1bf6b3052fbd84755e3589d3370511f86b05c cl-intbytes-20150923-git cl-intbytes-test.asd cl-intbytes.asd -cl-interpol http://beta.quicklisp.org/archive/cl-interpol/2022-11-06/cl-interpol-20221106-git.tgz 43666 cc2335e703dea4016af0ce935a5dd07e c6a60bdd880b1e47698abc9d17a9526492633c5e cl-interpol-20221106-git cl-interpol.asd -cl-interval http://beta.quicklisp.org/archive/cl-interval/2020-07-15/cl-interval-20200715-git.tgz 10609 22fa5053c3fcbbf0fedebf0a3dffa38a 56dae5e7501d9255853fe9153f03189bc54d01a9 cl-interval-20200715-git cl-interval-docs.asd cl-interval.asd -cl-ipfs-api2 http://beta.quicklisp.org/archive/cl-ipfs-api2/2021-06-30/cl-ipfs-api2-20210630-git.tgz 15080 09d700b4ba26cbcfb7a4426882ff58cc bc83bdc1315608a4a6ce551d1da03b990710b4fd cl-ipfs-api2-20210630-git cl-ipfs-api2.asd -cl-irc http://beta.quicklisp.org/archive/cl-irc/2015-09-23/cl-irc-0.9.2.tgz 921763 73e8ba73d8e4222cec427704c1a6aabd 8f0bf062ea520bfb6e4b0a0395c85c4250425cfb cl-irc-0.9.2 cl-irc.asd test/cl-irc-test.asd -cl-irregsexp http://beta.quicklisp.org/archive/cl-irregsexp/2016-08-25/cl-irregsexp-20160825-git.tgz 21596 717edf273168ca0ca638dcb8721ce4ac 40dd190eaf28eea03b2208469408590b390d07c2 cl-irregsexp-20160825-git cl-irregsexp.asd -cl-isaac http://beta.quicklisp.org/archive/cl-isaac/2022-11-06/cl-isaac-20221106-git.tgz 8814 8049ff77676d2362e6355e11a61d88f0 51ba71a93610bdb140f329df16e27bc5dff48da6 cl-isaac-20221106-git cl-isaac.asd -cl-isolated http://beta.quicklisp.org/archive/cl-isolated/2020-02-18/cl-isolated-20200218-git.tgz 19937 821b4b00dc524fc49a65fdda4dba3350 83ece69656138758b0737c90544914c38b347475 cl-isolated-20200218-git isolated.asd -cl-iterative http://beta.quicklisp.org/archive/cl-iterative/2016-03-18/cl-iterative-20160318-git.tgz 8987 7fc7c0e9e4451fc95b57db27e2e42f2c 85c5a21c03dc6e5c88bc3c9a2c1ece9731732a91 cl-iterative-20160318-git cl-iterative-tests.asd cl-iterative.asd -cl-itertools http://beta.quicklisp.org/archive/cl-itertools/2016-04-21/cl-itertools-20160421-git.tgz 6199 03577f82ecdbba2ed0977237a06c0017 97812f1df7ea506f413fee176e6897c85962a1bd cl-itertools-20160421-git cl-itertools.asd -cl-ixf http://beta.quicklisp.org/archive/cl-ixf/2018-02-28/cl-ixf-20180228-git.tgz 8677 23732795aa317d24c1a40cc321a0e394 7b99b33ef1a21049bc8eac1245f1d87fb38f98ea cl-ixf-20180228-git ixf.asd -cl-jingle http://beta.quicklisp.org/archive/cl-jingle/2023-02-15/cl-jingle-20230215-git.tgz 3468461 ca48781e1ee5e41e719adbda78c958ee cc42e615157c180d3d8c5447538c6f2b7cc7febd cl-jingle-20230215-git jingle.asd jingle.demo.asd jingle.demo.test.asd jingle.test.asd -cl-jpeg http://beta.quicklisp.org/archive/cl-jpeg/2023-02-14/cl-jpeg-20230214-git.tgz 25462 17459539a013ffcd51037a0e4f9257d5 e7711719e60a38c8ca753a5e1e608a45f044562a cl-jpeg-20230214-git cl-jpeg.asd -cl-jpl-util http://beta.quicklisp.org/archive/cl-jpl-util/2015-10-31/cl-jpl-util-20151031-git.tgz 36026 e294bedace729724873e7633b8265a00 0d6d0d8d68c636de34c02e5b0f15b34758e50ac5 cl-jpl-util-20151031-git jpl-util.asd -cl-json http://beta.quicklisp.org/archive/cl-json/2022-07-07/cl-json-20220707-git.tgz 65728 95a7d92bf0e1e930f7f859c0aae5a2fc b03302b3c21a9068ce2e8403762463c189cfdee7 cl-json-20220707-git cl-json.asd -cl-json-helper http://beta.quicklisp.org/archive/cl-json-helper/2018-12-10/cl-json-helper-20181210-git.tgz 2779 a681ca1edff40c68c65e2a6f4457ac01 38cfe3a53def3c09c9b013bc09a9b0c18577f24a cl-json-helper-20181210-git cl-json-helper.asd -cl-json-pointer http://beta.quicklisp.org/archive/cl-json-pointer/2022-11-06/cl-json-pointer-20221106-git.tgz 23021 4147a61e129dc10b5fd74967ae5d6895 c1f12b3dac48e268298f9a5d189b12808d2a15da cl-json-pointer-20221106-git cl-json-pointer.asd -cl-json-schema http://beta.quicklisp.org/archive/cl-json-schema/2021-02-28/cl-json-schema-20210228-git.tgz 10520 c0299dbdcb97bb418c0dd738ac126ec3 d49b93b456532aebde56f262c059ca973873acbf cl-json-schema-20210228-git cl-json-schema-tests.asd cl-json-schema.asd -cl-jsx http://beta.quicklisp.org/archive/cl-jsx/2016-02-08/cl-jsx-20160208-git.tgz 6265 4e93808606526155d02fd3262e84e8bb 3e7d40b520e361bd8bc2dcd4c6e1fd92c3933672 cl-jsx-20160208-git cl-jsx-test.asd cl-jsx.asd -cl-junit-xml http://beta.quicklisp.org/archive/cl-junit-xml/2015-01-13/cl-junit-xml-20150113-git.tgz 5173 2a8e063e7431b6380ef6a6d268075af3 3d075953049523bb9b6071878607f59344201121 cl-junit-xml-20150113-git cl-junit-xml.asd cl-junit-xml.lisp-unit.asd cl-junit-xml.lisp-unit2.asd -cl-just-getopt-parser http://beta.quicklisp.org/archive/cl-just-getopt-parser/2021-12-09/cl-just-getopt-parser-20211209-git.tgz 7340 2a19b8357e128d295b55422106022742 f85a97958be75d74e72c15fd4ee67b01295277f5 cl-just-getopt-parser-20211209-git just-getopt-parser.asd -cl-k8055 http://beta.quicklisp.org/archive/cl-k8055/2019-07-10/cl-k8055-20190710-git.tgz 32114 4038e38dfb899c604beb50682fc85ace c20da9e467984ec6a920f95d12e1d60b1dcfb322 cl-k8055-20190710-git cl-k8055.asd -cl-kanren http://beta.quicklisp.org/archive/cl-kanren/2019-10-07/cl-kanren-20191007-git.tgz 12189 c6a29b570ac5047d4c5b1eb05a9f3b34 f11814e7348abcc947e9f22cfba4974d1277b691 cl-kanren-20191007-git cl-kanren.asd tests/cl-kanren-test.asd -cl-kanren-trs http://beta.quicklisp.org/archive/cl-kanren-trs/2012-03-05/cl-kanren-trs-20120305-svn.tgz 11024 7be1f8c2a6b396bf2403a51d9f5cd4b2 76bc8c61f0425273e137925aa278072284d5f6ef cl-kanren-trs-20120305-svn cl-kanren-trs/kanren-trs.asd cl-kanren-trs/tests/kanren-trs-test.asd -cl-kaputt http://beta.quicklisp.org/archive/cl-kaputt/2022-11-06/cl-kaputt-20221106-git.tgz 29536 6c58bd98093878ad66f30954e7b5d231 110877feb3447929a9828bdf8760efdf87f51b1b cl-kaputt-20221106-git kaputt.asd -cl-keycloak http://beta.quicklisp.org/archive/cl-keycloak/2019-07-10/cl-keycloak-20190710-git.tgz 13878 c1fd4adadecb6bb9c8db69ea2a4a731e 08895e7fe14432588a82c1920c30d1865bbe63ea cl-keycloak-20190710-git cl-keycloak.asd -cl-kraken http://beta.quicklisp.org/archive/cl-kraken/2022-03-31/cl-kraken-20220331-git.tgz 29838 72317d99258d04994b09fe318401dc7f 87414ad0e6627f0bc7c6d612200dcac761af9d85 cl-kraken-20220331-git cl-kraken.asd -cl-ksuid http://beta.quicklisp.org/archive/cl-ksuid/2017-08-30/cl-ksuid-20170830-git.tgz 15810 0d6c51c80711463b0d276455fc2d4bf9 63b788ba0f5bb0d1e4c436979e4be5a053b10994 cl-ksuid-20170830-git cl-ksuid.asd -cl-kyoto-cabinet http://beta.quicklisp.org/archive/cl-kyoto-cabinet/2019-11-30/cl-kyoto-cabinet-20191130-git.tgz 11166 e9ec82383fe859240e7711142878f8fa 9921f6a8e5750dfe6c300c3e6a7ccc41543bc203 cl-kyoto-cabinet-20191130-git cl-kyoto-cabinet.asd -cl-l10n http://beta.quicklisp.org/archive/cl-l10n/2021-12-09/cl-l10n-20211209-git.tgz 66567 e575bb4ff3a6d0bbba5220c631f9c83a 44515bbda062b64a324f9e2aa8ba3222e255bfeb cl-l10n-20211209-git cl-l10n.asd -cl-l10n-cldr http://beta.quicklisp.org/archive/cl-l10n-cldr/2012-09-09/cl-l10n-cldr-20120909-darcs.tgz 3538114 466e776f2f6b931d9863e1fc4d0b514e 6b3a2e8fbf2b933e13d85fb21d87943eac67cbf8 cl-l10n-cldr-20120909-darcs cl-l10n-cldr.asd -cl-lambdacalc http://beta.quicklisp.org/archive/cl-lambdacalc/2023-02-14/cl-lambdacalc-20230214-git.tgz 4405 efc22c71f5a313c2dfb2f015d982f93e 45ba492d386205228f988cd689ee7954b28f1306 cl-lambdacalc-20230214-git app/cl-lambdacalc.asd test/cl-lambdacalc-test.asd -cl-langutils http://beta.quicklisp.org/archive/cl-langutils/2012-11-25/cl-langutils-20121125-git.tgz 2482768 ba2d1e4abbc7757c135273d76e8147db 0861ac6408e69c6bb155dc62a637ede5fac467de cl-langutils-20121125-git langutils.asd -cl-las http://beta.quicklisp.org/archive/cl-las/2022-11-06/cl-las-20221106-git.tgz 11405 570918f3a5022beb0936f6c9424c807d fd8805f94404ec262d707d9584fdde41989caf82 cl-las-20221106-git cl-las.asd -cl-lastfm http://beta.quicklisp.org/archive/cl-lastfm/2014-07-13/cl-lastfm-0.2.1.tgz 22260 2eb42fa1964fe361108aa752fe7a9089 160d3d3dce74b91fadef38768494f1785882ad5b cl-lastfm-0.2.1 cl-lastfm-test.asd cl-lastfm.asd -cl-launch http://beta.quicklisp.org/archive/cl-launch/2015-10-31/cl-launch-4.1.4.1.tgz 94539 5f3d1dc76a5c734a8fd2dba5e567f2ad e809f8f3dcbb3d0b3f239ef3ade7686005aee383 cl-launch-4.1.4.1 cl-launch.asd -cl-ledger http://beta.quicklisp.org/archive/cl-ledger/2020-02-18/cl-ledger-20200218-git.tgz 1183090 46d7a3c5f0e284e868b05cb5100af9d9 575534a3fc8e45910662a1c78a2a1f9549fc42f3 cl-ledger-20200218-git cl-ledger.asd -cl-lessp http://beta.quicklisp.org/archive/cl-lessp/2022-11-06/cl-lessp-20221106-git.tgz 1954 dd21c43ccf95766185bf9a47d5fd1769 4a6587ff7f343cf936e1ae35eed43f14c72b7eca cl-lessp-20221106-git lessp.asd -cl-lex http://beta.quicklisp.org/archive/cl-lex/2016-09-29/cl-lex-20160929-git.tgz 15959 03ca8860afad55575c8747a12e58370a 249a1fb7e5d2070536213b83e9608bcba9cd79b1 cl-lex-20160929-git cl-lex.asd -cl-lexer http://beta.quicklisp.org/archive/cl-lexer/2019-10-07/cl-lexer-20191007-git.tgz 5477 810e054e68d67b18eaa3859114b62662 e8b213a35c04e07c34ca676ee5f7919548e092e2 cl-lexer-20191007-git cl-lexer.asd -cl-lib-helper http://beta.quicklisp.org/archive/cl-lib-helper/2022-11-06/cl-lib-helper-20221106-git.tgz 64929 b91685caa2b040fc92ceb5aae16bc399 3c75df7144b1f28d78b1790b7723a256af52e8d5 cl-lib-helper-20221106-git lib-helper.asd test/test-system/lib-helper-test-system.asd -cl-liballegro http://beta.quicklisp.org/archive/cl-liballegro/2022-11-06/cl-liballegro-20221106-git.tgz 53184 b1ebce5e69f31c641faeef2b8421e1ff b74b3d723f5d84e7a6357a8de97f95c408a50c25 cl-liballegro-20221106-git cl-liballegro.asd -cl-liballegro-nuklear http://beta.quicklisp.org/archive/cl-liballegro-nuklear/2022-11-06/cl-liballegro-nuklear-20221106-git.tgz 487819 d1a5a6d3d8ec3de455e3440f6c8d8003 0c150edba55ab8b78d37c69b418396ed044af20b cl-liballegro-nuklear-20221106-git cl-liballegro-nuklear.asd -cl-libevent2 http://beta.quicklisp.org/archive/cl-libevent2/2019-01-07/cl-libevent2-20190107-git.tgz 17801 e6cf8f0a5ead1184043107ae05505309 a0f45ed59ab51638f6a3081ab21a476ad495ea5d cl-libevent2-20190107-git cl-libevent2-ssl.asd cl-libevent2.asd -cl-libfarmhash http://beta.quicklisp.org/archive/cl-libfarmhash/2016-10-31/cl-libfarmhash-20161031-git.tgz 14254 18f1d5557e8cb18a8508d5aea161c29b f6246aa6bfc3d7d6add3f2f3cabbe574341a87ae cl-libfarmhash-20161031-git cl-libfarmhash.asd -cl-libhoedown http://beta.quicklisp.org/archive/cl-libhoedown/2016-10-31/cl-libhoedown-20161031-git.tgz 6116 e3e02a0108dd00d7d3d47eb7cb8933ba 8265b5849763171d07d9132a68fdf035e1e61f7e cl-libhoedown-20161031-git cl-libhoedown.asd -cl-libiio http://beta.quicklisp.org/archive/cl-libiio/2019-11-30/cl-libiio-20191130-git.tgz 8149 cc70d023b770af0ecdfd1f9e401ee6ff 2caa1a95b175464b2447926ca089babaa7656877 cl-libiio-20191130-git cl-libiio.asd -cl-libinput http://beta.quicklisp.org/archive/cl-libinput/2022-07-07/cl-libinput-20220707-git.tgz 3698 cd09740b87c265cb8c2a1e7abf7ddd19 b5873d66b3cf4321a35585d072efaff4bb0cc255 cl-libinput-20220707-git cl-libinput.asd -cl-libpuzzle http://beta.quicklisp.org/archive/cl-libpuzzle/2015-06-08/cl-libpuzzle-20150608-git.tgz 2604 6721ae95e9eaaac4b5cb23403c43f67c 9515ee0dbfe8dfc9af92c36c5bdd97d2cd754c88 cl-libpuzzle-20150608-git cl-libpuzzle-test.asd cl-libpuzzle.asd -cl-libssh2 http://beta.quicklisp.org/archive/cl-libssh2/2016-05-31/cl-libssh2-20160531-git.tgz 21638 f4fdafbe1ef21b9e9c9e07dd564faacd 479298ef75e5cc50679e6eb052606b3a7ebe8df7 cl-libssh2-20160531-git libssh2.asd libssh2.test.asd -cl-libsvm http://beta.quicklisp.org/archive/cl-libsvm/2021-10-20/cl-libsvm-20211020-git.tgz 295777 9ac74abd58ac8f8fcd7810b3fae221f9 22fbeb82e9acb629018d915d0e7217e55e9e7e62 cl-libsvm-20211020-git cl-liblinear.asd cl-libsvm.asd -cl-libsvm-format http://beta.quicklisp.org/archive/cl-libsvm-format/2018-07-11/cl-libsvm-format-20180711-git.tgz 9951 bac7636204a46c66cdfa135cdd147ca6 87adb8326851e29f2c96f0a02dca122336d95520 cl-libsvm-format-20180711-git cl-libsvm-format-test.asd cl-libsvm-format.asd -cl-libusb http://beta.quicklisp.org/archive/cl-libusb/2021-02-28/cl-libusb-20210228-git.tgz 7807 ae227dc6c4e458ec1e26d1a4788f1f6a 606104c990fadf4284debc82138a11538357a5cc cl-libusb-20210228-git cl-libusb.asd libusb-ffi.asd -cl-libuv http://beta.quicklisp.org/archive/cl-libuv/2022-11-06/cl-libuv-20221106-git.tgz 14466 d8bf243a302e97629197914b1bf2330b 572d98d7137f7649c3997e4a91c2d2d63805b8e0 cl-libuv-20221106-git cl-libuv-config.asd cl-libuv.asd -cl-libxml2 http://beta.quicklisp.org/archive/cl-libxml2/2013-06-15/cl-libxml2-20130615-git.tgz 55579 88317bf302b5f1d2c1ac9efa6538fbe0 75977fe851405c2d85d67ed6df8dc3462628c661 cl-libxml2-20130615-git cl-libxml2.asd xfactory.asd xoverlay.asd -cl-libyaml http://beta.quicklisp.org/archive/cl-libyaml/2020-12-20/cl-libyaml-20201220-git.tgz 9421 2c8d064e95a1a06f854b8f2f875e66ab 0855f89ce8ae059c10aac9878856a9dde09b6fe8 cl-libyaml-20201220-git cl-libyaml-test.asd cl-libyaml.asd -cl-locale http://beta.quicklisp.org/archive/cl-locale/2015-10-31/cl-locale-20151031-git.tgz 3916 7a8fb3678938af6dc5c9fd6431428aff b5e33ecae4ad91db85d6f3ead72a52a02547fd23 cl-locale-20151031-git cl-locale-syntax.asd cl-locale-test.asd cl-locale.asd -cl-locatives http://beta.quicklisp.org/archive/cl-locatives/2019-03-07/cl-locatives-20190307-hg.tgz 2705 f7dc0d49dccf787bc27c859ede74537e 83d8f4cc9457e0d907b44ab9d1422e9f75cec721 cl-locatives-20190307-hg cl-locatives.asd -cl-log http://beta.quicklisp.org/archive/cl-log/2013-01-28/cl-log.1.0.1.tgz 18463 fb960933eb748c14adc3ccb376ac8066 79eba93cc6a981a79d95b35533063b70083c6353 cl-log.1.0.1 cl-log-test.asd cl-log.asd -cl-logic http://beta.quicklisp.org/archive/cl-logic/2014-12-17/cl-logic-20141217-git.tgz 19237 1d2c46cd6d6b22eec42b0634ee6aad02 832125e585ebc79b14bad28a34bab16dede39272 cl-logic-20141217-git cl-logic.asd -cl-ltsv http://beta.quicklisp.org/archive/cl-ltsv/2014-07-13/cl-ltsv-20140713-git.tgz 1768 b0f6141d4d431c30cd3f89ed9b915cf9 78beea35eb74ae8e22963cbe6f5e8b7e03d5a578 cl-ltsv-20140713-git cl-ltsv-test.asd cl-ltsv.asd -cl-lzlib http://beta.quicklisp.org/archive/cl-lzlib/2022-11-06/cl-lzlib-20221106-git.tgz 586870 89a814063c00675141e0871ae2c68a72 a6f59a528e0df2ea90c033248b1f2b7de7a27f0a cl-lzlib-20221106-git lzlib-tests.asd lzlib.asd -cl-lzma http://beta.quicklisp.org/archive/cl-lzma/2019-11-30/cl-lzma-20191130-git.tgz 391732 839b371f342610b221e8455ec0e5ab9e 2d6b69f5e810f08f2c943ed3b5a977041608e1cc cl-lzma-20191130-git cl-lzma.asd -cl-m4 http://beta.quicklisp.org/archive/cl-m4/2013-03-12/cl-m4-20130312-git.tgz 43800 1b3c29d5e7fb294f95afd4a845f4c6b4 7dbee2d1711f7b212ba1f6b9a04ac1ba873f4e31 cl-m4-20130312-git cl-m4-test.asd cl-m4.asd -cl-mango http://beta.quicklisp.org/archive/cl-mango/2020-09-25/cl-mango-20200925-git.tgz 102718 7f120c5a1186511963ac1f0d79839e06 0e2893031c03a5bd35e5ea34d283063fd7f07a28 cl-mango-20200925-git cl-mango.asd -cl-markdown http://beta.quicklisp.org/archive/cl-markdown/2019-12-27/cl-markdown-20191227-git.tgz 73424 630fdb2615d0c7cd7b31a5d6295ae552 eebe40f532720a42422ecfca77bbb2ef60ecfe19 cl-markdown-20191227-git cl-markdown-comparisons.asd cl-markdown-test.asd cl-markdown.asd -cl-markless http://beta.quicklisp.org/archive/cl-markless/2022-07-07/cl-markless-20220707-git.tgz 77115 625acb0ad58df3476a21acac878cceb0 a2fa25a76db4c85189e76e6a6aa53a3e0f443128 cl-markless-20220707-git cl-markless-test.asd cl-markless.asd epub/cl-markless-epub.asd markdown/cl-markless-markdown.asd plump/cl-markless-plump.asd standalone/cl-markless-standalone.asd -cl-marklogic http://beta.quicklisp.org/archive/cl-marklogic/2021-01-24/cl-marklogic-20210124-git.tgz 1814659 5af815613b7a90391fe6b8a0b1b4872a 53b10052d9476d0297819024f92600900984da1f cl-marklogic-20210124-git cl-marklogic.asd subsystem/ml-dsl/ml-dsl.asd subsystem/ml-optimizer/ml-optimizer.asd subsystem/ml-test/ml-test.asd -cl-markup http://beta.quicklisp.org/archive/cl-markup/2013-10-03/cl-markup-20131003-git.tgz 5785 3ec36b8e15435933f614959032987848 6aa4346b3ea4f1113934de898307229892252b12 cl-markup-20131003-git cl-markup-test.asd cl-markup.asd -cl-marshal http://beta.quicklisp.org/archive/cl-marshal/2022-11-06/cl-marshal-20221106-git.tgz 12404 567104e6dc6e91211aad977ef0b0e28b 309813beb581491e1b823a22a2cf04f268044958 cl-marshal-20221106-git marshal-tests.asd marshal.asd -cl-match http://beta.quicklisp.org/archive/cl-match/2012-11-25/cl-match-20121125-git.tgz 23798 790a315e08136b3e9b3a42eaadc558a4 a747badf5dabd5b345df787c4b5765ee1d7bbe78 cl-match-20121125-git cl-match-test.asd cl-match.asd pcl-unit-test.asd standard-cl.asd -cl-mathstats http://beta.quicklisp.org/archive/cl-mathstats/2023-02-14/cl-mathstats-20230214-git.tgz 83497 16fa2cc3d2b51f1f6cdeebad584572f7 9e8201f74259da99e9aa6a6776665ddc2c61ed3b cl-mathstats-20230214-git cl-mathstats-test.asd cl-mathstats.asd -cl-maxminddb http://beta.quicklisp.org/archive/cl-maxminddb/2021-06-30/cl-maxminddb-20210630-git.tgz 7546 5d5d1346835e715ac6cfd130079448b2 5478ec1220f4f7d25bcefba438306ac5ff94a11d cl-maxminddb-20210630-git cl-maxminddb.asd -cl-maxsat http://beta.quicklisp.org/archive/cl-maxsat/2020-02-18/cl-maxsat-20200218-git.tgz 23748 d3a87dd7ed4354e80ed809a1f80a84be 2817cb160f759fdc66bf06b6fc1c9628d1b3c295 cl-maxsat-20200218-git cl-maxsat.asd cl-maxsat.test.asd -cl-mdb http://beta.quicklisp.org/archive/cl-mdb/2022-07-07/cl-mdb-20220707-git.tgz 15694 0b443f9fd77f7a3821de81011c48a387 f11330198af6b5b9bdabe46fa800b87088c95033 cl-mdb-20220707-git cl-mdb.asd -cl-mecab http://beta.quicklisp.org/archive/cl-mecab/2018-10-18/cl-mecab-20181018-git.tgz 2767 2ab93a1f4c43bab2428e5175108169a2 785e78ddcb996dc7d517f7796063d78f853c658c cl-mecab-20181018-git cl-mecab-test.asd cl-mecab.asd -cl-mechanize http://beta.quicklisp.org/archive/cl-mechanize/2018-07-11/cl-mechanize-20180711-git.tgz 3722 232d80473f28373048d93ca69f2b67a0 bfb4e5e0fcc4181fb4ba09c65c8b21e6bdafc9cc cl-mechanize-20180711-git cl-mechanize.asd -cl-mediawiki http://beta.quicklisp.org/archive/cl-mediawiki/2016-12-04/cl-mediawiki-20161204-git.tgz 16116 25991d3a28d94bf01f7a3a9464e2c3e9 5b3f1c43c010085a50b3459daec5b6b2fe16bd8a cl-mediawiki-20161204-git cl-mediawiki-test.asd cl-mediawiki.asd -cl-megolm http://beta.quicklisp.org/archive/cl-megolm/2023-02-14/cl-megolm-20230214-git.tgz 18946 b9f02907b4f0bcfc998aa9bc6936b855 a485fb630d0535017b7147012f82d7bac4357e30 cl-megolm-20230214-git cl-megolm.asd -cl-memcached http://beta.quicklisp.org/archive/cl-memcached/2015-06-08/cl-memcached-20150608-git.tgz 16575 d53b92973d51e95558aafaba56942c92 694deb82afc44290d593d4ca6d1242077af14fc9 cl-memcached-20150608-git cl-memcached.asd -cl-messagepack http://beta.quicklisp.org/archive/cl-messagepack/2020-10-16/cl-messagepack-20201016-git.tgz 11722 cd56b756012a71083838ac2e8846ea98 de3627c3a1113dcbacfe1f924e5cb2f253eb0629 cl-messagepack-20201016-git cl-messagepack-tests.asd cl-messagepack.asd -cl-messagepack-rpc http://beta.quicklisp.org/archive/cl-messagepack-rpc/2017-12-27/cl-messagepack-rpc-20171227-git.tgz 11177 6de2befbdd2a7e7ee028e0f9cc82bd7f 7b4c77bdb4dad0a365868591dbd75ad1ae3d4c10 cl-messagepack-rpc-20171227-git cl-messagepack-rpc-tests.asd cl-messagepack-rpc.asd -cl-migrations http://beta.quicklisp.org/archive/cl-migrations/2011-01-10/cl-migrations-20110110-http.tgz 3843 af513b9cd5bf182bd7c0910a98107823 cb5ae65cdda19f45cee7eaf4ad1726eddd3fd794 cl-migrations-20110110-http cl-migrations.asd -cl-migratum http://beta.quicklisp.org/archive/cl-migratum/2023-02-14/cl-migratum-20230214-git.tgz 888071 7774c8ac9c919bf6ea1603770d9cf0c2 dcd3b8bbb901b6b70ee1dbe2f8006cdf7d5b4f35 cl-migratum-20230214-git cl-migratum.asd cl-migratum.cli.asd cl-migratum.driver.dbi.asd cl-migratum.driver.mixins.asd cl-migratum.driver.rdbms-postgresql.asd cl-migratum.provider.local-path.asd cl-migratum.test.asd -cl-mime http://beta.quicklisp.org/archive/cl-mime/2020-12-20/cl-mime-20201220-git.tgz 16952 1cfd9c5ccd0ee9fab358db47228d19ce 7136e1c4c5888b58a8499e16b003fe3146a8720b cl-mime-20201220-git cl-mime-test.asd cl-mime.asd -cl-mime-from-string http://beta.quicklisp.org/archive/cl-mime-from-string/2020-04-27/cl-mime-from-string-20200427-git.tgz 2441 dc30330e999d3fa93eba45b1b63d2f38 5e4c437b54faec0ddede2c88450eaa641dd369da cl-mime-from-string-20200427-git cl-mime-from-string.asd -cl-mimeparse http://beta.quicklisp.org/archive/cl-mimeparse/2021-05-31/cl-mimeparse-20210531-git.tgz 3890 0ed931e948aacc4b573e3e3a64ba62c9 243341c3827ec47fa91956c171dc8519b5547471 cl-mimeparse-20210531-git cl-mimeparse-tests.asd cl-mimeparse.asd -cl-minify-css http://beta.quicklisp.org/archive/cl-minify-css/2020-09-25/cl-minify-css-20200925-git.tgz 4753 382004d380c5a350c858aa4706c1625d 18682765f9edd38025102a33e64569132b27f155 cl-minify-css-20200925-git cl-minify-css-test.asd cl-minify-css.asd -cl-mixed http://beta.quicklisp.org/archive/cl-mixed/2023-02-14/cl-mixed-20230214-git.tgz 10696710 479656cb96490e96e7db15d57c026a86 1f9b33882bbf9ba492aba5b7c491d4695090d493 cl-mixed-20230214-git cl-mixed.asd examples/cl-mixed-examples.asd extensions/cl-mixed-alsa.asd extensions/cl-mixed-coreaudio.asd extensions/cl-mixed-flac.asd extensions/cl-mixed-jack.asd extensions/cl-mixed-mpg123.asd extensions/cl-mixed-mpt.asd extensions/cl-mixed-oss.asd extensions/cl-mixed-out123.asd extensions/cl-mixed-pulse.asd extensions/cl-mixed-sdl2.asd extensions/cl-mixed-vorbis.asd extensions/cl-mixed-wasapi.asd extensions/cl-mixed-wav.asd extensions/cl-mixed-winmm.asd extensions/cl-mixed-xaudio2.asd -cl-mlep http://beta.quicklisp.org/archive/cl-mlep/2018-04-30/cl-mlep-20180430-git.tgz 219387 378549be18c26b35a2a928b48f20e7c6 2e4e11c788b75de49c76163fb045d0741d33747e cl-mlep-20180430-git mlep-add.asd mlep.asd -cl-mock http://beta.quicklisp.org/archive/cl-mock/2022-11-06/cl-mock-20221106-git.tgz 7905 4a9326b1fc7c15944fefac544cdb9596 b0cca6b2bc21fca9755db04332f9c383270e009a cl-mock-20221106-git cl-mock-basic.asd cl-mock-tests-basic.asd cl-mock-tests.asd cl-mock.asd -cl-modio http://beta.quicklisp.org/archive/cl-modio/2023-02-15/cl-modio-20230215-git.tgz 43878 895c27cca3ea8f6c8882888e9a2fa355 1240d8fc3c8ce62d9595757b798a976149e29da2 cl-modio-20230215-git cl-modio.asd -cl-modlisp http://beta.quicklisp.org/archive/cl-modlisp/2015-09-23/cl-modlisp-20150923-git.tgz 10406 95f48447065e734ddfd23a58df53679b 5f92ef72be5b0897ed4ca226adbcbe9311a458bf cl-modlisp-20150923-git modlisp.asd -cl-monad-macros http://beta.quicklisp.org/archive/cl-monad-macros/2011-06-19/cl-monad-macros-20110619-svn.tgz 29833 8bff3b40a3720242b6f8f13932dd7b9e 46a54c95c093f7c263c8963479147624b3d234fd cl-monad-macros-20110619-svn cl-monad-macros.asd -cl-moneris http://beta.quicklisp.org/archive/cl-moneris/2011-04-18/cl-moneris-20110418-git.tgz 6676 ad2527ea7e6d8618757907dd2193224a 572b40deafdbd20a759bb36bc26250f6df64c8ac cl-moneris-20110418-git cl-moneris-test.asd cl-moneris.asd -cl-mongo http://beta.quicklisp.org/archive/cl-mongo/2016-05-31/cl-mongo-20160531-git.tgz 63737 f37c70b58ebbbc36dd855356b196c9a0 65b1c29c5c6bf02f9bbd7d64a260089968c41eec cl-mongo-20160531-git cl-mongo.asd -cl-mongo-id http://beta.quicklisp.org/archive/cl-mongo-id/2020-12-20/cl-mongo-id-20201220-git.tgz 3890 ba186c43306175a662568cfda32bb487 6e2d7c5f6a54174f8962101978285fb58d3d867c cl-mongo-id-20201220-git cl-mongo-id.asd -cl-monitors http://beta.quicklisp.org/archive/cl-monitors/2019-07-10/cl-monitors-20190710-git.tgz 30426 1c6c7f00915b0301a44f99eb5db282fe 6cbc22dbdf2b5dff91722aa12346e35a9a91f8c9 cl-monitors-20190710-git cl-monitors.asd -cl-mop http://beta.quicklisp.org/archive/cl-mop/2015-01-13/cl-mop-20150113-git.tgz 3524 2fafd8a889b9ad8455e0451d97a60f66 b6fd23f5ff74a7343158fcb9979362f24104a670 cl-mop-20150113-git cl-mop.asd -cl-morse http://beta.quicklisp.org/archive/cl-morse/2022-07-07/cl-morse-v1.0.0.tgz 5318 a9433acbc1a4e97596e0407dfab5efbb 0f4f1ddd6062f6b7c322f8f62b3650113ad7145a cl-morse-v1.0.0 cl-morse.asd -cl-moss http://beta.quicklisp.org/archive/cl-moss/2017-10-19/cl-moss-20171019-git.tgz 15420 5a242fbf7bc9a257a163dffd37467f1b 33a67534114561c248037d59806161a3c3281a05 cl-moss-20171019-git cl-moss.asd -cl-mount-info http://beta.quicklisp.org/archive/cl-mount-info/2020-02-18/cl-mount-info-20200218-git.tgz 22616 c280de944fab639bf2a75534a12635e5 ab0fee5243784b9c67ed8abb515779c923f44ce6 cl-mount-info-20200218-git cl-mount-info.asd -cl-mpg123 http://beta.quicklisp.org/archive/cl-mpg123/2021-12-09/cl-mpg123-20211209-git.tgz 1362634 3413cecda302c043aea37aa9ca4f7b49 adb9926a533b91baedf8271d5467d9f2690f3733 cl-mpg123-20211209-git cl-mpg123-example.asd cl-mpg123.asd -cl-mpi http://beta.quicklisp.org/archive/cl-mpi/2019-07-10/cl-mpi-20190710-git.tgz 29951 084a37f38bc915e7cb446f0d659e745c 6aec00040dd9c6d789642e78799a97f93bd15de3 cl-mpi-20190710-git cl-mpi-asdf-integration.asd cl-mpi-extensions.asd cl-mpi-test-suite.asd cl-mpi.asd examples/cl-mpi-examples.asd -cl-mssql http://beta.quicklisp.org/archive/cl-mssql/2021-01-24/cl-mssql-20210124-git.tgz 15817 6f103cdbc07c2ae284c7aa2038d29f71 6be09db3233b3e699ead9bd6cd66f4a8a3e88362 cl-mssql-20210124-git mssql.asd -cl-mtgnet http://beta.quicklisp.org/archive/cl-mtgnet/2018-07-11/cl-mtgnet-20180711-git.tgz 13584 552af7cb3547102849920f639964c694 91a94bf40fb828bc3c8353ca1a17bdc53b1d4960 cl-mtgnet-20180711-git cl-mtgnet-async.asd cl-mtgnet-sync.asd cl-mtgnet.asd -cl-murmurhash http://beta.quicklisp.org/archive/cl-murmurhash/2021-06-30/cl-murmurhash-20210630-git.tgz 6960 cae2ba02f37249b023fe2a053722d9b9 f8c1ccaa85767bfcfc2322b064b4af732eb756d9 cl-murmurhash-20210630-git cl-murmurhash.asd -cl-mustache http://beta.quicklisp.org/archive/cl-mustache/2020-03-25/cl-mustache-20200325-git.tgz 16325 52381d17458d88d6a8b760f351bf517d 39a5974599d0fc9ae6829087b99dbe7ec45150bd cl-mustache-20200325-git cl-mustache-test.asd cl-mustache.asd -cl-muth http://beta.quicklisp.org/archive/cl-muth/2022-07-07/cl-muth-stable-git.tgz 7447 67e4f582ac08a94fc3a93e8c9199f599 8edcf66e2d3d01e0558b30728c9d1248d24956e1 cl-muth-stable-git cl-muth.asd -cl-mw http://beta.quicklisp.org/archive/cl-mw/2015-04-07/cl-mw-20150407-git.tgz 89150 688397a73badb51c626bb5633cfbf9bb 4a3d5e5a5d6413396e759c0895838bc03f70b93d cl-mw-20150407-git cl-mw.asd cl-mw.examples.argument-processing.asd cl-mw.examples.hello-world.asd cl-mw.examples.higher-order.asd cl-mw.examples.monte-carlo-pi.asd cl-mw.examples.ping.asd cl-mw.examples.with-task-policy.asd -cl-myriam http://beta.quicklisp.org/archive/cl-myriam/2022-03-31/cl-myriam-20220331-git.tgz 9229 01fbad030cc9705a635a2082b9310891 cbeda608d72eb9f5d35b390797029965fc24dec9 cl-myriam-20220331-git cl-myriam.asd -cl-mysql http://beta.quicklisp.org/archive/cl-mysql/2020-06-10/cl-mysql-20200610-git.tgz 25756 05d5ed6b48edbafd258e189d7868822e c4239d0371c67029a812a7d8e08d434de8fc8c8d cl-mysql-20200610-git cl-mysql-test.asd cl-mysql.asd -cl-naive-store http://beta.quicklisp.org/archive/cl-naive-store/2023-02-14/cl-naive-store-20230214-git.tgz 96546 6f90e539001a4468bff5cc03a2723ba8 a3a1e905eac10ca8d58f96427abdda374e2e98bf cl-naive-store-20230214-git cl-naive-store.asd cl-naive-store.document-type-defs.asd cl-naive-store.document-types.asd cl-naive-store.naive-core.asd cl-naive-store.naive-documents.asd cl-naive-store.naive-indexed.asd cl-naive-store.naive-merkle.asd cl-naive-store.test.asd -cl-ncurses http://beta.quicklisp.org/archive/cl-ncurses/2010-10-06/cl-ncurses_0.1.4.tgz 23603 60cde15b3c037f394e0c24eb55ad56f8 8d7cfd9bb56ba8c2e6f98bcb298bfc121f8d51bd cl-ncurses_0.1.4 cl-ncurses.asd -cl-neo4j http://beta.quicklisp.org/archive/cl-neo4j/2013-01-28/cl-neo4j-release-b8ad637a-git.tgz 9194 cb073877ef9a06784c7d1964e0c9266d f8a127e60e89f6a419ac4c59f4e734ce3f513258 cl-neo4j-release-b8ad637a-git cl-neo4j.asd -cl-neovim http://beta.quicklisp.org/archive/cl-neovim/2019-05-21/cl-neovim-20190521-git.tgz 28387 c74dc12e6ebcac2f55b0c5f510740734 a47dc4c6b386f74eb24f8370b14ebe489a70753c cl-neovim-20190521-git cl-neovim.asd -cl-netpbm http://beta.quicklisp.org/archive/cl-netpbm/2020-10-16/cl-netpbm-20201016-hg.tgz 406684 e308bcb4164efceb21e1a7415c76a530 9eed362a2038882360ad83fb669bf7df555c8d2f cl-netpbm-20201016-hg cl-netpbm.asd -cl-netstring-plus http://beta.quicklisp.org/archive/cl-netstring-plus/2015-07-09/cl-netstring-plus-20150709-git.tgz 4433 6e8765afb3524b15982841b1351e1f8c 21e3f577bcb812b607b5a1b180e97ee8763cf6c1 cl-netstring-plus-20150709-git cl-netstring+.asd -cl-netstrings http://beta.quicklisp.org/archive/cl-netstrings/2012-10-13/cl-netstrings-20121013-git.tgz 3736 8869774ca304843bb00041d63d80ba1e 9bf9f017e4e1b95c067e38c9fdc1e6db85a1457a cl-netstrings-20121013-git cl-netstrings.asd -cl-notebook http://beta.quicklisp.org/archive/cl-notebook/2020-12-20/cl-notebook-20201220-git.tgz 238241 070a26bcb1b8198e290d2fbd024abe16 b1d08a2c8ff0495cfb572e686900923d4473efb8 cl-notebook-20201220-git cl-notebook.asd -cl-nst http://beta.quicklisp.org/archive/cl-nst/2021-08-07/cl-nst-20210807-git.tgz 812877 6092e7a979643ce5ea7512fc8c114ee3 f4bbdd8059d1cda748cb0beed95ba66620587e5a cl-nst-20210807-git asdf-nst.asd nst.asd test/direct/nst-simple-tests.asd test/lisp/comp-set/comp-set.asd test/manual/nst-manual-tests.asd test/meta/mnst-relay.asd test/meta/nst-meta-tests.asd test/nst-test-jenkins.asd test/nst-test.asd test/util/nst-selftest-utils.asd utils/mop/nst-mop-utils.asd -cl-ntp-client http://beta.quicklisp.org/archive/cl-ntp-client/2021-06-30/cl-ntp-client-20210630-git.tgz 3476 a81466a5aec3a419f5e272850111fbd5 b817d0ac91a587c138a2b92dc4ae20e92a7ef8bd cl-ntp-client-20210630-git cl-ntp-client.asd -cl-ntriples http://beta.quicklisp.org/archive/cl-ntriples/2019-03-07/cl-ntriples-20190307-hg.tgz 6167 118afd8c0a65aad8e83e92f19e31117b e6bbc4ad2c50a998124d50ec4b8fdc8eb99f807a cl-ntriples-20190307-hg cl-ntriples.asd -cl-num-utils http://beta.quicklisp.org/archive/cl-num-utils/2021-05-31/cl-num-utils-20210531-git.tgz 64249 1977251bf552ba82005de0dc2f37d130 4c4dd4fb1555499a65813f0bb70673d849c1f4d2 cl-num-utils-20210531-git cl-num-utils.asd -cl-nxt http://beta.quicklisp.org/archive/cl-nxt/2015-06-08/cl-nxt-20150608-git.tgz 25121 a63efb53921dfb220e9085b7c67a989a c453129fbccbffe7dc25c77c1fe974b453d97b32 cl-nxt-20150608-git nxt-proxy.asd nxt.asd -cl-oauth http://beta.quicklisp.org/archive/cl-oauth/2015-08-04/cl-oauth-20150804-git.tgz 22871 280ca181aaf219d292dfcc5795d68b01 b2dcc9fde0faa4a38dc07d20f523182e0d6ccb21 cl-oauth-20150804-git cl-oauth.asd -cl-oclapi http://beta.quicklisp.org/archive/cl-oclapi/2018-08-31/cl-oclapi-20180831-git.tgz 17154 e80585c65e677f1ad10c5ae6b10879fd 1e73f38e41e931301d229a751cb8eb7e7bd2e27b cl-oclapi-20180831-git cl-oclapi-test.asd cl-oclapi.asd -cl-octet-streams http://beta.quicklisp.org/archive/cl-octet-streams/2020-12-20/cl-octet-streams-20201220-git.tgz 19408 a253df417a029475c4df9984cd458dd1 492e1711afc8b22be8fab6bcedfd7359c3029ffa cl-octet-streams-20201220-git cl-octet-streams.asd -cl-ode http://beta.quicklisp.org/archive/cl-ode/2016-06-28/cl-ode-20160628-git.tgz 10617 21c1ba1c91b5910a201cfb824c45fbf0 756649c7ff0912184bb0fa7c8a7e6abafc20273e cl-ode-20160628-git cl-ode.asd -cl-odesk http://beta.quicklisp.org/archive/cl-odesk/2015-06-08/cl-odesk-20150608-git.tgz 6930 e19a70b04c5f7204d46b7bd33a14e054 ab5f306a08b087e175dfe6389e1634444e147adb cl-odesk-20150608-git odesk.asd -cl-ohm http://beta.quicklisp.org/archive/cl-ohm/2018-02-28/cl-ohm-20180228-git.tgz 18129 988fa480a9196cd349782dfefb91b173 e18484324b8fdb9c372d0ad9aa3ebd150c328ec7 cl-ohm-20180228-git cl-ohm.asd -cl-oju http://beta.quicklisp.org/archive/cl-oju/2023-02-14/cl-oju-20230214-git.tgz 116706 73a4ef94eedb9efe653d7119c58b0a6a 57853c90447d12e5e44ec0f7e94c9c69070537b3 cl-oju-20230214-git cl-oju.asd -cl-olefs http://beta.quicklisp.org/archive/cl-olefs/2015-07-09/cl-olefs-20150709-git.tgz 21367 e2051eb090625ecf6ef295bbee5e3f65 7dd0fb6d14d42fdb4d3f331c1f15770d8277eda4 cl-olefs-20150709-git cl-olefs.asd -cl-one-time-passwords http://beta.quicklisp.org/archive/cl-one-time-passwords/2017-10-19/cl-one-time-passwords-20171019-git.tgz 4901 c565262b547110b1d5528671483a6166 4b5b6788ed4c8c3b80d1d573779dfff638a30c9a cl-one-time-passwords-20171019-git cl-one-time-passwords-test.asd cl-one-time-passwords.asd -cl-online-learning http://beta.quicklisp.org/archive/cl-online-learning/2022-03-31/cl-online-learning-20220331-git.tgz 44540 ac898c7d202047375b45e2a7baf2bd6a b80163d2892cfd9d94176b8e8fa66478f11bd364 cl-online-learning-20220331-git cl-online-learning-test.asd cl-online-learning.asd -cl-openal http://beta.quicklisp.org/archive/cl-openal/2022-11-06/cl-openal-20221106-git.tgz 14293 4d9a68b6641b70977759b9d0ec31f729 adbf9aaadac9e0ce37b0978fbaa75de612b7e055 cl-openal-20221106-git cl-alc.asd cl-alut.asd cl-openal-examples.asd cl-openal.asd -cl-openapi-parser http://beta.quicklisp.org/archive/cl-openapi-parser/2021-06-30/cl-openapi-parser-20210630-git.tgz 158401 d4b9c0337735c0141588e26ca83e7ece 02b96432f9beac2292719ab6587a6baacd06d6c8 cl-openapi-parser-20210630-git openapi-parser.asd -cl-opencl http://beta.quicklisp.org/archive/cl-opencl/2021-12-09/cl-opencl-20211209-git.tgz 51292 bdd8acf5217c1c3690314b57c66920ae f947ae391ca202504cb5b972a2a42baa3feb41aa cl-opencl-20211209-git cl-opencl.asd -cl-opencl-utils http://beta.quicklisp.org/archive/cl-opencl-utils/2023-02-14/cl-opencl-utils-20230214-git.tgz 92421 9a8eeacbded16055f74de212aee16ee6 05c43d0625c3df5eca0880468d0323a076c4cf84 cl-opencl-utils-20230214-git cl-opencl-utils.asd -cl-opengl http://beta.quicklisp.org/archive/cl-opengl/2019-11-30/cl-opengl-20191130-git.tgz 439215 c5387f051960e9179b2ed32fafb67e72 12c358b808eb731ea8519ef6bed602c3c7438cfa cl-opengl-20191130-git cl-glu.asd cl-glut-examples.asd cl-glut.asd cl-opengl.asd -cl-openstack-client http://beta.quicklisp.org/archive/cl-openstack-client/2019-10-07/cl-openstack-client-20191007-git.tgz 15217 21d5f62c63d36ec3b51bac01be54122c ac507feb7962ce6654e7c434f8abd3bfd59edad1 cl-openstack-client-20191007-git cl-openstack-client-test.asd cl-openstack-client.asd -cl-opsresearch http://beta.quicklisp.org/archive/cl-opsresearch/2017-04-03/cl-opsresearch-20170403-git.tgz 169006 3f9d2d4fa2e5bd0bd262c3e7d8473933 d5ec56c8385fdecddd862753f1941f476b6c4797 cl-opsresearch-20170403-git cl-opsresearch.asd subsystem/or-cluster/or-cluster.asd subsystem/or-fann/or-fann.asd subsystem/or-glpk/or-glpk.asd subsystem/or-gsl/or-gsl.asd subsystem/or-test/or-test.asd -cl-org-mode http://beta.quicklisp.org/archive/cl-org-mode/2010-12-07/cl-org-mode-20101207-git.tgz 16460 f4220fc89b86010c37f682b937e48758 4bb1c14e15eaacc107bbf539fc308766cd8f90d0 cl-org-mode-20101207-git cl-org-mode.asd -cl-out123 http://beta.quicklisp.org/archive/cl-out123/2019-07-10/cl-out123-20190710-git.tgz 793012 fe497cc028c073c1b28390c704a98e56 13f4bf99dd9d41f7f326f39c7d2acf561fc63b40 cl-out123-20190710-git cl-out123.asd -cl-pack http://beta.quicklisp.org/archive/cl-pack/2020-04-27/cl-pack-20200427-git.tgz 13687 bffd67704cedf806a38a5261c8bab02b 688bc0ea3248277b99ebe31dfb4fbb34adfaa97f cl-pack-20200427-git cl-pack.asd -cl-package-locks http://beta.quicklisp.org/archive/cl-package-locks/2011-12-03/cl-package-locks-20111203-git.tgz 3225 27ed43ed35ef89c3b1d7c5b2594f854c 1cb55bc796f5325a251868413e66a915596477cb cl-package-locks-20111203-git cl-package-locks.asd -cl-pango http://beta.quicklisp.org/archive/cl-pango/2017-04-03/cl-pango-20170403-git.tgz 14796 3a55e08abc5f99a853b80c835edb868d 3a8f8780b761e9f58b803a743928c98741be4a4c cl-pango-20170403-git cl-pango.asd -cl-parallel http://beta.quicklisp.org/archive/cl-parallel/2013-03-12/cl-parallel-20130312-git.tgz 3888 246f314b0ffa627a311e775b00dd0b65 b1d4c6defe936a70b5a9bbe431e94c65f8d0c023 cl-parallel-20130312-git cl-parallel.asd -cl-parser-combinators http://beta.quicklisp.org/archive/cl-parser-combinators/2013-11-11/cl-parser-combinators-20131111-git.tgz 36429 25ad9b1459901738a6394422a41b8fec a708a8b6996a18c3aed1d9d909f9c52477c72fba cl-parser-combinators-20131111-git parser-combinators-cl-ppcre.asd parser-combinators-debug.asd parser-combinators-tests.asd parser-combinators.asd -cl-pass http://beta.quicklisp.org/archive/cl-pass/2020-12-20/cl-pass-20201220-git.tgz 2712 765d4fa1ec380fe4eac3a998e3a8eaf0 6f47e1189e7993e7941b3b2ba9d63c9f717910f4 cl-pass-20201220-git cl-pass-test.asd cl-pass.asd -cl-pattern http://beta.quicklisp.org/archive/cl-pattern/2014-07-13/cl-pattern-20140713-git.tgz 5143 cf8e74def535c66a358df1ada9d89785 cab8b56cdf63e359614d33840ef2faa539b351f3 cl-pattern-20140713-git cl-pattern-benchmark.asd cl-pattern.asd -cl-patterns http://beta.quicklisp.org/archive/cl-patterns/2023-02-14/cl-patterns-20230214-git.tgz 158763 117f20957616029d96107b06c188171d 877dc2cd69981e2b31347f434c73b3c80a7d1392 cl-patterns-20230214-git cl-patterns.asd -cl-paymill http://beta.quicklisp.org/archive/cl-paymill/2013-11-11/cl-paymill-20131111-git.tgz 7224 1c240a7da7b22b55d16f7e6922191aa9 95e9052fb40ff1dbbf7925287e1e4f1409198e7a cl-paymill-20131111-git cl-paymill.asd -cl-paypal http://beta.quicklisp.org/archive/cl-paypal/2010-10-06/cl-paypal-20101006-git.tgz 1701376 b24dd8ccbdb60e1dd220076d8a5baa4d 9cf3a3bba7d5ff0feea25875639f6728ac5b2d6a cl-paypal-20101006-git cl-paypal.asd -cl-pcg http://beta.quicklisp.org/archive/cl-pcg/2020-10-16/cl-pcg-20201016-hg.tgz 11450 6e7d576b345bd56680220e3d3f16b8c3 aefd31f23dd5f2dd4517e9b2e25ae25d87fd8f7a cl-pcg-20201016-hg cl-pcg.asd cl-pcg.test.asd -cl-pdf http://beta.quicklisp.org/archive/cl-pdf/2023-02-14/cl-pdf-20230214-git.tgz 479428 6ea9fe35e490a582c4104d9a1c00c3f6 dd6428910a51c5486f486c5ee78bee62469681ca cl-pdf-20230214-git cl-pdf-parser.asd cl-pdf.asd -cl-peppol http://beta.quicklisp.org/archive/cl-peppol/2020-10-16/cl-peppol-20201016-git.tgz 1212057 00ec60c444446733de15d22b9a2d4c0f 32fb68492c61dd2f1da7faf5795f91f8bd7e5fea cl-peppol-20201016-git peppol.asd -cl-performance-tuning-helper http://beta.quicklisp.org/archive/cl-performance-tuning-helper/2013-06-15/cl-performance-tuning-helper-20130615-git.tgz 3639 79f43c12d4c35fc6ae10d28467fa5318 2ef8321821c30635eb0eedee03d9cba474b2f2c3 cl-performance-tuning-helper-20130615-git cl-performance-tuning-helper-test.asd cl-performance-tuning-helper.asd -cl-permutation http://beta.quicklisp.org/archive/cl-permutation/2021-12-09/cl-permutation-20211209-git.tgz 59123 3a8448b65b06d2232e84929304c3c72e 272b3402d2294cd1b10ac4713aad2ad8e555cc8c cl-permutation-20211209-git cl-permutation-examples.asd cl-permutation-tests.asd cl-permutation.asd -cl-photo http://beta.quicklisp.org/archive/cl-photo/2015-09-23/cl-photo-20150923-git.tgz 12618 1cdf69f41104fcfb0a4ae99a01023148 16a6d27a0e01fc224be9741fb6dd4f0d4a568ef3 cl-photo-20150923-git cl-photo-tests.asd cl-photo.asd -cl-pixman http://beta.quicklisp.org/archive/cl-pixman/2017-08-30/cl-pixman-20170830-git.tgz 11694 5c0938bdf43ebe65574e446b47353e33 77f127fb3a0e55b4814a9796390070c86cc9ee94 cl-pixman-20170830-git pixman.asd -cl-plplot http://beta.quicklisp.org/archive/cl-plplot/2018-02-28/cl-plplot-20180228-git.tgz 289049 e4ac142b064ed3b20bdedd18c602e2c7 21da728b21572839150f71995713c7d54690bd70 cl-plplot-20180228-git cl-plplot.asd -cl-plumbing http://beta.quicklisp.org/archive/cl-plumbing/2018-10-18/cl-plumbing-20181018-git.tgz 3296 835188b1879ae9ad323bafb9cca36c0f fe1c2c004ee5f93822ecb669486ab9c5d6137c88 cl-plumbing-20181018-git cl-plumbing-test.asd cl-plumbing.asd -cl-ply http://beta.quicklisp.org/archive/cl-ply/2015-05-05/cl-ply-20150505-git.tgz 5845 54d8a7725a43455cd4d49ad6e2f1552b 16e20f501dd49b7c965542ee799b6e17c285fdfd cl-ply-20150505-git cl-ply-test.asd cl-ply.asd -cl-png http://beta.quicklisp.org/archive/cl-png/2021-10-20/cl-png-20211020-git.tgz 8510323 2c6e6240a1d4165805ef2dfaa5cf8587 03adb21f48b4e39cb1a03a708a6f63a77dd967fe cl-png-20211020-git png.asd test/bmp-test.asd test/image-test.asd test/ops-test.asd test/png-test.asd -cl-poker-eval http://beta.quicklisp.org/archive/cl-poker-eval/2015-08-04/cl-poker-eval-20150804-git.tgz 15226 7771236a5bda08d88c85a4e33f30047d 5f1611423e82f6132b0ecbc1286f88083642566f cl-poker-eval-20150804-git cl-poker-eval.asd -cl-pop http://beta.quicklisp.org/archive/cl-pop/2011-04-18/cl-pop-20110418-http.tgz 50142 95c0c3418f4740938467514787857bf7 2f413630bb3a0bd507e7a6314f7063f8415c64eb cl-pop-20110418-http cl-pop.asd -cl-portaudio http://beta.quicklisp.org/archive/cl-portaudio/2020-12-20/cl-portaudio-20201220-git.tgz 261400 8d98da3b25ccd9a3e2772720ab6c2462 ff0b63117fbc811f1a7b3c4225735fc683854a2a cl-portaudio-20201220-git cl-portaudio.asd -cl-portmanteau http://beta.quicklisp.org/archive/cl-portmanteau/2018-10-18/cl-portmanteau-20181018-git.tgz 4041 69dc35a5efd5a58644a86291f114d0ae 1873a59021da676c57cb60a8624ca62231445ab4 cl-portmanteau-20181018-git portmanteau-tests.asd portmanteau.asd -cl-postgres-datetime http://beta.quicklisp.org/archive/cl-postgres-datetime/2019-05-21/cl-postgres-datetime-20190521-git.tgz 2835 2a8346142cf960438f21504a76b48f14 45becc2cce71b8582c605e5727c51f650d3fdf11 cl-postgres-datetime-20190521-git cl-postgres-datetime.asd -cl-postgres-plus-uuid http://beta.quicklisp.org/archive/cl-postgres-plus-uuid/2018-10-18/cl-postgres-plus-uuid-20181018-git.tgz 2270 2fe4f3d80a987192c303695d8629f522 4ca2391fa2cf146d789969453d066da82962af5d cl-postgres-plus-uuid-20181018-git cl-postgres-plus-uuid.asd -cl-ppcre http://beta.quicklisp.org/archive/cl-ppcre/2022-02-20/cl-ppcre-20220220-git.tgz 157392 dfc08fa8887d446fb0d7f243c1b4e757 a8d12908ba943bba2c1aa164b723a7091db6c55d cl-ppcre-20220220-git cl-ppcre-unicode.asd cl-ppcre.asd -cl-prevalence http://beta.quicklisp.org/archive/cl-prevalence/2023-02-14/cl-prevalence-20230214-git.tgz 24514 b1876fa6eb95f1451469d786d75dcc64 2b9b6a417b182936d781e45da9d5b899cd2cd30c cl-prevalence-20230214-git cl-prevalence-test.asd cl-prevalence.asd -cl-primality http://beta.quicklisp.org/archive/cl-primality/2015-06-08/cl-primality-20150608-git.tgz 5079 e1590227314e5b4edee345232e8a4904 7698c3bcc32494cc4acf4ee91166745160668904 cl-primality-20150608-git cl-primality-test.asd cl-primality.asd -cl-prime-maker http://beta.quicklisp.org/archive/cl-prime-maker/2015-03-02/cl-prime-maker-20150302-git.tgz 5286 018c603dd74eb6a2f760188c1e9e581b b25b00051812d0c302e0e894dd3f3b6cb57cb4c9 cl-prime-maker-20150302-git cl-prime-maker.asd -cl-progress-bar http://beta.quicklisp.org/archive/cl-progress-bar/2021-12-09/cl-progress-bar-20211209-git.tgz 3522 6089995e48ae25b4eaeca0f0bc6ed095 e108094902031042d1e26414b648980234225e11 cl-progress-bar-20211209-git cl-progress-bar.asd -cl-project http://beta.quicklisp.org/archive/cl-project/2020-07-15/cl-project-20200715-git.tgz 5355 12b436050ad0106cf292707ae39d8572 c77e92bb67d6e56713ed3ae6ee61a34e35f8ed2b cl-project-20200715-git cl-project-test.asd cl-project.asd -cl-prolog2 http://beta.quicklisp.org/archive/cl-prolog2/2021-12-09/cl-prolog2-20211209-git.tgz 15659 e9641fa18abc28b46ca6e4dee2916dca 3c50cad409ffa024fd1ee5db0dc56239dea2c767 cl-prolog2-20211209-git bprolog/cl-prolog2.bprolog.asd bprolog/cl-prolog2.bprolog.test.asd cl-prolog2.asd cl-prolog2.test.asd gprolog/cl-prolog2.gprolog.asd gprolog/cl-prolog2.gprolog.test.asd swi/cl-prolog2.swi.asd swi/cl-prolog2.swi.test.asd xsb/cl-prolog2.xsb.asd xsb/cl-prolog2.xsb.test.asd yap/cl-prolog2.yap.asd yap/cl-prolog2.yap.test.asd -cl-protobufs http://beta.quicklisp.org/archive/cl-protobufs/2023-02-14/cl-protobufs-20230214-git.tgz 197612 2258395170a8a48b90de432d75c27bfe 1241f2d404860622a65fa46d25ca7c3bd5c310fc cl-protobufs-20230214-git cl-protobufs.asdf.asd -cl-pslib http://beta.quicklisp.org/archive/cl-pslib/2020-10-16/cl-pslib-20201016-git.tgz 42242 7e67250359d9b8627713b8587d25aae4 89a5f22d756264b4378bd0e86c79a8623889a943 cl-pslib-20201016-git cl-pslib.asd -cl-pslib-barcode http://beta.quicklisp.org/archive/cl-pslib-barcode/2020-02-18/cl-pslib-barcode-20200218-git.tgz 26694 52a2ffba62a8aeba001f4a7a11e6b13a 94fdf0e1d1e62c5fd92fe0795a93aed147f2ab10 cl-pslib-barcode-20200218-git cl-pslib-barcode.asd -cl-punch http://beta.quicklisp.org/archive/cl-punch/2019-01-07/cl-punch-20190107-git.tgz 1994 b5c6400872ae19221bf5a17f34750c63 e85b56b80563b86ab01b174561df88628c1ece7e cl-punch-20190107-git cl-punch-test.asd cl-punch.asd -cl-python http://beta.quicklisp.org/archive/cl-python/2022-03-31/cl-python-20220331-git.tgz 236951 19038fa121fdb056582fc8484a37dd7a 0cae2e7e3d209edc7fde8752a819ea12044ae242 cl-python-20220331-git clpython.asd -cl-qprint http://beta.quicklisp.org/archive/cl-qprint/2015-08-04/cl-qprint-20150804-git.tgz 33969 74376a69e0b078724c94cc268f69e0f7 2e2600e7a6ea7c1c21df10f3fb37a531fa1c9382 cl-qprint-20150804-git cl-qprint.asd -cl-qrencode http://beta.quicklisp.org/archive/cl-qrencode/2019-10-07/cl-qrencode-20191007-git.tgz 31145 e94ac1137949ef70dea11ca78431e956 0e6589fa846a65032275cbb576bc13d194476b8f cl-qrencode-20191007-git cl-qrencode-test.asd cl-qrencode.asd -cl-quickcheck http://beta.quicklisp.org/archive/cl-quickcheck/2020-06-10/cl-quickcheck-20200610-git.tgz 18441 92d8128d3014a06d38fddab32cc7d81d eac4c89caa498e2351afc73d839a2a9308204cd4 cl-quickcheck-20200610-git cl-quickcheck.asd -cl-rabbit http://beta.quicklisp.org/archive/cl-rabbit/2021-04-11/cl-rabbit-20210411-git.tgz 23616 d37c9fddab8847811a07c352e978dd38 d1e8e5edeae17ba97b888759161319b6fa373650 cl-rabbit-20210411-git cl-rabbit-tests.asd cl-rabbit.asd -cl-rail http://beta.quicklisp.org/archive/cl-rail/2017-12-27/cl-rail-20171227-git.tgz 3644 7da276363c4b689b0bfd85edb449b5d2 95cfb2281dd525f4e6597364a7896022dc715939 cl-rail-20171227-git rail.asd -cl-randist http://beta.quicklisp.org/archive/cl-randist/2022-11-06/cl-randist-20221106-git.tgz 29341 ecdd83f2cdc5ff15fc967387d150a357 d26242a1b0e076ce3806415afecd009348ee3c57 cl-randist-20221106-git cl-randist.asd -cl-random http://beta.quicklisp.org/archive/cl-random/2018-03-28/cl-random-20180328-git.tgz 47082 0f302ea0cf77c5120e85cda903a1026e 46bc508532878a29dfc9cd99fe61c0e18c9c88cc cl-random-20180328-git cl-random.asd -cl-random-forest http://beta.quicklisp.org/archive/cl-random-forest/2022-11-06/cl-random-forest-20221106-git.tgz 73689 69e19ab6eb843002915e7f1e2aa42ebe 99a1061851916827d9bb8ec9388d51586b55654a cl-random-forest-20221106-git cl-random-forest-test.asd cl-random-forest.asd -cl-rashell http://beta.quicklisp.org/archive/cl-rashell/2023-02-14/cl-rashell-20230214-git.tgz 36448 f205fe4fd5e95242ae321d942ae7f35d 613c2163c60c200ff264c63eaea847b4d9e7f323 cl-rashell-20230214-git org.melusina.rashell.asd -cl-rcfiles http://beta.quicklisp.org/archive/cl-rcfiles/2011-12-03/cl-rcfiles-20111203-http.tgz 1905 c6d90a1fe1488fba48dfc8174e829c63 58fbfde7a9339e3129ab1f67da5da7fbe13a493d cl-rcfiles-20111203-http com.dvlsoft.rcfiles.asd -cl-rdfxml http://beta.quicklisp.org/archive/cl-rdfxml/2014-07-13/cl-rdfxml-20140713-git.tgz 24185 ec6e7be8c793352109ab0b633c67c9b8 c27a5bb25404175ec960dccb0805fe8ff82caf5e cl-rdfxml-20140713-git cl-rdfxml.asd -cl-rdkafka http://beta.quicklisp.org/archive/cl-rdkafka/2023-02-14/cl-rdkafka-20230214-git.tgz 58142 df4b0c90d34be162196c365f9ba43762 5949d6d1edf9c299146794b1b25045640c5b1e82 cl-rdkafka-20230214-git cl-rdkafka.asd -cl-readline http://beta.quicklisp.org/archive/cl-readline/2022-07-07/cl-readline-20220707-git.tgz 74428 2b9d3e671a2396eb269112b44f5748f3 e6d0ee5abd675e5341bc33978d07acddb2aca107 cl-readline-20220707-git cl-readline.asd -cl-recaptcha http://beta.quicklisp.org/archive/cl-recaptcha/2015-06-08/cl-recaptcha-20150608-git.tgz 2351 02198a25a246df0e1d2326d5a46bb9bb 127298018d8364bbc2b8c6763c772eef5d55651d cl-recaptcha-20150608-git cl-recaptcha.asd -cl-redis http://beta.quicklisp.org/archive/cl-redis/2020-09-25/cl-redis-20200925-git.tgz 25565 25db6600a0c90c66c7b0718ac921664d 934965550589140846275ba86e36eb5d2e99818b cl-redis-20200925-git cl-redis.asd -cl-reexport http://beta.quicklisp.org/archive/cl-reexport/2021-02-28/cl-reexport-20210228-git.tgz 2538 e083a9c49fe39d65f1ff7743eebe37c2 8b85c2ce95d178aa2deab798f8fc16dd4a0de6da cl-reexport-20210228-git cl-reexport-test.asd cl-reexport.asd -cl-renderdoc http://beta.quicklisp.org/archive/cl-renderdoc/2020-09-25/cl-renderdoc-20200925-git.tgz 65861 047d4526bf0d9127e70347a2ceb5fb47 fdde29c8bd85a7e6133748fd84c7fb9fb6dfb6bb cl-renderdoc-20200925-git cl-renderdoc.asd -cl-replica http://beta.quicklisp.org/archive/cl-replica/2022-11-06/cl-replica-20221106-git.tgz 81327 0c7e4b0738db6cd5141a0a2c871b12f3 12aa770ceeee3e12c50044f25b737636f44f4932 cl-replica-20221106-git cl-replica.asd -cl-rethinkdb http://beta.quicklisp.org/archive/cl-rethinkdb/2016-08-25/cl-rethinkdb-20160825-git.tgz 32793 b08605b7cfdc8351472c3764c1c86120 2d087d3e621659974f63a6c3a5fb28c1f22244bc cl-rethinkdb-20160825-git cl-rethinkdb-test.asd cl-rethinkdb.asd -cl-rfc2047 http://beta.quicklisp.org/archive/cl-rfc2047/2015-08-04/cl-rfc2047-20150804-git.tgz 6167 18e4a78b37f0b6bfb650907cb1dc8a17 4554d0124034923310e5134da555a5ac86c810e8 cl-rfc2047-20150804-git cl-rfc2047.asd test/cl-rfc2047-test.asd -cl-rfc4251 http://beta.quicklisp.org/archive/cl-rfc4251/2023-02-14/cl-rfc4251-20230214-git.tgz 12355 662707fe67660c1fdb294ded6d335119 6cf13a4b122059903e32ee2dc86cc2524f225ba8 cl-rfc4251-20230214-git cl-rfc4251.asd cl-rfc4251.test.asd -cl-riff http://beta.quicklisp.org/archive/cl-riff/2022-07-07/cl-riff-20220707-git.tgz 4389 01abfb4455e1b533a3798f361c4d69bf 6bfc4c890d3f8bdbdb7ae95544322219b39eeedc cl-riff-20220707-git cl-riff.asd -cl-rlimit http://beta.quicklisp.org/archive/cl-rlimit/2015-06-08/cl-rlimit-20150608-git.tgz 3785 ea8d2343b95011bce0de3b699adf0cee 96e1fb8e23a5ad62b865930843dd6150488b8d84 cl-rlimit-20150608-git cl-rlimit.asd -cl-rmath http://beta.quicklisp.org/archive/cl-rmath/2018-03-28/cl-rmath-20180328-git.tgz 5219 0a7e999618e9381b458fea9703774f45 eb85ac5db3f73bba9f919287232e4ea895354424 cl-rmath-20180328-git cl-rmath.asd -cl-rollback http://beta.quicklisp.org/archive/cl-rollback/2022-11-06/cl-rollback-20221106-git.tgz 1254 fa5a83038dbbc8fa5dc29fc716dcfefc b4aaa97e604386ec81a8bac49e3b6e88e9f30949 cl-rollback-20221106-git rollback.asd -cl-routes http://beta.quicklisp.org/archive/cl-routes/2017-01-24/cl-routes-20170124-git.tgz 16959 00cf290e3908eae5cfe4291da87fb7ec b6cf44512de1794cd364a428bd184b9663e8dfc6 cl-routes-20170124-git routes.asd -cl-rrd http://beta.quicklisp.org/archive/cl-rrd/2013-01-28/cl-rrd-20130128-git.tgz 6990 6ed1292cb978445d9952e464d547d149 e820e55875b893f4014ae7358768e480f0d1a28c cl-rrd-20130128-git cl-rrd.asd -cl-rrt http://beta.quicklisp.org/archive/cl-rrt/2020-09-25/cl-rrt-20200925-git.tgz 122680 375bf057c3c4d1ebe84ec47d0bb30cb5 cd9e746941a339298e2b95500ba52c34a409231f cl-rrt-20200925-git cl-rrt.asd cl-rrt.benchmark.asd cl-rrt.rtree.asd cl-rrt.test.asd -cl-rss http://beta.quicklisp.org/archive/cl-rss/2020-10-16/cl-rss-20201016-git.tgz 6522 0c4437458cfef444a248319054e04e5b 2fe0df2b1aa1f6f98985b51bbceeda6db78208c5 cl-rss-20201016-git rss.asd -cl-rsvg2 http://beta.quicklisp.org/archive/cl-rsvg2/2020-09-25/cl-rsvg2-20200925-git.tgz 52983 1f7b33d377c92630a40bf21c2d9b8876 b60605b3b2edfde9f1981579cbdbc2a1cf46da11 cl-rsvg2-20200925-git cl-rsvg2-pixbuf.asd cl-rsvg2-test.asd cl-rsvg2.asd -cl-rules http://beta.quicklisp.org/archive/cl-rules/2019-07-10/cl-rules-20190710-git.tgz 19882 1630f82d032594f14e3eb73afa7cca02 30a3aa278f1df25ed0279dd26a755164d559c2e3 cl-rules-20190710-git cl-rules-test.asd cl-rules.asd -cl-s3 http://beta.quicklisp.org/archive/cl-s3/2013-01-28/cl-s3-20130128-git.tgz 5843 4d064571012b9604f35d38b54d394357 07603d2daf79010091a344f9818c07b435c2d5f2 cl-s3-20130128-git cl-s3.asd -cl-sam http://beta.quicklisp.org/archive/cl-sam/2015-06-08/cl-sam-20150608-git.tgz 4054488 63b1c3bb023e3ef06e5f3855e6144b24 b3e8816022b2cbed60171db86596242905c0edf3 cl-sam-20150608-git cl-sam-test.asd cl-sam.asd -cl-sandbox http://beta.quicklisp.org/archive/cl-sandbox/2018-01-31/cl-sandbox-20180131-git.tgz 6539 86be3668d5ac97547a5043a48f155303 fc1e5b23275df9e8fadea34ac67a19a52b6e1073 cl-sandbox-20180131-git cl-sandbox.asd -cl-sanitize http://beta.quicklisp.org/archive/cl-sanitize/2013-07-20/cl-sanitize-20130720-git.tgz 14858 704397eb4bfd6eef71f7bdbba5a672bf 2cf5ca23dcb811cad0796d45ee062d30cc4ad682 cl-sanitize-20130720-git sanitize.asd -cl-sasl http://beta.quicklisp.org/archive/cl-sasl/2019-05-21/cl-sasl-v0.3.2.tgz 7083 61105fc8faf396a39fc9d9c3400b3c21 bed7a2a1a1908c83f5ee47d8d698aba828a12d83 cl-sasl-v0.3.2 cl-sasl.asd -cl-sat http://beta.quicklisp.org/archive/cl-sat/2022-07-07/cl-sat-20220707-git.tgz 19645 3dc71f95474cdbbea86eedaf26cddc02 7f133e25861fc3407493dfb7987aa86e7666a066 cl-sat-20220707-git cl-sat.asd cl-sat.test.asd -cl-sat.glucose http://beta.quicklisp.org/archive/cl-sat.glucose/2022-03-31/cl-sat.glucose-20220331-git.tgz 2992 4f4194884ed657459298c13bc735dd08 b0836e01eeb4c2f20ab2da3db03bca1b1b2ac476 cl-sat.glucose-20220331-git cl-sat.glucose.asd cl-sat.glucose.test.asd -cl-sat.minisat http://beta.quicklisp.org/archive/cl-sat.minisat/2022-03-31/cl-sat.minisat-20220331-git.tgz 2934 96395076d4d1a831e9c4ea21b8f9f065 77ca3a18ac76d70b63e197281c2e5da16f7abfa3 cl-sat.minisat-20220331-git cl-sat.minisat.asd cl-sat.minisat.test.asd -cl-scram http://beta.quicklisp.org/archive/cl-scram/2015-09-23/cl-scram-20150923-git.tgz 5503 a010b20d5532a08fc85c2c532ddea09f 3e7475151f474a9d54817daebef5590da99a78a1 cl-scram-20150923-git cl-scram.asd -cl-scribd http://beta.quicklisp.org/archive/cl-scribd/2013-03-12/cl-scribd-20130312-git.tgz 3363 b87c90e9a765d543c2edf464479d5f88 c7995da5ad011d99cd74fee78889138678cf71d2 cl-scribd-20130312-git cl-scribd.asd -cl-scripting http://beta.quicklisp.org/archive/cl-scripting/2021-10-20/cl-scripting-20211020-git.tgz 3843 2a8366718010644a12952a977f687d31 b56d960acee0ae374f0593ecb72c6900dacb5213 cl-scripting-20211020-git cl-scripting.asd -cl-scrobbler http://beta.quicklisp.org/archive/cl-scrobbler/2011-11-05/cl-scrobbler-20111105-git.tgz 10687 367d3741fc72df62a122ef7188117409 e14659ef82c2107a42ae6767c3137597a72202c1 cl-scrobbler-20111105-git cl-scrobbler.asd -cl-scsu http://beta.quicklisp.org/archive/cl-scsu/2022-11-06/cl-scsu-20221106-git.tgz 19639 13142f71faf99d80453b441181f58d33 b14a75e3895d7b0e6d7cb74af088819944426e25 cl-scsu-20221106-git cl-scsu-test.asd cl-scsu.asd -cl-sdl2 http://beta.quicklisp.org/archive/cl-sdl2/2022-07-07/cl-sdl2-20220707-git.tgz 2367082 d29e9392170b25b222e11a0a46a1a507 ecaf53a1cb509c20f05697773c9b25b830e4996f cl-sdl2-20220707-git sdl2.asd -cl-sdl2-image http://beta.quicklisp.org/archive/cl-sdl2-image/2019-02-02/cl-sdl2-image-20190202-git.tgz 400442 d0771409506b37b0f56d0258396d31fd da0dd9f2ca73880afd6303d6f9a616ce976ce486 cl-sdl2-image-20190202-git sdl2-image.asd -cl-sdl2-mixer http://beta.quicklisp.org/archive/cl-sdl2-mixer/2021-10-20/cl-sdl2-mixer-20211020-git.tgz 365217 c719972d551e4165226449cc97bed859 aad7588382c4809113734163dfdbd62faa1b39f1 cl-sdl2-mixer-20211020-git sdl2-mixer.asd -cl-sdl2-ttf http://beta.quicklisp.org/archive/cl-sdl2-ttf/2020-09-25/cl-sdl2-ttf-20200925-git.tgz 857286 473f22516691eb827d1b692ab9100c2a 14881e14abe06993b816a523d00c8286d58c1f91 cl-sdl2-ttf-20200925-git sdl2-ttf-examples.asd sdl2-ttf.asd -cl-secp256k1 http://beta.quicklisp.org/archive/cl-secp256k1/2022-07-07/cl-secp256k1-20220707-git.tgz 20393 90907d080046dedf1b03911f76d62c38 a18d4642779ebc3837ad9da2ac5adf09db26fec6 cl-secp256k1-20220707-git secp256k1.asd -cl-selenium http://beta.quicklisp.org/archive/cl-selenium/2016-05-31/cl-selenium-20160531-git.tgz 15740 308b72c1bdad85a13bf79803c822ee95 9fa23dcb879cab1c8894e0bf8e207490c5acd8a3 cl-selenium-20160531-git selenium.asd -cl-selenium-webdriver http://beta.quicklisp.org/archive/cl-selenium-webdriver/2018-03-28/cl-selenium-webdriver-20180328-git.tgz 7935 d9ee1973788ddfd81380a33495c4ec85 1b90f0da0d3ce8d74e408be28b2c4884b7885b2a cl-selenium-webdriver-20180328-git cl-selenium-test.asd cl-selenium.asd -cl-semver http://beta.quicklisp.org/archive/cl-semver/2022-11-06/cl-semver-20221106-git.tgz 5810 cf72236c14c38e21d1a58cc3fbabe5c7 4c714a6dd263ec8e6a7eac6374a0e17f3221a5d2 cl-semver-20221106-git cl-semver-test.asd cl-semver.asd -cl-sendgrid http://beta.quicklisp.org/archive/cl-sendgrid/2022-11-06/cl-sendgrid-20221106-git.tgz 3263 8474e2d5b0a4779a682acefb2f02cb99 c4793572a66a69715d905f298b1b98aaf6998d6c cl-sendgrid-20221106-git sendgrid.asd -cl-sentiment http://beta.quicklisp.org/archive/cl-sentiment/2013-01-28/cl-sentiment-20130128-git.tgz 15819 2f3445dffa9105370751fa8ba7c2005c fc4a0651df4d453162919d5bd43540cba491c81e cl-sentiment-20130128-git cl-sentiment.asd -cl-sentry-client http://beta.quicklisp.org/archive/cl-sentry-client/2022-11-06/cl-sentry-client-20221106-git.tgz 304954 07bb7a1f39379d134524f363e4513e9d 8a2876f14c309ea334fc16393652ee6ea6160625 cl-sentry-client-20221106-git sentry-client.asd sentry-client.async.asd sentry-client.hunchentoot.asd -cl-ses4 http://beta.quicklisp.org/archive/cl-ses4/2022-11-06/cl-ses4-20221106-git.tgz 9522 4d64798d6468c39efa5be808f9d0ca5d cfc2b9138b51f9c0b033ffcd26d0993a4c14c65a cl-ses4-20221106-git cl-ses4.asd -cl-setlocale http://beta.quicklisp.org/archive/cl-setlocale/2020-12-20/cl-setlocale-20201220-git.tgz 3225 d16f5c254bb586327252d62932944077 9cebee588026dc3969cf7f7ab623048edb209df4 cl-setlocale-20201220-git cl-setlocale.asd -cl-sha1 http://beta.quicklisp.org/archive/cl-sha1/2021-08-07/cl-sha1-20210807-git.tgz 3142 a7c9925c44d59bb213ff6508a5f49aa8 fd995e55cc0a1750300dfdc6934b7b6f79bbdcd9 cl-sha1-20210807-git cl-sha1.asd -cl-shellwords http://beta.quicklisp.org/archive/cl-shellwords/2015-09-23/cl-shellwords-20150923-git.tgz 3943 c2c62c6a2ce4ed2590d60707ead2e084 e925f0d8cc96238116bc7f29b75eb3572e9ce325 cl-shellwords-20150923-git cl-shellwords-test.asd cl-shellwords.asd -cl-shlex http://beta.quicklisp.org/archive/cl-shlex/2021-04-11/cl-shlex-20210411-git.tgz 8630 55446789d751206cc229ae876b7f57ac 5008d39adb43dc1f46519d47c3bc93b6b8f60b66 cl-shlex-20210411-git shlex.asd -cl-simple-concurrent-jobs http://beta.quicklisp.org/archive/cl-simple-concurrent-jobs/2015-05-05/cl-simple-concurrent-jobs-20150505-git.tgz 4297 01612838d9d398b13eec9a5b0bc28abb ebe1febd1180f311c340458960719d74cb8bda21 cl-simple-concurrent-jobs-20150505-git cl-simple-concurrent-jobs.asd -cl-simple-fsm http://beta.quicklisp.org/archive/cl-simple-fsm/2020-02-18/cl-simple-fsm-20200218-git.tgz 3582 fad71a6781c41751cefc38e92fed9b76 a2c7e7baad51f73989f26a58cf5ea327fa7ced85 cl-simple-fsm-20200218-git finite-state-machine.asd -cl-simple-table http://beta.quicklisp.org/archive/cl-simple-table/2013-03-12/cl-simple-table-20130312-git.tgz 5746 6b100dbdefa432b04a9dd2b36a7aa47b 701fddeefc3cbb1220fc31f7fcbd56294c7aa2a2 cl-simple-table-20130312-git cl-simple-table.asd -cl-singleton-mixin http://beta.quicklisp.org/archive/cl-singleton-mixin/2015-05-05/cl-singleton-mixin-20150505-git.tgz 2088 dbe6e7e009c5051cb4920e9965eff799 20a7748134ec477d642afc98e2a6117e817f8588 cl-singleton-mixin-20150505-git cl-singleton-mixin-test.asd cl-singleton-mixin.asd -cl-skip-list http://beta.quicklisp.org/archive/cl-skip-list/2022-07-07/cl-skip-list-20220707-git.tgz 13179 6dd7e99ffefceda9d8e8519a4c6aaa0e 1c1411e81b4a945a42a8e2251b51b56a3bab4f2e cl-skip-list-20220707-git cl-skip-list.asd -cl-skkserv http://beta.quicklisp.org/archive/cl-skkserv/2020-12-20/cl-skkserv-20201220-git.tgz 1807422 42cebf0c6a0719ad8e18224f89a39c4c 10fb0e4c195de0dbbeb8c746825aa6a7729fe404 cl-skkserv-20201220-git cl-skkserv.asd -cl-sl4a http://beta.quicklisp.org/archive/cl-sl4a/2015-08-04/cl-sl4a-20150804-git.tgz 1951 dbfee5c96a7f36682929591319236b24 346a2d6dd6942fa65cd5326a15d127b86a3a99b3 cl-sl4a-20150804-git cl-android.asd -cl-slice http://beta.quicklisp.org/archive/cl-slice/2021-05-31/cl-slice-20210531-git.tgz 7622 d7be90ed28b5c316b1f31b4f567bd725 5665df8d1d7752f16be3ac9d851ee67cf72eb402 cl-slice-20210531-git cl-slice.asd -cl-slp http://beta.quicklisp.org/archive/cl-slp/2014-08-26/cl-slp-20140826-git.tgz 7716 24dfaadf60cd54dfa811aa9d4e37d07e 0e6a27441f94c6e6ce46e0aead20fc9b2db4dfc7 cl-slp-20140826-git cl-slp.asd -cl-slug http://beta.quicklisp.org/archive/cl-slug/2018-02-28/cl-slug-20180228-git.tgz 7416 2b59b63bb9a234cb14959fda6f12fa2e 9512dd1601d8bcc265598fe6e49cdddf772eeb8f cl-slug-20180228-git cl-slug-test.asd cl-slug.asd -cl-smt-lib http://beta.quicklisp.org/archive/cl-smt-lib/2022-03-31/cl-smt-lib-20220331-git.tgz 4983 f3fd3a27a41bee736f4ce9eb73f4672b a4062da7a9b258e0a6aa2183c0945024e26b4f1e cl-smt-lib-20220331-git cl-smt-lib.asd -cl-smtp http://beta.quicklisp.org/archive/cl-smtp/2021-02-28/cl-smtp-20210228-git.tgz 37478 e2f9137807f80514e0433bf2e8522ee5 1fbda947e90501ff57ba1ac685bf5d5716e64d59 cl-smtp-20210228-git cl-smtp.asd -cl-soil http://beta.quicklisp.org/archive/cl-soil/2018-08-31/cl-soil-release-quicklisp-f27087ce-git.tgz 330400 e26e1e23f2a4bf10a4e4d7c8e2fcd70c 6d7ad0c6aef48bb614d85a709222afcefa75c692 cl-soil-release-quicklisp-f27087ce-git cl-soil.asd -cl-soloud http://beta.quicklisp.org/archive/cl-soloud/2019-07-10/cl-soloud-20190710-git.tgz 521503 59b094adf83863dbf491001ec9dc0e33 f028ca7c4cbc2c3aa86a4341fdeb61e3d9482db4 cl-soloud-20190710-git cl-soloud.asd -cl-sophia http://beta.quicklisp.org/archive/cl-sophia/2015-06-08/cl-sophia-20150608-git.tgz 5748 4fa639f26d38c37be18c0d4e0da4b153 186948212d713ac7bac820f476e63a372b591b69 cl-sophia-20150608-git cl-sophia.asd -cl-spark http://beta.quicklisp.org/archive/cl-spark/2015-07-09/cl-spark-20150709-git.tgz 12519 0eec4e41100c4bbb0ab512e779399604 674f1bc695ae33dc00ab02502078af72720bf098 cl-spark-20150709-git cl-spark-test.asd cl-spark.asd -cl-sparql http://beta.quicklisp.org/archive/cl-sparql/2022-03-31/cl-sparql-20220331-git.tgz 6267 8a8aa37fea1a1dd09368dcb2a1e97596 be35dd462547dc1d2a72a04de9e2a332063dfcc9 cl-sparql-20220331-git cl-sparql-tests.asd cl-sparql.asd -cl-speedy-queue http://beta.quicklisp.org/archive/cl-speedy-queue/2015-03-02/cl-speedy-queue-20150302-git.tgz 3631 509d1acf7e4cfcef99127de75b16521f 476412e42d63703c0b070d23e7e4cbd389d447e9 cl-speedy-queue-20150302-git cl-speedy-queue.asd -cl-sphinx http://beta.quicklisp.org/archive/cl-sphinx/2011-06-19/cl-sphinx-20110619-git.tgz 162782 0aa9e282a8ecc190b788d121071373d6 2ca537aaaac0a4d45151b6a7c8ca71909d10ff5d cl-sphinx-20110619-git sphinx.asd -cl-spidev http://beta.quicklisp.org/archive/cl-spidev/2019-07-10/cl-spidev-20190710-git.tgz 10495 59a6d3341753da1fed9b05864deaabc4 b9338baf09481b93f21f16cea80fc9023b195807 cl-spidev-20190710-git cl-spidev.asd -cl-sqlite http://beta.quicklisp.org/archive/cl-sqlite/2019-08-13/cl-sqlite-20190813-git.tgz 14632 2269773eeb4a101ddd3b33f0f7e05e76 4edb0bfcfc4ec79ab48038c420e415b817c054f8 cl-sqlite-20190813-git sqlite.asd -cl-ssdb http://beta.quicklisp.org/archive/cl-ssdb/2021-01-24/cl-ssdb-20210124-git.tgz 16131 148abb8cb18da310ae4d36a965b47dcd 69666b8d81b1743222096a02264933b04279207d cl-ssdb-20210124-git cl-ssdb-test.asd cl-ssdb.asd -cl-sse http://beta.quicklisp.org/archive/cl-sse/2021-08-07/cl-sse-20210807-git.tgz 8888 ea88f4134f889a68520d94f2b8d248aa 3e44496e270416e68e47d2d04ab35164ded19ff4 cl-sse-20210807-git sse-client-test.asd sse-client.asd sse-demo.asd sse-server-test.asd sse-server.asd -cl-ssh-keys http://beta.quicklisp.org/archive/cl-ssh-keys/2023-02-14/cl-ssh-keys-20230214-git.tgz 3573403 5f40f874084e84dbe5385e5235a76c07 1d136535d7115547ac76de7c09592e9f64f35f7f cl-ssh-keys-20230214-git cl-ssh-keys.asd cl-ssh-keys.test.asd -cl-statsd http://beta.quicklisp.org/archive/cl-statsd/2017-01-24/cl-statsd-20170124-git.tgz 6437 bc58e298a1cf3657375eeb7e9981d993 65edf0606df6f93ff2b212c619c1f315e68a0de1 cl-statsd-20170124-git cl-statsd.asd cl-statsd.test.asd -cl-stdutils http://beta.quicklisp.org/archive/cl-stdutils/2011-10-01/cl-stdutils-20111001-git.tgz 114509 0fa8879ce4004924ff1f534e9fb92dba 4204504d7107cd3eae33550c4e00797fa4dfba98 cl-stdutils-20111001-git stdutils.asd -cl-steamworks http://beta.quicklisp.org/archive/cl-steamworks/2023-02-14/cl-steamworks-20230214-git.tgz 103666 ea6fcda0568abc9a26278abd749981e3 c1822ab456ff95d7456caabf39a6a745a98646aa cl-steamworks-20230214-git cl-steamworks-generator.asd cl-steamworks.asd -cl-stomp http://beta.quicklisp.org/archive/cl-stomp/2020-09-25/cl-stomp-20200925-git.tgz 7757 8f5a1c3ce31e9a08f2481e727b17036a 587b44fddf2756bf038c28b231d77596855fc5ab cl-stomp-20200925-git cl-stomp.asd -cl-stopwatch http://beta.quicklisp.org/archive/cl-stopwatch/2019-03-07/cl-stopwatch-20190307-hg.tgz 3481 f8aca8aac1dcaa3ff818e558dfb8471b 3963d39f4cdba3e518f0d027124d647592e77545 cl-stopwatch-20190307-hg cl-stopwatch.asd -cl-store http://beta.quicklisp.org/archive/cl-store/2023-02-14/cl-store-20230214-git.tgz 47607 e87dc10e9af66da44ae297ce44858eb5 8aa77366a5bd9ef8b9303a4d10178c1970fdea72 cl-store-20230214-git cl-store.asd -cl-str http://beta.quicklisp.org/archive/cl-str/2023-02-14/cl-str-20230214-git.tgz 20567 45ca56203804c996d1e8abb6f7b83742 f766c9a7210e9b11a3820c4d0adfcfb357e40a75 cl-str-20230214-git str.asd str.test.asd -cl-stream http://beta.quicklisp.org/archive/cl-stream/2019-05-21/cl-stream-20190521-git.tgz 10083 99bb43715db14c688bb32be11e4fee8b bd4e03b1155b2a3fe9a9a6faaae493f48bc0ad95 cl-stream-20190521-git cl-stream.asd -cl-strftime http://beta.quicklisp.org/archive/cl-strftime/2016-03-18/cl-strftime-20160318-git.tgz 7797 73097d6d00eca45c52ca5bedc99d0146 27c12e403c68bd330feffadd2b766cb9db160347 cl-strftime-20160318-git cl-strftime.asd -cl-string-complete http://beta.quicklisp.org/archive/cl-string-complete/2019-03-07/cl-string-complete-20190307-hg.tgz 5305 e828ace268105ad02b58ed26498ad28f eab194a8bfb0efe55ac8f0c7d8411e5e16408556 cl-string-complete-20190307-hg cl-string-complete.asd -cl-string-generator http://beta.quicklisp.org/archive/cl-string-generator/2021-06-30/cl-string-generator-20210630-git.tgz 5487 e8c6dc885c33e03ad6e30a07431ba025 e471f55f47cae73f2ff37c977a5fb1fb037dd5c8 cl-string-generator-20210630-git cl-string-generator.asd -cl-string-match http://beta.quicklisp.org/archive/cl-string-match/2021-12-09/cl-string-match-20211209-git.tgz 175821 56a6b7c7e3ff736f0ac2219e8e2777dd 8be6950ddfed2c6aa66bf8c10933efc76a49d15d cl-string-match-20211209-git ascii-strings.asd cl-string-match-test.asd cl-string-match.asd simple-scanf.asd -cl-strings http://beta.quicklisp.org/archive/cl-strings/2021-04-11/cl-strings-20210411-git.tgz 11200 ce6f2c80a8c245f414afd92230729182 bc5b16309a8fe03e95995634d1a5364911e77c3f cl-strings-20210411-git cl-strings.asd -cl-svg http://beta.quicklisp.org/archive/cl-svg/2018-02-28/cl-svg-20180228-git.tgz 83379 672145ecadef2259a3833886dbe68617 1640e08a5ddbcc328a3b4240c13ff91cac3c5454 cl-svg-20180228-git cl-svg.asd -cl-svm http://beta.quicklisp.org/archive/cl-svm/2011-04-18/cl-svm-20110418-git.tgz 435539 c093c5810a77b5258a6b463168c7c8bb 8e4d8ad0cb5ec177c2373b14c251c5932a84615b cl-svm-20110418-git cl-svm.asd -cl-swagger-codegen http://beta.quicklisp.org/archive/cl-swagger-codegen/2018-08-31/cl-swagger-codegen-20180831-git.tgz 43309 5066805afea5280e16e3e58f05cd88e1 9b69504759ff81308c486b266ff3484d2a6e8531 cl-swagger-codegen-20180831-git cl-swagger.asd -cl-sxml http://beta.quicklisp.org/archive/cl-sxml/2020-03-25/cl-sxml-20200325-git.tgz 15164 18c9542922dd4eb00257e194b55e6ed2 230ab25f47940c5802392b968c67dd1fbe50f9bd cl-sxml-20200325-git cl-sxml.asd -cl-syntax http://beta.quicklisp.org/archive/cl-syntax/2015-04-07/cl-syntax-20150407-git.tgz 3102 602b84143aafe59d65f4e08ac20a124a e00e7def72875fd635f7e9d27e24fd3f23076247 cl-syntax-20150407-git cl-syntax-annot.asd cl-syntax-anonfun.asd cl-syntax-clsql.asd cl-syntax-fare-quasiquote.asd cl-syntax-interpol.asd cl-syntax-markup.asd cl-syntax.asd -cl-sysexits http://beta.quicklisp.org/archive/cl-sysexits/2022-07-07/cl-sysexits-20220707-git.tgz 2911 e70aa7eab540927281983208de1eb265 725376bb1502e01d1b01165ab7f487315c7fc1a8 cl-sysexits-20220707-git sysexits.asd -cl-syslog http://beta.quicklisp.org/archive/cl-syslog/2019-02-02/cl-syslog-20190202-git.tgz 14759 eafff19eb1f38a36a9535c729d2217fe de0c891d0168db0a3079707794b5fafae6d99282 cl-syslog-20190202-git cl-syslog.asd -cl-table http://beta.quicklisp.org/archive/cl-table/2013-01-28/cl-table-20130128-git.tgz 4002 793e1222aebf00d28d4ec58173bd36b5 93e0aa5fb21ae9722e78814471019d1c2c62f6a3 cl-table-20130128-git cl-table.asd -cl-tar http://beta.quicklisp.org/archive/cl-tar/2022-02-20/cl-tar-20220220-git.tgz 54312 9af1ebb06794ec774f26045b947222a7 5a14debdfaad49db90c1f12f964d6d1499c63d3c cl-tar-20220220-git tar.asd -cl-tar-file http://beta.quicklisp.org/archive/cl-tar-file/2022-02-20/cl-tar-file-20220220-git.tgz 31663 a78c19197708fa923ac7afe517283c11 f925da4c4205a32f9f86b3702b4de5311461b353 cl-tar-file-20220220-git tar-file.asd -cl-tasukete http://beta.quicklisp.org/archive/cl-tasukete/2018-02-28/cl-tasukete-20180228-git.tgz 5602 f4dc086f01e384684b371fbcf631c29b 793c27bce80661019dd5920e02074e538bd22855 cl-tasukete-20180228-git cl-tasukete-test.asd cl-tasukete.asd -cl-tcod http://beta.quicklisp.org/archive/cl-tcod/2020-12-20/cl-tcod-20201220-git.tgz 90205 08603e896222696c4b3ed3be60c7c284 017e418eb198a5f1b8cf69d403b9ac2bd22220e8 cl-tcod-20201220-git parse-rgb.asd tcod.asd -cl-telebot http://beta.quicklisp.org/archive/cl-telebot/2021-10-20/cl-telebot-20211020-git.tgz 5287 9c28d1a26d4bbe5e95609f548c587a72 0b84604463547f219a361217a88c3ec786c73059 cl-telebot-20211020-git cl-telebot.asd -cl-telegram-bot http://beta.quicklisp.org/archive/cl-telegram-bot/2023-02-14/cl-telegram-bot-20230214-git.tgz 442552 615f13abc81e823fe9f509bc3a7004db 8e74ea17a925a9ee66206d48760fb0a603625766 cl-telegram-bot-20230214-git cl-telegram-bot.asd -cl-template http://beta.quicklisp.org/archive/cl-template/2013-06-15/cl-template-20130615-git.tgz 8316 9ff3872864a04535fa4fdd541e5fef70 3407880226be0be8fd02890e3ef18a2c9c8899f6 cl-template-20130615-git cl-template.asd -cl-termbox http://beta.quicklisp.org/archive/cl-termbox/2021-10-20/cl-termbox-20211020-git.tgz 8149 0045100d8a18e03f50d2548c5b81d7e2 8889182b54468573459c52f99d69fd5ba4136feb cl-termbox-20211020-git cl-termbox.asd -cl-tesseract http://beta.quicklisp.org/archive/cl-tesseract/2017-11-30/cl-tesseract-20171130-git.tgz 8190 761384aa2cde1733a96d6fca82d00750 98cef4ac03acf09549444079e5da579b19ebdc7a cl-tesseract-20171130-git cl-tesseract.asd -cl-tetris3d http://beta.quicklisp.org/archive/cl-tetris3d/2018-12-10/cl-tetris3d-20181210-git.tgz 5744 66d1a4aa18316e25bc0a7df127be71e7 5ea752a06b16d0d4aff9ad6a1bf5acc3eda92faf cl-tetris3d-20181210-git cl-tetris3d.asd -cl-textmagic http://beta.quicklisp.org/archive/cl-textmagic/2015-12-18/cl-textmagic-20151218-git.tgz 2035 f746d2e7ddea99e9cbe443e4a6c08175 3473012d8f21242b2a9bb6a85544938fe2c4a536 cl-textmagic-20151218-git cl-textmagic-test.asd cl-textmagic.asd -cl-tga http://beta.quicklisp.org/archive/cl-tga/2016-03-18/cl-tga-20160318-git.tgz 312452 84bf8ad6fc66ffd2519b933469ae3660 2d2b8b4fd47dde90818f6600bd73bf3cc0ede60f cl-tga-20160318-git cl-tga.asd -cl-threadpool http://beta.quicklisp.org/archive/cl-threadpool/2021-02-28/cl-threadpool-quickload-current-release-86ef8a6b-git.tgz 14319 1c9663c4b2e414968ce826a2a7b72ba1 656f19728a25ee205bcf66f22fd20d9b09e28f7f cl-threadpool-quickload-current-release-86ef8a6b-git cl-threadpool.asd -cl-tidy http://beta.quicklisp.org/archive/cl-tidy/2017-08-30/cl-tidy-20170830-git.tgz 6451 753b926424eaf57415e3cdb2545f4b51 8510d6d70053a5dcf0471a22507013b245695875 cl-tidy-20170830-git cl-tidy.asd -cl-tiled http://beta.quicklisp.org/archive/cl-tiled/2021-05-31/cl-tiled-20210531-git.tgz 18197 3e1584ed300697c9e43093528fb1f374 d5786b7c2e0006a2d34a645d7c2481690874cf3f cl-tiled-20210531-git cl-tiled.asd -cl-tk http://beta.quicklisp.org/archive/cl-tk/2015-06-08/cl-tk-20150608-git.tgz 11254 c6711a6dea114a6c3dec446420eec0f7 a69f6d26b9018482347f83542b91d5f913c13d4c cl-tk-20150608-git cl-tk.asd -cl-tld http://beta.quicklisp.org/archive/cl-tld/2022-02-20/cl-tld-20220220-git.tgz 78855 ce946650750ac973bbaa36389c8a7d8a f29d6220a0479fa229fd485d23766916d76a32d0 cl-tld-20220220-git cl-tld.asd -cl-tls http://beta.quicklisp.org/archive/cl-tls/2022-11-06/cl-tls-20221106-git.tgz 51433 76917357456d3962b1f5973d1aa51e29 e1cf5a8ed49d886e3e68542f084349a0bccf7d28 cl-tls-20221106-git cl-tls.asd -cl-tokyo-cabinet http://beta.quicklisp.org/archive/cl-tokyo-cabinet/2016-08-25/cl-tokyo-cabinet-20160825-git.tgz 19667 00d4bb23e393c6966b4acf17d9184627 9d22fd186290b36752b32010589d8f6b6c31024d cl-tokyo-cabinet-20160825-git cl-tokyo-cabinet-test.asd cl-tokyo-cabinet.asd -cl-toml http://beta.quicklisp.org/archive/cl-toml/2019-11-30/cl-toml-20191130-git.tgz 8835 093bee6524054b0b515d52db070eb300 8cf25c892ca26097b7d4880e49b8d32439ed4095 cl-toml-20191130-git cl-toml-test.asd cl-toml.asd -cl-torrents http://beta.quicklisp.org/archive/cl-torrents/2022-11-06/cl-torrents-20221106-git.tgz 581434 f6e1a792284f8e40f7ab2dc4d62288bf a1ba85db543dd22ad17bf606ffa4d0f6c1caf4fb cl-torrents-20221106-git torrents-test.asd torrents.asd -cl-transmission http://beta.quicklisp.org/archive/cl-transmission/2020-03-25/cl-transmission-20200325-git.tgz 8830 3e01cd078ee2b8b1d703c6f3d031e632 e891aa1e92565bbbf707e51ff0d26112f6dda11a cl-transmission-20200325-git cl-transmission-test.asd cl-transmission.asd -cl-trie http://beta.quicklisp.org/archive/cl-trie/2023-02-14/cl-trie-20230214-git.tgz 12116 04e38e3c5870f0d0216f2a8e54237daf fa3a76b85696124e240b8ef2915bee63bc957af2 cl-trie-20230214-git cl-trie-examples.asd cl-trie.asd -cl-tui http://beta.quicklisp.org/archive/cl-tui/2020-04-27/cl-tui-20200427-git.tgz 15307 5e1013c1334ce736d2fbfbfa4643ed6e 284a85a4029a3c9697e97f345dd8b402da0b8da3 cl-tui-20200427-git cl-tui.asd -cl-tulip-graph http://beta.quicklisp.org/archive/cl-tulip-graph/2013-06-15/cl-tulip-graph-20130615-git.tgz 14772 eaf9d92e3bffcf93220052fd42b4d002 060726c29d1b14f683149de192541e5b30a99877 cl-tulip-graph-20130615-git cl-tulip-graph.asd -cl-tuples http://beta.quicklisp.org/archive/cl-tuples/2014-07-13/cl-tuples-20140713-git.tgz 28047 8676dd7e0be1af17f5ffa8aac21d0ab3 c977ce6c441bd413c363d63cc99382ff33192dff cl-tuples-20140713-git cl-tuples.asd -cl-twitter http://beta.quicklisp.org/archive/cl-twitter/2018-02-28/cl-twitter-20180228-git.tgz 70934 83638a0508cda507500ef9e633f6cec4 620458f22d28ab5e6f33027c492e7fe1cae28c48 cl-twitter-20180228-git cl-twit-repl.asd cl-twitter.asd twitter-mongodb-driver.asd -cl-typesetting http://beta.quicklisp.org/archive/cl-typesetting/2021-05-31/cl-typesetting-20210531-git.tgz 336818 849e6fb2c4a33f823c005e4e9abb31b5 2a38325b2e4a679ae8741804b1d70495ba112ee8 cl-typesetting-20210531-git cl-typesetting.asd contrib/xhtml-renderer/xml-render.asd documentation/lisp-source/cl-pdf-doc.asd -cl-uglify-js http://beta.quicklisp.org/archive/cl-uglify-js/2015-07-09/cl-uglify-js-20150709-git.tgz 17631 f0ac4a43bb9da2478e995802b86df6dd b806550d06d7844466d36235876ff0a1698e854b cl-uglify-js-20150709-git cl-uglify-js.asd -cl-unicode http://beta.quicklisp.org/archive/cl-unicode/2021-02-28/cl-unicode-20210228-git.tgz 1290638 5b3bdddde3be5b8427e3fac92495a10b 178c37695c1679ca23ec02e48e9942e820640615 cl-unicode-20210228-git cl-unicode.asd -cl-unification http://beta.quicklisp.org/archive/cl-unification/2023-02-14/cl-unification-20230214-git.tgz 33079 7265231e798f608e01531c4a808244f8 40090795b3e69afae5135421c4bbbeef9d547516 cl-unification-20230214-git cl-unification-lib.asd cl-unification-test.asd cl-unification.asd lib-dependent/cl-ppcre-template.asd -cl-union-find http://beta.quicklisp.org/archive/cl-union-find/2022-11-06/cl-union-find-20221106-git.tgz 12700 3f797a6885708feea04c50f07ba12e66 b9faf417d17339a3c87ec251f027297d24fd3185 cl-union-find-20221106-git cl-union-find.asd -cl-unix-sockets http://beta.quicklisp.org/archive/cl-unix-sockets/2022-11-06/cl-unix-sockets-20221106-git.tgz 9083 e475fb2403897b82e8ad188679d51414 4f37be2830bb90ae6a4fff6cb178876148cf9430 cl-unix-sockets-20221106-git unix-sockets.asd unix-sockets.tests.asd -cl-utilities http://beta.quicklisp.org/archive/cl-utilities/2010-10-06/cl-utilities-1.2.4.tgz 22998 c3a4ba38b627448d3ed40ce888048940 187862251617676b95b1386e277fb2c449472bf8 cl-utilities-1.2.4 cl-utilities.asd -cl-utils http://beta.quicklisp.org/archive/cl-utils/2023-02-14/cl-utils-20230214-git.tgz 186565 e0bcdde222865667df00916f3b42d2b2 2c5dc33e0c49363fb6030f6cf5fa6f3ce4e048e6 cl-utils-20230214-git gt.asd -cl-variates http://beta.quicklisp.org/archive/cl-variates/2018-01-31/cl-variates-20180131-darcs.tgz 13536 dd441faa5cf87e4f41102c4a2323f95f 0ee1831ebbfe0c3efb4a5a02936f8a01b624abcc cl-variates-20180131-darcs cl-variates.asd -cl-vectors http://beta.quicklisp.org/archive/cl-vectors/2018-02-28/cl-vectors-20180228-git.tgz 31415 9d9629786d4f2c19c15cc6cd3049c343 55f19b15187b1a1026c7fd139fedf3cb7663847b cl-vectors-20180228-git cl-aa-misc.asd cl-aa.asd cl-paths-ttf.asd cl-paths.asd cl-vectors.asd -cl-veq http://beta.quicklisp.org/archive/cl-veq/2022-07-07/cl-veq-20220707-git.tgz 60680 719f98d7d9fd8c30659d5c9418bdebde 9156246d04d8fea906231ed0ef07dbe1e7eef96b cl-veq-20220707-git veq.asd -cl-vhdl http://beta.quicklisp.org/archive/cl-vhdl/2016-04-21/cl-vhdl-20160421-git.tgz 38493 1cae44b3e18d5b1416e9c3afb7382f76 030aa263142eff790f30a947c7b606b7b6021d97 cl-vhdl-20160421-git cl-vhdl.asd -cl-video http://beta.quicklisp.org/archive/cl-video/2018-02-28/cl-video-20180228-git.tgz 9729 1390350148bca3730b1a7d24e298d0e2 82c761ab17ae349f4ec7efff0f438e1dfa57af3d cl-video-20180228-git cl-video-avi.asd cl-video-gif.asd cl-video-player.asd cl-video-wav.asd cl-video.asd -cl-virtualbox http://beta.quicklisp.org/archive/cl-virtualbox/2018-08-31/cl-virtualbox-20180831-git.tgz 5029 f75919b162c344bf5b3bee1bf3f91e32 90de58049f50133366139c8e37e5e8548ff1bce9 cl-virtualbox-20180831-git cl-virtualbox.asd -cl-voipms http://beta.quicklisp.org/archive/cl-voipms/2022-07-07/cl-voipms-20220707-git.tgz 3778 be0b365ec77255ee06fd845ffb634d0e 230e2f6c83eeebea83d8b53677f4c4b5472013e1 cl-voipms-20220707-git voipms.asd -cl-vorbis http://beta.quicklisp.org/archive/cl-vorbis/2023-02-14/cl-vorbis-20230214-git.tgz 515254 8c7877d9506855722a5dcfa38172c83d f2c27d8d2f6d1a115733d7b3d3d89c80846d1241 cl-vorbis-20230214-git cl-vorbis.asd -cl-voxelize http://beta.quicklisp.org/archive/cl-voxelize/2015-07-09/cl-voxelize-20150709-git.tgz 118708 2e3d839d201d64659726f553bebd6ac0 104f867098b7cde4f4ccd449633cd9a407e8ce46 cl-voxelize-20150709-git cl-voxelize-examples.asd cl-voxelize-test.asd cl-voxelize.asd -cl-wadler-pprint http://beta.quicklisp.org/archive/cl-wadler-pprint/2019-10-07/cl-wadler-pprint-20191007-git.tgz 4900 030262f0ac47b84a4cfbfa3e423b7eee c68f97c39c540a1bcd35023df432e026b651ded3 cl-wadler-pprint-20191007-git cl-wadler-pprint.asd -cl-wav http://beta.quicklisp.org/archive/cl-wav/2022-11-06/cl-wav-20221106-git.tgz 3406 36f4df412d800e1ca931053d2f70ffbf 012c88a29a53c2830f9834dc801d659d48e5da3e cl-wav-20221106-git cl-wav.asd -cl-wave-file-writer http://beta.quicklisp.org/archive/cl-wave-file-writer/2021-10-20/cl-wave-file-writer-quickload-current-release-42cde6cf-git.tgz 5198 f224924825b7b430394f90e53fa565be 43f5d23724accf16e733bab525bf5856af14f901 cl-wave-file-writer-quickload-current-release-42cde6cf-git cl-wave-file-writer.asd -cl-wavelets http://beta.quicklisp.org/archive/cl-wavelets/2022-07-07/cl-wavelets-20220707-git.tgz 685880 097662392d4de012821a11787d95c686 20bf63988f821916b3cc305a37616187e213c2d4 cl-wavelets-20220707-git cl-wavelets.asd -cl-wayland http://beta.quicklisp.org/archive/cl-wayland/2019-03-07/cl-wayland-20190307-git.tgz 44560 31887db1bf34dcf36f3978c8004d4e0f 9a189cafa43b0da7d79a9421afa30bebbf7db6ec cl-wayland-20190307-git cl-wayland.asd -cl-weather-jp http://beta.quicklisp.org/archive/cl-weather-jp/2016-02-08/cl-weather-jp-20160208-git.tgz 3398 705667b6c865f440d1667ccc5f83a8fb 3c40d7f65d92a9485ec4bb8e89c0d0af8d5e73c3 cl-weather-jp-20160208-git cl-weather-jp-test.asd cl-weather-jp.asd -cl-webdav http://beta.quicklisp.org/archive/cl-webdav/2017-08-30/cl-webdav-20170830-git.tgz 77311 9b5b1bbe0b24734a652a464f6924a019 68cbdcabb6c6e8c61ff4757554efa3e83af3e2a1 cl-webdav-20170830-git cl-webdav.asd -cl-webdriver-client http://beta.quicklisp.org/archive/cl-webdriver-client/2021-12-30/cl-webdriver-client-20211230-git.tgz 304955 40bdc00810a476dfe52863130e0b792a 4b44e3b40ff1e920a8802934eaecbf35c19e8cc0 cl-webdriver-client-20211230-git cl-webdriver-client-test.asd cl-webdriver-client.asd -cl-webkit http://beta.quicklisp.org/archive/cl-webkit/2023-02-14/cl-webkit-20230214-git.tgz 40010 abd2a99ee28c1bc34344d10a5289b167 780c5edde7fb1a17083ee610083a2e85193a86b9 cl-webkit-20230214-git webkit2/cl-webkit2.asd -cl-who http://beta.quicklisp.org/archive/cl-who/2022-03-31/cl-who-20220331-git.tgz 24823 109e7be9ab5c1680f18ddd26095a60f6 89bced0ab2a84088dda0727a71df386786715315 cl-who-20220331-git cl-who.asd -cl-why http://beta.quicklisp.org/archive/cl-why/2018-02-28/cl-why-20180228-git.tgz 25872 00a337f35a516372da41415d25fb879b 86790d0b92642b89a6fde16249597db175cfb407 cl-why-20180228-git cl-why.asd -cl-with http://beta.quicklisp.org/archive/cl-with/2021-10-20/cl-with-20211020-git.tgz 8888 6f847fc44734f48d5dde0b6326afc7f8 f90c2098ab3828d1472a7d1c7a2a2831d50ffb32 cl-with-20211020-git cl-with.asd -cl-wol http://beta.quicklisp.org/archive/cl-wol/2023-02-14/cl-wol-20230214-git.tgz 548634 ab5cd87a32bad51c962cb4ab4e3a8112 c448ecbdce2442c15d0a51e88073a0f95e60420c cl-wol-20230214-git cl-wol.cli.asd cl-wol.core.asd cl-wol.test.asd -cl-wordcut http://beta.quicklisp.org/archive/cl-wordcut/2016-04-21/cl-wordcut-20160421-git.tgz 301706 1f251cf2df7f1946887d09c82e3ce968 4b7bbb407529d93d44f9799646a19301c9a81826 cl-wordcut-20160421-git cl-wordcut.asd -cl-xdg http://beta.quicklisp.org/archive/cl-xdg/2017-01-24/cl-xdg-20170124-git.tgz 22666 eaf304bd5c23c58f45f161afe180c2d4 dbdcbe7542181ebf9bfde5c57f120543a937911a cl-xdg-20170124-git cl-xdg.asd -cl-xkb http://beta.quicklisp.org/archive/cl-xkb/2023-02-14/cl-xkb-20230214-git.tgz 5369 53671ac039a35d054fd9f5947c0e1e22 f15acbea42f7c67a41df9df0f44a817183619bdb cl-xkb-20230214-git cl-xkb.asd -cl-xkeysym http://beta.quicklisp.org/archive/cl-xkeysym/2014-09-14/cl-xkeysym-20140914-git.tgz 38246 15ad40d06aa25589bdb59ac5ef485b8c 3d95e7111d9560e75772dbdbd6655b917ede6d47 cl-xkeysym-20140914-git cl-xkeysym.asd -cl-xmlspam http://beta.quicklisp.org/archive/cl-xmlspam/2010-10-06/cl-xmlspam-20101006-http.tgz 10705 6e3a0944e96e17916b1445f4207babb8 82b47ae3227d537486d6bea267c473a068729ecd cl-xmlspam-20101006-http cl-xmlspam.asd -cl-xmpp http://beta.quicklisp.org/archive/cl-xmpp/2010-10-06/cl-xmpp-0.8.1.tgz 15271 303b035edd3bde5aa85c423278298e88 23935110f714202ce650c7e31af12fbbc1f22130 cl-xmpp-0.8.1 cl-xmpp-sasl.asd cl-xmpp-tls.asd cl-xmpp.asd -cl-xul http://beta.quicklisp.org/archive/cl-xul/2016-03-18/cl-xul-20160318-git.tgz 518863 2fbb767b222e632df40a3b7a57aa7f3e 19ad37e6129833ed96d57f92246922462d8f9fb9 cl-xul-20160318-git cl-xul-test.asd cl-xul.asd -cl-yacc http://beta.quicklisp.org/archive/cl-yacc/2023-02-14/cl-yacc-20230214-git.tgz 18595 4692600db768fba4b116f0832f895057 a39c8371c4d9d8a059fcbf0b33c55b9e681bccb2 cl-yacc-20230214-git yacc.asd -cl-yaclyaml http://beta.quicklisp.org/archive/cl-yaclyaml/2016-08-25/cl-yaclyaml-20160825-git.tgz 35546 73ddfe97a2b8214e319b366245a216c2 fd3ddd09d55fb1176db7b23f16e3874d6c5018a6 cl-yaclyaml-20160825-git cl-yaclyaml.asd -cl-yahoo-finance http://beta.quicklisp.org/archive/cl-yahoo-finance/2013-03-12/cl-yahoo-finance-20130312-git.tgz 7759 ef1129e9f2bd7afbdde50048db25cc94 9801bb213a303af511c38d63a126b718a2b65085 cl-yahoo-finance-20130312-git cl-yahoo-finance.asd -cl-yaml http://beta.quicklisp.org/archive/cl-yaml/2022-11-06/cl-yaml-20221106-git.tgz 14123 3d24075506f8f8ffcc627f3800d95063 5aff81c9d2f79479273599e7c9c43deca082b9ec cl-yaml-20221106-git cl-yaml-test.asd cl-yaml.asd -cl-yesql http://beta.quicklisp.org/archive/cl-yesql/2021-10-20/cl-yesql-20211020-git.tgz 13469 77b1b8c4408dae5f726215cd24087e87 5d277fd9d2d00ccabf8d557b6528ca888758feee cl-yesql-20211020-git cl-yesql.asd -cl-yxorp http://beta.quicklisp.org/archive/cl-yxorp/2022-11-06/cl-yxorp-20221106-git.tgz 18499 a0a0e2b1fa057ec4a491e388299790ed f321012d84fe4fc49b60aaecead052126337e2b3 cl-yxorp-20221106-git yxorp.asd -cl-zipper http://beta.quicklisp.org/archive/cl-zipper/2020-06-10/cl-zipper-20200610-git.tgz 4193 69142f465d6d2d949699884dd2449843 b4f9c78e07dd1362ef459a4109fc0dbc6d38213a cl-zipper-20200610-git cl-zipper.asd -cl-zmq http://beta.quicklisp.org/archive/cl-zmq/2016-03-18/cl-zmq-20160318-git.tgz 13519 2edc111c3fa50504eb2ef997f9ded9c4 b50410e4f435a9e85b3d91df8101fb2048594ab0 cl-zmq-20160318-git zeromq.asd -cl-zstd http://beta.quicklisp.org/archive/cl-zstd/2022-11-06/cl-zstd-20221106-git.tgz 576657 bd3e6e31a5dbc89e89603b2afeb68047 0ccf80c739a8b388fab0ef8b5e7c6f978b131ee5 cl-zstd-20221106-git zstd-tests.asd zstd.asd -cl-zyre http://beta.quicklisp.org/archive/cl-zyre/2020-09-25/cl-zyre-20200925-git.tgz 14876 3f92fc184b0aea074a3a6bbd2e09b2d7 357f02010f6d3293263adf3f062dc96fe6cd476d cl-zyre-20200925-git zyre.asd -cl4store http://beta.quicklisp.org/archive/cl4store/2020-03-25/cl4store-20200325-git.tgz 7080 bb3a80be4cb130697cb10704a0b9dc80 a3de4511da49e9fb60e41d9c4f029974e3c06ce6 cl4store-20200325-git cl4store.asd -clache http://beta.quicklisp.org/archive/clache/2017-11-30/clache-20171130-git.tgz 5875 e319e26205af015787e5cd893eeb58cd 2c09d8401c5e225019bb7393ca899e0056f31790 clache-20171130-git clache-test.asd clache.asd -clack http://beta.quicklisp.org/archive/clack/2023-02-14/clack-20230214-git.tgz 172704 3e77afc590c12669282e57196a2488d2 ac1d3a6640cc914f0591285697ce66a8c9753a0c clack-20230214-git clack-handler-fcgi.asd clack-handler-hunchentoot.asd clack-handler-toot.asd clack-handler-wookie.asd clack-socket.asd clack-test.asd clack.asd t-clack-handler-fcgi.asd t-clack-handler-hunchentoot.asd t-clack-handler-toot.asd t-clack-handler-wookie.asd -clack-errors http://beta.quicklisp.org/archive/clack-errors/2019-08-13/clack-errors-20190813-git.tgz 278838 bbae5cf71b4d95e5dbb51c1b8cc11ff0 35df80382645afdbc51214118d2542bd446e3e6a clack-errors-20190813-git clack-errors-demo.asd clack-errors-test.asd clack-errors.asd lack-middleware-clack-errors.asd -clack-pretend http://beta.quicklisp.org/archive/clack-pretend/2021-06-30/clack-pretend-20210630-git.tgz 7042 98a342fbb3cb42dd26cf297ec55e5eca 733fb06c3eb21796672978478e93138fa2675e29 clack-pretend-20210630-git clack-pretend.asd -clack-static-asset-middleware http://beta.quicklisp.org/archive/clack-static-asset-middleware/2021-12-09/clack-static-asset-middleware-20211209-git.tgz 22522 6e6559ff6390e551d41b9919c0ce7c4a fd16372601f4a7a460dc7e631acdcf90f4b9ddd4 clack-static-asset-middleware-20211209-git clack-static-asset-djula-helpers.asd clack-static-asset-middleware-test.asd clack-static-asset-middleware.asd -clad http://beta.quicklisp.org/archive/clad/2023-02-14/clad-20230214-git.tgz 11809 e6c46b2c2ec4837a56d2e18243b5ceeb 535685a9d0a1f2282d7f1b37824bd07e6d5a1731 clad-20230214-git clad.asd -class-options http://beta.quicklisp.org/archive/class-options/2020-10-16/class-options_1.0.1.tgz 6926 6a11f6d5e892755f2e1bbac090d9ead0 774b7e9a97649a231da89bd4c2a6335dcc018adb class-options_1.0.1 class-options.asd tests/class-options_tests.asd -classimp http://beta.quicklisp.org/archive/classimp/2020-03-25/classimp-20200325-git.tgz 35560 56551bf063f1a1fcf6c9be351ec9609e ad53d09ba54dd7af8be8548816265f96b43f013d classimp-20200325-git classimp-samples.asd classimp.asd -classowary http://beta.quicklisp.org/archive/classowary/2019-10-07/classowary-20191007-git.tgz 24900 a2587986780a40251b0327686b817cc6 cce68e75254543ae11458499c408544f67dda874 classowary-20191007-git classowary-test.asd classowary.asd -clast http://beta.quicklisp.org/archive/clast/2023-02-14/clast-20230214-git.tgz 56437 9bc84528b9c92cc351830d483e0079e1 1ffdf1cf7b89b64a401f69ec03d340fda1ef559f clast-20230214-git clast.asd -clath http://beta.quicklisp.org/archive/clath/2023-02-14/clath-20230214-git.tgz 14294 654548594fea7154c6ec78c1397e29f6 8573edf86c174e1c802bb331f8f7d7735d6b8597 clath-20230214-git clath.asd -clavatar http://beta.quicklisp.org/archive/clavatar/2012-10-13/clavatar-20121013-git.tgz 3375 2861593e34c92b4faa7edb77be6044bb caf33a796f42b398be84fb304753622550cd41f1 clavatar-20121013-git clavatar.asd -clavier http://beta.quicklisp.org/archive/clavier/2023-02-14/clavier-20230214-git.tgz 7226 2c3494eb8779503645e8b298a4cbcc54 ad6c8a84bf91a1e15043d46f1240692e073de057 clavier-20230214-git clavier.asd clavier.test.asd -claw http://beta.quicklisp.org/archive/claw/2020-10-16/claw-stable-git.tgz 32500 cbb451472355ace1f0a5da720075e68f 77af6d65748418ca4cf0548bee926d58e5b8c62f claw-stable-git claw.asd -claw-olm http://beta.quicklisp.org/archive/claw-olm/2021-05-31/claw-olm-20210531-git.tgz 544512 a74d3c601f08d60d974587a8f28ec1ea d50b09adbbf50d91790797435d4b73b1d2a3995a claw-olm-20210531-git claw-olm-bindings.asd claw-olm.asd -claw-support http://beta.quicklisp.org/archive/claw-support/2020-10-16/claw-support-stable-git.tgz 1324 e7985725534a250acfa8ebebc9074ba5 d68ba98fca32cd626abbb5337de70a4a6004f199 claw-support-stable-git claw-support.asd -claw-utils http://beta.quicklisp.org/archive/claw-utils/2020-10-16/claw-utils-stable-git.tgz 2216 747e03cc466a4dca2635fa67531dd22d 8952fdc7a383ef498bd223c4a1020fc7a5de951c claw-utils-stable-git claw-utils.asd -clawk http://beta.quicklisp.org/archive/clawk/2020-09-25/clawk-20200925-git.tgz 13899 bea0a80473ce5ca78127a413f43dc8a5 6e4de57cf4c147884d6364b7dff5b94d4d2635d2 clawk-20200925-git clawk.asd -claxy http://beta.quicklisp.org/archive/claxy/2022-02-20/claxy-20220220-git.tgz 5578 eb99a344ea6fa2f5340167617c24752d 041aaac96d123f771f948dae90940563d0fdd1a1 claxy-20220220-git claxy.asd -clazy http://beta.quicklisp.org/archive/clazy/2023-02-14/clazy-20230214-git.tgz 23928 bc05b1058d199b3fc534567b435a95f9 26f90c7de4ca5ae617dd6a8ce9e110dae43d80ef clazy-20230214-git clazy.asd -clem http://beta.quicklisp.org/archive/clem/2021-08-07/clem-20210807-git.tgz 84583 c7da8661594bdbeb80a017b4c56abc27 33ee838245718f55abfd2e4ca0d2f21a2108f63e clem-20210807-git clem-benchmark.asd clem-test.asd clem.asd -cleric http://beta.quicklisp.org/archive/cleric/2022-02-20/cleric-20220220-git.tgz 19734 1996565acc23a938a150c7edd38617aa 1226afbf0cd42110008438f9f283d3c52b2bfc46 cleric-20220220-git cleric-test.asd cleric.asd -clerk http://beta.quicklisp.org/archive/clerk/2022-02-20/clerk-20220220-git.tgz 5215 60321d2d1873f8a68c3f462e4c9b6a2e 93a8276ccdae50b7d500a1a2d5f8e7a5674530a9 clerk-20220220-git clerk.asd -clesh http://beta.quicklisp.org/archive/clesh/2020-12-20/clesh-20201220-git.tgz 8029 c9060b2d87d468ed51e0bfd232a62acb 98e901f1b3c3464b81affeca3d5860cd1584ee3f clesh-20201220-git clesh-tests.asd clesh.asd -cletris http://beta.quicklisp.org/archive/cletris/2021-10-20/cletris-20211020-git.tgz 191265 2afe9bdeed653df58bb19e79bdfaeda2 13eecfa04cc507fdf1eb840a1bb1a8f0b51f61be cletris-20211020-git cletris-network.asd cletris-test.asd cletris.asd -clfswm http://beta.quicklisp.org/archive/clfswm/2016-12-04/clfswm-20161204-git.tgz 282721 dc976785ef899837ab0fc50a4ed6b740 f745e9682f549b4d92d31e3e7fcec68d561af370 clfswm-20161204-git clfswm.asd -clgplot http://beta.quicklisp.org/archive/clgplot/2022-11-06/clgplot-20221106-git.tgz 103195 356b851073c3250c6a6f4224f79f0bf7 fa80e1e0d9c81cbde82bebdc8b03a00819d6fedc clgplot-20221106-git clgplot-test.asd clgplot.asd -clhs http://beta.quicklisp.org/archive/clhs/2015-04-07/clhs-0.6.3.tgz 2238743 37b804be8696e555a74f240ebc17bbc6 f1c4c385996573194e15316c2f4167f6d3998859 clhs-0.6.3 clhs.asd -clickr http://beta.quicklisp.org/archive/clickr/2014-07-13/clickr-20140713-git.tgz 23238 264cae768921c6e264d909bb4c40e873 af914f21f5a5cac958bfd57128000580dab268e5 clickr-20140713-git clickr.asd -clim-widgets http://beta.quicklisp.org/archive/clim-widgets/2020-07-15/clim-widgets-20200715-git.tgz 14684 91edd0cf2cc9d7ced786e7e470082d9d 41bbaa57d7f90c9656a5d0cd60f1ce2f2e78d608 clim-widgets-20200715-git clim-widgets.asd -climacs http://beta.quicklisp.org/archive/climacs/2023-02-14/climacs-20230214-git.tgz 112444 6ecb1d67fe1dcab38afc1b7416d4a536 281c4ceacaf0a9004a89261e0317bfe968ec1f98 climacs-20230214-git climacs.asd -climc http://beta.quicklisp.org/archive/climc/2023-02-14/climc-20230214-git.tgz 213616 6851e53a68540698a005861b584c0583 8590ee612fdef26f5ab75e0fba35b15924ed6aa3 climc-20230214-git climc-test.asd climc.asd -climon http://beta.quicklisp.org/archive/climon/2022-02-20/climon-20220220-git.tgz 1005430 965ac514545986a550448657354d2a98 1080d4f0ee46bf44eb2bbb48c2f615ceaec0e3b0 climon-20220220-git climon-test.asd climon.asd -clinch http://beta.quicklisp.org/archive/clinch/2018-02-28/clinch-20180228-git.tgz 15291213 26477d753d550ae020ae95c60315d8b3 232f53345667193c6f4899ab6322d31066e31eef clinch-20180228-git clinch-cairo.asd clinch-classimp.asd clinch-freeimage.asd clinch-pango.asd clinch.asd -clinenoise http://beta.quicklisp.org/archive/clinenoise/2020-04-27/clinenoise-20200427-git.tgz 5585 026cb7956427be3a2162254efc33ef84 c0980cd123589fdbcfeabf4d6c8f3e621c431042 clinenoise-20200427-git clinenoise.asd -clingon http://beta.quicklisp.org/archive/clingon/2023-02-14/clingon-20230214-git.tgz 609873 6470ab1902440a77178ce5dc441ad89d 9eb0709e98697ea34b3a4b77c48ae01c3e53c651 clingon-20230214-git clingon.asd clingon.demo.asd clingon.intro.asd clingon.test.asd -clip http://beta.quicklisp.org/archive/clip/2023-02-14/clip-20230214-git.tgz 23508 70a167d84b3a0f4a1cf3a6a97d53becb bde6b92bbfc835b426bdb1e29a6778df0a5bea53 clip-20230214-git clip.asd -clipper http://beta.quicklisp.org/archive/clipper/2015-09-23/clipper-20150923-git.tgz 30698 a8d3f3fa89f2d31dd864a55a93604973 d45c4f34e7ea6db2ad08811d2f2b104dd9e5afbc clipper-20150923-git clipper-test.asd clipper.asd -clite http://beta.quicklisp.org/archive/clite/2013-06-15/clite-20130615-git.tgz 4207 e9ec17416118a4bc561b7ac0b1c8fe55 a33f68199901025b79110bb113ac204b47008231 clite-20130615-git clite.asd -clj http://beta.quicklisp.org/archive/clj/2020-12-20/clj-20201220-git.tgz 7182 3df8450abb46784a191b4ab5f9ab4cc9 f6ad8174a9020a000e5eab76fccd1c69633c616d clj-20201220-git clj.asd -clj-con http://beta.quicklisp.org/archive/clj-con/2021-08-07/clj-con-20210807-git.tgz 34193 d9b150e6a23b513e4be5927bbbd33c29 33dee7c801248234a4c4ca93876f2b461242fa27 clj-con-20210807-git clj-con-test.asd clj-con.asd -clj-re http://beta.quicklisp.org/archive/clj-re/2022-11-06/clj-re-20221106-git.tgz 12178 0fd1b83dc4f2f418485cf1c5e3b07eeb 4cb6533a4d9781eadea502dae47c72c76e447931 clj-re-20221106-git clj-re-test.asd clj-re.asd -clml http://beta.quicklisp.org/archive/clml/2022-02-20/clml-20220220-git.tgz 1028980 cc33f459e918d6936764b5c5824ff05d 40445627b742e630749871cb088590e847b3d221 clml-20220220-git addons/fork-future/fork-future.asd addons/future/future.asd association-rule/clml.association-rule.asd blas/clml.blas.asd blas/f2cl-lib.asd classifiers/clml.classifiers.asd clml.asd clustering/clml.clustering.asd data/clml.data.asd data/r-datasets/clml.data.r-datasets.asd decision-tree/clml.decision-tree.asd docs/clml.docs.asd graph/clml.graph.asd hjs/clml.hjs.asd lapack/clml.lapack.asd nearest-search/clml.nearest-search.asd nonparametric/clml.nonparametric.asd numeric/clml.numeric.asd pca/clml.pca.asd som/clml.som.asd statistics/clml.statistics.asd statistics/clml.statistics.rand.asd svm/clml.svm.asd test/clml.test.asd text/clml.text.asd time-series/clml.time-series.asd utility/clml.utility.asd -clnuplot http://beta.quicklisp.org/archive/clnuplot/2013-01-28/clnuplot-20130128-darcs.tgz 31274 0e5dccbbbe3408b3e0aebf639691c6a0 6a2749d3b7ef6bd1325b92160bb9eee35f099c96 clnuplot-20130128-darcs clnuplot.asd -clobber http://beta.quicklisp.org/archive/clobber/2022-11-06/clobber-20221106-git.tgz 7328 fadcd13a71e021faec1e370950802152 e6f153b9ca5ca72538451ed78d792a3db3509ab1 clobber-20221106-git clobber.asd -clod http://beta.quicklisp.org/archive/clod/2019-03-07/clod-20190307-hg.tgz 98259 df582b015aa80397402eee3bb5a13288 c3bc36581145c5abc6126b2c3ba88386f6ba7876 clod-20190307-hg clod.asd -clods-export http://beta.quicklisp.org/archive/clods-export/2021-04-11/clods-export-20210411-git.tgz 20257 04128d9dcd96f53fb5436025f1bba92f 63776b859dc3ca9b48f8faaeb1e44ebd0e802c3e clods-export-20210411-git clods-export.asd -clog http://beta.quicklisp.org/archive/clog/2023-02-14/clog-20230214-git.tgz 6501535 338f3f32f81462e54bc724f92e131779 a3c21a41ae1da39f235791adf0cb71c9840faf63 clog-20230214-git clog.asd tutorial/13-tutorial/hello-clog/hello-clog.asd tutorial/28-tutorial/hello-builder/hello-builder.asd -clog-ace http://beta.quicklisp.org/archive/clog-ace/2022-11-06/clog-ace-20221106-git.tgz 2938359 c3c9e9fb57dcdbcecde6608f3a79a73e 7b9ea6ff8558d54a2619192d93daec6c1cc7037f clog-ace-20221106-git clog-ace.asd -clog-plotly http://beta.quicklisp.org/archive/clog-plotly/2022-11-06/clog-plotly-20221106-git.tgz 221440 c4f7823f2e77de9030f09dd6adaa30a1 eedefa2026da17ddb81279b210c34acc09c5996c clog-plotly-20221106-git clog-plotly.asd -clog-terminal http://beta.quicklisp.org/archive/clog-terminal/2022-11-06/clog-terminal-20221106-git.tgz 420434 f4fbba864bc1323eaeed8820896f4d69 e61258f8b7dc2810eda02003a2deb2b6d8bd8786 clog-terminal-20221106-git clog-terminal.asd -clonsigna http://beta.quicklisp.org/archive/clonsigna/2012-09-09/clonsigna-20120909-git.tgz 42948 3ae74680c33dfd5880914dac3873357c 11bf0a3df0e3309a054015629c01a282148208e5 clonsigna-20120909-git clonsigna.asd -clop http://beta.quicklisp.org/archive/clop/2022-02-20/clop-v1.0.1.tgz 10995 4ad9df2316648497ef94a0a5e122ec57 a6821b0a6338ffd382ed3cc0ca6ab1aced63d7f7 clop-v1.0.1 clop.asd -clos-diff http://beta.quicklisp.org/archive/clos-diff/2015-06-08/clos-diff-20150608-git.tgz 14486 88dbce5dc199deb2ee44e7cb73946db0 8825ffc50639addefd79f604addcacf17309f512 clos-diff-20150608-git clos-diff.asd -clos-fixtures http://beta.quicklisp.org/archive/clos-fixtures/2016-08-25/clos-fixtures-20160825-git.tgz 2687 68898ca907a135d733ecdadb3f8b5723 75e8f147882b9e7fb56519a8c8a91d00798b1df7 clos-fixtures-20160825-git clos-fixtures-test.asd clos-fixtures.asd -closer-mop http://beta.quicklisp.org/archive/closer-mop/2023-02-14/closer-mop-20230214-git.tgz 23767 9712c60568cb4831ce6b14b2773356d6 a548710e7aa0ebdee7d35f5ce3a212c114751e07 closer-mop-20230214-git closer-mop.asd -closure-common http://beta.quicklisp.org/archive/closure-common/2018-10-18/closure-common-20181018-git.tgz 27833 b09ee60c258a29f0c107960ec4c04ada 42e2f882070d49d3224c15a304354afb29f97841 closure-common-20181018-git closure-common.asd -closure-html http://beta.quicklisp.org/archive/closure-html/2018-07-11/closure-html-20180711-git.tgz 103413 461dc8caa65385da5f2d1cd8dd4f965f d8e52dc5d129aec699cd405c14a9080d01199506 closure-html-20180711-git closure-html.asd -clouchdb http://beta.quicklisp.org/archive/clouchdb/2012-04-07/clouchdb_0.0.16.tgz 33759 d39f8e71a5e1954b40af4291f0c05757 7d254f6edf1a28300e4c4c3fa387b4cfcdf24b28 clouchdb_0.0.16 clouchdb-examples.asd clouchdb.asd -clsql http://beta.quicklisp.org/archive/clsql/2022-11-06/clsql-20221106-git.tgz 968899 5f083505579eb7dfeed90882ebf7dc71 db16fc192662b613d9b63c312dae6f3ae1e9bc5d clsql-20221106-git clsql-aodbc.asd clsql-cffi.asd clsql-mysql.asd clsql-odbc.asd clsql-postgresql-socket.asd clsql-postgresql-socket3.asd clsql-postgresql.asd clsql-sqlite.asd clsql-sqlite3.asd clsql-tests.asd clsql-uffi.asd clsql.asd -clsql-fluid http://beta.quicklisp.org/archive/clsql-fluid/2017-08-30/clsql-fluid-20170830-git.tgz 4361 cd6191a16e81af2670f3ed84b29995b8 af7e03aca8277efe730c86075f3587be71a357c1 clsql-fluid-20170830-git clsql-fluid.asd -clsql-helper http://beta.quicklisp.org/archive/clsql-helper/2018-01-31/clsql-helper-20180131-git.tgz 31200 e3040bc42b24c8b0845abcd4a74d3db4 b92225c63d358fac585ce63bc132cca4bac1f50c clsql-helper-20180131-git clsql-helper-slot-coercer.asd clsql-helper.asd -clsql-local-time http://beta.quicklisp.org/archive/clsql-local-time/2020-10-16/clsql-local-time-20201016-git.tgz 1701 ca6740fcc92f763f43b5a10c22539bfe 5dd91bdf72f41cada66e890bc661ad1355d03de2 clsql-local-time-20201016-git clsql-local-time.asd -clsql-orm http://beta.quicklisp.org/archive/clsql-orm/2016-02-08/clsql-orm-20160208-git.tgz 19760 40b31c2bfbf7b27f35b362fc4cffb6bf 4d07a98d77328076b0844f4708c56087f5618426 clsql-orm-20160208-git clsql-orm.asd -clss http://beta.quicklisp.org/archive/clss/2022-11-06/clss-20221106-git.tgz 21477 3e9422b70401f6029d42027a94938761 e34fedeadd0a700c64126fde8e00a659387b5bc1 clss-20221106-git clss.asd -cltcl http://beta.quicklisp.org/archive/cltcl/2016-12-04/cltcl-20161204-git.tgz 338065 bb57496aeea233c7adb04e3bb6eca551 8d9140fafe4658324f8b354159cdef6d8c9d174b cltcl-20161204-git cltcl.asd -cluffer http://beta.quicklisp.org/archive/cluffer/2023-02-14/cluffer-20230214-git.tgz 102460 534dffc801316d355edcb72037362a04 0ae7373095c3c24077d6959d7ca36e0356a0c93c cluffer-20230214-git Base/cluffer-base.asd Simple-buffer/cluffer-simple-buffer.asd Simple-line/cluffer-simple-line.asd Standard-buffer/cluffer-standard-buffer.asd Standard-line/cluffer-standard-line.asd Test/cluffer-test.asd cluffer.asd -clump http://beta.quicklisp.org/archive/clump/2016-08-25/clump-20160825-git.tgz 25593 5132d2800138d435ef69f7e68b025c8f 68760a1e2e6e28ecf8f45e5b766774bc3a18e369 clump-20160825-git 2-3-tree/clump-2-3-tree.asd Binary-tree/clump-binary-tree.asd Test/clump-test.asd clump.asd -clunit http://beta.quicklisp.org/archive/clunit/2017-10-19/clunit-20171019-git.tgz 76811 389017f2f05a6287078ddacd0471817e 26340b858b8c784b90cda75ab57470410507d191 clunit-20171019-git clunit.asd -clunit2 http://beta.quicklisp.org/archive/clunit2/2022-11-06/clunit2-20221106-git.tgz 40384 2b8f33ac4d485e2e9ade3651a643cd7b 09223b2c052891d8dd2a22140cc68090309fae1f clunit2-20221106-git clunit2.asd -clustered-intset http://beta.quicklisp.org/archive/clustered-intset/2022-07-07/clustered-intset-20220707-git.tgz 21705 d852dc8d04d7948e78154cf3c987bdc4 8e9db3a7da64ec6964fbd563add3aa2f05eb23f4 clustered-intset-20220707-git clustered-intset-test.asd clustered-intset.asd -clusters http://beta.quicklisp.org/archive/clusters/2022-03-31/clusters-20220331-git.tgz 20939 fe3df098117f0fbfe339edafd4e782ce bdffe907e7eb0a8fce7941d328b3ea323b63ce51 clusters-20220331-git clusters-tests.asd clusters.asd -clutter http://beta.quicklisp.org/archive/clutter/2021-10-20/clutter-v1.0.0.tgz 12575 9c97f6f5415be3f4c8d948af6dce7818 970f82da357a6009b7a181a79c589a986f4b3635 clutter-v1.0.0 clutter.asd -clweb http://beta.quicklisp.org/archive/clweb/2020-12-20/clweb-20201220-git.tgz 141039 757653ad57dd52eaacc619f4992d5f3f 42bb418e8d07ed10be040b30bb0a7fb491196d8b clweb-20201220-git clweb.asd -clws http://beta.quicklisp.org/archive/clws/2013-08-13/clws-20130813-git.tgz 32371 11a801aadeda244b749c2b36a19b9af9 521463b0aef355a1307f911327fee5ed5d65854d clws-20130813-git clws.asd -clx http://beta.quicklisp.org/archive/clx/2023-02-14/clx-20230214-git.tgz 459432 b53a9846b9bf7a96a15e821605ed6f64 9a4e8754f9ae262797367eb859029cfe69d875e0 clx-20230214-git clx.asd -clx-xembed http://beta.quicklisp.org/archive/clx-xembed/2019-11-30/clx-xembed-20191130-git.tgz 21169 11d35eeb734c0694005a5e5cec4cad22 27ec06dc8e843deb1fd1b01058e78627e5dbf424 clx-xembed-20191130-git xembed.asd -clx-xkeyboard http://beta.quicklisp.org/archive/clx-xkeyboard/2012-08-11/clx-xkeyboard-20120811-git.tgz 47002 4e382b34e05d33f5de8e9c9dea33131c f18ddbbf8f7e5222cb44e2543386a8efd49abb7c clx-xkeyboard-20120811-git xkeyboard.asd -cmake-parser http://beta.quicklisp.org/archive/cmake-parser/2018-08-31/cmake-parser-20180831-git.tgz 5470 901e49335a490ad419aec7bcd4493d47 adc648f94bfc8e9e0834075e88f4098dafd9e982 cmake-parser-20180831-git cmake-parser.asd -cmd http://beta.quicklisp.org/archive/cmd/2023-02-14/cmd-20230214-git.tgz 17947 b76e9514c74a003b9e938ad86d1019e4 96c71eec304c783bb501e066efc0ada68415ae5b cmd-20230214-git cmd.asd -cmu-infix http://beta.quicklisp.org/archive/cmu-infix/2018-02-28/cmu-infix-20180228-git.tgz 22615 6baab7e8fdbb211c1b1622073b9521c9 408f16c7594f02f53e39ea8b7684721d12406435 cmu-infix-20180228-git cmu-infix-tests.asd cmu-infix.asd -codata-recommended-values http://beta.quicklisp.org/archive/codata-recommended-values/2020-02-18/codata-recommended-values-20200218-git.tgz 364817 d8f489d65671735ec30f0353461f74d1 a6285062e4811d70a0aa3a8322c7b1888b27b538 codata-recommended-values-20200218-git codata-recommended-values.asd -codex http://beta.quicklisp.org/archive/codex/2018-12-10/codex-20181210-git.tgz 185947 7c33d0361d2e50d968aade71461443f4 7d7ee6fbc90ecdaa755d4f2f1b986d24d03ff912 codex-20181210-git codex-templates.asd codex.asd -coleslaw http://beta.quicklisp.org/archive/coleslaw/2022-11-06/coleslaw-20221106-git.tgz 167408 0703e51091e6c932d0c31e0556ea48e5 603fcb3dd7452503bb46d27b1c77910114871301 coleslaw-20221106-git coleslaw-cli.asd coleslaw-test.asd coleslaw.asd -collectors http://beta.quicklisp.org/archive/collectors/2022-02-20/collectors-20220220-git.tgz 10410 429ba50dd0a45e5a6e093a13b2d23d0e 76a01575c0ceebf5f091482aee6dd9604801c97c collectors-20220220-git collectors.asd -colleen http://beta.quicklisp.org/archive/colleen/2018-10-18/colleen-20181018-git.tgz 145758 b20ec13f6a9612e0f496af7eccb24f54 950fa71177e3966ae52eb7a986d9ceeeb5e117ed colleen-20181018-git colleen.asd -colliflower http://beta.quicklisp.org/archive/colliflower/2021-10-20/colliflower-20211020-git.tgz 24479 a4f4d0eec6119ea97bcfc93e9845a4fb c02b61ea1e6f1732201ce36d3718c3eab9bce190 colliflower-20211020-git colliflower-test.asd colliflower.asd contrib/fset/colliflower-fset.asd garten/garten.asd liter/liter.asd silo/silo.asd -colored http://beta.quicklisp.org/archive/colored/2021-10-20/colored-20211020-git.tgz 24424 caecccde9bfcf6296229a15ccc9df221 4dbdd2d319e016515ede15e58e3d8db685acfd77 colored-20211020-git colored-test.asd colored.asd -colorize http://beta.quicklisp.org/archive/colorize/2023-02-14/colorize-20230214-git.tgz 39345 a012600b56ad6541302487046908dc48 0aac9ce80bfba2e98beb945548004de06d975a1d colorize-20230214-git colorize.asd -com-on http://beta.quicklisp.org/archive/com-on/2022-03-31/com-on-20220331-git.tgz 18667 9241014453e34b7a4a7f4bdf624cb36b 52de6bd675c28df07b0afda92acd95d0bf44a49f com-on-20220331-git com-on-test.asd com-on.asd -com.clearly-useful.generic-collection-interface http://beta.quicklisp.org/archive/com.clearly-useful.generic-collection-interface/2019-07-10/com.clearly-useful.generic-collection-interface-20190710-git.tgz 14043 b22496129d4171c50de7ab85da024cc0 0dac346508bb07e3237054a0554c2c6d28153020 com.clearly-useful.generic-collection-interface-20190710-git com.clearly-useful.generic-collection-interface.asd com.clearly-useful.generic-collection-interface.test.asd -com.clearly-useful.iterate-plus http://beta.quicklisp.org/archive/com.clearly-useful.iterate-plus/2012-10-13/com.clearly-useful.iterate-plus-20121013-git.tgz 1981 691606442da9344a1b871a986dc83a42 c7a315d2b09d7666def427dc37cad324317caf51 com.clearly-useful.iterate-plus-20121013-git com.clearly-useful.iterate+.asd -com.clearly-useful.iterator-protocol http://beta.quicklisp.org/archive/com.clearly-useful.iterator-protocol/2013-03-12/com.clearly-useful.iterator-protocol-20130312-git.tgz 2846 b6219074982d29677ebf5a7ae1b5a22e 5f9051fdccbd78f3c919112a67acf80587c921d9 com.clearly-useful.iterator-protocol-20130312-git com.clearly-useful.iterator-protocol.asd -com.clearly-useful.protocols http://beta.quicklisp.org/archive/com.clearly-useful.protocols/2013-03-12/com.clearly-useful.protocols-20130312-git.tgz 8625 7a230b991c6f410f2f1f1cc016aa3ae1 174ae8cc771b48bc36f4ae2ee3dfb80fef266d60 com.clearly-useful.protocols-20130312-git com.clearly-useful.protocols.asd -com.google.base http://beta.quicklisp.org/archive/com.google.base/2020-09-25/com.google.base-20200925-git.tgz 7337 ba324012a79d55a6580a6ff84b3f8f88 412c71519922fde0636a7e500cba778d2a67d040 com.google.base-20200925-git com.google.base.asd -command-line-arguments http://beta.quicklisp.org/archive/command-line-arguments/2021-08-07/command-line-arguments-20210807-git.tgz 12294 b50ca36f5b2b19d4322ac5b5969fee22 89849f6f16274954d7d868231ac4066675b74490 command-line-arguments-20210807-git command-line-arguments.asd -common-doc http://beta.quicklisp.org/archive/common-doc/2023-02-14/common-doc-20230214-git.tgz 54856 d73b2ae0189305f291aa6275508e4285 3e1e173f059c001d4f624d50586f08fa4f11cc9a common-doc-20230214-git common-doc-contrib.asd common-doc-gnuplot.asd common-doc-graphviz.asd common-doc-include.asd common-doc-plantuml.asd common-doc-split-paragraphs.asd common-doc-test.asd common-doc-tex.asd common-doc.asd -common-doc-plump http://beta.quicklisp.org/archive/common-doc-plump/2016-04-21/common-doc-plump-20160421-git.tgz 6172 5e53d47b0bb2ad2d5bc1d6686b1446ba dc865b5fd8705da9ddbb20a44742ec5454679e12 common-doc-plump-20160421-git common-doc-plump-test.asd common-doc-plump.asd -common-html http://beta.quicklisp.org/archive/common-html/2021-08-07/common-html-20210807-git.tgz 7567 d0a2e6256b391c41ad4c999a0617de6e 4ca95dbeb1563737cd0111a71a36e116b55b3bf2 common-html-20210807-git common-html-test.asd common-html.asd -common-lisp-actors http://beta.quicklisp.org/archive/common-lisp-actors/2019-11-30/common-lisp-actors-20191130-git.tgz 4753 890e04c2f7df07e7180cbc7d81ed7bb5 5e927cacbb0fa3a49605423ca50b41626c1af00b common-lisp-actors-20191130-git cl-actors.asd -common-lisp-jupyter http://beta.quicklisp.org/archive/common-lisp-jupyter/2022-11-06/common-lisp-jupyter-20221106-git.tgz 372718 4f1d3423d3522ea71a885b20289b7646 47c7b1b65bb5cc641ac15f63e450580b983986f7 common-lisp-jupyter-20221106-git common-lisp-jupyter.asd -commondoc-markdown http://beta.quicklisp.org/archive/commondoc-markdown/2022-11-06/commondoc-markdown-20221106-git.tgz 11932 04589ee5d7f8ff3ee26bf6a2277b580b 483925a5ef1e239ca214161b2a28dc6612e70611 commondoc-markdown-20221106-git commondoc-markdown-docs.asd commondoc-markdown-test.asd commondoc-markdown.asd -commonqt http://beta.quicklisp.org/archive/commonqt/2023-02-14/commonqt-20230214-git.tgz 61704 7b405b96bcf37fafdb4c23a4839124a9 408ada31e6aa4ac05792fdb8871459ab6f6eef08 commonqt-20230214-git qt+libs.asd -compatible-metaclasses http://beta.quicklisp.org/archive/compatible-metaclasses/2020-09-25/compatible-metaclasses_1.0.tgz 6709 3b57508fe1be7eb389f8425b48be448a 10bf357724f7981b49ebf9486d2cf26255e2aedc compatible-metaclasses_1.0 compatible-metaclasses.asd tests/compatible-metaclasses_tests.asd -compiler-macro-notes http://beta.quicklisp.org/archive/compiler-macro-notes/2022-11-06/compiler-macro-notes-v0.2.1.tgz 4588 3e8c15fa8f5cc9bf27148588d34a7879 bd3659509b9c606d99b219a759618a3d5b5ac40e compiler-macro-notes-v0.2.1 compiler-macro-notes.asd -computable-reals http://beta.quicklisp.org/archive/computable-reals/2021-04-11/computable-reals-20210411-git.tgz 8812 a84da8fbba157f3f00166d264157471b f7b498c443446c2f13414030fdf3c9b69251f557 computable-reals-20210411-git computable-reals.asd -concrete-syntax-tree http://beta.quicklisp.org/archive/concrete-syntax-tree/2021-10-20/concrete-syntax-tree-20211020-git.tgz 48393 c59c5a6305dfbe48511416974cc7bd35 3dd24ffd6279228e732847d1d18369fe861d5d1b concrete-syntax-tree-20211020-git Destructuring/concrete-syntax-tree-destructuring.asd Lambda-list/Test/concrete-syntax-tree-lambda-list-test.asd Lambda-list/concrete-syntax-tree-lambda-list.asd Source-info/concrete-syntax-tree-source-info.asd concrete-syntax-tree-base.asd concrete-syntax-tree.asd -conduit-packages http://beta.quicklisp.org/archive/conduit-packages/2022-11-06/conduit-packages-20221106-git.tgz 11845 2b22e5c327d61073e49ab72b2fcd4392 5e76df52b283d3a7bcfffce8d934d3daecf8e241 conduit-packages-20221106-git org.tfeb.conduit-packages.asd -conf http://beta.quicklisp.org/archive/conf/2019-12-27/conf-20191227-git.tgz 15652 8b1e1498234b7b4d3ca9cd2f52b66415 9a5e80439fbb82d433465c632c8f901613a4baf5 conf-20191227-git conf.asd -configuration.options http://beta.quicklisp.org/archive/configuration.options/2021-05-31/configuration.options-20210531-git.tgz 126580 4c912b6ef72e59284046fb6a678c9b51 d46ecd01a662a3444f659458e9f88380030f36d2 configuration.options-20210531-git configuration.options-and-mop.asd configuration.options-and-puri.asd configuration.options-and-quri.asd configuration.options-and-service-provider.asd configuration.options-syntax-ini.asd configuration.options-syntax-xml.asd configuration.options.asd -conium http://beta.quicklisp.org/archive/conium/2021-06-30/conium-20210630-git.tgz 146019 15581c5af08715dc394146b912bf7e6f dad0dace4df02e408f9c832caea4d5d6fa24db60 conium-20210630-git conium.asd -consfigurator http://beta.quicklisp.org/archive/consfigurator/2023-02-14/consfigurator-v1.2.0.tgz 212570 a9c98f3129862d4cd44b5aa7bac79ad7 1d7be86397062972cf2741272f37ea9fd4f3fe5a consfigurator-v1.2.0 consfigurator.asd -consix http://beta.quicklisp.org/archive/consix/2020-12-20/consix-20201220-git.tgz 15301 149a8f0f26aa7feca43c5b3b8c8226f4 b8d5e5a7cc28c315f87afc79c8ed5baeac3fad90 consix-20201220-git consix.asd -constantfold http://beta.quicklisp.org/archive/constantfold/2019-12-27/constantfold-20191227-git.tgz 135729 e9e0021014c6f27280264be16166fee7 378cbed129d745f65125c9f3931f350e92d61c22 constantfold-20191227-git constantfold.asd constantfold.test.asd -context-lite http://beta.quicklisp.org/archive/context-lite/2022-03-31/context-lite-20220331-git.tgz 11211 2d764e227e0105e5f6835509bb341aca 5d29f5c897e00686aecb282050e60c1f2a3bd58d context-lite-20220331-git context-lite.asd -contextl http://beta.quicklisp.org/archive/contextl/2021-12-30/contextl-20211230-git.tgz 26407 0c7093716e2772f90635bcd3c4d23dc0 fb3b65eda1e4685b0a50096b9d7b89ed941c6d1f contextl-20211230-git contextl.asd dynamic-wind.asd -convolution-kernel http://beta.quicklisp.org/archive/convolution-kernel/2022-07-07/convolution-kernel-20220707-git.tgz 3439 4612ac16d43997d2a349d6f7dcaad100 4c9d508f62fc44acd6e51c048ece507f8f5420fb convolution-kernel-20220707-git convolution-kernel.asd -copy-directory http://beta.quicklisp.org/archive/copy-directory/2016-06-28/copy-directory-20160628-git.tgz 2462 b82455b6979b785df488f990e156aa2b fe74b777a2f899c84de338f3c96b732cc1e2d06c copy-directory-20160628-git copy-directory-test.asd copy-directory.asd -core http://beta.quicklisp.org/archive/core/2021-02-28/core-20210228-git.tgz 14197 6801e17a16ed1537588a23eac014b447 c517ad996aea1741d6e40b99fbe9dbd38e4e6df7 core-20210228-git issr-core.asd -core-reader http://beta.quicklisp.org/archive/core-reader/2022-07-07/core-reader-20220707-git.tgz 6436 367a0c18774e808fbff00c678f8e5c9d b328695606d2ae8fae37a986d273f087018939b8 core-reader-20220707-git core-reader.asd spec/core-reader.test.asd -cover http://beta.quicklisp.org/archive/cover/2021-02-28/cover-20210228-git.tgz 17580 8720e075cb81963143f02345b4c8973c 67072c42f8f58093022fbd01d8c91c5924e21136 cover-20210228-git cover.asd -cqlcl http://beta.quicklisp.org/archive/cqlcl/2014-11-06/cqlcl-20141106-git.tgz 11896 2a63a524e1297e6a2577a29d63bd7ea2 7480e139c03880e1e41bca03ae6fde148a1ce161 cqlcl-20141106-git cqlcl.asd -crane http://beta.quicklisp.org/archive/crane/2016-02-08/crane-20160208-git.tgz 20738 df5119bed5754d9f7811efc770c09d47 d438f1997e83f251bb1b61653a2a0e6a08bccbda crane-20160208-git crane-test.asd crane.asd -cricket http://beta.quicklisp.org/archive/cricket/2022-07-07/cricket-20220707-git.tgz 2171440 4bdd058cd96d7f27438a1f49739a1303 10adc9ce89787f1ff9bcb577d2e47c9022c9b01f cricket-20220707-git cricket.asd cricket.test.asd -croatoan http://beta.quicklisp.org/archive/croatoan/2023-02-14/croatoan-20230214-git.tgz 183107 4504b9aba558fcceb2fefe0377081614 5fd367abfcd0c8c0b9b04859e9a764163d583e4b croatoan-20230214-git ansi-escape-test.asd ansi-escape.asd croatoan-ncurses.asd croatoan-test.asd croatoan.asd -crypto-shortcuts http://beta.quicklisp.org/archive/crypto-shortcuts/2020-10-16/crypto-shortcuts-20201016-git.tgz 7169 141f84864a94c775ff02a3f330687ea9 177f4fd261bff45f6dc2e2ce1578fd6c23a2e7b0 crypto-shortcuts-20201016-git crypto-shortcuts.asd -cserial-port http://beta.quicklisp.org/archive/cserial-port/2023-02-14/cserial-port-20230214-git.tgz 12112 bf199e7a32e4cb0bfaa3fb8c1acaece9 fc31429158425e0c989cd3b898b013dfd756ed6c cserial-port-20230214-git cserial-port.asd -css-lite http://beta.quicklisp.org/archive/css-lite/2022-11-06/css-lite-20221106-git.tgz 6711 28336a1be3383c804ea8e50462eb45ff 88f2880fc2cc49df0293e288c0d8d94cfd19fca4 css-lite-20221106-git css-lite.asd -css-selectors http://beta.quicklisp.org/archive/css-selectors/2016-06-28/css-selectors-20160628-git.tgz 14832 28537144b89af4ebe28c2eb365d5569f 67e31993847a16f20b4eda93e1266644a426ff4c css-selectors-20160628-git css-selectors-simple-tree.asd css-selectors-stp.asd css-selectors.asd -csv http://beta.quicklisp.org/archive/csv/2019-07-10/csv-20190710-git.tgz 14041 cecd51e92195eb497c4b20d82c90930a 18cfd80c132c100ddac12ea2f82e9030783e0649 csv-20190710-git csv.asd -csv-parser http://beta.quicklisp.org/archive/csv-parser/2014-07-13/csv-parser-20140713-git.tgz 5012 d8f43b3da734b63f2064b7cd4c6f7550 033d33a6821c836cce4b2299e5ea688807ea12b3 csv-parser-20140713-git csv-parser.asd -csv-validator http://beta.quicklisp.org/archive/csv-validator/2023-02-15/csv-validator-20230215-git.tgz 3472693 f47fa22a511a2026663c9818286635f5 f0eb5bd715fd9aabcab89a7fc91ac2c129e76091 csv-validator-20230215-git csv-validator-tests.asd csv-validator.asd -ctype http://beta.quicklisp.org/archive/ctype/2023-02-14/ctype-20230214-git.tgz 54518 85ba58af5347ff03a25437bb92310e68 35ffcf964ab60a23dd60fc4935d3a5b7ab1c7c1c ctype-20230214-git ctype.asd ext/tfun/ctype-tfun.asd -cubic-bezier http://beta.quicklisp.org/archive/cubic-bezier/2022-07-07/cubic-bezier-20220707-git.tgz 4310 3c10a518022b36edb8836d568e307d37 8b4447b71766be97204c1e6cace9221e1af50419 cubic-bezier-20220707-git cubic-bezier.asd -cue-parser http://beta.quicklisp.org/archive/cue-parser/2018-02-28/cue-parser-20180228-git.tgz 6196 a762d2f16148e031ac658c19bc35fe95 dde1439487e627ca02f8d1e9641fbe40696b45bd cue-parser-20180228-git cue-parser.asd -curly http://beta.quicklisp.org/archive/curly/2012-04-07/curly-20120407-git.tgz 4647 abbdcfe5c08ee02a8f9014373db6fd86 adfe3715c7311e6a27755ca3da84155bcf93641a curly-20120407-git curly.asd -curry-compose-reader-macros http://beta.quicklisp.org/archive/curry-compose-reader-macros/2020-12-20/curry-compose-reader-macros-20201220-git.tgz 5042 69aa0c8998dca3713c1b1200e7abbd9c f6c141be656bf9f9a25f57656a3008e0691e5142 curry-compose-reader-macros-20201220-git curry-compose-reader-macros.asd -curve http://beta.quicklisp.org/archive/curve/2013-01-28/curve-20130128-git.tgz 19617 f4c1a224405586a04d65cac6b38a5ccc 000367ed6ad72b814a533a633506ef30fda97271 curve-20130128-git com.elbeno.curve.asd -cxml http://beta.quicklisp.org/archive/cxml/2020-06-10/cxml-20200610-git.tgz 155775 0b6f34edb79f7b63cc5855f18d0d66f0 d2c3fabebd0c6f3ebc6e55533e49081d3abecbd9 cxml-20200610-git cxml-dom.asd cxml-klacks.asd cxml-test.asd cxml.asd -cxml-rng http://beta.quicklisp.org/archive/cxml-rng/2019-07-10/cxml-rng-20190710-git.tgz 173375 ac7fb180022392f6cb689509bc14bab3 4cd12475c54fe7f34510a5d1d5b5fdb9c6403443 cxml-rng-20190710-git cxml-rng.asd -cxml-rpc http://beta.quicklisp.org/archive/cxml-rpc/2012-10-13/cxml-rpc-20121013-git.tgz 11422 58bca5e93a2f2eb5a5451e689b590c2b 0ada3a401ef59cbf83f0d4601b206895913711f6 cxml-rpc-20121013-git cxml-rpc.asd -cxml-stp http://beta.quicklisp.org/archive/cxml-stp/2020-03-25/cxml-stp-20200325-git.tgz 51687 5622b4aae55e448473f1ba14fa3a5f4c f9945b099f0d192db860252500ab335d21dc60e9 cxml-stp-20200325-git cxml-stp.asd -cytoscape-clj http://beta.quicklisp.org/archive/cytoscape-clj/2022-11-06/cytoscape-clj-20221106-git.tgz 49886 4b9d94f3e35addae6adf9cacc2420576 241a757c2b20f617db084c8a3f449a72d65360e2 cytoscape-clj-20221106-git cytoscape-clj.asd -daemon http://beta.quicklisp.org/archive/daemon/2017-04-03/daemon-20170403-git.tgz 4007 97d52817fa74191a6a07a49cd4a5b907 542f44f5a01f0d8bde303167edfa73cd2b5473cb daemon-20170403-git daemon.asd -damn-fast-priority-queue http://beta.quicklisp.org/archive/damn-fast-priority-queue/2022-11-06/damn-fast-priority-queue-20221106-git.tgz 11539 afdffb8b16311a0fcc6e7b8239a8ea0d 5988ebe41d05238c0cd82996b3217f68038cbb1c damn-fast-priority-queue-20221106-git damn-fast-priority-queue/damn-fast-priority-queue.asd damn-fast-stable-priority-queue/damn-fast-stable-priority-queue.asd priority-queue-benchmark/priority-queue-benchmark.asd -dartsclemailaddress http://beta.quicklisp.org/archive/dartsclemailaddress/2016-04-21/dartsclemailaddress-quicklisp-release-48464635-git.tgz 11830 537619b8caa0c43db075a82f732a31ee bc0850e087137a945257bfafdc530b5f256ea5c6 dartsclemailaddress-quicklisp-release-48464635-git darts.lib.email-address-test.asd darts.lib.email-address.asd -dartsclhashtree http://beta.quicklisp.org/archive/dartsclhashtree/2021-12-30/dartsclhashtree-20211230-git.tgz 27145 c85df02fbd8ea960971f7a81251a7bdd 4b670191f83523850dc12f46af7bd72bbbf1faa4 dartsclhashtree-20211230-git darts.lib.hashtree-test.asd darts.lib.hashtrie.asd darts.lib.wbtree.asd -dartsclmessagepack http://beta.quicklisp.org/archive/dartsclmessagepack/2020-03-25/dartsclmessagepack-20200325-git.tgz 8171 781b1622fbdfdd63a2387ffd8e33e78e b96ad4b4d8dd9b34dc8c13c82e5c3df3122208c3 dartsclmessagepack-20200325-git darts.lib.message-pack-test.asd darts.lib.message-pack.asd -dartsclsequencemetrics http://beta.quicklisp.org/archive/dartsclsequencemetrics/2013-03-12/dartsclsequencemetrics-20130312-git.tgz 8234 2440599722cb58ab64d30a687946166b 2a29fa7b05dff2273678b71dff33d1db79af1ff4 dartsclsequencemetrics-20130312-git darts.lib.sequence-metrics.asd -dartscltools http://beta.quicklisp.org/archive/dartscltools/2020-12-20/dartscltools-20201220-git.tgz 15893 795a82fac00eae77a509e69ddda9a843 82626a8adf65344d4104c94a1d1b845c1ca5840b dartscltools-20201220-git darts.lib.tools.asd darts.lib.tools.test.asd -dartscluuid http://beta.quicklisp.org/archive/dartscluuid/2021-08-07/dartscluuid-20210807-git.tgz 7982 0ff35520f90c0015cf6096d11fd37a7f a9978d6778b13db6cca3bdc9b13afa05b6ddf7ac dartscluuid-20210807-git darts.lib.uuid-test.asd darts.lib.uuid.asd -data-frame http://beta.quicklisp.org/archive/data-frame/2022-11-06/data-frame-20221106-git.tgz 559624 41a966b5e91a5c3c5750f4bf01dfb3e2 cada7ae651abfb9af648d5365b6659a3fb15faed data-frame-20221106-git data-frame.asd -data-lens http://beta.quicklisp.org/archive/data-lens/2022-11-06/data-lens-20221106-git.tgz 111732 c93e00fc0544554e7610d583812d4898 1313ab6149b1eb1e12fd94c1cf0d9a3ecdd7c760 data-lens-20221106-git data-lens.asd -data-sift http://beta.quicklisp.org/archive/data-sift/2013-01-28/data-sift-20130128-git.tgz 13070 2d023844d8a181dbbcc69368c3b90a9c 2ca3997e31fd229f29dc332b0a737ab23c62bb62 data-sift-20130128-git data-sift.asd -data-table http://beta.quicklisp.org/archive/data-table/2022-11-06/data-table-20221106-git.tgz 12444 28062b926c411d7a286f68b308ab926d 1e11b5700cd7df50c787debd9f0434b0bf222fb5 data-table-20221106-git data-table-clsql.asd data-table.asd -database-migrations http://beta.quicklisp.org/archive/database-migrations/2023-02-14/database-migrations-20230214-git.tgz 3952 5d793825c3882e2a7f422d0b2c2d7629 3f441a1a26f20fb63055b131eae39aed49147d2d database-migrations-20230214-git database-migrations.asd -datafly http://beta.quicklisp.org/archive/datafly/2020-03-25/datafly-20200325-git.tgz 9722 df50fed8e32a0c5505760b9d8ef51fb0 19e26778d1c2202ab4ec2b919ab0218ea7d3f8f0 datafly-20200325-git datafly-test.asd datafly.asd -dataloader http://beta.quicklisp.org/archive/dataloader/2021-05-31/dataloader-20210531-git.tgz 1978244 3d6df6522022c1c059f28b0346781094 bf51e0d48a20f18bfbbfe348b30e692f0f4eaa03 dataloader-20210531-git dataloader.asd dataloader.test.asd -datamuse http://beta.quicklisp.org/archive/datamuse/2022-11-06/datamuse-20221106-git.tgz 6074 90552bfe497afabec8bd26363f46082e f43300bfd654766060bc7e83bec3083ecb9a1e2c datamuse-20221106-git datamuse.asd -date-calc http://beta.quicklisp.org/archive/date-calc/2019-12-27/date-calc-20191227-git.tgz 10417 fda245d738b350711fb614ba18ee01f4 6e55f21ffcedf6a36c8a212fde29a3ebb9f0ce85 date-calc-20191227-git date-calc.asd -datum-comments http://beta.quicklisp.org/archive/datum-comments/2021-02-28/datum-comments-20210228-git.tgz 8102 8645354f622ea4a2675bdeaa48235487 5830f8ebae8579da885732077a21b7e5b9aab5f6 datum-comments-20210228-git datum-comments.asd -dbus http://beta.quicklisp.org/archive/dbus/2021-10-20/dbus-20211020-git.tgz 23474 f3fb2ad37c197d99d9c446f556a12bdb 52a143655cf6676895be6a78f18c04bb0f5d91e0 dbus-20211020-git dbus.asd -de-mock-racy http://beta.quicklisp.org/archive/de-mock-racy/2022-11-06/de-mock-racy-20221106-git.tgz 3806 1dd1872b5d0cc386f9c9a36e42699889 e63b1c610beec85cb8084502b2bf043ea2edf3db de-mock-racy-20221106-git de-mock-racy.asd -de.setf.wilbur http://beta.quicklisp.org/archive/de.setf.wilbur/2018-12-10/de.setf.wilbur-20181210-git.tgz 77937 76864fbe1ad7bdf810efa74e2bb4765e 3a699742b7b8738c9f8cf51f391e9571f74b9f15 de.setf.wilbur-20181210-git src/wilbur.asd -declt http://beta.quicklisp.org/archive/declt/2022-07-07/declt-4.0b2.tgz 430231 e825346a2d2a09b30837b3999b9ff7e4 ec1e15a2ca9b8d9586a73b7e5a73bdf114eac8ad declt-4.0b2 assess/net.didierverna.declt.assess.asd core/net.didierverna.declt.core.asd net.didierverna.declt.asd setup/net.didierverna.declt.setup.asd -deeds http://beta.quicklisp.org/archive/deeds/2020-07-15/deeds-20200715-git.tgz 35037 4bffe3aaab67c607582657da54bf21b1 7ad8982b1ed00528b5e8e273fb549363b8166ca8 deeds-20200715-git deeds.asd -defclass-std http://beta.quicklisp.org/archive/defclass-std/2020-12-20/defclass-std-20201220-git.tgz 8957 b7a3bec06318b10818dc3941d407fe65 793f16213c536268037e80d85a6ee5844550ac5a defclass-std-20201220-git defclass-std-test.asd defclass-std.asd -defconfig http://beta.quicklisp.org/archive/defconfig/2021-12-09/defconfig-20211209-git.tgz 30885 4a40936c3a8d6673fcee781b31a0329e c16ecb9587cc575a240b1ffbec8503d0331854ba defconfig-20211209-git defconfig.asd -defenum http://beta.quicklisp.org/archive/defenum/2023-02-14/defenum-20230214-git.tgz 12941 3f87dd992e7d2738e07bcdc42e6568a1 769d08dc7d5fd3f7514c16ddbc24650d04aaa283 defenum-20230214-git defenum.asd -deferred http://beta.quicklisp.org/archive/deferred/2019-07-10/deferred-20190710-git.tgz 5908 0830491b2d6bb9cfbc2a95036b9a7332 438d3927bc5dfe4215aaa39f79207e768ab45444 deferred-20190710-git deferred.asd -define-json-expander http://beta.quicklisp.org/archive/define-json-expander/2014-07-13/define-json-expander-20140713-git.tgz 5026 4f67d0f505ff548d386e3f6f3d24bef9 8ac3161ab7afd1de0a40473d86201b2fff87f17e define-json-expander-20140713-git define-json-expander.asd -definer http://beta.quicklisp.org/archive/definer/2023-02-14/definer-20230214-git.tgz 6252 62cfded0cfa6708ec33dbd538d00a24e 30c035df4abaecb6f19a307c09ea641fc9283292 definer-20230214-git definer.asd -definitions http://beta.quicklisp.org/archive/definitions/2021-05-31/definitions-20210531-git.tgz 19473 cb965c5ff4551b491c4f84b6a2c55adc de0daf2f03e92452d57894365665742d9f0fd6b6 definitions-20210531-git definitions.asd -definitions-systems http://beta.quicklisp.org/archive/definitions-systems/2021-04-11/definitions-systems_2.0.1.tgz 16401 f907e00604c2de021591c58951f0fabf b12995355d78b6bf57ffda02edb0a5a7b6ce9a4c definitions-systems_2.0.1 definitions-systems.asd tests/definitions-systems_tests.asd -deflate http://beta.quicklisp.org/archive/deflate/2020-02-18/deflate-20200218-git.tgz 10271 c82d28eed5b489ced654c7202025e699 e6e719b55fe429157a8c09be0f93a405b02315c3 deflate-20200218-git deflate.asd -defmain http://beta.quicklisp.org/archive/defmain/2022-11-06/defmain-20221106-git.tgz 19429 83ab5098bcc7512548a41997f4a27232 787a8d6015527d5d2bf0ab077b0f1ea406e75779 defmain-20221106-git defmain-test.asd defmain.asd -defmemo http://beta.quicklisp.org/archive/defmemo/2012-04-07/defmemo-20120407-git.tgz 1953 542105d03e8a0d012c21cefffed2f8ad e7d6f9f95ef8866e063c5e35eee1458e6022d7af defmemo-20120407-git defmemo.asd -defpackage-plus http://beta.quicklisp.org/archive/defpackage-plus/2018-01-31/defpackage-plus-20180131-git.tgz 6485 de7af07da901fe5623450d32fd4b7ddc dea6c565dee9b6d821b21a25f4169515e52595df defpackage-plus-20180131-git defpackage-plus.asd -defrec http://beta.quicklisp.org/archive/defrec/2019-03-07/defrec-20190307-hg.tgz 2488 28b1762c6fb45a24487be334d7d5db14 f5ea970dac951fd12455449ba66da09b471596e4 defrec-20190307-hg defrec.asd -defrest http://beta.quicklisp.org/archive/defrest/2021-05-31/defrest-20210531-git.tgz 7560 1840b19b00f3ec4dfd10e900cd3191f0 e03dfe9ebd9641b06b8c478b03ffe0287d24d48e defrest-20210531-git defrest.asd -defstar http://beta.quicklisp.org/archive/defstar/2014-07-13/defstar-20140713-git.tgz 46970 36db8379ba81239923e5f97dba352d8b 2983be99196ad25ad29404af66a6c61b6eca212a defstar-20140713-git defstar.asd -defsystem-compatibility http://beta.quicklisp.org/archive/defsystem-compatibility/2010-10-06/defsystem-compatibility-20101006-darcs.tgz 9848 ad19788379d30f53165b74683deee776 bc441cffe18d811b971e130cfa94b57938e353ec defsystem-compatibility-20101006-darcs defsystem-compatibility-test.asd defsystem-compatibility.asd -defvariant http://beta.quicklisp.org/archive/defvariant/2014-07-13/defvariant-20140713-git.tgz 10059 34cae097b3a510c71aec8638e6244384 8d43269b616dad7f0d0c9a6725e1614cb5c330c2 defvariant-20140713-git defvariant.asd -delorean http://beta.quicklisp.org/archive/delorean/2013-06-15/delorean-20130615-git.tgz 3788 441d44c6c37939df46fc1f6a549f97d6 f9b4b8ed3e1cf9811a32e19fa64f868598baf1c3 delorean-20130615-git delorean.asd -delta-debug http://beta.quicklisp.org/archive/delta-debug/2018-08-31/delta-debug-20180831-git.tgz 5769 0cfd1860910888e5d129e3a134a58e12 28dd1ae4e76fcd381539b1a09622525b083a7830 delta-debug-20180831-git delta-debug.asd -dendrite http://beta.quicklisp.org/archive/dendrite/2017-10-23/dendrite-release-quicklisp-409b1061-git.tgz 5988 574bb8da79376d36fdf04ae254ba04c5 d14f3b6356f3d6443fd76296e6c1ef32036045ca dendrite-release-quicklisp-409b1061-git dendrite.asd dendrite.micro-l-system.asd dendrite.primitives.asd -dense-arrays http://beta.quicklisp.org/archive/dense-arrays/2023-02-14/dense-arrays-20230214-git.tgz 43958 99f5f874aed33a6d576e5aa44d545ca9 dc381a93a6b2cd069f9feed451f862d8e81e4a68 dense-arrays-20230214-git dense-arrays+cuda.asd dense-arrays+magicl.asd dense-arrays+static-vectors.asd dense-arrays-plus-lite.asd dense-arrays-plus.asd dense-arrays.asd -deoxybyte-gzip http://beta.quicklisp.org/archive/deoxybyte-gzip/2014-01-13/deoxybyte-gzip-20140113-git.tgz 130916 e6e373d376f3598f7ee3792e586a7dc3 53a1f55a7db874c66d5cf1f1ebf0800559e1584e deoxybyte-gzip-20140113-git deoxybyte-gzip-test.asd deoxybyte-gzip.asd -deoxybyte-io http://beta.quicklisp.org/archive/deoxybyte-io/2014-01-13/deoxybyte-io-20140113-git.tgz 40992 7283270d2df168edda80ec15bede2aa3 b4326e35061b6bed2625cb26cf545dd8984cb0e7 deoxybyte-io-20140113-git deoxybyte-io-test.asd deoxybyte-io.asd -deoxybyte-systems http://beta.quicklisp.org/archive/deoxybyte-systems/2014-01-13/deoxybyte-systems-20140113-git.tgz 3677 cb63033baf4ff3c8aaba80252e77f5d6 c306db96a2de41c23f2284164b9577cc1ba2c718 deoxybyte-systems-20140113-git deoxybyte-systems.asd -deoxybyte-unix http://beta.quicklisp.org/archive/deoxybyte-unix/2014-01-13/deoxybyte-unix-20140113-git.tgz 20104 058d5bc317967f587535fae8ee97a39f 6886a7daf781f97173d9cbb8fa84e3229054d260 deoxybyte-unix-20140113-git deoxybyte-unix-test.asd deoxybyte-unix.asd -deoxybyte-utilities http://beta.quicklisp.org/archive/deoxybyte-utilities/2014-01-13/deoxybyte-utilities-20140113-git.tgz 32707 1d29f3a612c1e7901b0fd053cac93f87 d9fa17f1f96255a973fe1c13b0b982197b303220 deoxybyte-utilities-20140113-git deoxybyte-utilities-test.asd deoxybyte-utilities.asd -deploy http://beta.quicklisp.org/archive/deploy/2023-02-14/deploy-20230214-git.tgz 19664 180df25d1170ce75369d11cae858c18e 99cd14b84285cee56fe3f1448899efde886e8724 deploy-20230214-git deploy-test.asd deploy.asd -depot http://beta.quicklisp.org/archive/depot/2023-02-14/depot-20230214-git.tgz 36000 d7bf71c7ebcf8929a2167b902473641d d19b492e4865aa3d71a1cbfc2ac7285f395e14e7 depot-20230214-git depot-in-memory.asd depot-virtual.asd depot-zip.asd depot.asd test/depot-test.asd -descriptions http://beta.quicklisp.org/archive/descriptions/2015-03-02/descriptions-20150302-git.tgz 23662 b16c4d4768515759094d08043f6cd181 bae261da6cae337aabc0daa49fbe0f2d399dcecb descriptions-20150302-git descriptions-test.asd descriptions.asd descriptions.serialization.asd descriptions.validation.asd -destructuring-bind-star http://beta.quicklisp.org/archive/destructuring-bind-star/2020-06-10/destructuring-bind-star-20200610-git.tgz 3158 3349d26d971d5e7c26d0f2adaefb1746 a9844ddf811a0c00ade075126908d83f9cb3bc5c destructuring-bind-star-20200610-git destructuring-bind-star.asd -dexador http://beta.quicklisp.org/archive/dexador/2023-02-14/dexador-20230214-git.tgz 213336 a34be1263bdc7ee4cae15200ad105868 2b19733a02cddf926ad380620e76c1cf9b993685 dexador-20230214-git dexador-test.asd dexador.asd -dfio http://beta.quicklisp.org/archive/dfio/2022-11-06/dfio-20221106-git.tgz 282202 3138b88bc472659c819dea7257aca429 6f2271d0b616e191701902eebbfb1fc2092d6b8f dfio-20221106-git dfio.asd -diff http://beta.quicklisp.org/archive/diff/2013-08-13/diff-20130813-git.tgz 16642 c13a4545b12b26e6d99c5535048a435d dc6993e2890a59dd59dad95a098771117396e650 diff-20130813-git diff.asd -diff-match-patch http://beta.quicklisp.org/archive/diff-match-patch/2021-05-31/diff-match-patch-20210531-git.tgz 31781 9c7632f9066afc7926d126676d8e39f2 2281e20cac5a8922567ea4cbc6f4644b126ec6b1 diff-match-patch-20210531-git diff-match-patch.asd -dirt http://beta.quicklisp.org/archive/dirt/2017-10-19/dirt-release-quicklisp-0d13ebc2-git.tgz 5590 c3242835717a9db9c2db803d1b25f545 4ba2d03d1d5fad8f92e2683ac9c86e2d23b31678 dirt-release-quicklisp-0d13ebc2-git dirt.asd -disposable http://beta.quicklisp.org/archive/disposable/2016-02-08/disposable-20160208-git.tgz 1504 dd4e4ff956fb44ed624f8dafcaa4bea5 9ddcaa8fbf5ad43195e179882190fc68d4b58039 disposable-20160208-git disposable.asd -dissect http://beta.quicklisp.org/archive/dissect/2022-11-06/dissect-20221106-git.tgz 28946 5f23b4800d355b4a69f03d459cbcb44d 2ec187734bd9ac41de15b7ade10e86a1e9b1a79f dissect-20221106-git dissect.asd -distributions http://beta.quicklisp.org/archive/distributions/2022-11-06/distributions-20221106-git.tgz 584645 96f25e7e8af97ebf254fdf2b62d4822d 39bb98bb9237cc4d83ee4d811ee885dcb066a237 distributions-20221106-git distributions.asd -djula http://beta.quicklisp.org/archive/djula/2023-02-14/djula-20230214-git.tgz 125720 254d88103a16cef7dcbdef2a9544a449 ac3309a57ebbea965a2bfd168adc1ae42e69f870 djula-20230214-git djula-demo.asd djula-test.asd djula.asd -dlist http://beta.quicklisp.org/archive/dlist/2012-11-25/dlist-20121125-git.tgz 14699 c935ee7e9bf0e30a5fd70ae703195f9e 2b23fc66cf9c4829828d4ef04b61938215c39c0f dlist-20121125-git dlist.asd -dml http://beta.quicklisp.org/archive/dml/2018-10-18/dml-20181018-git.tgz 440514 7423921f88d0a15f12fcba859ff518d9 48be480e302c2dd2151cda1d62ff8df9483c8814 dml-20181018-git dml.asd -dns-client http://beta.quicklisp.org/archive/dns-client/2021-10-20/dns-client-20211020-git.tgz 13614 99619a672f93563d373224315402f745 b9c5ceb764eaad5e41d7a37dc561be72e8a114c4 dns-client-20211020-git dns-client.asd -do-urlencode http://beta.quicklisp.org/archive/do-urlencode/2018-10-18/do-urlencode-20181018-git.tgz 2318 cb6ab78689fe52680ee1b94cd7738b94 7eaef5c9b5cf8dfe004ad3a8fa101bad8193b3f1 do-urlencode-20181018-git do-urlencode.asd -doc http://beta.quicklisp.org/archive/doc/2023-02-14/doc-20230214-git.tgz 2669365 5d4d9aef44ca3ad73bf0bdd0b5f9f2a4 9915b1b0bb5b569ded6062967b59734fa3b47d32 doc-20230214-git 40ants-doc-full.asd 40ants-doc-test.asd 40ants-doc.asd -docbrowser http://beta.quicklisp.org/archive/docbrowser/2020-06-10/docbrowser-20200610-git.tgz 906050 a28a213648fa0323d08bb145f3f51518 c1934624f9443bc1151a26a41020776508babca4 docbrowser-20200610-git docbrowser.asd -docparser http://beta.quicklisp.org/archive/docparser/2023-02-14/docparser-20230214-git.tgz 13692 8bffd9dcba2586231e362f9a4186499e e27a60fc8f0c32609f6e8bf330011af0f4da586b docparser-20230214-git docparser-test-system.asd docparser-test.asd docparser.asd -docs-builder http://beta.quicklisp.org/archive/docs-builder/2023-02-14/docs-builder-20230214-git.tgz 17180 61703cdf3b8f86a34092e38631356ef2 278bc98a07f51dddb36a5353f5906a5d565dccfb docs-builder-20230214-git docs-builder.asd docs-config.asd -documentation-template http://beta.quicklisp.org/archive/documentation-template/2014-12-17/documentation-template-0.4.4.tgz 8721 847d38e9131779931cb7063e019afe5d 2cd71d1884d3eff7b76a0f907969b986c4125744 documentation-template-0.4.4 documentation-template.asd -documentation-utils http://beta.quicklisp.org/archive/documentation-utils/2019-07-10/documentation-utils-20190710-git.tgz 8913 4f45f511ac55008b8b8aa04f7feaa2d4 1071335af99636f62943713298b46a0244b5bda4 documentation-utils-20190710-git documentation-utils.asd multilang-documentation-utils.asd -documentation-utils-extensions http://beta.quicklisp.org/archive/documentation-utils-extensions/2022-07-07/documentation-utils-extensions-20220707-git.tgz 4593 3ca89cb555a1cae84a875f465e286a10 ab602312fe4a14a34364973f6429aba93f39643f documentation-utils-extensions-20220707-git documentation-utils-extensions.asd -donuts http://beta.quicklisp.org/archive/donuts/2012-07-03/donuts-20120703-git.tgz 1232132 5d3e62b6453941a0bf64741c3df70b54 9c8061bcd3b2dd1443a1bccef991115169137482 donuts-20120703-git donuts.asd -doplus http://beta.quicklisp.org/archive/doplus/2021-10-20/doplus-v1.1.0.tgz 35530 a91f679e16699d4c5ba5e0600b975def aa19d4f0ef0a8f8dff4618ca3a5d90401f729561 doplus-v1.1.0 doplus-fset.asd doplus.asd -dotenv http://beta.quicklisp.org/archive/dotenv/2021-12-09/dotenv-20211209-git.tgz 2498 9dcd62a0e1eee8e4bec1570d83ad3357 cc4bdf4743e2b7443abe8aa6783b1f9ca8d32a84 dotenv-20211209-git dotenv.asd -doubly-linked-list http://beta.quicklisp.org/archive/doubly-linked-list/2022-07-07/doubly-linked-list-20220707-git.tgz 2913 5efd00a98fe512b5ed925e4c264dc1c5 3ba7b9bc474a76ae18b7c36fd0f54ccc4423b59f doubly-linked-list-20220707-git doubly-linked-list.asd -drakma http://beta.quicklisp.org/archive/drakma/2022-07-07/drakma-v2.0.9.tgz 74439 50e0b8ed6f0184851ac6831148861e06 db13f04d181904b2a4ac4f01bbfb84c60e3bb0f9 drakma-v2.0.9 drakma-test.asd drakma.asd -drakma-async http://beta.quicklisp.org/archive/drakma-async/2021-08-07/drakma-async-20210807-git.tgz 21305 89819f7b8bb872d2e8dbd3ecce15517c 949fd03b0e95c3cc1615246621eb4737177cbe7e drakma-async-20210807-git drakma-async.asd -draw-cons-tree http://beta.quicklisp.org/archive/draw-cons-tree/2013-10-03/draw-cons-tree-20131003-git.tgz 2252 ce720e2ddf395246927e5765f5116084 94e6c5794403485da7bce440547e4e5cb59afb92 draw-cons-tree-20131003-git draw-cons-tree.asd -dsm http://beta.quicklisp.org/archive/dsm/2023-02-14/dsm-20230214-git.tgz 20571 e69b1d881bb24b831eede409c6948892 9ca8bffe7750d75d77f951c787b7efccccca3096 dsm-20230214-git org.tfeb.dsm.asd -dso-lex http://beta.quicklisp.org/archive/dso-lex/2011-01-10/dso-lex-0.3.2.tgz 16481 fe8a4a6b9689c06f93f19c1b5506132d 2fac198fb75b4db2d2a1eb02479c94c0c3fa255a dso-lex-0.3.2 dso-lex.asd -dso-util http://beta.quicklisp.org/archive/dso-util/2011-01-10/dso-util-0.1.2.tgz 11309 ad11cec0f5a04142bcd5e117e53c7267 d861e27a509cd972ede6c7377fdc93abfa2c727a dso-util-0.1.2 dso-util.asd -dufy http://beta.quicklisp.org/archive/dufy/2021-05-31/dufy-20210531-git.tgz 483552 2114f30dc7988dc418583c4beafc8d8d b2886d03cb179d38169676111e0be29e38d998b6 dufy-20210531-git dufy.asd -dungen http://beta.quicklisp.org/archive/dungen/2022-07-07/dungen-20220707-git.tgz 5438 37ca97e5fd65c0a5c48d2cccf4787b16 43776d53e779483392fda5a400f2b792f7a57b51 dungen-20220707-git dungen.asd -duologue http://beta.quicklisp.org/archive/duologue/2023-02-14/duologue-20230214-git.tgz 7722 32148ace93486cf81d09504d4877c39e bc2dc9f408b68fa13612fdad96392ecc3c326bd7 duologue-20230214-git duologue-readline.asd duologue-test.asd duologue.asd -dweet http://beta.quicklisp.org/archive/dweet/2014-12-17/dweet-20141217-git.tgz 3051 68c4fe0638b6f9febe93925d4fd0cc33 b13c3333a955b851ee4286f5bd1583f09e9e8f75 dweet-20141217-git dweet.asd -dynamic-array http://beta.quicklisp.org/archive/dynamic-array/2022-07-07/dynamic-array-20220707-git.tgz 2429 07643a594778365abbf2f61b3d58f856 7b6a0bb10a0e93e2b77ee3714af986b842e187ca dynamic-array-20220707-git dynamic-array.asd -dynamic-classes http://beta.quicklisp.org/archive/dynamic-classes/2013-01-28/dynamic-classes-20130128-git.tgz 7148 a6ed01c4f21df2b6a142328b24ac7ba3 641573761b2d4fab3b17196cc10a9d46486ab495 dynamic-classes-20130128-git dynamic-classes-test.asd dynamic-classes.asd -dynamic-collect http://beta.quicklisp.org/archive/dynamic-collect/2019-03-07/dynamic-collect-20190307-hg.tgz 447578 c182c60ccb418c9f996f2fe48478cfbf 13d9d81f629b6c665753741ffa45b646f7caeb56 dynamic-collect-20190307-hg dynamic-collect.asd -dynamic-mixins http://beta.quicklisp.org/archive/dynamic-mixins/2018-10-18/dynamic-mixins-20181018-git.tgz 2492 8b2072af2b472c2c7bbaf28ff38e43be a389ddf18ddec5f634f28e506e349b83117085eb dynamic-mixins-20181018-git dynamic-mixins.asd -eager-future http://beta.quicklisp.org/archive/eager-future/2010-10-06/eager-future-20101006-darcs.tgz 3181 33ec9918cece34f35f2354e1f94a245c 862750b95d33edacbc73b08a636b9689a6167336 eager-future-20101006-darcs eager-future.asd -eager-future2 http://beta.quicklisp.org/archive/eager-future2/2019-11-30/eager-future2-20191130-git.tgz 26961 72298620b0fb2f874d86d887cce4acf0 70c0531898eddae204d38b0f5f2dd7c9d7381e8b eager-future2-20191130-git eager-future2.asd test.eager-future2.asd -easing http://beta.quicklisp.org/archive/easing/2018-02-28/easing-20180228-git.tgz 4636 775f27d44c58ff05c38ead610168f1ee 2e8889e1e4e5ece9d39b0d1f99cbe7b352b55ace easing-20180228-git easing-demo.asd easing-test.asd easing.asd -easter-gauss http://beta.quicklisp.org/archive/easter-gauss/2022-07-07/easter-gauss-20220707-git.tgz 2588 cef108e15c5dcbb2cc0a7ef798e5398b 137ed8bd0362a9aa21e3fc9f13fb9c43a5074a76 easter-gauss-20220707-git easter-gauss.asd -easy-audio http://beta.quicklisp.org/archive/easy-audio/2022-07-07/easy-audio-20220707-git.tgz 6466092 e70ea3fa1ea827913923336c9a105448 12c5e928816ad36223c84d42c369ee82fa6de1d3 easy-audio-20220707-git easy-audio.asd -easy-bind http://beta.quicklisp.org/archive/easy-bind/2019-02-02/easy-bind-20190202-git.tgz 16880 ee624a12d458bdb17f4b3dfe7772f699 9240ed116049d326453d744303e65213704859c8 easy-bind-20190202-git easy-bind.asd -easy-macros http://beta.quicklisp.org/archive/easy-macros/2022-11-06/easy-macros-20221106-git.tgz 9447 3a5d7083359b6a8ca5a10c46a4ade155 eadf3062cd9a66b60c5572695921cf3da76f684e easy-macros-20221106-git easy-macros.asd -easy-routes http://beta.quicklisp.org/archive/easy-routes/2022-07-07/easy-routes-20220707-git.tgz 10702 d1d9c4ad4146709f02af4e47da70cdc6 a9cfa8244ac98515da0adb16e41dbd4a132383d9 easy-routes-20220707-git easy-routes+djula.asd easy-routes+errors.asd easy-routes.asd -eazy-documentation http://beta.quicklisp.org/archive/eazy-documentation/2021-04-11/eazy-documentation-20210411-git.tgz 19090 c0aa94986efd7c09a6919341d7df9942 2caea416d0bf15c1bbcf2670b194d776f671192f eazy-documentation-20210411-git eazy-documentation.asd -eazy-gnuplot http://beta.quicklisp.org/archive/eazy-gnuplot/2022-03-31/eazy-gnuplot-20220331-git.tgz 8869959 f974f4f53021f4b994f05f12d0061a51 8cdb00f21c28dbe8befb6d11cc15424a506854d3 eazy-gnuplot-20220331-git eazy-gnuplot.asd eazy-gnuplot.test.asd -eazy-process http://beta.quicklisp.org/archive/eazy-process/2020-09-25/eazy-process-20200925-git.tgz 27369 7b244c4cbea0315aa6b7a31a0be74f0e 747d69189f5fd2f385f9bc79a0d707591f553ec0 eazy-process-20200925-git eazy-process.asd eazy-process.test.asd -eazy-project http://beta.quicklisp.org/archive/eazy-project/2019-07-10/eazy-project-20190710-git.tgz 15917 5b365c1ae21d9faf6eb7cfbb79b729cd 1e037cfaa916d41d7192fac829034426042a5bb4 eazy-project-20190710-git eazy-project.asd eazy-project.autoload.asd eazy-project.test.asd -ec2 http://beta.quicklisp.org/archive/ec2/2012-09-09/ec2-20120909-git.tgz 23603 0c6dea76f190aaa25305490b3e048437 d82ca8949aced8d7ef5fe3ca6bc02a1a3f1ab2a7 ec2-20120909-git ec2.asd -ec2-price-finder http://beta.quicklisp.org/archive/ec2-price-finder/2021-05-31/ec2-price-finder-20210531-git.tgz 9377 cb4ab4f8a5abf8933a9dc5cdebe1612d 2f96b6964152f6b85b9a3f18f7fc2468e530bfa1 ec2-price-finder-20210531-git ec2-price-finder.asd -ecclesia http://beta.quicklisp.org/archive/ecclesia/2020-12-20/ecclesia-20201220-git.tgz 22008 fbf2d75b0a0761a7a7c3b9c0d46448cc 3291b514eb6ee9f520e765baef52340c631a3302 ecclesia-20201220-git ecclesia.asd -eclector http://beta.quicklisp.org/archive/eclector/2023-02-14/eclector-20230214-git.tgz 654563 62031d6426717dcb7c6b892fa627a254 ee9a1bd88180979bb49b62e7457a9398f8d47192 eclector-20230214-git eclector-concrete-syntax-tree.asd eclector.asd -eco http://beta.quicklisp.org/archive/eco/2019-08-13/eco-20190813-git.tgz 6304 f27079c961c837ffc28f4d8c1a5cf81e 386d0cea4efbb4269e6b22d8387e447986c870cd eco-20190813-git eco-test.asd eco.asd -elb-log http://beta.quicklisp.org/archive/elb-log/2015-09-23/elb-log-20150923-git.tgz 6870 5eb6513fd03c1b015b9f215f96ba9d3b bd104f69efa8db03bdade2bf6fe70c61cd4b58e3 elb-log-20150923-git elb-log-test.asd elb-log.asd -electron-tools http://beta.quicklisp.org/archive/electron-tools/2016-04-21/electron-tools-20160421-git.tgz 2560 70ce32f5c79a23cff6c7fef7677422b4 d3de418ea520e7d7e672ad391a5905e1e72efd06 electron-tools-20160421-git electron-tools-test.asd electron-tools.asd -elf http://beta.quicklisp.org/archive/elf/2019-07-10/elf-20190710-git.tgz 473583 7edebf956ba1892304407f475bf6bdfe 6f7a1bfb3c1930c586d374122158c5a28dc34c56 elf-20190710-git elf.asd -enhanced-boolean http://beta.quicklisp.org/archive/enhanced-boolean/2020-03-25/enhanced-boolean_1.0.tgz 5028 24aa7f4177683f02a893ffe8e5b2a4e5 43f6ee1b0a0b2488942308a112f08834c9943968 enhanced-boolean_1.0 enhanced-boolean.asd tests/enhanced-boolean_tests.asd -enhanced-defclass http://beta.quicklisp.org/archive/enhanced-defclass/2021-04-11/enhanced-defclass_2.1.tgz 6691 1b21d4259fdb9f91d686149eec7aed5f 85a57f8f917a11557659370f8dd4a00e0413d869 enhanced-defclass_2.1 enhanced-defclass.asd tests/enhanced-defclass_tests.asd -enhanced-eval-when http://beta.quicklisp.org/archive/enhanced-eval-when/2012-11-25/enhanced-eval-when-1.0.tgz 1875 4cf59d63539f41b7b0c412f6d9e89ff5 48f3d1a21ddb4f8440d0c04f5a2b45da9bb4438c enhanced-eval-when-1.0 enhanced-eval-when.asd -enhanced-find-class http://beta.quicklisp.org/archive/enhanced-find-class/2020-09-25/enhanced-find-class_1.0.tgz 4661 7b8904bdf58b383d483ed273212e9d2b fe2757b8a731e981db65c0924d3309ee60947246 enhanced-find-class_1.0 enhanced-find-class.asd tests/enhanced-find-class_tests.asd -enhanced-multiple-value-bind http://beta.quicklisp.org/archive/enhanced-multiple-value-bind/2012-11-25/enhanced-multiple-value-bind-1.0.1.tgz 2589 a0fdb32762b7bf6a8cd4b04f07bb05a1 cf4a330e2b640e43bb70ff5da1c7ab7fc97e8a19 enhanced-multiple-value-bind-1.0.1 enhanced-multiple-value-bind.asd -enhanced-typep http://beta.quicklisp.org/archive/enhanced-typep/2020-10-16/enhanced-typep_1.0.tgz 5036 3b76ff3c2a922b807e14c6ff7eff610e e9f6896b7a2dfc2cece4dfb398d837d4b56482b1 enhanced-typep_1.0 enhanced-typep.asd tests/enhanced-typep_tests.asd -envy http://beta.quicklisp.org/archive/envy/2022-03-31/envy-20220331-git.tgz 3631 fce038c12272030243cafabf45de9244 a78b2479314ee8792ba45b334534fa124c233e05 envy-20220331-git envy-test.asd envy.asd -eos http://beta.quicklisp.org/archive/eos/2020-09-25/eos-20200925-git.tgz 13140 52b54a9cbaa8a4338c854de1d71e74c9 2dde4ede2de5509a4c90267b19b982fb320ea357 eos-20200925-git eos.asd -epigraph http://beta.quicklisp.org/archive/epigraph/2020-03-25/epigraph-20200325-git.tgz 17381 a4dd6a4a53b79e5d3e011b47c04d1b41 272dd573925ab736630e936a69a2cbf1d505a5c0 epigraph-20200325-git epigraph.asd -equals http://beta.quicklisp.org/archive/equals/2014-08-26/equals-20140826-git.tgz 2963 5acfaaebd7e1a683b3a84f85b7413340 a3321de358488a827d8535e9b947a316b914f5f5 equals-20140826-git equals.asd -erjoalgo-webutil http://beta.quicklisp.org/archive/erjoalgo-webutil/2022-07-07/erjoalgo-webutil-20220707-git.tgz 14396 06d785d80f555306bbdb6feea3cbeafe 151fdde0bfc04f4a5ec77a29b041c902c917d735 erjoalgo-webutil-20220707-git erjoalgo-webutil.asd -ernestine http://beta.quicklisp.org/archive/ernestine/2022-02-20/ernestine-20220220-git.tgz 308041 f4d8abfd3674e048b7fb1e71adf1cae8 fba24c425ec59755674047d42ede6147e4364ae5 ernestine-20220220-git ernestine-tests.asd ernestine.asd -erudite http://beta.quicklisp.org/archive/erudite/2022-11-06/erudite-20221106-git.tgz 348254 489fb78e04e6f273aa8b036e8b6dca26 4cfa9d516757c2dbb0e15e53ed908912a1ede92a erudite-20221106-git erudite-test.asd erudite.asd -escalator http://beta.quicklisp.org/archive/escalator/2020-04-27/escalator-20200427-git.tgz 6724 64b1ada3a35465b5673520453a75a5c3 cec2c796dc47c628737c0abdec31899d12045a0a escalator-20200427-git escalator-bench.asd escalator.asd -esrap http://beta.quicklisp.org/archive/esrap/2022-03-31/esrap-20220331-git.tgz 69216 c43cd171266d086c25b0ded1b37e7ba9 5308f2b3874ec80a4a83e88fea277a0c34742698 esrap-20220331-git esrap.asd -esrap-liquid http://beta.quicklisp.org/archive/esrap-liquid/2016-10-31/esrap-liquid-20161031-git.tgz 35689 7bc12d040919cb5b5da641334a1f23a1 9c8b389cc2c147922bbbc9be7a21c31c06a1b888 esrap-liquid-20161031-git esrap-liquid.asd -esrap-peg http://beta.quicklisp.org/archive/esrap-peg/2019-10-07/esrap-peg-20191007-git.tgz 7824 48d87d3118febeefc23ca3a8dda36fc0 27a86bbcd4eb649ac379c6b9ba0093234f285ff0 esrap-peg-20191007-git esrap-peg.asd -evaled-when http://beta.quicklisp.org/archive/evaled-when/2020-09-25/evaled-when_1.0.tgz 5863 799325d76de68a7c1ee2b232e05ba8b4 584aa9e8de57f2ce6d4f1da14a394b27aa9857c4 evaled-when_1.0 evaled-when.asd tests/evaled-when_tests.asd -event-emitter http://beta.quicklisp.org/archive/event-emitter/2022-03-31/event-emitter-20220331-git.tgz 3335 dc25d6e4e4b7db7c2fdeca0e58530e1f 6cec6c0b090408811da44315971ed36f1ebb5729 event-emitter-20220331-git event-emitter-test.asd event-emitter.asd -event-glue http://beta.quicklisp.org/archive/event-glue/2015-06-08/event-glue-20150608-git.tgz 9282 1aa70e889ffd2a2d01e7ee740c057415 faedf03cac4300b60f270a365e11a4dba5a74789 event-glue-20150608-git event-glue-test.asd event-glue.asd -eventbus http://beta.quicklisp.org/archive/eventbus/2019-12-27/eventbus-20191227-git.tgz 15807 99b4ca9efc30825dd56e77ae6cd5afe3 85c30ca68cb565572b5a5595e5d5a34e8f5e16c4 eventbus-20191227-git eventbus.asd -eventfd http://beta.quicklisp.org/archive/eventfd/2017-11-30/eventfd-20171130-git.tgz 2518 6580eb40265070dc8292ed4c2a137ee8 8fdce2b98e2d7d6d437a73a5de85f882c0c60859 eventfd-20171130-git eventfd.asd -everblocking-stream http://beta.quicklisp.org/archive/everblocking-stream/2018-10-18/everblocking-stream-20181018-git.tgz 887 307e7b6ba7ecb8912492497d7025e1cd 5539bdd086bef5526c4487ce9634239ac7f204b9 everblocking-stream-20181018-git everblocking-stream.asd -evol http://beta.quicklisp.org/archive/evol/2010-10-06/evol-20101006-git.tgz 36040 063813e42d598be1073625c38cc0fc76 de2a0507ad9682b4f783d23d8e579859e5283763 evol-20101006-git evol-test.asd evol.asd -exit-hooks http://beta.quicklisp.org/archive/exit-hooks/2017-04-03/exit-hooks-20170403-git.tgz 3070 9a5c96e590462bd417f1940ce9d374d2 2d5fb7624a86f2efec0106def24306beece56d53 exit-hooks-20170403-git exit-hooks.asd -exponential-backoff http://beta.quicklisp.org/archive/exponential-backoff/2015-01-13/exponential-backoff-20150113-git.tgz 2397 d3e5d082518de0e1d03ad6a8dac63f07 06dea928582daa17b07682a2df406de61205c63e exponential-backoff-20150113-git exponential-backoff.asd -exscribe http://beta.quicklisp.org/archive/exscribe/2020-09-25/exscribe-20200925-git.tgz 30860 403d29d61ca7d9cd1839689dc0f738e7 56b547785ff2d7efa3902f153ca1b333005513fe exscribe-20200925-git exscribe.asd -ext-blog http://beta.quicklisp.org/archive/ext-blog/2016-08-25/ext-blog-20160825-git.tgz 393481 74fbc8b459a0d074c6fd08bbbd644c31 de4620d23fe78be0a39d8768724c86e074365252 ext-blog-20160825-git ext-blog.asd -extended-reals http://beta.quicklisp.org/archive/extended-reals/2018-03-28/extended-reals-20180328-git.tgz 2979 191bca02ac2c4a55ccc98aa6eda82f66 7d1fba685087c2236a5dd24abdc070f1b2394c4b extended-reals-20180328-git extended-reals.asd -extensible-compound-types http://beta.quicklisp.org/archive/extensible-compound-types/2023-02-14/extensible-compound-types-20230214-git.tgz 30508 d8f186f8f5cd968ea33d811f9b641253 34984b4a8f546202e1f3f48874e3a079921b84c9 extensible-compound-types-20230214-git extensible-compound-types-cl.asd extensible-compound-types.asd -external-program http://beta.quicklisp.org/archive/external-program/2019-03-07/external-program-20190307-git.tgz 10408 b30fe104c34059506fd4c493fa79fe1a f04bc9e1b3a0eb5b4c017a8799b9483fc10ea0ff external-program-20190307-git external-program.asd -external-symbol-not-found http://beta.quicklisp.org/archive/external-symbol-not-found/2022-02-20/external-symbol-not-found-20220220-git.tgz 3159 136d6bca0936b14334fa9c858981d964 cc8a543a5c0c10d9e43bc979c27a45f345f70c40 external-symbol-not-found-20220220-git external-symbol-not-found.asd -f-underscore http://beta.quicklisp.org/archive/f-underscore/2010-10-06/f-underscore-20101006-darcs.tgz 982 45ef9c0ac1c92d9aba76b69b53cc7838 34c192987ab8b11f9b09ba40098fc696250506e6 f-underscore-20101006-darcs f-underscore.asd -f2cl http://beta.quicklisp.org/archive/f2cl/2020-09-25/f2cl-20200925-git.tgz 2360280 1ab13fc6c048851f87b1ab1bf6e7efa4 dcbd771cc54956865c51a6fd38f3677f1f993f6a f2cl-20200925-git f2cl-asdf.asd f2cl.asd packages/blas-complex.asd packages/blas-hompack.asd packages/blas-package.asd packages/blas-real.asd packages/blas.asd packages/colnew.asd packages/fftpack5-double.asd packages/fftpack5.asd packages/fishpack.asd packages/hompack.asd packages/lapack.asd packages/minpack.asd packages/odepack.asd packages/quadpack.asd packages/toms419.asd packages/toms715.asd packages/toms717.asd -fact-base http://beta.quicklisp.org/archive/fact-base/2018-03-28/fact-base-20180328-git.tgz 9491 86825a1ba98fe3aa2866ec7e3452a371 26a527bafcf2bd38221c9bd737ca15660d0bed9e fact-base-20180328-git fact-base.asd -factory-alien http://beta.quicklisp.org/archive/factory-alien/2022-07-07/factory-alien-20220707-git.tgz 7056 5ba3c92dd6b8120887348c2f0a404f6c 420f697f13705843ef191b133f042b9ab7e0bdcd factory-alien-20220707-git factory-alien.asd -fakenil http://beta.quicklisp.org/archive/fakenil/2020-03-25/fakenil_1.0.tgz 4481 47646ca1e6cb69ec18c0e07f676662a9 e538b79364c0ea03b2e91d8af8193428d3f7b5be fakenil_1.0 fakenil.asd tests/fakenil_tests.asd -fare-csv http://beta.quicklisp.org/archive/fare-csv/2023-02-14/fare-csv-20230214-git.tgz 7165 b157fc2ae823bebc514edc7646ad05e5 39b00317803abcb9632340cfa9b3aafca3072c17 fare-csv-20230214-git fare-csv.asd -fare-memoization http://beta.quicklisp.org/archive/fare-memoization/2018-04-30/fare-memoization-20180430-git.tgz 7571 7446aa643f0e461d960efb673a706dc1 ef47d67c6d76e8e0c829bbd654e27b69e08fef3b fare-memoization-20180430-git fare-memoization.asd -fare-mop http://beta.quicklisp.org/archive/fare-mop/2015-12-18/fare-mop-20151218-git.tgz 2728 4721ff62e2ac2c55079cdd4f2a0f6d4a cd1f7fcd2aa132432f271f43de9cf39aeef37c71 fare-mop-20151218-git fare-mop.asd -fare-quasiquote http://beta.quicklisp.org/archive/fare-quasiquote/2020-09-25/fare-quasiquote-20200925-git.tgz 15745 7af0a97c445d88acacecfc851496adb3 153f994a7b921ba34be500ec6e8491431f3ab62a fare-quasiquote-20200925-git fare-quasiquote-extras.asd fare-quasiquote-optima.asd fare-quasiquote-readtable.asd fare-quasiquote.asd -fare-scripts http://beta.quicklisp.org/archive/fare-scripts/2021-12-30/fare-scripts-20211230-git.tgz 42194 6318eb3fdf4d5e71a13cb13bcfce82de 8f1cd1b920db21eb1a7aebbe234f9a8e0662cd1a fare-scripts-20211230-git fare-scripts.asd -fare-utils http://beta.quicklisp.org/archive/fare-utils/2023-02-14/fare-utils-20230214-git.tgz 32477 6c338d349bec80b8e9bfa9f3bf2e0cb0 e20d00b755ea1761799c529989d683195b2643a8 fare-utils-20230214-git fare-utils.asd test/fare-utils-test.asd -fast-generic-functions http://beta.quicklisp.org/archive/fast-generic-functions/2022-02-20/fast-generic-functions-20220220-git.tgz 12702 daae1f0362d70f7c185cf446774fbaa6 d2f6eac0affc149f52c6d8507e279e6267507222 fast-generic-functions-20220220-git code/fast-generic-functions.asd -fast-http http://beta.quicklisp.org/archive/fast-http/2019-10-07/fast-http-20191007-git.tgz 33540 fd43be4dd72fd9bda5a3ecce87104c97 419610a07b0ccf3117378b6fb9b5faa025037d0b fast-http-20191007-git fast-http-test.asd fast-http.asd -fast-io http://beta.quicklisp.org/archive/fast-io/2022-11-06/fast-io-20221106-git.tgz 9680 5a51bb7c1d97e954a5b7a4860a561edb dd2258c3f0d1773b16c4ebbad60327a5fefbb033 fast-io-20221106-git fast-io-test.asd fast-io.asd -fast-websocket http://beta.quicklisp.org/archive/fast-websocket/2022-07-07/fast-websocket-20220707-git.tgz 9134 719480e5198bd8ed98dfdc8695984b49 e29cdf621494420f87524db3fb847db39640f218 fast-websocket-20220707-git fast-websocket-test.asd fast-websocket.asd -feeder http://beta.quicklisp.org/archive/feeder/2021-02-28/feeder-20210228-git.tgz 21362 a4f021712b6b691bf706056e6fa8605e a313929892ce977ad3ba87315515816de6161706 feeder-20210228-git feeder.asd -femlisp http://beta.quicklisp.org/archive/femlisp/2021-04-11/femlisp-20210411-git.tgz 651522 72ae51a21c4235d4b3d93784ab825430 07f6362dcef27435851f30bc946fd90cedb73c21 femlisp-20210411-git external/cl-cpu-affinity/cl-cpu-affinity.asd external/infix/infix.asd src/applications/courses/dealii-tutorial/dealii-tutorial.asd src/contrib/femlisp-picture.asd src/ddo/ddo.asd src/femlisp-ddo/net.scipolis.graphs.asd systems/femlisp-basic.asd systems/femlisp-dictionary.asd systems/femlisp-matlisp.asd systems/femlisp-parallel.asd systems/femlisp.asd -ffa http://beta.quicklisp.org/archive/ffa/2010-10-06/ffa-20101006-git.tgz 79415 5fe81065a6834b2095373667f5d58426 a3d137edc9af56e3ba853082a2b30f59f7bb79b4 ffa-20101006-git ffa.asd -fft http://beta.quicklisp.org/archive/fft/2018-07-11/fft-20180711-git.tgz 4806 06c2d33d8ddd43332dc25ac4ea7f20cc f77ba0a8d9ccf55d8daaebe31a7053e78a2c29c2 fft-20180711-git fft.asd pfft.asd -fiasco http://beta.quicklisp.org/archive/fiasco/2020-06-10/fiasco-20200610-git.tgz 18950 c5a84e4a0a8afe45729cd6e39af772ac 25c6341ba51ec6b1c07a4ed18827f480f8e3fa89 fiasco-20200610-git fiasco.asd -file-attributes http://beta.quicklisp.org/archive/file-attributes/2023-02-14/file-attributes-20230214-git.tgz 9757 b5581d4405df44ef4d4ffde3d1aca478 ab5d566da230ca13073aeed33992f2d408587bdb file-attributes-20230214-git file-attributes.asd -file-local-variable http://beta.quicklisp.org/archive/file-local-variable/2016-03-18/file-local-variable-20160318-git.tgz 3725 8c486b517f733978fa3224ae225a5829 ab4f69526c059b17f5262006217f43b17f217358 file-local-variable-20160318-git file-local-variable.asd file-local-variable.test.asd -file-notify http://beta.quicklisp.org/archive/file-notify/2022-07-07/file-notify-20220707-git.tgz 9194 5628b03e83ea1ed5caac5abf1193e7d1 929e11238a37d2ce72afa58883e03c3b516016c1 file-notify-20220707-git file-notify.asd -file-select http://beta.quicklisp.org/archive/file-select/2023-02-14/file-select-20230214-git.tgz 16220 2a2235b40b623cbd7daddfb27966d54d f27cbfb1d3f5c6cbfd3157ba94cea00bdb28d58e file-select-20230214-git file-select.asd -file-types http://beta.quicklisp.org/archive/file-types/2016-09-29/file-types-20160929-git.tgz 16146 4fd40465a8bde55c444c65bdcb238a95 ef2a666fadb709340caf6340043fc21c157b4ec6 file-types-20160929-git file-types.asd -filesystem-utils http://beta.quicklisp.org/archive/filesystem-utils/2023-02-14/filesystem-utils-20230214-git.tgz 11573 7eb83798c0b35532e61ed7d4fb7bf74e f9c66d41ec604ab1462d017662eb253fb81af70a filesystem-utils-20230214-git filesystem-utils-test.asd filesystem-utils.asd -filter-maker http://beta.quicklisp.org/archive/filter-maker/2022-11-06/filter-maker-20221106-git.tgz 3684 0c6c877db36cf15a7e7e99114d154194 351f37055949ae72d6b752838255a8946240cfa7 filter-maker-20221106-git filter-maker.asd -filtered-functions http://beta.quicklisp.org/archive/filtered-functions/2016-03-18/filtered-functions-20160318-git.tgz 5624 1a30c0712c4750954a9b645bdc6362cc 76f362ebb3655223f646d4be53dcc85572b307a8 filtered-functions-20160318-git filtered-functions.asd -find-port http://beta.quicklisp.org/archive/find-port/2023-02-14/find-port-20230214-git.tgz 2534 d6d0e7e00de043cf5fa9018d627310d2 b9c4bfa85ef5fe2559512f839f4dc3c2cb290af5 find-port-20230214-git find-port-test.asd find-port.asd -firephp http://beta.quicklisp.org/archive/firephp/2016-05-31/firephp-20160531-git.tgz 3101 776c31d2d1d29e0f8ddf916d66f57416 354083daca9bc6e502792af81300ebdaf7fbfd1a firephp-20160531-git firephp-tests.asd firephp.asd -first-time-value http://beta.quicklisp.org/archive/first-time-value/2018-12-10/first-time-value-1.0.1.tgz 4590 ad1d225958063396e5260d963ffbb6e3 20c732c8a5b0b32c80b5d23eb1f70e4c98614d0c first-time-value-1.0.1 first-time-value.asd tests/first-time-value_tests.asd -fiveam http://beta.quicklisp.org/archive/fiveam/2022-03-31/fiveam-20220331-git.tgz 24259 d2649f26369c8661c6b4aa6b8852f7aa da0c2cbf784c18a3b576c8611500d256755b9679 fiveam-20220331-git fiveam.asd -fiveam-asdf http://beta.quicklisp.org/archive/fiveam-asdf/2022-11-06/fiveam-asdf-20221106-git.tgz 4165 fa762b026ce0d5e812f974c29f79448e 22552d64d2d0396f32fb9caa6aaddf9d4f2462e8 fiveam-asdf-20221106-git fiveam-asdf.asd -fiveam-matchers http://beta.quicklisp.org/archive/fiveam-matchers/2023-02-14/fiveam-matchers-20230214-git.tgz 10716 dfe65d281feee527a5fda732eeb93c5f 1ac1ff5078106d8c5873f1c3ba55cda802c0dee1 fiveam-matchers-20230214-git fiveam-matchers.asd -fixed http://beta.quicklisp.org/archive/fixed/2017-01-24/fixed-20170124-git.tgz 12070 738197e9e3f84c000df9f7c270f49401 58f9ec849945c966fa5f539fc7fd3d1ff8178d3d fixed-20170124-git fixed.asd -flac-metadata http://beta.quicklisp.org/archive/flac-metadata/2022-07-07/flac-metadata-20220707-git.tgz 6317 1b98541a33e1f3cc2d26e29ab1ec9dd7 c31bcec3741e8b9c356a6b5be496916db47d92eb flac-metadata-20220707-git flac-metadata.asd -flare http://beta.quicklisp.org/archive/flare/2022-11-06/flare-20221106-git.tgz 58120 37f02a0feecc76a560af5b64e4316370 64ab1d662800fdd1bf65730f796f52af772177c9 flare-20221106-git flare.asd viewer/flare-viewer.asd -flexi-streams http://beta.quicklisp.org/archive/flexi-streams/2022-02-20/flexi-streams-20220220-git.tgz 445922 eb1f06b71bb83512d730bb47225a45cb eb8428c885b6d962563ee43dee5474f34717b8ad flexi-streams-20220220-git flexi-streams-test.asd flexi-streams.asd -flexichain http://beta.quicklisp.org/archive/flexichain/2020-12-20/flexichain-20201220-git.tgz 21690 dae7599a950826a7d5217f1d35671f2d dcd2e4a8f56d88ce17556a8fd1c06ea45d80b237 flexichain-20201220-git flexichain-doc.asd flexichain.asd -float-features http://beta.quicklisp.org/archive/float-features/2023-02-14/float-features-20230214-git.tgz 10966 3fbeecf3c7a2c6e3d0d0d3cb29367af6 75b43567258b2c05005be2dcbefbac5e423f6f8c float-features-20230214-git float-features-tests.asd float-features.asd -floating-point http://beta.quicklisp.org/archive/floating-point/2014-11-06/floating-point-20141106-git.tgz 473538 2ebe55f78c56d8ca5af9d1e0914b6402 b894b79a5fb145795d45488395056efa86277310 floating-point-20141106-git lisp/floating-point.asd test/floating-point-test.asd -floating-point-contractions http://beta.quicklisp.org/archive/floating-point-contractions/2020-12-20/floating-point-contractions-20201220-git.tgz 2548 057bb79a7eadd71229c39e8c39462f5d 3a708896111feaacf450d71478dbebf33ebbb74b floating-point-contractions-20201220-git floating-point-contractions.asd -flow http://beta.quicklisp.org/archive/flow/2020-06-10/flow-20200610-git.tgz 30044 f0767467d5e9bfda6fe5777a26719811 65bcbd5701584d17d3f13411499ad2601ace8a4f flow-20200610-git flow.asd visualizer/flow-visualizer.asd -flute http://beta.quicklisp.org/archive/flute/2018-08-31/flute-20180831-git.tgz 13138 8c312b0e18c10e7f03b81fc19587b786 632821535927afe4fe360af6ffcd6e1f2f6780bc flute-20180831-git flute-test.asd flute.asd -fmt http://beta.quicklisp.org/archive/fmt/2022-03-31/fmt-20220331-git.tgz 15372 03c12c64e2bedc800c2d31ea27390c55 9ae25217c555f7e3fb41b41c0c4744a3b9d63a92 fmt-20220331-git fmt-test.asd fmt-time.asd fmt.asd -fn http://beta.quicklisp.org/archive/fn/2017-10-19/fn-20171019-git.tgz 6936 0e1cfe5f19ceec8966baa3037772d31e 64871b26712de944ff79e1f58b0e7f4952044810 fn-20171019-git fn.asd -focus http://beta.quicklisp.org/archive/focus/2017-04-03/focus-20170403-git.tgz 47354 2be0459474ffdf328f5139164531a46e 84ef144a2ae449c507a5eaa37ef7c4274b15c36d focus-20170403-git core/net.didierverna.focus.core.asd demos/quotation/net.didierverna.focus.demos.quotation.asd flv/net.didierverna.focus.flv.asd net.didierverna.focus.asd setup/net.didierverna.focus.setup.asd -fof http://beta.quicklisp.org/archive/fof/2021-12-30/fof-20211230-git.tgz 24633 4468e4319b85b823049729be328df5f6 55c00c8c5ff1bee64caa45f4d5ab2e47cd62497e fof-20211230-git fof.asd -folio http://beta.quicklisp.org/archive/folio/2013-01-28/folio-20130128-git.tgz 21241 6f675b7346e8fcd492d4fde527eaa5ac bf20129ce9e18991bb60d1e20dc6c489c9529819 folio-20130128-git as/folio.as.asd boxes/folio.boxes.asd collections/folio.collections.asd folio.asd functions/folio.functions.asd -folio2 http://beta.quicklisp.org/archive/folio2/2019-10-07/folio2-20191007-git.tgz 55271 df04ee7b930f3eec45293a26523c2f42 539dca8db49ca54e344e0f6ba902ea3301ecd745 folio2-20191007-git folio2-as-syntax.asd folio2-as-tests.asd folio2-as.asd folio2-boxes-tests.asd folio2-boxes.asd folio2-functions-syntax.asd folio2-functions-tests.asd folio2-functions.asd folio2-make-tests.asd folio2-make.asd folio2-maps-syntax.asd folio2-maps-tests.asd folio2-maps.asd folio2-pairs-tests.asd folio2-pairs.asd folio2-sequences-syntax.asd folio2-sequences-tests.asd folio2-sequences.asd folio2-series-tests.asd folio2-series.asd folio2-taps-tests.asd folio2-taps.asd folio2-tests.asd folio2.asd -font-discovery http://beta.quicklisp.org/archive/font-discovery/2022-11-06/font-discovery-20221106-git.tgz 13753 a14eb3eb36978269552ed3f2b33775ce 4de2c9048d90a7363b8e328fa185f3baeceeba57 font-discovery-20221106-git font-discovery.asd -for http://beta.quicklisp.org/archive/for/2023-02-14/for-20230214-git.tgz 38782 d6640a5d7249e5e4b9a317a14366e629 2e2280ff32d7f3155bee13d899e7ca8ca24dd665 for-20230214-git for.asd -form-fiddle http://beta.quicklisp.org/archive/form-fiddle/2019-07-10/form-fiddle-20190710-git.tgz 5635 2576065de1e3c95751285fb155f5bcf6 a6a057c05e5512f2f8a0a05e336d422646d76b2c form-fiddle-20190710-git form-fiddle.asd -format-string-builder http://beta.quicklisp.org/archive/format-string-builder/2017-01-24/format-string-builder-20170124-git.tgz 5303 4997e60ed7af0f32d1c5b06f19247288 89a375a3ed8fb7c2cb8f1805403ebd1824594138 format-string-builder-20170124-git format-string-builder.asd -formlets http://beta.quicklisp.org/archive/formlets/2016-12-04/formlets-20161204-git.tgz 10598 b630d094fbbb2fe157f7e3a4bd93b648 a034c03549a46f751d65473b2312e55782ecb4d5 formlets-20161204-git formlets-test.asd formlets.asd -fred http://beta.quicklisp.org/archive/fred/2015-09-23/fred-20150923-git.tgz 34873 dbd3a53435f31cd78f4ddc3e74e9b33b 4abfe6150cb271db84a4094e4d7cef1c50a13472 fred-20150923-git fred.asd -freebsd-ffi http://beta.quicklisp.org/archive/freebsd-ffi/2022-07-07/freebsd-ffi-20220707-git.tgz 5200 23b6fb1d4d779814f25574d1206265c0 eb11e36c84f29513d08cd11dbda6952b8acd28d9 freebsd-ffi-20220707-git freebsd-ffi.asd -freebsd-sysctl http://beta.quicklisp.org/archive/freebsd-sysctl/2021-02-28/freebsd-sysctl-20210228-git.tgz 4552 cf7b007e51961e990da29ab5302986ac a109554e19316a70012c3526af859163b0b0569d freebsd-sysctl-20210228-git freebsd-sysctl.asd -freesound http://beta.quicklisp.org/archive/freesound/2021-04-11/freesound-20210411-git.tgz 17703 5dcff875a4ce830da43093a7e4fa5e22 824ca447571cadbf70032fe155b4c40d8a9c4458 freesound-20210411-git freesound.asd -fresnel http://beta.quicklisp.org/archive/fresnel/2022-07-07/fresnel-20220707-git.tgz 267922 c58e9264bd9ddb47ecbb3348ba73cc32 7577412b45c5f7986e4f545af98c3f08bbe04b53 fresnel-20220707-git fresnel.asd -froute http://beta.quicklisp.org/archive/froute/2018-07-11/froute-20180711-git.tgz 6514 fc27a158d568985e863460c9ac816ecf a22f3a153e2c9314db0e08e625e75909687b0347 froute-20180711-git froute.asd -frpc http://beta.quicklisp.org/archive/frpc/2015-10-31/frpc-20151031-git.tgz 140181 c13346249483dd290b8cf22221df05f7 dafa923a87ffc6bc0b0cdbc4f9d81ee2fd140e48 frpc-20151031-git frpc.asd frpcgen.asd -fs-watcher http://beta.quicklisp.org/archive/fs-watcher/2017-11-30/fs-watcher-20171130-git.tgz 2293 98f697c99206be8e728e98414d56c28f fb546e596be903ecec976563d09982a5b3894885 fs-watcher-20171130-git fs-watcher.asd -fset http://beta.quicklisp.org/archive/fset/2020-09-25/fset-20200925-git.tgz 123968 481e7207099c061459db68813e7bf70c 22c728c09fb798785e2671551afb0552ba2aa111 fset-20200925-git fset.asd -fsocket http://beta.quicklisp.org/archive/fsocket/2021-12-30/fsocket-20211230-git.tgz 39339 7ccadb01b3202fddb4cc68b3935b348e d92eb5254ebf4275d52428153e57f27f60af66d7 fsocket-20211230-git fsocket.asd -fsvd http://beta.quicklisp.org/archive/fsvd/2013-12-11/fsvd-20131211-git.tgz 8009 b6459ca9296f6e331cef49ab5580c766 392c65723a931eb2e8a4bd752d7abf95fc818b5a fsvd-20131211-git fsvd.asd -fucc http://beta.quicklisp.org/archive/fucc/2020-04-27/fucc-v0.2.2.tgz 32965 4659497c5933263fb9f090efc2c25eee e8f2f761914357cd2c81f7f5faf110811c50e501 fucc-v0.2.2 fucc-generator.asd fucc-parser.asd -function-cache http://beta.quicklisp.org/archive/function-cache/2018-12-10/function-cache-20181210-git.tgz 12754 c9ed7dd8f103273bd9daa06b5a720944 98e3470ccaccbd88c7dbfe5e77f19cc742446fc1 function-cache-20181210-git function-cache-clsql.asd function-cache.asd -functional-trees http://beta.quicklisp.org/archive/functional-trees/2023-02-14/functional-trees-20230214-git.tgz 206185 43affed663939e54ab8cfc6a11ab8530 dfa7c399de2c9c2c876bb06b2f37ff81cf6b5502 functional-trees-20230214-git functional-trees.asd -funds http://beta.quicklisp.org/archive/funds/2021-10-20/funds-20211020-git.tgz 7906 53e03e041b5a0886fd8cc8726c45990f 732fe74708ea4efdf3dbbbfd69e5aac77726c863 funds-20211020-git src/funds.asd -fuzzy-match http://beta.quicklisp.org/archive/fuzzy-match/2021-01-24/fuzzy-match-20210124-git.tgz 4039 eb85bfb02035083c0afc1f9fe277f2f3 90711c815346331378d9b351cd82990aa65a17e5 fuzzy-match-20210124-git fuzzy-match.asd -fxml http://beta.quicklisp.org/archive/fxml/2021-02-28/fxml-20210228-git.tgz 840614 b87843aaecd341b14cf060b09b422abf e1e2309c18b07eb7015188ae4f3345c54ca1fb95 fxml-20210228-git fxml.asd -gadgets http://beta.quicklisp.org/archive/gadgets/2022-02-20/gadgets-20220220-git.tgz 26544 53c73f1390a0f7716c0974f0c52979d0 4fcf9a715fe30cd948955233a4f061ae8635fd1f gadgets-20220220-git gadgets.asd test-gadgets.asd -garbage-pools http://beta.quicklisp.org/archive/garbage-pools/2021-01-24/garbage-pools-20210124-git.tgz 45020 6141f22a295ad535669edae4191e1480 2ccc8ef843071e2d0af9707417f95b482d713da0 garbage-pools-20210124-git garbage-pools-test.asd garbage-pools.asd -gcm http://beta.quicklisp.org/archive/gcm/2014-12-17/gcm-20141217-git.tgz 2461 6836ca1144f86e181cc4684a4be58c10 fddbfbef63cfa8f9301405fc5d5ace4a495b6fe5 gcm-20141217-git gcm.asd -geco http://beta.quicklisp.org/archive/geco/2021-02-28/geco-20210228-git.tgz 468060 3ca7ecc09edf1ec1813b871fe105a4e0 94bb815984f33508feee6fdf416098eff53d4353 geco-20210228-git geco.asd -gendl http://beta.quicklisp.org/archive/gendl/2022-07-07/gendl-master-1a957fb2-git.tgz 15342789 84512365996884ae629653cfc55eab12 604cb2bba1320fa2150a9375f1fea9ee64bcbeb5 gendl-master-1a957fb2-git apps/dom/dom.asd apps/geysr/geysr.asd apps/graphs/graphs.asd apps/legacy/ta2/ta2.asd apps/legacy/tasty/tasty.asd apps/translators/translators.asd apps/tree/tree.asd apps/yadd/yadd.asd base/base.asd cl-lite/cl-lite.asd demos/bus/bus.asd demos/ledger/ledger.asd demos/robot/robot.asd demos/wire-world/wire-world.asd gendl-asdf/gendl-asdf.asd gendl.asd geom-base/geom-base.asd glisp/glisp.asd gwl-graphics/gwl-graphics.asd gwl/gwl.asd regression/regression.asd setup-cffi/setup-cffi.asd surf/surf.asd -generalized-reference http://beta.quicklisp.org/archive/generalized-reference/2022-07-07/generalized-reference-20220707-git.tgz 4636 7bfcc801d1a2c1b4b0d2ae9a21f3ee5b 169cb58d24c12c7ad2d359689d3690aa92c28bda generalized-reference-20220707-git generalized-reference.asd -generators http://beta.quicklisp.org/archive/generators/2013-06-15/generators-20130615-git.tgz 4999 e0de3d2f81b7d5802403186012bc37b6 f9df68f27c422f6dcce84f0635a42500ca2d6e39 generators-20130615-git generators.asd -generic-cl http://beta.quicklisp.org/archive/generic-cl/2021-10-20/generic-cl-20211020-git.tgz 104694 ce42f45dd7c5be44de45ee259a46d7b8 8da7991a79f70bb7846c2ebc107ed8a356b6a7e0 generic-cl-20211020-git generic-cl.arithmetic.asd generic-cl.asd generic-cl.collector.asd generic-cl.comparison.asd generic-cl.container.asd generic-cl.internal.asd generic-cl.iterator.asd generic-cl.lazy-seq.asd generic-cl.map.asd generic-cl.math.asd generic-cl.object.asd generic-cl.sequence.asd generic-cl.set.asd generic-cl.util.asd -generic-comparability http://beta.quicklisp.org/archive/generic-comparability/2018-01-31/generic-comparability-20180131-git.tgz 5622 9cc021f7f580a6e4951066f629bc56f3 7ef5b496c236d42f4fdf529ae257a2e99a9e4417 generic-comparability-20180131-git generic-comparability.asd -generic-sequences http://beta.quicklisp.org/archive/generic-sequences/2015-07-09/generic-sequences-20150709-git.tgz 106323 be208c2f1e6ea5ecd39355d24676312c 330178da719e73413c84f11e42170e76cf60b657 generic-sequences-20150709-git generic-sequences-cont.asd generic-sequences-iterate.asd generic-sequences-stream.asd generic-sequences-test.asd generic-sequences.asd -geneva http://beta.quicklisp.org/archive/geneva/2016-12-04/geneva-20161204-git.tgz 28218 6539a3fb3b4d8e6c2f4c8b1193ded5b3 80144517cb11bd17dd0c6e04470faa450855292e geneva-20161204-git geneva-cl.asd geneva-html.asd geneva-latex.asd geneva-mk2.asd geneva-plain-text.asd geneva-tex.asd geneva.asd open-geneva.asd -genhash http://beta.quicklisp.org/archive/genhash/2018-12-10/genhash-20181210-git.tgz 4210 373e52616aa9563899004e5f017cff6b 36a71477e3ddb2de935ff044dbb9bbe38cc48c76 genhash-20181210-git genhash.asd -geodesic http://beta.quicklisp.org/archive/geodesic/2022-03-31/geodesic-20220331-git.tgz 812959 bae4101f6e83fedb729401a69efe3906 28fc9386a0e8d56845ba06aaf45a1486e9f3e5b6 geodesic-20220331-git geodesic.asd -geowkt http://beta.quicklisp.org/archive/geowkt/2020-06-10/geowkt-20200610-git.tgz 152071 9e60104a35566b61ade31c7d6d1b3177 c551261973b18b4270ac13e871af581048579b63 geowkt-20200610-git geowkt-update.asd geowkt.asd -getopt http://beta.quicklisp.org/archive/getopt/2015-09-23/getopt-20150923-git.tgz 5108 adc97a0ae99d65edff231b35862d67dd 001d521ec954ddd8222f708316c04c6e522e2b16 getopt-20150923-git getopt.asd -gettext http://beta.quicklisp.org/archive/gettext/2017-11-30/gettext-20171130-git.tgz 23766 d162cb5310db5011c82ef6343fd280ed 896479742580c8abecf8f47b77c48d56988b3089 gettext-20171130-git gettext-example/gettext-example.asd gettext-tests/gettext-tests.asd gettext.asd -gfxmath http://beta.quicklisp.org/archive/gfxmath/2022-07-07/gfxmath-20220707-git.tgz 37358 0183f53a4998e951bc4ffda7d366ca1c e4feff602038fdf42b7c95216491d5987d4115c4 gfxmath-20220707-git gfxmath.asd gfxmath.test.asd -git-file-history http://beta.quicklisp.org/archive/git-file-history/2016-08-25/git-file-history-20160825-git.tgz 2640 a642d433a7fd6c73b1c81ad21ab5223e 7522386a8d66527f352d2b63c66feab5814769df git-file-history-20160825-git git-file-history-test.asd git-file-history.asd -github-api-cl http://beta.quicklisp.org/archive/github-api-cl/2022-11-06/github-api-cl-20221106-git.tgz 12078 d13c57af51b4997b804c4b546b719288 2d82b5bc5a96a66a682be57026a52213ffbf5d07 github-api-cl-20221106-git example/github-gist-cl/github-gist-api-cl.asd github-api-cl.asd -glacier http://beta.quicklisp.org/archive/glacier/2023-02-14/glacier-20230214-git.tgz 10297 049b33a1f701c7700251280ae780aecb cda5923933adeda814fc207e3b7e3a2392c09453 glacier-20230214-git glacier.asd -glad-blob http://beta.quicklisp.org/archive/glad-blob/2020-10-16/glad-blob-stable-git.tgz 324540 e9ec14a1d0e6e676bbda33020a6b73d8 6fbc0658110a397b7e5b6255117e91d9e07b4d30 glad-blob-stable-git glad-blob.asd -glass http://beta.quicklisp.org/archive/glass/2015-07-09/glass-20150709-git.tgz 70206 45acf599d8810960366575efe9e6dae4 49a0edeb8c25222add274d8ec7aebb8416fda42d glass-20150709-git glass.asd -glaw http://beta.quicklisp.org/archive/glaw/2018-02-28/glaw-20180228-git.tgz 1427712 aa341fdc184de0a4be21654af6b95d5a 361ba78fe7b6456b03bf8ab9c49d6330c2e3b52a glaw-20180228-git glaw-examples.asd glaw-imago.asd glaw-sdl.asd glaw.asd -glfw-blob http://beta.quicklisp.org/archive/glfw-blob/2020-10-16/glfw-blob-stable-git.tgz 624786 e089f3cda24bf2842b87fd54a50b7c1e 4262675dffec229416e6bcb6579db1246aaaad50 glfw-blob-stable-git glfw-blob.asd -glisph http://beta.quicklisp.org/archive/glisph/2017-04-03/glisph-20170403-git.tgz 2341692 8fbfbd69a4b60b1cf7456b1a05332d37 9316f601eb05d9db8eebc61a3f0746227ccf1062 glisph-20170403-git glisph-test.asd glisph.asd -glkit http://beta.quicklisp.org/archive/glkit/2020-10-16/glkit-20201016-git.tgz 15290 5d7acb49daa6ba26d15399a65f09ab76 72aaa32c6c62d64da32b9af19dc44c990dd23a1c glkit-20201016-git glkit-examples.asd glkit.asd -global-vars http://beta.quicklisp.org/archive/global-vars/2014-11-06/global-vars-20141106-git.tgz 3581 dd3153ee75c972a80450aa00644b2200 06ef315e35eaf447159303a16827e05cc28af887 global-vars-20141106-git global-vars-test.asd global-vars.asd -glop http://beta.quicklisp.org/archive/glop/2017-10-19/glop-20171019-git.tgz 85964 329610c0ffc7a862ce454d1901895bca 7d196144d503e8bba5a1ea8b4afe1a19927f8ac6 glop-20171019-git glop-test.asd glop.asd -glsl-metadata http://beta.quicklisp.org/archive/glsl-metadata/2022-07-07/glsl-metadata-20220707-git.tgz 14531 d287afea4f066b201c43e9284bb3f5ca 34c115355ba695a03ca1195b44cf3db4115a8833 glsl-metadata-20220707-git glsl-metadata.asd -glsl-packing http://beta.quicklisp.org/archive/glsl-packing/2018-01-31/glsl-packing-20180131-git.tgz 11241 32b129a2f045f76689c253d13aa8c8bc 3d93bc0affd8a6db19ed7397ed211e4499de0eae glsl-packing-20180131-git glsl-packing.asd -glsl-spec http://beta.quicklisp.org/archive/glsl-spec/2019-10-07/glsl-spec-release-quicklisp-f04476f7-git.tgz 133677 52760939a269acce6b2cba8dbde81ef7 4427cd544f8db5028d5acf54c85f55f398d8a8e7 glsl-spec-release-quicklisp-f04476f7-git glsl-docs.asd glsl-spec.asd glsl-symbols.asd -glsl-toolkit http://beta.quicklisp.org/archive/glsl-toolkit/2022-07-07/glsl-toolkit-20220707-git.tgz 36267 faa4695c2f6eec973f7046a8578d1735 0392e0191c704bd5f6f9de89a65c34c56c138aaa glsl-toolkit-20220707-git glsl-toolkit.asd -glu-tessellate http://beta.quicklisp.org/archive/glu-tessellate/2015-06-08/glu-tessellate-20150608-git.tgz 4736 bebb4d2d5c471ecd0c542ea01b7c48ab 38ef8ee019ff2e082ecb7b582ab86ba245fc9b74 glu-tessellate-20150608-git glu-tessellate.asd -glyphs http://beta.quicklisp.org/archive/glyphs/2018-07-11/glyphs-20180711-git.tgz 16354 1b7cd4d3cda79fa8a35148fedf991e11 a14199085a75163efefd17cfce15fb0a6f3bc9ee glyphs-20180711-git glyphs-test.asd glyphs.asd -gooptest http://beta.quicklisp.org/archive/gooptest/2020-09-25/gooptest-20200925-git.tgz 96103 a91ab23c48e301dcfa4f76a4219ecd2e 4e343ac87eac7312ab25e7af87db10f2ec3f4c88 gooptest-20200925-git gooptest.asd -graph http://beta.quicklisp.org/archive/graph/2022-03-31/graph-20220331-git.tgz 29754 267761faff564388f17e674a17e2ed3a ff555723dba4499ea0adea0bbc3c6d485703ec44 graph-20220331-git graph.asd -graylex http://beta.quicklisp.org/archive/graylex/2011-05-22/graylex-20110522-git.tgz 26517 ebed20d32a2ed9bb763adac09a28ee7d be6cbbe39543e51eafbd0aa171353905db8f251a graylex-20110522-git graylex-m4-example.asd graylex.asd -green-threads http://beta.quicklisp.org/archive/green-threads/2014-12-17/green-threads-20141217-git.tgz 7895 6f2ac5dde894abb04e9dbb55c70ee658 61959b4f605a546d4fbe07a6c84f6754e54e9563 green-threads-20141217-git green-threads.asd -grid-formation http://beta.quicklisp.org/archive/grid-formation/2022-07-07/grid-formation-20220707-git.tgz 3674 c0a02056d62ea81fb4ad9f0ea5f2a872 c19be65ce361d9e0cd09220cf881702ed0e239cf grid-formation-20220707-git grid-formation.asd -group-by http://beta.quicklisp.org/archive/group-by/2014-02-11/group-by-20140211-git.tgz 9071 25caa8291d230d98f66bca57a28ee7a5 9f600f78dc04fbfd4a1260427eb3079278ba2932 group-by-20140211-git group-by.asd -grovel-locally http://beta.quicklisp.org/archive/grovel-locally/2018-02-28/grovel-locally-20180228-git.tgz 5896 e99f1dece67838730a8845c7fbbf19c6 c419b568a3d45c9232a2ceae328c099b736472bc grovel-locally-20180228-git grovel-locally.asd -gsll http://beta.quicklisp.org/archive/gsll/2018-08-31/gsll-quicklisp-eeeda841-git.tgz 317981 4b21395e6c4531dc067d00ed10b580e1 de3edd6293d93620c33938c1ca6318ae13b6bdb4 gsll-quicklisp-eeeda841-git gsll.asd -gtirb http://beta.quicklisp.org/archive/gtirb/2021-10-20/gtirb-quicklisp-dd18337d-git.tgz 603702 a9745104318ba92a154d3579ce16c628 159d2820e38ff3da1cf4a321df6d842eeaafec89 gtirb-quicklisp-dd18337d-git cl/gtirb.asd -gtirb-capstone http://beta.quicklisp.org/archive/gtirb-capstone/2023-02-14/gtirb-capstone-20230214-git.tgz 32829 5eea35258006efee3f1e51514aef55bd 57c2580f2ec061e199f09f56dbe5cf87118fa42b gtirb-capstone-20230214-git gtirb-capstone.asd -gtirb-functions http://beta.quicklisp.org/archive/gtirb-functions/2023-02-14/gtirb-functions-20230214-git.tgz 24162 cd7d67011ea8bfdcf3daf92bef4a7e2f 358eebacea63eee43d7279a6dda419aad8b742d4 gtirb-functions-20230214-git gtirb-functions.asd -gtk-tagged-streams http://beta.quicklisp.org/archive/gtk-tagged-streams/2018-02-28/gtk-tagged-streams-quicklisp-d1c2b827-git.tgz 73541 952070238f59cf17496556a98f04e8f6 7d4a0f5d5895e8eb0ab4f7d0d37547dc7eb211b3 gtk-tagged-streams-quicklisp-d1c2b827-git gtk-tagged-streams.asd -gtwiwtg http://beta.quicklisp.org/archive/gtwiwtg/2022-11-06/gtwiwtg-20221106-git.tgz 39034 ab3882f2316c3113e9628d94c4e01a49 2130e957195721ac5b8566b834136177a62a1921 gtwiwtg-20221106-git gtwiwtg-test.asd gtwiwtg.asd -gtype http://beta.quicklisp.org/archive/gtype/2020-06-10/gtype-20200610-git.tgz 23153 016cdeb04cdc1b700ba9bf0cdeeaa6d4 37953b070441e2f639c9d98e42b96d287ccf6a20 gtype-20200610-git gtype.asd gtype.test.asd -gute http://beta.quicklisp.org/archive/gute/2022-11-06/gute-20221106-git.tgz 67283 63a0375198d77cdf003208d0d33879dd cfe864f7eb308f299b5d5501ddef1a25ddc0f8e2 gute-20221106-git gute.asd -gzip-stream http://beta.quicklisp.org/archive/gzip-stream/2010-10-06/gzip-stream_0.2.8.tgz 12149 6f0c06fdf7ca0c3124593a2b99b69935 fbcd75fd3042c6fb7f33bcd4d7f065e2248a6a38 gzip-stream_0.2.8 gzip-stream.asd -halftone http://beta.quicklisp.org/archive/halftone/2019-07-10/halftone-20190710-git.tgz 5664 8b0e8a4411bd73acac297d124dd4d672 6b80181e4f8e8c2e564df62cf751f0c8d7d2667d halftone-20190710-git halftone.asd -harmony http://beta.quicklisp.org/archive/harmony/2023-02-14/harmony-20230214-git.tgz 45014 cdb9e97da991a8107ccec9b80dc670ce 5c4ba7880dd0db883da30ddbe911eb7b6fd8bbb9 harmony-20230214-git harmony.asd -hash-set http://beta.quicklisp.org/archive/hash-set/2021-12-30/hash-set-20211230-git.tgz 6028 a0b1388d0c4b5b7807a7d21a755c1b4a e2995157731fd6f520101810b7b772e468f133f0 hash-set-20211230-git hash-set-tests.asd hash-set.asd -hash-table-ext http://beta.quicklisp.org/archive/hash-table-ext/2021-10-20/hash-table-ext-20211020-git.tgz 6170 ce4b60acd1825b0b7af90cdf7c0fda39 67eb92c193faa011d4510dc155f4755f7165a46b hash-table-ext-20211020-git hash-table-ext.asd spec/hash-table-ext.test.asd -hashtrie http://beta.quicklisp.org/archive/hashtrie/2023-02-14/hashtrie-20230214-git.tgz 14411 44928107fd4e6b7e70d0c7687725b089 fe127b3741e5b309c66e136410a0996bf63eabde hashtrie-20230214-git hashtrie-tests.asd hashtrie.asd -hdf5-cffi http://beta.quicklisp.org/archive/hdf5-cffi/2018-02-28/hdf5-cffi-20180228-git.tgz 54363 dbe93f460641f2be9a9c1a910d4ef315 f6a7edd796abf4c379fe7e954690e6362d342600 hdf5-cffi-20180228-git hdf5-cffi.asd hdf5-cffi.examples.asd hdf5-cffi.test.asd -heap http://beta.quicklisp.org/archive/heap/2018-10-18/heap-20181018-git.tgz 2871 a2355ef9c113a3335919a45195083951 3c94679187d9a855a343647f8503812c0925f4f9 heap-20181018-git heap.asd -helambdap http://beta.quicklisp.org/archive/helambdap/2023-02-14/helambdap-20230214-git.tgz 571680 15403f0195edb738e66af1b0b596cc69 1404ed780017c65aead4113b4f8a8cfab3d8d150 helambdap-20230214-git helambdap.asd -hermetic http://beta.quicklisp.org/archive/hermetic/2019-10-07/hermetic-20191007-git.tgz 4564 72d6a7322c98bf3040e88bb17b2f8b27 532f1f055d8e3a277a123d6c7304588457c712ec hermetic-20191007-git hermetic.asd -herodotus http://beta.quicklisp.org/archive/herodotus/2022-03-31/herodotus-20220331-git.tgz 7227 6904210cc1e4947e8dca0a246befc83b c70f8f4f27ef128efe10547acb1fc3a5cacfbe60 herodotus-20220331-git herodotus.asd -hh-aws http://beta.quicklisp.org/archive/hh-aws/2015-08-04/hh-aws-20150804-git.tgz 16762 3d1f15d366f2c0b161f5c8b7759f868a 91faf1b47a18eeb129f608a594a43f230a0c10b4 hh-aws-20150804-git hh-aws.asd -hh-redblack http://beta.quicklisp.org/archive/hh-redblack/2015-10-31/hh-redblack-20151031-git.tgz 13091 4c61afc0406a8eacffebc494a1230beb b4f520f58d13ba5fddb22f042944db2dc02cd960 hh-redblack-20151031-git hh-redblack.asd -hh-web http://beta.quicklisp.org/archive/hh-web/2014-11-06/hh-web-20141106-git.tgz 49100 f18080fa53654dac8d77e5ed5d9953ff d40315c8346f3d101c6c3acecb2e3ae24100484a hh-web-20141106-git hh-web.asd -history-tree http://beta.quicklisp.org/archive/history-tree/2023-02-14/history-tree-20230214-git.tgz 3296968 8e6cf17866aa0d57f3717a2aade4c47b 961c095649133fa7771dc9879708d144a303c3e0 history-tree-20230214-git history-tree.asd -hl7-client http://beta.quicklisp.org/archive/hl7-client/2015-04-07/hl7-client-20150407-git.tgz 3149 ee18a7ef718e2fb389ad27e6dd628d6d ab1915436f9377f698785eacbafbb8615441956e hl7-client-20150407-git hl7-client.asd -hl7-parser http://beta.quicklisp.org/archive/hl7-parser/2016-05-31/hl7-parser-20160531-git.tgz 5154 92fc8f793d674bb661b0363e1721b3d0 388f1e64bb4d2b76818ac0c02299fcab906b5538 hl7-parser-20160531-git hl7-parser.asd -horner http://beta.quicklisp.org/archive/horner/2019-11-30/horner-20191130-git.tgz 4644 8b4eabb5b0d56ba098ac4a21ae82ff60 aee72c11f78279ad81a01703e3110f1fc0b8aff7 horner-20191130-git horner.asd -horse-html http://beta.quicklisp.org/archive/horse-html/2019-10-07/horse-html-20191007-git.tgz 6518 c5ecbddc6a5e3c40d8329d13a2683763 e5ca014c5a7ca7db9e1f24e27d33c0ee016a53fb horse-html-20191007-git horse-html.asd -house http://beta.quicklisp.org/archive/house/2021-01-24/house-20210124-git.tgz 25704 d2cd140ae063dd22dc440f24964d4b58 2d2f03538bf42a98cb22ee000ad454cd0cc3d380 house-20210124-git house.asd -ht-simple-ajax http://beta.quicklisp.org/archive/ht-simple-ajax/2013-04-21/ht-simple-ajax-20130421-git.tgz 10059 2787aebfc9c4d458206d50461f9443ab e1871d0755dbd48151d54c0c0e512f84798b3d4c ht-simple-ajax-20130421-git ht-simple-ajax.asd -html-encode http://beta.quicklisp.org/archive/html-encode/2010-10-06/html-encode-1.2.tgz 3132 67f22483fe6d270b8830f78f285a1016 ce347529dbb02f008c079427bcb1050372cc24e4 html-encode-1.2 html-encode.asd -html-entities http://beta.quicklisp.org/archive/html-entities/2017-10-19/html-entities-20171019-git.tgz 39697 7a71bcd138f1f367f26e26e9c8e3a390 95458f97469288061d505756bc1f1518b37462d7 html-entities-20171019-git html-entities.asd -html-template http://beta.quicklisp.org/archive/html-template/2017-12-27/html-template-20171227-git.tgz 32376 fb77c495914641f5e67e51a370b2d5a3 946ce5d402bb54c60f84acd6c6d7f6590ede40f1 html-template-20171227-git html-template.asd -http-body http://beta.quicklisp.org/archive/http-body/2019-08-13/http-body-20190813-git.tgz 15739 d46ac52643ae7dc148438f84a8107a79 1da29c1f6f6a06a5ab784acad8ebf702ba6c6216 http-body-20190813-git http-body-test.asd http-body.asd -http-get-cache http://beta.quicklisp.org/archive/http-get-cache/2018-02-28/http-get-cache-20180228-git.tgz 3610 807a9feefeed19159ff46c5733e13da6 2c4623119391c1403fd86f5c19e4865839e62e71 http-get-cache-20180228-git http-get-cache.asd -http-parse http://beta.quicklisp.org/archive/http-parse/2015-06-08/http-parse-20150608-git.tgz 30047 89b5449d33d1ad027606259f84b4c282 65a5aa04e2f6761fc87e6f2c7e7182462ebdaf3f http-parse-20150608-git http-parse-test.asd http-parse.asd -http2 http://beta.quicklisp.org/archive/http2/2023-02-14/http2-20230214-git.tgz 63875 56cca00d191006e8283aa854f3c6ab05 333b1a77305c72fa0de32524f3bcd1488afeaa70 http2-20230214-git http2.asd -hu.dwim.asdf http://beta.quicklisp.org/archive/hu.dwim.asdf/2021-12-30/hu.dwim.asdf-stable-git.tgz 6586 20251cb11ed1d151dc7194a010e196a9 ef3c4695c80df1e479d3aa2f403f21abf9ec9b58 hu.dwim.asdf-stable-git hu.dwim.asdf.asd hu.dwim.asdf.documentation.asd -hu.dwim.bluez http://beta.quicklisp.org/archive/hu.dwim.bluez/2021-02-28/hu.dwim.bluez-stable-git.tgz 126719 4bf491c722174924394af2a9d18e4a78 b45470cd633ed756b260b6313ab5cc39f025ea79 hu.dwim.bluez-stable-git hu.dwim.bluez.asd -hu.dwim.common http://beta.quicklisp.org/archive/hu.dwim.common/2015-07-09/hu.dwim.common-20150709-darcs.tgz 3083 fff7f05c24e71a0270021909ca86a9ef 6ff0a62c94fee95b1440b59230f4a9c174d95093 hu.dwim.common-20150709-darcs hu.dwim.common.asd hu.dwim.common.documentation.asd -hu.dwim.common-lisp http://beta.quicklisp.org/archive/hu.dwim.common-lisp/2021-02-28/hu.dwim.common-lisp-stable-git.tgz 2104 4f0c7a375cc55381efdbeb17ef17dd7d 543dbd676d7ff71b9348f37531864a8e923ea66f hu.dwim.common-lisp-stable-git hu.dwim.common-lisp.asd hu.dwim.common-lisp.documentation.asd -hu.dwim.computed-class http://beta.quicklisp.org/archive/hu.dwim.computed-class/2020-04-27/hu.dwim.computed-class-20200427-darcs.tgz 18753 694fb7d3accec9dda74b6a402a3abf46 1cacf6d60db7f83ff1dae5dc0ca7940c315370ab hu.dwim.computed-class-20200427-darcs hu.dwim.computed-class+hu.dwim.logger.asd hu.dwim.computed-class+swank.asd hu.dwim.computed-class.asd hu.dwim.computed-class.documentation.asd hu.dwim.computed-class.test.asd -hu.dwim.debug http://beta.quicklisp.org/archive/hu.dwim.debug/2019-01-07/hu.dwim.debug-20190107-darcs.tgz 6637 18d7d06110fdbd454e350d92cf5f17cc 3ba6fdf418010b6d7dc03d3dc95ec7c4171d6933 hu.dwim.debug-20190107-darcs hu.dwim.debug.asd hu.dwim.debug.documentation.asd hu.dwim.debug.test.asd -hu.dwim.def http://beta.quicklisp.org/archive/hu.dwim.def/2021-12-30/hu.dwim.def-stable-git.tgz 20120 701fd28dce4536e91607fe5d2e1e8164 e92f3f8ce0017fd12884d415bb7457c301989dc0 hu.dwim.def-stable-git hu.dwim.def+cl-l10n.asd hu.dwim.def+contextl.asd hu.dwim.def+hu.dwim.common.asd hu.dwim.def+hu.dwim.delico.asd hu.dwim.def+swank.asd hu.dwim.def.asd -hu.dwim.defclass-star http://beta.quicklisp.org/archive/hu.dwim.defclass-star/2021-12-30/hu.dwim.defclass-star-stable-git.tgz 9114 4ea430dc53b6fdca3de78bb18ec04d31 065ad41c55e830ec95bf379b2f36a3353a154641 hu.dwim.defclass-star-stable-git hu.dwim.defclass-star+contextl.asd hu.dwim.defclass-star+hu.dwim.def+contextl.asd hu.dwim.defclass-star+hu.dwim.def.asd hu.dwim.defclass-star+swank.asd hu.dwim.defclass-star.asd -hu.dwim.delico http://beta.quicklisp.org/archive/hu.dwim.delico/2020-09-25/hu.dwim.delico-20200925-darcs.tgz 20008 7964d11beb354a681cbc0afa7900137d 007fb702d1a8440bd01d162d0bd2d44cfd712219 hu.dwim.delico-20200925-darcs hu.dwim.delico.asd -hu.dwim.graphviz http://beta.quicklisp.org/archive/hu.dwim.graphviz/2021-12-30/hu.dwim.graphviz-stable-git.tgz 11051 916b3aa7645700d77ec22d0fa399b216 0a593a0f96fbf0eb7ddb836352ae556abb282837 hu.dwim.graphviz-stable-git hu.dwim.graphviz.asd hu.dwim.graphviz.documentation.asd hu.dwim.graphviz.test.asd -hu.dwim.logger http://beta.quicklisp.org/archive/hu.dwim.logger/2021-12-30/hu.dwim.logger-stable-git.tgz 11234 8ad8efcd986ced0f2098bd8ab513efc8 887c4a4d7457f2137fc0587512ab4adfb2803bf7 hu.dwim.logger-stable-git hu.dwim.logger+iolib.asd hu.dwim.logger+swank.asd hu.dwim.logger.asd hu.dwim.logger.documentation.asd hu.dwim.logger.test.asd -hu.dwim.partial-eval http://beta.quicklisp.org/archive/hu.dwim.partial-eval/2017-11-30/hu.dwim.partial-eval-20171130-darcs.tgz 24393 78c498a3ba353e0a62e15df49a459078 9acbc3ab6c50c1104c94047ef747456a7cffd854 hu.dwim.partial-eval-20171130-darcs hu.dwim.partial-eval.asd hu.dwim.partial-eval.documentation.asd hu.dwim.partial-eval.test.asd -hu.dwim.perec http://beta.quicklisp.org/archive/hu.dwim.perec/2021-12-09/hu.dwim.perec-20211209-darcs.tgz 183255 fe2a06da153d00644fc95d01e43e28f4 444641fc74b2f047322cf73f3b1b101ce4d2fc30 hu.dwim.perec-20211209-darcs hu.dwim.perec+hu.dwim.quasi-quote.xml.asd hu.dwim.perec+iolib.asd hu.dwim.perec+swank.asd hu.dwim.perec.all.asd hu.dwim.perec.all.test.asd hu.dwim.perec.asd hu.dwim.perec.documentation.asd hu.dwim.perec.oracle.asd hu.dwim.perec.oracle.test.asd hu.dwim.perec.postgresql.asd hu.dwim.perec.postgresql.test.asd hu.dwim.perec.sqlite.asd hu.dwim.perec.sqlite.test.asd hu.dwim.perec.test.asd -hu.dwim.presentation http://beta.quicklisp.org/archive/hu.dwim.presentation/2021-12-30/hu.dwim.presentation-20211230-darcs.tgz 1733335 7dc89ecd6e3879e05b911bea6be06f22 306be570acd9d585870a40e8cd98dabd72b66083 hu.dwim.presentation-20211230-darcs hu.dwim.presentation+cl-graph+cl-typesetting.asd hu.dwim.presentation+cl-typesetting.asd hu.dwim.presentation+hu.dwim.stefil.asd hu.dwim.presentation+hu.dwim.web-server.asd hu.dwim.presentation.asd -hu.dwim.quasi-quote http://beta.quicklisp.org/archive/hu.dwim.quasi-quote/2022-07-07/hu.dwim.quasi-quote-stable-git.tgz 71987 5f44f32a432b7ba2b187305816020319 3c273ec2815e148dfb91794f6e7989efd55261d6 hu.dwim.quasi-quote-stable-git hu.dwim.quasi-quote.asd hu.dwim.quasi-quote.css.asd hu.dwim.quasi-quote.js.asd hu.dwim.quasi-quote.pdf.asd hu.dwim.quasi-quote.xml+cxml.asd hu.dwim.quasi-quote.xml+hu.dwim.quasi-quote.js.asd hu.dwim.quasi-quote.xml.asd -hu.dwim.rdbms http://beta.quicklisp.org/archive/hu.dwim.rdbms/2020-10-16/hu.dwim.rdbms-20201016-darcs.tgz 117059 3f48287deedd67d720e8efca191e59c8 502e3f86922ac59525ecd485d92137c6f66e4b82 hu.dwim.rdbms-20201016-darcs hu.dwim.rdbms.all.asd hu.dwim.rdbms.all.test.asd hu.dwim.rdbms.asd hu.dwim.rdbms.documentation.asd hu.dwim.rdbms.oracle.asd hu.dwim.rdbms.oracle.test.asd hu.dwim.rdbms.postgresql.asd hu.dwim.rdbms.postgresql.test.asd hu.dwim.rdbms.sqlite.asd hu.dwim.rdbms.sqlite.test.asd hu.dwim.rdbms.test.asd -hu.dwim.reiterate http://beta.quicklisp.org/archive/hu.dwim.reiterate/2021-12-30/hu.dwim.reiterate-stable-git.tgz 21555 c5d5e3b756b9739bd1c2b696f63c50ca 7796b68b1a0f5cde5d88fd94ac6c51ff3b1d852d hu.dwim.reiterate-stable-git hu.dwim.reiterate+hu.dwim.logger.asd hu.dwim.reiterate.asd -hu.dwim.sdl http://beta.quicklisp.org/archive/hu.dwim.sdl/2022-07-07/hu.dwim.sdl-stable-git.tgz 399503 b41d5d2cfdf354cd63d3826cbf52c06a a9bb0690261782727d599c4849e3a04a7b0f79cd hu.dwim.sdl-stable-git hu.dwim.sdl.asd -hu.dwim.serializer http://beta.quicklisp.org/archive/hu.dwim.serializer/2016-12-04/hu.dwim.serializer-20161204-darcs.tgz 12092 bb15ef778eca814e4f1caa5ae05fb7ad 197e6d4df639b4bbd976e819b3247d20a937bb5e hu.dwim.serializer-20161204-darcs hu.dwim.serializer.asd hu.dwim.serializer.documentation.asd hu.dwim.serializer.test.asd -hu.dwim.stefil http://beta.quicklisp.org/archive/hu.dwim.stefil/2021-12-30/hu.dwim.stefil-stable-git.tgz 23318 5340af8dbdd9035275cbf12861b5b2d4 7a0ae61ecfc96ea89af55d9d404485976f8233d5 hu.dwim.stefil-stable-git hu.dwim.stefil+hu.dwim.def+swank.asd hu.dwim.stefil+hu.dwim.def.asd hu.dwim.stefil+swank.asd hu.dwim.stefil.asd -hu.dwim.syntax-sugar http://beta.quicklisp.org/archive/hu.dwim.syntax-sugar/2023-02-14/hu.dwim.syntax-sugar-stable-git.tgz 19007 4218e5563bf83304d5f61fbb12e42c22 d5c26ab6a7de5597c912c2888675ed5c04394259 hu.dwim.syntax-sugar-stable-git hu.dwim.syntax-sugar.asd hu.dwim.syntax-sugar.documentation.asd hu.dwim.syntax-sugar.test.asd -hu.dwim.uri http://beta.quicklisp.org/archive/hu.dwim.uri/2018-02-28/hu.dwim.uri-20180228-darcs.tgz 8543 0e3408935a77c74a944f9a34dae3e728 f26121022ce365911e2ab03d8de2af07b8ec2a2d hu.dwim.uri-20180228-darcs hu.dwim.uri.asd hu.dwim.uri.test.asd -hu.dwim.util http://beta.quicklisp.org/archive/hu.dwim.util/2021-12-30/hu.dwim.util-stable-git.tgz 50837 62ee64d5aa5cfd150f5f471cd976427f cda775a73c88d0c87d118f84b4f8edf74dba6b22 hu.dwim.util-stable-git hu.dwim.util+iolib.asd hu.dwim.util.asd hu.dwim.util.documentation.asd hu.dwim.util.test.asd -hu.dwim.walker http://beta.quicklisp.org/archive/hu.dwim.walker/2022-07-07/hu.dwim.walker-stable-git.tgz 38345 9bda13e6955344ec81314600a2678180 5d2955d3e2fc7a772e4538d158b3f73dc08c7641 hu.dwim.walker-stable-git hu.dwim.walker.asd -hu.dwim.web-server http://beta.quicklisp.org/archive/hu.dwim.web-server/2022-07-07/hu.dwim.web-server-20220707-darcs.tgz 512106 5231bd8d4a141c311a9499e9cdca59f4 5ea06cc4f0da7957222b950572c3973ebb765c95 hu.dwim.web-server-20220707-darcs hu.dwim.web-server+swank.asd hu.dwim.web-server.application+hu.dwim.perec.asd hu.dwim.web-server.application.asd hu.dwim.web-server.application.test.asd hu.dwim.web-server.asd hu.dwim.web-server.documentation.asd hu.dwim.web-server.test.asd hu.dwim.web-server.websocket.asd -hu.dwim.zlib http://beta.quicklisp.org/archive/hu.dwim.zlib/2022-07-07/hu.dwim.zlib-stable-git.tgz 166624 09e1d2478a6761783cf56ecea016ab9e 563866fc67ae0682235ee0972ac2e0be7e9cb1d5 hu.dwim.zlib-stable-git hu.dwim.zlib.asd -huffman http://beta.quicklisp.org/archive/huffman/2018-10-18/huffman-20181018-git.tgz 2956 195c5722536473cadd283336008bab57 a458727ba8a5e188ecc18e64544836e83fab9b24 huffman-20181018-git huffman.asd -humbler http://beta.quicklisp.org/archive/humbler/2019-07-10/humbler-20190710-git.tgz 48317 a24a0968292724abb594d0a114e61e73 94ec67e5fe60b158d713497084db49be582d1b3d humbler-20190710-git humbler.asd -hunchenissr http://beta.quicklisp.org/archive/hunchenissr/2021-10-20/hunchenissr-20211020-git.tgz 20596 d2c18637372e30da511c44bee25f2e98 f33e3f237eb783620f4420b880c9611d99915c02 hunchenissr-20211020-git issr.asd -hunchensocket http://beta.quicklisp.org/archive/hunchensocket/2022-11-06/hunchensocket-20221106-git.tgz 12566 363a4c591b2523d1c4cda95bfc4f6f9b 9ccdf556ba3f53ccbf3f37e5b66d1fba39235775 hunchensocket-20221106-git hunchensocket.asd -hunchentools http://beta.quicklisp.org/archive/hunchentools/2016-12-04/hunchentools-20161204-git.tgz 5310 3e4c00484a54fce107969941aa695e35 81c5f8bed80dd333cbc1be69da3bb2c752d7ebf9 hunchentools-20161204-git hunchentools.asd -hunchentoot http://beta.quicklisp.org/archive/hunchentoot/2020-06-10/hunchentoot-v1.3.0.tgz 269060 b1bb0c8df41a0ffaba4309e5084930fe dd8922ee966104ffc6fe917392a4c407fb259935 hunchentoot-v1.3.0 hunchentoot.asd -hunchentoot-auth http://beta.quicklisp.org/archive/hunchentoot-auth/2014-01-13/hunchentoot-auth-20140113-git.tgz 5878 f6763dbbfd1f5421e46ff3e9648eeef6 fffbfd821814f8460262143be04c16db0d5f29f7 hunchentoot-auth-20140113-git hunchentoot-auth.asd -hunchentoot-cgi http://beta.quicklisp.org/archive/hunchentoot-cgi/2014-02-11/hunchentoot-cgi-20140211-git.tgz 4322 e300c5959f7100b7e032066239d82541 bf8b301b9f4a99a4ef2237581df81f2d848349a4 hunchentoot-cgi-20140211-git hunchentoot-cgi.asd -hunchentoot-errors http://beta.quicklisp.org/archive/hunchentoot-errors/2022-11-06/hunchentoot-errors-20221106-git.tgz 3799 c9089871cebf2a319334fd1d596e6a04 0cbfce6048cac80aa3b31aba58a3fe485f8a9c4d hunchentoot-errors-20221106-git hunchentoot-errors.asd -hunchentoot-multi-acceptor http://beta.quicklisp.org/archive/hunchentoot-multi-acceptor/2022-03-31/hunchentoot-multi-acceptor-20220331-git.tgz 6438 ba94cc00bcf2bb529506658482439124 c9cd50301d03b08810165de62dcb44f7f25126e2 hunchentoot-multi-acceptor-20220331-git hunchentoot-multi-acceptor.asd -hunchentoot-single-signon http://beta.quicklisp.org/archive/hunchentoot-single-signon/2013-11-11/hunchentoot-single-signon-20131111-git.tgz 2279 52b6a4438e7c63209f674eadba35168c a67c2e3a07f00cf2738ac14400ebdc44868195dc hunchentoot-single-signon-20131111-git hunchentoot-single-signon.asd -hyperluminal-mem http://beta.quicklisp.org/archive/hyperluminal-mem/2021-06-30/hyperluminal-mem-20210630-git.tgz 89747 2fb46423a7db72ed722d674f72f1e21f a2de72c1979a50dc1d1a76dd01d07f340532a06c hyperluminal-mem-20210630-git hyperluminal-mem-test.asd hyperluminal-mem.asd -hyperobject http://beta.quicklisp.org/archive/hyperobject/2020-10-16/hyperobject-20201016-git.tgz 44260 db496f42ae9221ae6be6f5f5c97dbe00 7a218757b838fcdc7437afcc1d00e430919e57bc hyperobject-20201016-git hyperobject.asd -hyperspec http://beta.quicklisp.org/archive/hyperspec/2018-12-10/hyperspec-20181210-git.tgz 23892 742d80f89020e90234f1b8b6f00a3056 4bafc32c2cfd86b013525385e98ec7fa6a6a32c7 hyperspec-20181210-git hyperspec.asd -ia-hash-table http://beta.quicklisp.org/archive/ia-hash-table/2016-03-18/ia-hash-table-20160318-git.tgz 4491 59a825b5b809aabb5ac5db96728756b7 e23c512d4ab5c06fe31cda3fddad17e88981d2c5 ia-hash-table-20160318-git ia-hash-table.asd ia-hash-table.test.asd -iclendar http://beta.quicklisp.org/archive/iclendar/2019-07-10/iclendar-20190710-git.tgz 88066 4ce57c1359648e497fb25962ec2c0594 0bbc2d371b1f87d4077dff0e978f29dc9ebeca50 iclendar-20190710-git iclendar.asd -id3v2 http://beta.quicklisp.org/archive/id3v2/2016-02-08/id3v2-20160208-git.tgz 3963 427ec2cf9a5f8a8be20a663c336c2288 523e03187ec89b0ce2fe95c9bb9dd1376b6856e4 id3v2-20160208-git id3v2-test.asd id3v2.asd -identifier-pool http://beta.quicklisp.org/archive/identifier-pool/2022-07-07/identifier-pool-20220707-git.tgz 2661 119a294ad9ca186e135ef4ff0b18b22c 8dbdccab28258d9e4d5f39829a707b8536b74b7a identifier-pool-20220707-git identifier-pool.asd -idna http://beta.quicklisp.org/archive/idna/2012-01-07/idna-20120107-git.tgz 6242 85b91a66efe4381bf116cdb5d2b756b6 a32def3834b2130ace95c31af82c6c8b92365c53 idna-20120107-git idna.asd -ieee-floats http://beta.quicklisp.org/archive/ieee-floats/2022-02-20/ieee-floats-20220220-git.tgz 5274 91237afb503d64fc7164cf7776a203ba 29fc28be8d5d8601da8c8e6cf91c437a4cdbc53f ieee-floats-20220220-git ieee-floats.asd -illogical-pathnames http://beta.quicklisp.org/archive/illogical-pathnames/2016-08-25/illogical-pathnames-20160825-git.tgz 6071 386d2b1c0a4f280a52841f4a58ddfad2 dce6a9935768ed7323f4744e9d42752aa52af3d2 illogical-pathnames-20160825-git illogical-pathnames.asd -illusion http://beta.quicklisp.org/archive/illusion/2018-08-31/illusion-20180831-git.tgz 5591 e29adc45f1e630a68b7a2594ce8e1d38 b3edb224814b92f42bdc85f76cfda22fb4a61caf illusion-20180831-git illusion-test.asd illusion.asd -image http://beta.quicklisp.org/archive/image/2012-01-07/image-20120107-git.tgz 12334 f6e1bdabba64a9be1f31602ef87b993c f54562f11b8c6b005a480974bf6742c3dff33864 image-20120107-git image.asd -imago http://beta.quicklisp.org/archive/imago/2022-11-06/imago-20221106-git.tgz 2834853 679cd42b28f8641712d902ae3e502a4f 15778c2889f2fee08695c2485806c55400c2368f imago-20221106-git imago.asd -immutable-struct http://beta.quicklisp.org/archive/immutable-struct/2015-07-09/immutable-struct-20150709-git.tgz 2413 dd68ea45a64bd739e733aa2bcf59955c cca9b233fdb9c441fd02a0015a91b982b34978be immutable-struct-20150709-git immutable-struct.asd -in-nomine http://beta.quicklisp.org/archive/in-nomine/2023-02-14/in-nomine-20230214-git.tgz 14172 ee4cf2a58d8808821b7af2b9d1f416fe 362692a09cdde2223d2448522d1d78c286a9a45c in-nomine-20230214-git in-nomine.asd -incf-cl http://beta.quicklisp.org/archive/incf-cl/2019-07-10/incf-cl-20190710-git.tgz 14029 d517885c08a3c9ab7ab0f56071660ed4 4c29c854fba0610eb9f8adc42b99a1e15bff8bfe incf-cl-20190710-git incf-cl.asd -incognito-keywords http://beta.quicklisp.org/archive/incognito-keywords/2013-01-28/incognito-keywords-1.1.tgz 3817 4759f96fbe4f7873f52d126cec3d5b51 d01f0962811264cea7a3ae1abcc510fd0b177d07 incognito-keywords-1.1 incognito-keywords.asd -incongruent-methods http://beta.quicklisp.org/archive/incongruent-methods/2013-03-12/incongruent-methods-20130312-git.tgz 7171 9e41e9a0a9f33e4f9a00b7d525d8d9c2 73424d66cec5c544ac1fd30729d4357ee2ede37a incongruent-methods-20130312-git incongruent-methods.asd -inferior-shell http://beta.quicklisp.org/archive/inferior-shell/2020-09-25/inferior-shell-20200925-git.tgz 11666 7ca5f15446ef80715758610a930bccba 757798da28183ea6b886b5fb62a35cd8d30e954b inferior-shell-20200925-git inferior-shell.asd -infix-dollar-reader http://beta.quicklisp.org/archive/infix-dollar-reader/2012-10-13/infix-dollar-reader-20121013-git.tgz 2671 b94e744bb2cb69b22b8ca1b94711372c 76156fbe2d0f809d57a8fb74355b4cd9a25c1272 infix-dollar-reader-20121013-git infix-dollar-reader-test.asd infix-dollar-reader.asd -infix-math http://beta.quicklisp.org/archive/infix-math/2021-10-20/infix-math-20211020-git.tgz 7169 7f0932b0022937a0428b28bce52ce213 ea2bdbb2e223090a3bfa40f4bb120ab4dab730f9 infix-math-20211020-git infix-math.asd -infix-reader http://beta.quicklisp.org/archive/infix-reader/2022-11-06/infix-reader-20221106-git.tgz 1835 d996a03915f2b4d98bb0dcffef98b992 13bb76c41e2c37845dcbde99e7216c2f65c0744e infix-reader-20221106-git infix-reader.asd -inheriting-readers http://beta.quicklisp.org/archive/inheriting-readers/2021-01-24/inheriting-readers_1.0.1.tgz 9755 862b1f430463ea86be015e8cfd8f1838 187adf91e3c234a114f60e05541fac9736529c4b inheriting-readers_1.0.1 inheriting-readers.asd tests/inheriting-readers_tests.asd -injection http://beta.quicklisp.org/archive/injection/2016-05-31/injection-20160531-git.tgz 16529 fd550866b59e2f852a7457318435cc54 3688d8be08eecc9140e2f6141e94490409227a54 injection-20160531-git injection-test.asd injection.asd -inkwell http://beta.quicklisp.org/archive/inkwell/2019-07-10/inkwell-20190710-git.tgz 19455 80965d4bd6e377146f684c9f55dcdb50 a0e229d7125c2995ae6c28b1e2ce600d59c506da inkwell-20190710-git inkwell.asd -inlined-generic-function http://beta.quicklisp.org/archive/inlined-generic-function/2019-05-21/inlined-generic-function-20190521-git.tgz 13775 e9336f83fe941d4188063d5b8a1daee2 ddb708a3730c99fe766c6f7412119a1c828bd1a3 inlined-generic-function-20190521-git inlined-generic-function.asd inlined-generic-function.test.asd -inner-conditional http://beta.quicklisp.org/archive/inner-conditional/2020-09-25/inner-conditional-20200925-git.tgz 14654 b37d9771f6a619e011699d6e3d06a004 a01047f3e9b44dc46a117ac1d10f4ace51c2bad0 inner-conditional-20200925-git inner-conditional-test.asd inner-conditional.asd -inotify http://beta.quicklisp.org/archive/inotify/2015-06-08/inotify-20150608-git.tgz 3569 185ac26e780c2d0426b261fbbccca12a fce1a600d8dfddb1193e9ee71b0df2d58a2fe288 inotify-20150608-git inotify.asd -input-event-codes http://beta.quicklisp.org/archive/input-event-codes/2022-11-06/input-event-codes-20221106-git.tgz 24929 41a5f1e223e399af02a2be625a9a45b2 7cad6482e267fe3581db22eb21709dba53ac9ba2 input-event-codes-20221106-git input-event-codes.asd -inquisitor http://beta.quicklisp.org/archive/inquisitor/2019-05-21/inquisitor-20190521-git.tgz 938309 b3ccd374ca6d78db990605fa34ca9e6f d9c38ed218610dd382652062ca3ddb5787d82906 inquisitor-20190521-git inquisitor-flexi-test.asd inquisitor-flexi.asd inquisitor-test.asd inquisitor.asd -instance-tracking http://beta.quicklisp.org/archive/instance-tracking/2022-11-06/instance-tracking-20221106-git.tgz 2785 3232a2a52edad76bfc5c9c9914f8a312 cd8632f3dbc6730bcc01003e26c232c6ca039e77 instance-tracking-20221106-git instance-tracking.asd -integral http://beta.quicklisp.org/archive/integral/2020-03-25/integral-20200325-git.tgz 24608 046f587c11865e55a1a52302ea4ea22d 05f11859c3e63f38007c5d101914235bbd962ac9 integral-20200325-git integral-test.asd integral.asd -integral-rest http://beta.quicklisp.org/archive/integral-rest/2015-09-23/integral-rest-20150923-git.tgz 5803 335875a5465c16346cd29689873dc643 97379a1ff7b2b586b9f3bc8070f70be0009d7487 integral-rest-20150923-git integral-rest-test.asd integral-rest.asd -intel-hex http://beta.quicklisp.org/archive/intel-hex/2016-03-18/intel-hex-20160318-git.tgz 5977 0558406788710ac04f4493a66deb2ebe 43cece1a8cf9a6d2b3b574e95a94a9f6825f5ce0 intel-hex-20160318-git intel-hex-test.asd intel-hex.asd -intercom http://beta.quicklisp.org/archive/intercom/2013-06-15/intercom-20130615-git.tgz 32404 9188e4147f75529e5d5e24561d5c6c4e 953a7a49ab8700823c352a0a488486bc2a80f392 intercom-20130615-git lisp/intercom-examples.asd lisp/intercom.asd -interface http://beta.quicklisp.org/archive/interface/2019-03-07/interface-20190307-hg.tgz 8186 2171f1127f13b79c82c56302b629c18b cbe7051bcbdb6fda388369eb1b31717a38217751 interface-20190307-hg interface.asd -introspect-environment http://beta.quicklisp.org/archive/introspect-environment/2022-02-20/introspect-environment-20220220-git.tgz 9695 e2a9864b2f9792f31ad20b44ea25a58b bbd4206f09550c5dfb9342c44ab849ea51074e20 introspect-environment-20220220-git introspect-environment-test.asd introspect-environment.asd -iolib http://beta.quicklisp.org/archive/iolib/2021-06-30/iolib-v0.8.4.tgz 248092 5650165890f8b278b357864f597b377d 907f838a179fef49cf4618bc507cb9fe20733e22 iolib-v0.8.4 iolib.asd iolib.asdf.asd iolib.base.asd iolib.common-lisp.asd iolib.conf.asd iolib.examples.asd -ip-interfaces http://beta.quicklisp.org/archive/ip-interfaces/2018-12-10/ip-interfaces-0.2.1.tgz 14797 c85e479e1eb4139f8996b335e7d0e034 573b6f8413bdfe11863e649f8aa3ec990662c1b8 ip-interfaces-0.2.1 ip-interfaces-test.asd ip-interfaces.asd -irc-logger http://beta.quicklisp.org/archive/irc-logger/2015-09-23/irc-logger-20150923-git.tgz 10393 6d6b60c0d2ac53575ee5c644beb162c3 1b39d7fad92c3ef94747f9be086c567c1dd317bb irc-logger-20150923-git irc-logger.asd -ironclad http://beta.quicklisp.org/archive/ironclad/2022-11-06/ironclad-v0.58.tgz 1539309 9d0a5411443b1b3ad6829ef040fbafd0 08420f8bd0b9004217672734d935cecf3604231e ironclad-v0.58 ironclad-text.asd ironclad.asd -iso-8601-date http://beta.quicklisp.org/archive/iso-8601-date/2019-01-07/iso-8601-date-20190107-git.tgz 4440 b1ab5921a442d86bb2727b4a2bc9e8e0 f927777c79967a5afa2a419b5ef222a8817b9af7 iso-8601-date-20190107-git eclecticse.iso-8601-date.asd -iterate http://beta.quicklisp.org/archive/iterate/2021-05-31/iterate-release-b0f9a9c6-git.tgz 346126 0b2661e9b8195f3e5891aa14601e5a69 f3782561af0bc743648435277ad6d8bafd5d335c iterate-release-b0f9a9c6-git iterate.asd -iterate-clsql http://beta.quicklisp.org/archive/iterate-clsql/2013-03-12/iterate-clsql-20130312-http.tgz 2704 0950d7a9b29b8ddb9d16b45b9096bdae 8f74118d5f989b73db760bcb0a794e23fa185a0a iterate-clsql-20130312-http iterate-clsql.asd -jenkins http://beta.quicklisp.org/archive/jenkins/2013-03-12/jenkins-20130312-git.tgz 15878 53049d3dd8dfe5ea36738005c786f8d0 f3a1fad4ff41d91901a8fe5484bbb2b5df746119 jenkins-20130312-git jenkins.api.asd -jingoh http://beta.quicklisp.org/archive/jingoh/2022-07-07/jingoh-20220707-git.tgz 90998 498fb32c6e9cb4fb1f04fb5958fb31e5 35ad9c2d09d554fb0174a4f75af0ea8938e01ae0 jingoh-20220707-git documentizer/jingoh.documentizer.asd documentizer/spec/jingoh.documentizer.test.asd examiner/jingoh.examiner.asd examiner/spec/jingoh.examiner.test.asd generator/jingoh.generator.asd generator/spec/jingoh.generator.test.asd jingoh.asd org/jingoh.org.asd org/spec/jingoh.org.test.asd parallel/jingoh.parallel.asd parallel/spec/jingoh.parallel.test.asd reader/jingoh.reader.asd reader/spec/jingoh.reader.test.asd tester/jingoh.tester.asd tester/spec/jingoh.tester.test.asd -jonathan http://beta.quicklisp.org/archive/jonathan/2020-09-25/jonathan-20200925-git.tgz 161447 27cad3c107544f587f9f33295c10d81e 83d396bc184d7dc3258910c5785552f7bc5d489f jonathan-20200925-git jonathan-test.asd jonathan.asd -jose http://beta.quicklisp.org/archive/jose/2022-03-31/jose-20220331-git.tgz 14839 695e1cb1943a3304d8bb9044836c351e 2de09eb11de917d6888455a78b555f6564515b82 jose-20220331-git jose.asd -journal http://beta.quicklisp.org/archive/journal/2023-02-14/journal-20230214-git.tgz 163254 b1014634b8086604cdc01cae408155a0 b06f6511992b4b89d652a7f258d42b63e4fcd486 journal-20230214-git journal.asd -jp-numeral http://beta.quicklisp.org/archive/jp-numeral/2022-11-06/jp-numeral-20221106-git.tgz 42086 27c8108ee07b3d41d12720ed0e25c10c 6559a621c1cc18730f22828c962960d2ebc7223e jp-numeral-20221106-git jp-numeral-test.asd jp-numeral.asd -jpeg-turbo http://beta.quicklisp.org/archive/jpeg-turbo/2020-12-20/jpeg-turbo-20201220-git.tgz 9904 1f516f53239cd39b0ba2a52b845b6380 51744509973a5e45a7442c817c0a086749724c81 jpeg-turbo-20201220-git jpeg-turbo.asd -jpl-queues http://beta.quicklisp.org/archive/jpl-queues/2010-10-06/jpl-queues-0.1.tgz 15113 7c3d14c955db0a5c8ece2b9409333ce0 39497c7cb7292433b5c5a83d7ceb7a6e09cac7b1 jpl-queues-0.1 jpl-queues.asd -js http://beta.quicklisp.org/archive/js/2023-02-14/js-20230214-git.tgz 65064 44e6eafe029dffe6d2cc52aba381d990 ebca4056a6b1f061b0d039201856ceea9d5a4663 js-20230214-git cl-js.asd -js-parser http://beta.quicklisp.org/archive/js-parser/2015-04-07/js-parser-20150407-git.tgz 67870 4b86296f7eb3542447528822f7fa2612 4b2e27dfa07c730235c2014740b4d91540d0f656 js-parser-20150407-git js-parser-tests.asd js-parser.asd -json-lib http://beta.quicklisp.org/archive/json-lib/2022-11-06/json-lib-20221106-git.tgz 31768 3373e6cc8fff62f62879a87d258aab9d f6a9cc4dcf8ccee539e104b8290a7a78d5d112f3 json-lib-20221106-git json-lib.asd -json-mop http://beta.quicklisp.org/archive/json-mop/2021-04-11/json-mop-20210411-git.tgz 7526 af57f1dbd2ab596bbbc0281a19a17de7 82ead13180f57dbd54974a251387f9ceebfa08dc json-mop-20210411-git json-mop.asd tests/json-mop-tests.asd -json-responses http://beta.quicklisp.org/archive/json-responses/2019-03-07/json-responses-20190307-hg.tgz 4722 27b0c30fe8df35ecbaa2a7e860191dc1 393cfe5d2254c49fb28ad2ba24a95d3ee5d26c89 json-responses-20190307-hg json-responses.asd -json-schema http://beta.quicklisp.org/archive/json-schema/2022-11-06/json-schema-20221106-git.tgz 111976 7e6c59c6fb8df47f60e47d5c2e9c6ef4 58a8324902d1acf0977c2a7a86740eb4fe158de5 json-schema-20221106-git json-schema.asd -json-streams http://beta.quicklisp.org/archive/json-streams/2017-10-19/json-streams-20171019-git.tgz 45679 b5ab07dce6bfa17782384ecd66bba4bc 8cc35c603b9fdef5e94b82da5dbb72f3551f5530 json-streams-20171019-git json-streams-tests.asd json-streams.asd -jsonrpc http://beta.quicklisp.org/archive/jsonrpc/2023-02-15/jsonrpc-20230215-git.tgz 13825 fb493c4b4f1fb192f01f7b6b9bb4ec27 923716886925e9bd384f3f3733e0dbf9a2d3b431 jsonrpc-20230215-git jsonrpc.asd -jsown http://beta.quicklisp.org/archive/jsown/2020-02-18/jsown-20200218-git.tgz 14981 ecf8bfcc2a2ccbab9baddca6592b34ba 2517e044a05b10514cd820cc76c15232273ee46d jsown-20200218-git jsown.asd tests/jsown-tests.asd -jsown-utils http://beta.quicklisp.org/archive/jsown-utils/2022-07-07/jsown-utils-20220707-git.tgz 3142 fd5f9abb01b1ae8111d79a42ce77c7d3 8fa3828bdbfb65f5496dde65c746fc26509cb164 jsown-utils-20220707-git jsown-utils.asd -jwacs http://beta.quicklisp.org/archive/jwacs/2018-02-28/jwacs-20180228-git.tgz 202732 9f9d92d2e616fddc3ceac0e5be375f8d 4e367cb507f1095f53b90aa52dab4b5ac83451f7 jwacs-20180228-git jwacs-tests.asd jwacs.asd -jzon http://beta.quicklisp.org/archive/jzon/2023-02-15/jzon-20230215-git.tgz 59590 46ff47d4b43780eb24c334b4550ed07e 9f81ddf4b9f04136b437b97acc75806d9b032914 jzon-20230215-git src/com.inuoe.jzon.asd test/com.inuoe.jzon-tests.asd -kebab http://beta.quicklisp.org/archive/kebab/2015-06-08/kebab-20150608-git.tgz 3165 b7136a488e5f7f202fd74c59516cac8e 7ba2ed7c0f2ed1ebc31f7c9776563257a5c12bdb kebab-20150608-git kebab-test.asd kebab.asd -kekule-clj http://beta.quicklisp.org/archive/kekule-clj/2022-11-06/kekule-clj-20221106-git.tgz 19944 0758aeaa123b39b599ed787667696c93 512c1da0b7f2159e2f8304c261fa828f32749619 kekule-clj-20221106-git kekule-clj.asd -kenzo http://beta.quicklisp.org/archive/kenzo/2020-03-25/kenzo-20200325-git.tgz 5286328 089acff0dbf9e5dc39491c803d2f79db 118c3900b45bc21760448060b7c6af87987d918f kenzo-20200325-git kenzo-test.asd kenzo.asd -keystone http://beta.quicklisp.org/archive/keystone/2020-04-27/keystone-20200427-git.tgz 4379942 cad54fc8c5b1b4b33e3c912f41f67947 47bffaaa0ed3fb22a6183bd6af0c2f9e98856acb keystone-20200427-git bindings/common-lisp/keystone.asd -kl-verify http://beta.quicklisp.org/archive/kl-verify/2012-09-09/kl-verify-20120909-git.tgz 1728 fd742a26d44433617cf60ded1b4954ac 573e3cde43bc677f4a5da6e76dc7d53923319c1f kl-verify-20120909-git kl-verify.asd -km http://beta.quicklisp.org/archive/km/2011-05-22/km-2-5-33.tgz 328656 f4ba865c0342c5cf8ebcb507becc5e56 57b80fb82b4ea580882fae61c663c79ba3e864ee km-2-5-33 km.asd -kmrcl http://beta.quicklisp.org/archive/kmrcl/2020-10-16/kmrcl-20201016-git.tgz 56206 f86bc410907f748c3c453469702755b8 cc08a0ff889ee59b6c063f8f0e8123df28f795c8 kmrcl-20201016-git kmrcl.asd -l-math http://beta.quicklisp.org/archive/l-math/2019-03-07/l-math-20190307-git.tgz 46344 1d72a81ab46e4ebfda1c749ca67a0e90 a5a68998c4bfebdf452c4d4386fab465051c7eb4 l-math-20190307-git l-math.asd -l-system http://beta.quicklisp.org/archive/l-system/2018-02-28/l-system-20180228-git.tgz 13953 d42ca0e95be4d4cb4390e62119ac7934 89f30dbbdbc8a60a242abc5c63f1daf7851691c8 l-system-20180228-git l-system-examples.asd l-system.asd -laap http://beta.quicklisp.org/archive/laap/2017-08-30/laap-20170830-git.tgz 15178 5d86b49f328d314cdf22a5bda9565f1a 8e90156c16ad1a0ff95b9f29bc8828bee5123101 laap-20170830-git laap.asd -lack http://beta.quicklisp.org/archive/lack/2023-02-14/lack-20230214-git.tgz 181454 fdcf4627bee29f50a691235446dc35b7 850eaa2e7530ed183739494447ce32e60b777241 lack-20230214-git lack-app-directory.asd lack-app-file.asd lack-component.asd lack-middleware-accesslog.asd lack-middleware-auth-basic.asd lack-middleware-backtrace.asd lack-middleware-csrf.asd lack-middleware-mount.asd lack-middleware-session.asd lack-middleware-static.asd lack-request.asd lack-response.asd lack-session-store-dbi.asd lack-session-store-redis.asd lack-test.asd lack-util-writer-stream.asd lack-util.asd lack.asd t-lack-component.asd t-lack-middleware-accesslog.asd t-lack-middleware-auth-basic.asd t-lack-middleware-backtrace.asd t-lack-middleware-csrf.asd t-lack-middleware-mount.asd t-lack-middleware-session.asd t-lack-middleware-static.asd t-lack-request.asd t-lack-session-store-dbi.asd t-lack-session-store-redis.asd t-lack-util.asd t-lack.asd -lake http://beta.quicklisp.org/archive/lake/2022-02-20/lake-20220220-git.tgz 21240 c9d4a105bd1bdecff09d44bc15181dbe 0ee04eb1c6ca671b5ea0bf7461df82881603bc6d lake-20220220-git lake-cli.asd lake-test.asd lake.asd -lambda-fiddle http://beta.quicklisp.org/archive/lambda-fiddle/2021-10-20/lambda-fiddle-20211020-git.tgz 6287 89c1c5a2066775e728e4b8051f67d932 ca2321b9acbdccc0bc3a16e5d513a608c54596a6 lambda-fiddle-20211020-git lambda-fiddle.asd -lambda-reader http://beta.quicklisp.org/archive/lambda-reader/2017-01-24/lambda-reader-20170124-git.tgz 3905 f2d0b70125707b31f1975a58b6c3523e e96b520a862982bb8bb801dca92c7ee744c8588a lambda-reader-20170124-git lambda-reader-8bit.asd lambda-reader.asd -lambdalite http://beta.quicklisp.org/archive/lambdalite/2014-12-17/lambdalite-20141217-git.tgz 6077 77d34562c5527b0b771d923704e74420 b1334d9c1402362a9c3aeb17f0c53f065bbec9bb lambdalite-20141217-git lambdalite.asd -language-codes http://beta.quicklisp.org/archive/language-codes/2021-05-31/language-codes-20210531-git.tgz 68791 d6fbb263eac07da83aaa9c30be725c13 af59c9db5089af642763246cac118a75d1108c1c language-codes-20210531-git language-codes.asd -lass http://beta.quicklisp.org/archive/lass/2023-02-14/lass-20230214-git.tgz 23119 04dce58beadee215171e3721734157f0 2f1439e6508d8fefa1800e969dbc91ba625583f6 lass-20230214-git binary-lass.asd lass.asd -lass-flexbox http://beta.quicklisp.org/archive/lass-flexbox/2016-02-08/lass-flexbox-20160208-git.tgz 3151 7307dc8d1b5133e50ebb930d6a754edc a45b8c9e8663e6d99d48dc86a6799c4e50d78466 lass-flexbox-20160208-git lass-flexbox-test.asd lass-flexbox.asd -lassie http://beta.quicklisp.org/archive/lassie/2014-07-13/lassie-20140713-git.tgz 11181 3cd995df3ef888663c6a2237567cac27 f7398a93be3c19ae0e84a9b22d06638f56e6cf95 lassie-20140713-git lassie.asd -lastfm http://beta.quicklisp.org/archive/lastfm/2019-10-07/lastfm-20191007-git.tgz 7538 dc29a7688ade882f2c65396d2086f9b9 9a4b61c1bed6af4fbacbf4ab77207409dbc349b5 lastfm-20191007-git lastfm.asd -latex-table http://beta.quicklisp.org/archive/latex-table/2018-03-28/latex-table-20180328-git.tgz 44576 9f102a30b9f31cda67570fdf37c11401 b7f7e7b83296ca127278daa932dd6b9377393e76 latex-table-20180328-git latex-table.asd -latter-day-paypal http://beta.quicklisp.org/archive/latter-day-paypal/2022-11-06/latter-day-paypal-20221106-git.tgz 13342 65295d784368087618da801534b9e471 2645e8eea6938021bf9d962e283b0feb36bbcc6a latter-day-paypal-20221106-git latter-day-paypal.asd -lazy http://beta.quicklisp.org/archive/lazy/2020-09-25/lazy-20200925-git.tgz 1558 e3cd53c9f9ad7d84dd972d70e1c196b1 c61b4f710ea0119ad690cf6cfb7817583ae0b2c6 lazy-20200925-git lazy.asd -legion http://beta.quicklisp.org/archive/legion/2021-10-20/legion-20211020-git.tgz 6145 157c8c5cb74d26a72372c40506e82fa7 36929bd08eaadcc5f2619758409e265e406d27c8 legion-20211020-git legion-test.asd legion.asd -legit http://beta.quicklisp.org/archive/legit/2021-10-20/legit-20211020-git.tgz 28792 1d8531d126b10a1ed6bdec81179f9472 cfc2961a9495774f6b5c6c0400077d64cd98b7bb legit-20211020-git legit.asd -lense http://beta.quicklisp.org/archive/lense/2020-12-20/lense-20201220-git.tgz 4689 c0e59beeca17eecb58c99218ede96c62 eb6bc6b13ed2d399626508eeffc376bcfd183019 lense-20201220-git lense.asd -let-over-lambda http://beta.quicklisp.org/archive/let-over-lambda/2022-03-31/let-over-lambda-20220331-git.tgz 9464 055c752b42089fa73c47d8de313b6c6c 61bc5e740d7ec54042d14361da1cc76b24412591 let-over-lambda-20220331-git let-over-lambda-test.asd let-over-lambda.asd -let-plus http://beta.quicklisp.org/archive/let-plus/2019-11-30/let-plus-20191130-git.tgz 11247 1b8d1660ed67852ea31cad44a6fc15d0 e5ff604e4809908974fafaaf2af49e2cc0f8bcca let-plus-20191130-git let-plus.asd -letrec http://beta.quicklisp.org/archive/letrec/2019-03-07/letrec-20190307-hg.tgz 1899 68eed8ac600a1c2f157a3f6921efdfec ad8fb4a17a629ca025b5d6a8fda50ec84f5c8a8e letrec-20190307-hg letrec.asd -lev http://beta.quicklisp.org/archive/lev/2015-05-05/lev-20150505-git.tgz 9520 10f340f7500beb98b5c0d4a9876131fb e01073c528dbdfdaae90486095172dffc2c5c748 lev-20150505-git lev.asd -leveldb http://beta.quicklisp.org/archive/leveldb/2016-05-31/leveldb-20160531-git.tgz 6169 fa515cf6ba4109ee89db4c23039bff7b 0dc56929759d6562246601b782dc6fd6c1dbadb1 leveldb-20160531-git leveldb.asd -levenshtein http://beta.quicklisp.org/archive/levenshtein/2010-10-06/levenshtein-1.0.tgz 761 6266196d57f78c0dc894af44ecb9d223 bd6dc7c06dcde4ed721d0513cab44ffde6568bea levenshtein-1.0 levenshtein.asd -lfarm http://beta.quicklisp.org/archive/lfarm/2015-06-08/lfarm-20150608-git.tgz 41956 4cc91df44a932b3175a1eabf73d6e42d d0020b44060e11ef149b366645d915fb1cecff06 lfarm-20150608-git lfarm-admin.asd lfarm-client.asd lfarm-common.asd lfarm-gss.asd lfarm-launcher.asd lfarm-server.asd lfarm-ssl.asd lfarm-test.asd -lhstats http://beta.quicklisp.org/archive/lhstats/2012-01-07/lhstats-20120107-git.tgz 42573 828738a13c638d9d090439e57aaaf0ef 655b38385e0cb69d344e58c1dd7331a7f314a0af lhstats-20120107-git lhstats.asd -liblmdb http://beta.quicklisp.org/archive/liblmdb/2017-08-30/liblmdb-20170830-git.tgz 4501 32fbfb193f327493ade3440f5bf9e989 2a355ed6a5a753f2a59c6584979056b5e5dc9bde liblmdb-20170830-git liblmdb.asd -lichat-ldap http://beta.quicklisp.org/archive/lichat-ldap/2019-07-10/lichat-ldap-20190710-git.tgz 3001 6ab1394eaf6d55b04d40e5d229b30a51 811b669faaec5248b59e91f74d85f3aa21aab9b5 lichat-ldap-20190710-git lichat-ldap.asd -lichat-protocol http://beta.quicklisp.org/archive/lichat-protocol/2022-07-07/lichat-protocol-20220707-git.tgz 56969 aec17f5e626f2f412b45cbbda5ec6d4a df20514237279abd03c6dff93abbabca18c9ae18 lichat-protocol-20220707-git lichat-protocol.asd -lichat-serverlib http://beta.quicklisp.org/archive/lichat-serverlib/2022-02-20/lichat-serverlib-20220220-git.tgz 15954 dc838bf57228e9e5ebdabad7d417a76f f045fced85634a3811d70063f1e4ba38090b629d lichat-serverlib-20220220-git lichat-serverlib.asd -lichat-tcp-client http://beta.quicklisp.org/archive/lichat-tcp-client/2022-07-07/lichat-tcp-client-20220707-git.tgz 8108 42a4155e5908c46170e76f342a72c446 5302db2eab1fa5d11484fe01a8ebff722eb38956 lichat-tcp-client-20220707-git lichat-tcp-client.asd -lichat-tcp-server http://beta.quicklisp.org/archive/lichat-tcp-server/2022-02-20/lichat-tcp-server-20220220-git.tgz 7681 2bb3a348984c117248373d256035627e 600bfc5187f746c10186b71334f3ccc8362402b8 lichat-tcp-server-20220220-git lichat-tcp-server.asd -lichat-ws-server http://beta.quicklisp.org/archive/lichat-ws-server/2022-02-20/lichat-ws-server-20220220-git.tgz 7055 ebf3a980ef74ca635a592de32da608b0 98c9543e7f4226577adb95c65de243629976026b lichat-ws-server-20220220-git lichat-ws-server.asd -lift http://beta.quicklisp.org/archive/lift/2023-02-14/lift-20230214-git.tgz 1132084 3b8a5972420957043252849b8bccce64 eda1849ce947c53f49d788402fdd2c29eb47e142 lift-20230214-git lift-documentation.asd lift-test.asd lift.asd -lila http://beta.quicklisp.org/archive/lila/2019-10-07/lila-20191007-git.tgz 18320 d6b601d97d413abf9f401d5e6c5a0b48 2a13279fa64442360d5b88c2a2bbfda2addb8b3f lila-20191007-git lila.asd -lime http://beta.quicklisp.org/archive/lime/2015-12-18/lime-20151218-git.tgz 14590 1c43d6c9dbd8db49e0e25234477775d1 c60882af85f65f2e0e6cd4bea80112d862848c94 lime-20151218-git lime-example.asd lime-test.asd lime.asd -linear-programming http://beta.quicklisp.org/archive/linear-programming/2022-11-06/linear-programming-20221106-git.tgz 31923 36f6270cda931a5744599bd22b4a26e0 90b1bcae60ee689b16d665f56470c10a15983dc1 linear-programming-20221106-git linear-programming-test.asd linear-programming.asd -linear-programming-glpk http://beta.quicklisp.org/archive/linear-programming-glpk/2022-11-06/linear-programming-glpk-20221106-git.tgz 21796 863651167d29a8d0d26439c0eb220ded af82c0f36efcea44ac22e137ce9263c59b928d2a linear-programming-glpk-20221106-git linear-programming-glpk.asd -linedit http://beta.quicklisp.org/archive/linedit/2018-04-30/linedit-20180430-git.tgz 21140 a9f679411d01ec162eb1ba7c76e25d7a 82f1fab330a425fe3406a8a8a707575590cecf9f linedit-20180430-git linedit.asd -lineva http://beta.quicklisp.org/archive/lineva/2022-11-06/lineva-20221106-git.tgz 22712 dc953d6fbbcbb461bf7c1fbd8966656d 2d7a79aaaae63fc50e5d2664d4956bd1629cf1ae lineva-20221106-git lineva.asd -linewise-template http://beta.quicklisp.org/archive/linewise-template/2016-02-08/linewise-template-20160208-git.tgz 14893 396034dd6aab87bfe5db95b0064187b2 1cbddfa14e8620ad6eb87b8041bd5d3bf44abd4d linewise-template-20160208-git linewise-template.asd -linux-packaging http://beta.quicklisp.org/archive/linux-packaging/2021-10-20/linux-packaging-20211020-git.tgz 6936 58473ac4ed7eb21cf894d0c67b2ecf09 4ccd2d975a579e0a4a344c44f80aecdc0192611d linux-packaging-20211020-git linux-packaging-tests.asd linux-packaging.asd -lionchat http://beta.quicklisp.org/archive/lionchat/2022-02-20/lionchat-20220220-git.tgz 313318 c0d4c9729b3ce3d9ec59e575bfdaaf29 33ea49da6ad0ef78fb45aa77a646d62f59278f31 lionchat-20220220-git lionchat.asd -lisa http://beta.quicklisp.org/archive/lisa/2012-04-07/lisa-20120407-git.tgz 165079 6d999f92e2d894a7c4785b044955a49f b8b3350d837c7ea807163213dece93d59db0c725 lisa-20120407-git lisa.asd -lisp-binary http://beta.quicklisp.org/archive/lisp-binary/2022-11-06/lisp-binary-20221106-git.tgz 932834 331abb6341f170521793374810bf5c1d 5b01f3d0d5909a8bb82b62e2e9dec708dd7eb528 lisp-binary-20221106-git lisp-binary.asd test/lisp-binary-test.asd -lisp-chat http://beta.quicklisp.org/archive/lisp-chat/2021-02-28/lisp-chat-20210228-git.tgz 98989 32284bba3f0fa50df28fd0221e284320 c03d99063ad853e8975dade8855bd47bf2b0d747 lisp-chat-20210228-git lisp-chat.asd -lisp-critic http://beta.quicklisp.org/archive/lisp-critic/2022-11-06/lisp-critic-20221106-git.tgz 21111 86662679a3f3d803b221b515923e9c2c cef716fad91c9ab5917bf9439079a005e8566ad0 lisp-critic-20221106-git ckr-tables.asd lisp-critic.asd -lisp-executable http://beta.quicklisp.org/archive/lisp-executable/2018-08-31/lisp-executable-20180831-git.tgz 23139 63ea5e1673e9b2d90df1a2bbe10fd7b5 ec9d633c4ac367fa2f756e9960a83eb3805d3f71 lisp-executable-20180831-git lisp-executable-example.asd lisp-executable-tests.asd lisp-executable.asd -lisp-gflags http://beta.quicklisp.org/archive/lisp-gflags/2020-12-20/lisp-gflags-20201220-git.tgz 8244 593818f00cd4505eefbf7190b06640cc 054afc338359523a7b6842fb82e3c20db2d4721e lisp-gflags-20201220-git com.google.flag.asd -lisp-interface-library http://beta.quicklisp.org/archive/lisp-interface-library/2021-12-30/lisp-interface-library-20211230-git.tgz 61132 ba5195a32af6cd5cc4e4b57c9ebc924f e695c2d9e57f1770e5cb6acceb5da9505d29e90a lisp-interface-library-20211230-git lil.asd lisp-interface-library.asd -lisp-invocation http://beta.quicklisp.org/archive/lisp-invocation/2018-02-28/lisp-invocation-20180228-git.tgz 10863 3ed327ad1fc47f27cc1332d9a8b7e20e 49234e20c19ecb65fa0d743684c92965e8978160 lisp-invocation-20180228-git lisp-invocation.asd -lisp-namespace http://beta.quicklisp.org/archive/lisp-namespace/2022-11-06/lisp-namespace-20221106-git.tgz 9786 cd8e7c45781e579ae534b5704cd4de6c 6b4061f20c59281e1b508f0b268e53c799b04cb8 lisp-namespace-20221106-git lisp-namespace.asd lisp-namespace.test.asd -lisp-pay http://beta.quicklisp.org/archive/lisp-pay/2023-02-14/lisp-pay-20230214-git.tgz 38982 688a7326ad8864a8142adc2228d920ee 2bdc393ccd76abf9ee4ad35de4958e4c4bf07c3f lisp-pay-20230214-git lisp-pay.asd -lisp-preprocessor http://beta.quicklisp.org/archive/lisp-preprocessor/2020-07-15/lisp-preprocessor-20200715-git.tgz 5181 5e763b408436f94ce10fca3eaf5bd26a 6d594f92bb06366aa03c6e7d2251a9b2977918f8 lisp-preprocessor-20200715-git lisp-preprocessor.asd -lisp-stat http://beta.quicklisp.org/archive/lisp-stat/2022-11-06/lisp-stat-20221106-git.tgz 238213 3e1e343c219c3878f42f02b1670b4fec d848f5afcae52b2c64a5ab9dbf19137cbf178c58 lisp-stat-20221106-git lisp-stat.asd -lisp-unit http://beta.quicklisp.org/archive/lisp-unit/2017-01-24/lisp-unit-20170124-git.tgz 18163 2c55342cb8af18b290bb6a28c75deac5 234203b4f9903cd82b1698f3a90439fb2bbc3f7e lisp-unit-20170124-git lisp-unit.asd -lisp-unit2 http://beta.quicklisp.org/archive/lisp-unit2/2023-02-14/lisp-unit2-20230214-git.tgz 34378 eb7878b255e4f901dcc75d01fddff765 a733d4d96504f930bc4e86dd29457541bc91f5f6 lisp-unit2-20230214-git lisp-unit2.asd -lisp-zmq http://beta.quicklisp.org/archive/lisp-zmq/2020-02-18/lisp-zmq-20200218-git.tgz 15423 fdae33782f1a6ebd00de467164dcbaed 0bbe3ca1992d63dbf7f00dd6611aeb6a7b29118e lisp-zmq-20200218-git zmq-examples.asd zmq-test.asd zmq.asd -lispbuilder http://beta.quicklisp.org/archive/lispbuilder/2021-08-07/lispbuilder-20210807-git.tgz 7549861 54361f330a8daa23f55d84e29eb9e213 1d295c4fad1a43195f9ee625fff0bc4b99c1058e lispbuilder-20210807-git lispbuilder-lexer/lispbuilder-lexer.asd lispbuilder-net/lispbuilder-net-cffi.asd lispbuilder-net/lispbuilder-net.asd lispbuilder-opengl/lispbuilder-opengl-1-1.asd lispbuilder-opengl/lispbuilder-opengl-examples.asd lispbuilder-regex/lispbuilder-regex.asd lispbuilder-sdl-gfx/lispbuilder-sdl-gfx-binaries.asd lispbuilder-sdl-gfx/lispbuilder-sdl-gfx-cffi.asd lispbuilder-sdl-gfx/lispbuilder-sdl-gfx-examples.asd lispbuilder-sdl-gfx/lispbuilder-sdl-gfx.asd lispbuilder-sdl-image/lispbuilder-sdl-image-binaries.asd lispbuilder-sdl-image/lispbuilder-sdl-image-cffi.asd lispbuilder-sdl-image/lispbuilder-sdl-image-examples.asd lispbuilder-sdl-image/lispbuilder-sdl-image.asd lispbuilder-sdl-mixer/lispbuilder-sdl-mixer-binaries.asd lispbuilder-sdl-mixer/lispbuilder-sdl-mixer-cffi.asd lispbuilder-sdl-mixer/lispbuilder-sdl-mixer-examples.asd lispbuilder-sdl-mixer/lispbuilder-sdl-mixer.asd lispbuilder-sdl-ttf/lispbuilder-sdl-ttf-binaries.asd lispbuilder-sdl-ttf/lispbuilder-sdl-ttf-cffi.asd lispbuilder-sdl-ttf/lispbuilder-sdl-ttf-examples.asd lispbuilder-sdl-ttf/lispbuilder-sdl-ttf.asd lispbuilder-sdl/cocoahelper.asd lispbuilder-sdl/lispbuilder-sdl-assets.asd lispbuilder-sdl/lispbuilder-sdl-base.asd lispbuilder-sdl/lispbuilder-sdl-binaries.asd lispbuilder-sdl/lispbuilder-sdl-cffi.asd lispbuilder-sdl/lispbuilder-sdl-cl-vectors-examples.asd lispbuilder-sdl/lispbuilder-sdl-cl-vectors.asd lispbuilder-sdl/lispbuilder-sdl-examples.asd lispbuilder-sdl/lispbuilder-sdl-vecto-examples.asd lispbuilder-sdl/lispbuilder-sdl-vecto.asd lispbuilder-sdl/lispbuilder-sdl.asd lispbuilder-windows/lispbuilder-windows.asd lispbuilder-yacc/lispbuilder-yacc.asd -lispcord http://beta.quicklisp.org/archive/lispcord/2020-09-25/lispcord-20200925-git.tgz 27463 b3b4b60f2e788e5d9511f1701bca2375 0f666cbb07e74cb35c5666bd504ff4919694230f lispcord-20200925-git examples/example-bot/example-bot.asd lispcord.asd -lispqr http://beta.quicklisp.org/archive/lispqr/2021-06-30/lispqr-20210630-git.tgz 24993 b82f915d27d0a7c8f85aa6f7e359fc71 0b1da370a6c92a985ce56ca4556f14cbc5682050 lispqr-20210630-git lispqr.asd -list-named-class http://beta.quicklisp.org/archive/list-named-class/2020-03-25/list-named-class-20200325-git.tgz 5334 8f26a03d1bc97bcb2cf1af8c0640c2c5 af1ef6f420b466276b87ebf456290b5219db4a02 list-named-class-20200325-git list-named-class.asd -listoflist http://beta.quicklisp.org/archive/listoflist/2014-08-26/listoflist-20140826-git.tgz 12188 598138f6ddf5241eaa283d0adce7878d c4138b36e50717f3e826fbc0d77cd9c00d0c9612 listoflist-20140826-git listoflist.asd -listopia http://beta.quicklisp.org/archive/listopia/2021-04-11/listopia-20210411-git.tgz 10768 ebc6eead50c461528b3404e680da54cf 5fe15a3fd63876ec92125f23ff03fc3768f87eb4 listopia-20210411-git listopia-bench.asd listopia.asd -literate-lisp http://beta.quicklisp.org/archive/literate-lisp/2022-11-06/literate-lisp-20221106-git.tgz 115143 848b56b42e94c966b20a6c95063549c2 b03f6cfb6290effbcf9b181a3ab81a47f8481f6d literate-lisp-20221106-git literate-demo.asd literate-lisp.asd -litterae http://beta.quicklisp.org/archive/litterae/2020-07-15/litterae-20200715-git.tgz 19993 628d506e4a072df70508ebb1503529c2 9fa4dd608a0a20eb9d7f07694ede78801817a11a litterae-20200715-git litterae-test-system.asd litterae.asd -livesupport http://beta.quicklisp.org/archive/livesupport/2019-05-21/livesupport-release-quicklisp-71e6e412-git.tgz 2939 9eb376b26689ac54d2a51f5189587ec5 e2df3d1a994fad4f8149c2795dc5d7de5a10d5ce livesupport-release-quicklisp-71e6e412-git livesupport.asd -lla http://beta.quicklisp.org/archive/lla/2018-03-28/lla-20180328-git.tgz 38969 61d583603d5cacf9d81486a0cfcfaf6a 5c747b960f4ed782de3a11505eb02fef3b7b5d0a lla-20180328-git lla.asd -lmdb http://beta.quicklisp.org/archive/lmdb/2023-02-14/lmdb-20230214-git.tgz 91569 cf4576044e02fde2b9de898f8d4d48bc 677800ecdf0506b9e90ba8e79fa42ceb6e764574 lmdb-20230214-git lmdb.asd -lml http://beta.quicklisp.org/archive/lml/2015-09-23/lml-20150923-git.tgz 16279 4250f2b2c4d110cc728645e8a1eba963 5e9d7018b7487783aeec69ff4ac283a56bccd1ef lml-20150923-git lml-tests.asd lml.asd -lml2 http://beta.quicklisp.org/archive/lml2/2015-09-23/lml2-20150923-git.tgz 31590 99d76c1971e4fceaa6496291c4ede90b b119542c292e0ff8ed86874cbe6ee64a6c16a9a0 lml2-20150923-git lml2-tests.asd lml2.asd -local-package-aliases http://beta.quicklisp.org/archive/local-package-aliases/2020-12-20/local-package-aliases-20201220-git.tgz 8439 953d9d5e8a35191698d57f33d4fc1dd7 a7ea98836f90f1b3c7c5e6379a828a38701351db local-package-aliases-20201220-git local-package-aliases.asd -local-time http://beta.quicklisp.org/archive/local-time/2023-02-14/local-time-20230214-git.tgz 740395 71488a9627f4ded3cba1ddb059edbb6f 4854fd62e5af88e5a7869cd9f63da12d2517b59f local-time-20230214-git cl-postgres+local-time.asd local-time.asd -local-time-duration http://beta.quicklisp.org/archive/local-time-duration/2018-04-30/local-time-duration-20180430-git.tgz 10333 8ad2f86ea33d4c7b3014e2152632b88c 0b443efd31c990ad022e9c16576bf68b2359de0b local-time-duration-20180430-git cl-postgres+local-time-duration.asd local-time-duration.asd -log4cl http://beta.quicklisp.org/archive/log4cl/2021-12-09/log4cl-20211209-git.tgz 922123 569122fed30c089b67527926468dcf44 5e2817d6063de92a20e6f5d2dae2287e67c1b0d1 log4cl-20211209-git log4cl-examples.asd log4cl.asd log4cl.log4slime.asd log4cl.log4sly.asd -log4cl-extras http://beta.quicklisp.org/archive/log4cl-extras/2023-02-14/log4cl-extras-20230214-git.tgz 28454 cd53b76eeeb346639777da4bfffbd05b 6cdff2f34ef604edc33f5a82d685293e6431b023 log4cl-extras-20230214-git log4cl-extras-test.asd log4cl-extras.asd -log5 http://beta.quicklisp.org/archive/log5/2011-06-19/log5-20110619-git.tgz 29106 b05a585fbf58b25367c05ec8bb814e8c 07d72b5327c5e8795eac99d235cc1a483a4cbafd log5-20110619-git log5.asd -lorem-ipsum http://beta.quicklisp.org/archive/lorem-ipsum/2018-10-18/lorem-ipsum-20181018-git.tgz 3756 4a89cae2f82951c8cf76348b5f0600ee 6216e403bb0c4da378eb6b16e094926355c13549 lorem-ipsum-20181018-git lorem-ipsum.asd -lowlight http://beta.quicklisp.org/archive/lowlight/2013-12-11/lowlight-20131211-git.tgz 17517 83b71610e5b7de0979ffc9dcff43e129 d90ad3e313ce9d51984519b5512fd892ab513f77 lowlight-20131211-git doc/lowlight.doc.asd lowlight.asd old/lowlight.old.asd tests/lowlight.tests.asd -lparallel http://beta.quicklisp.org/archive/lparallel/2016-08-25/lparallel-20160825-git.tgz 78551 6393e8d0c0cc9ed1c88b6e7cca8de5df 1514c95041efd503f335e2cd96ba5ef1537415cc lparallel-20160825-git lparallel-bench.asd lparallel-test.asd lparallel.asd -lquery http://beta.quicklisp.org/archive/lquery/2020-12-20/lquery-20201220-git.tgz 38666 a71685848959cf33cd6963b4a5f9e2ed 9ffafbe59d6488fad110339e51db5bc7cf048a62 lquery-20201220-git lquery-test.asd lquery.asd -lredis http://beta.quicklisp.org/archive/lredis/2014-11-06/lredis-20141106-git.tgz 8338 c3696a2d2665fd8c31002c3e9e22f6b6 49824a4b3d2730746a19c94536f68971cbb48ea1 lredis-20141106-git lredis.asd -lsx http://beta.quicklisp.org/archive/lsx/2022-02-20/lsx-20220220-git.tgz 7187 f61b8dd8cde6ffb66535698fea1d240f 99f4fad12677839467feb18662df2131fafcf8c1 lsx-20220220-git cl-syntax-lsx.asd lsx.asd -ltk http://beta.quicklisp.org/archive/ltk/2022-11-06/ltk-20221106-git.tgz 62697 36a84b05e25ed43f1efb048714c87a2a 4711cfc5e460fba40cb1713a0029255d7b524b7d ltk-20221106-git ltk/ltk-mw.asd ltk/ltk-remote.asd ltk/ltk.asd -luckless http://beta.quicklisp.org/archive/luckless/2022-11-06/luckless-20221106-git.tgz 21394 b2dc3801c1b2888da7f9f33c0654c59a 75837877a80bd674941f321c75d3c597edad9038 luckless-20221106-git luckless-test.asd luckless.asd -lunamech-matrix-api http://beta.quicklisp.org/archive/lunamech-matrix-api/2023-02-14/lunamech-matrix-api-20230214-git.tgz 54119 c9f7aff1d4a127466104a42ba09e61ca 0759a223ccf2e480e5edd58a51bbdbcaf397faea lunamech-matrix-api-20230214-git lunamech-matrix-api.asd -lw-compat http://beta.quicklisp.org/archive/lw-compat/2016-03-18/lw-compat-20160318-git.tgz 2165 024b8e63d13fb12dbcccaf18cf4f8dfa 92259792af7830d80a868c5f06b2510ead325110 lw-compat-20160318-git lw-compat.asd -lyrics http://beta.quicklisp.org/archive/lyrics/2021-08-07/lyrics-20210807-git.tgz 4500 09c8efbb59e2894bcd7ad63a6a6c0526 94406adeb980bac71bdc80607b2faf47b9f68106 lyrics-20210807-git lyrics.asd -macro-html http://beta.quicklisp.org/archive/macro-html/2015-12-18/macro-html-20151218-git.tgz 18865 4c73847f830a8ccacd87e5ea76d44bb3 3b03c5253738adea7d0f7b8a67617356a293c7cc macro-html-20151218-git macro-html.asd -macro-level http://beta.quicklisp.org/archive/macro-level/2012-10-13/macro-level-1.0.1.tgz 1907 486ad598536a7b719f04c0f756d9017f 355a1254441193c1698f2641e84f3dfc356f8591 macro-level-1.0.1 macro-level.asd -macrodynamics http://beta.quicklisp.org/archive/macrodynamics/2018-02-28/macrodynamics-20180228-git.tgz 7668 8f226b02f6442d439edc80da09bd8a72 dcffeeebbb8b5084fd1517cab04abb515fb9a4a6 macrodynamics-20180228-git macrodynamics.asd -macroexpand-dammit http://beta.quicklisp.org/archive/macroexpand-dammit/2013-11-11/macroexpand-dammit-20131111-http.tgz 3604 6290fa304f986ea05e084c6342dd0c0f e0b77f879b8fd5a85120cae0b2a90ae17c93fc9d macroexpand-dammit-20131111-http macroexpand-dammit.asd -madeira-port http://beta.quicklisp.org/archive/madeira-port/2015-07-09/madeira-port-20150709-git.tgz 4844 f3d5a6aea61ecb83c56fb123d6a1ecf8 841f3bac6df3588220adc49c5caccaf495800c03 madeira-port-20150709-git madeira-port.asd -magic-ed http://beta.quicklisp.org/archive/magic-ed/2020-03-25/magic-ed-20200325-git.tgz 4442 b790a6a7f06c97ef1586b8e223cb8a63 f50ce6a7c280684bb8b5fba89409500eba2debb3 magic-ed-20200325-git magic-ed.asd -magicffi http://beta.quicklisp.org/archive/magicffi/2021-05-31/magicffi-20210531-git.tgz 11901 f5494194b62a16cbd43929ca27641837 21c5aaa1843262429ac47cfebff86a19c8feb62d magicffi-20210531-git magicffi.asd -magicl http://beta.quicklisp.org/archive/magicl/2021-04-11/magicl-v0.9.1.tgz 544160 5b28a64d6577cc9b97b7719a82ae4d1c c5c74e57e8d39d6eb222ec9507a81bc11f87f4bd magicl-v0.9.1 magicl-examples.asd magicl-gen.asd magicl-tests.asd magicl-transcendental.asd magicl.asd -maiden http://beta.quicklisp.org/archive/maiden/2023-02-14/maiden-20230214-git.tgz 238989 e2c5047d6e123d0d08f17f73a7bd983d aaeadb98e53f239ab21e234261665c7a04197858 maiden-20230214-git agents/accounts/maiden-accounts.asd agents/activatable/maiden-activatable.asd agents/blocker/maiden-blocker.asd agents/chatlog/maiden-chatlog.asd agents/commands/maiden-commands.asd agents/core-manager/maiden-core-manager.asd agents/counter/maiden-counter.asd agents/crimes/maiden-crimes.asd agents/dictionary/maiden-dictionary.asd agents/emoticon/maiden-emoticon.asd agents/help/maiden-help.asd agents/lastfm/maiden-lastfm.asd agents/location/maiden-location.asd agents/lookup/maiden-lookup.asd agents/markov/maiden-markov.asd agents/medals/maiden-medals.asd agents/notify/maiden-notify.asd agents/permissions/maiden-permissions.asd agents/relay/maiden-channel-relay.asd agents/silly/maiden-silly.asd agents/talk/maiden-talk.asd agents/throttle/maiden-throttle.asd agents/time/maiden-time.asd agents/trivia/maiden-trivia.asd agents/urlinfo/maiden-urlinfo.asd agents/vote/maiden-vote.asd agents/weather/maiden-weather.asd clients/irc/maiden-irc.asd clients/lichat/maiden-lichat.asd clients/relay/maiden-relay.asd clients/twitter/maiden-twitter.asd maiden.asd modules/api-access/maiden-api-access.asd modules/client-entities/maiden-client-entities.asd modules/networking/maiden-networking.asd modules/serialize/maiden-serialize.asd modules/storage/maiden-storage.asd -maidenhead http://beta.quicklisp.org/archive/maidenhead/2022-03-31/maidenhead-20220331-git.tgz 14634 bc220da3787155a5b5a8439aa10a9478 f82e77aa1ee9032d8e8f4a8c7a510fcaeef1c0e0 maidenhead-20220331-git maidenhead.asd -mailbox http://beta.quicklisp.org/archive/mailbox/2013-10-03/mailbox-20131003-git.tgz 1907 fd52c2dc8d80c87013a6418b04c4c737 ee9f30c005b768a945c98fc466ec276a662b2b0b mailbox-20131003-git mailbox.asd -mailgun http://beta.quicklisp.org/archive/mailgun/2022-07-07/mailgun-20220707-git.tgz 10638 06085fc09b4dbd33ac3d318f9f8b98ac b1b87b8d4367a7579f1b1dc31ab037088dbe1d5b mailgun-20220707-git mailgun.asd -make-hash http://beta.quicklisp.org/archive/make-hash/2013-06-15/make-hash-20130615-git.tgz 361160 4f612ef068411284c88e0381fa4a0c7f a0f2260867e32967ef02f316b8d42d9d168c140f make-hash-20130615-git make-hash-tests.asd make-hash.asd -manifest http://beta.quicklisp.org/archive/manifest/2012-02-08/manifest-20120208-git.tgz 98532 16b500a79f0cd4a8f95760cb634cd617 13441aaf0b11a1275a8f72d0ec31908f60307556 manifest-20120208-git manifest.asd -map-bind http://beta.quicklisp.org/archive/map-bind/2012-08-11/map-bind-20120811-git.tgz 2092 a24c5c012e41b87f836b6d8ef318e7cd 047b3ccf3f9d433eb2104bd9da89de7f8e81a2a4 map-bind-20120811-git map-bind.asd -map-set http://beta.quicklisp.org/archive/map-set/2019-03-07/map-set-20190307-hg.tgz 2389 866dba36cdf060c943267cb79ccc0532 9b7c74de8b801583539807e28c676c5ed630bec3 map-set-20190307-hg map-set.asd -marching-cubes http://beta.quicklisp.org/archive/marching-cubes/2015-07-09/marching-cubes-20150709-git.tgz 97306 a44282b741e9dc43d40cb1979a6c7afe b8002c6a01dc8579d3f109c6ecd36dce88e9075f marching-cubes-20150709-git marching-cubes-example.asd marching-cubes-test.asd marching-cubes.asd -markdown.cl http://beta.quicklisp.org/archive/markdown.cl/2021-02-28/markdown.cl-20210228-git.tgz 21601 736db40fedbee2945ffccd8ef7dcb38e 89c6ff147d53ef6d42d4c7ccd3fe35adae929254 markdown.cl-20210228-git markdown.cl-test.asd markdown.cl.asd -markup http://beta.quicklisp.org/archive/markup/2023-02-14/markup-20230214-git.tgz 22839 7d7feef05382acd33551746424e8dcd0 f0d7e83205a29bafcfbf74205b09c58468a27ee5 markup-20230214-git markup.asd markup.test.asd -marshal http://beta.quicklisp.org/archive/marshal/2013-07-20/marshal-20130720-git.tgz 2921 7b2f8d0cb6c95f2418eca133a2e299b6 2c3d9e2c3b04cb581eb8f1f0dc94055176328029 marshal-20130720-git fmarshal-test.asd fmarshal.asd -math http://beta.quicklisp.org/archive/math/2022-11-06/math-20221106-git.tgz 74619 715e158c04703629ab1f955bf43049bd a80c018271c15259108dd64612f53642815c78e5 math-20221106-git math.asd -mathkit http://beta.quicklisp.org/archive/mathkit/2016-02-08/mathkit-20160208-git.tgz 5451 f00124bdf2eea4d18154a4497bf414f7 f5323f595ca08be75b394d1baa82380982dd2f4e mathkit-20160208-git mathkit.asd -matrix-case http://beta.quicklisp.org/archive/matrix-case/2021-10-20/matrix-case-20211020-git.tgz 4304 ac6adce8a99471866ef536ad73d425ea cae3c9b826f389fb1c77679977d386bb07af4781 matrix-case-20211020-git matrix-case.asd spec/matrix-case.test.asd -maxpc http://beta.quicklisp.org/archive/maxpc/2020-04-27/maxpc-20200427-git.tgz 25931 a40e8372eb4ad2bcd1fc1c6948e57df3 f77e66ade543c01db1c45a5430f13017fa8b3412 maxpc-20200427-git maxpc-test.asd maxpc.asd -mbe http://beta.quicklisp.org/archive/mbe/2020-02-18/mbe-20200218-git.tgz 14018 1d1a1c3541e231d74ba16e8b0bde550b 2b0511e666656123c208df72681110de3c93d9c5 mbe-20200218-git mbe.asd -mcase http://beta.quicklisp.org/archive/mcase/2021-10-20/mcase-20211020-git.tgz 2747 39f3a7bd07d2676ced4752062fb717e9 7dc0b3b9a0891dc9846bba9dc172896877410962 mcase-20211020-git mcase.asd spec/mcase.test.asd -mcclim http://beta.quicklisp.org/archive/mcclim/2023-02-14/mcclim-20230214-git.tgz 2612316 4d4a4fce561fb5dd593bdc68741bd7d2 5bbd841f654054b08732070cec1807ca4ffeeab6 mcclim-20230214-git Apps/Clouseau/clouseau.asd Apps/Debugger/clim-debugger.asd Apps/Functional-Geometry/functional-geometry.asd Apps/Listener/clim-listener.asd Apps/Scigraph/scigraph.asd Backends/CLX-fb/mcclim-clx-fb.asd Backends/CLX/mcclim-clx.asd Backends/Null/mcclim-null.asd Backends/PDF/clim-pdf.asd Backends/PostScript/clim-postscript-font.asd Backends/PostScript/clim-postscript.asd Backends/RasterImage/mcclim-raster-image.asd Backends/SVG/mcclim-svg.asd Backends/common/mcclim-backend-common.asd Core/clim-core.asd Core/clim.asd Examples/clim-examples.asd Experimental/tree-with-cross-edges/mcclim-tree-with-cross-edges.asd Extensions/Franz/mcclim-franz.asd Extensions/bezier/mcclim-bezier.asd Extensions/bitmap-formats/mcclim-bitmaps.asd Extensions/conditional-commands/conditional-commands.asd Extensions/dot/mcclim-dot.asd Extensions/fontconfig/mcclim-fontconfig.asd Extensions/fonts/mcclim-fonts.asd Extensions/harfbuzz/mcclim-harfbuzz.asd Extensions/layouts/mcclim-layouts.asd Extensions/render/mcclim-render.asd Extensions/tooltips/mcclim-tooltips.asd Libraries/Drei/Persistent/persistent.asd Libraries/Drei/cl-automaton/automaton.asd Libraries/Drei/drei-mcclim.asd Libraries/ESA/esa-mcclim.asd Libraries/Slim/slim.asd clim-lisp.asd mcclim.asd -md5 http://beta.quicklisp.org/archive/md5/2021-06-30/md5-20210630-git.tgz 16719 ecb1fa8eea6848c2f14fdfeb03d47056 f907b28a9a3d1ce16651dcf7245dedeed129acbb md5-20210630-git md5.asd -media-types http://beta.quicklisp.org/archive/media-types/2022-03-31/media-types-20220331-git.tgz 20739 bb9260ef382914525d4129442a65a50c 87a13478d7b05dff1bd17ff2d769585408045f78 media-types-20220331-git media-types.asd -mel-base http://beta.quicklisp.org/archive/mel-base/2018-02-28/mel-base-20180228-git.tgz 67969 17931e0cbfec8fafb7b825a0af0c897d 447445ec593bc3191d06233e505c9a55247f8be0 mel-base-20180228-git mel-base.asd -memoize http://beta.quicklisp.org/archive/memoize/2014-08-26/memoize-20140826-http.tgz 3547 bdf9cf51fb95293e42553045b7faea2f 1c29c09b7f60686ac929688b842db4c6bcb8f021 memoize-20140826-http memoize.asd -message-oo http://beta.quicklisp.org/archive/message-oo/2013-06-15/message-oo-20130615-git.tgz 2426 44631ce806432e2a55fdfdca7de414ac 95d35b35cfb93d1a19760a6291e5f756e05be25e message-oo-20130615-git message-oo.asd -messagebox http://beta.quicklisp.org/archive/messagebox/2021-10-20/messagebox-20211020-git.tgz 6795 b7a5bbe50de33075a9cf67039614e460 93a5f754c1c8492eaca8099c71e9836e71e431d3 messagebox-20211020-git messagebox.asd -meta http://beta.quicklisp.org/archive/meta/2015-06-08/meta-20150608-git.tgz 3371 3322d6d54783269122e087b1349e3171 1dfa5cc33d7d1840bfc0d5626758e3bce3e57914 meta-20150608-git meta.asd -meta-sexp http://beta.quicklisp.org/archive/meta-sexp/2020-10-16/meta-sexp-20201016-git.tgz 8562 7972ec9d0cad5afe6085e34da9e5394e cb25d50abf0297e4be6986a59a2910c1c4883d43 meta-sexp-20201016-git meta-sexp.asd -metabang-bind http://beta.quicklisp.org/archive/metabang-bind/2023-02-14/metabang-bind-20230214-git.tgz 22664 cb482e35ead2f579803c888cfceb86b3 8a2e03e4410b1546d44679f1232c15d844ad3b6d metabang-bind-20230214-git metabang-bind-test.asd metabang-bind.asd -metacopy http://beta.quicklisp.org/archive/metacopy/2017-04-03/metacopy-20170403-darcs.tgz 9186 caa5ac0a1f5e3741e7f789589ff537fe 559f0201e9fe8708b9211ef856ed35eefd0167f9 metacopy-20170403-darcs metacopy-with-contextl.asd metacopy.asd -metalock http://beta.quicklisp.org/archive/metalock/2020-09-25/metalock-20200925-git.tgz 2654 829164a633847affb9b4515197ca6198 3a9252501d37b168c68e5ec753b608e7aee377d8 metalock-20200925-git metalock.asd -metap http://beta.quicklisp.org/archive/metap/2015-05-05/metap-20150505-git.tgz 3176 1de5d80b35b75fa3c8f668adb2fb891e bc6cb669fe93462ad434fd620eeeac1b17b59aa5 metap-20150505-git metap-test.asd metap.asd -metatilities http://beta.quicklisp.org/archive/metatilities/2018-02-28/metatilities-20180228-git.tgz 194405 bb75a7979528d08ec9c27ee154b9317e 531048725a416caea22d5996edd570f7cd25947a metatilities-20180228-git metatilities-test.asd metatilities.asd -metatilities-base http://beta.quicklisp.org/archive/metatilities-base/2019-12-27/metatilities-base-20191227-git.tgz 70648 7968829ca353c4a42784a151317029f1 e2abddb20c1a29455fc761c4c7716d9fdbebf0e9 metatilities-base-20191227-git metatilities-base-test.asd metatilities-base.asd -metering http://beta.quicklisp.org/archive/metering/2020-02-18/metering-20200218-git.tgz 17062 602fe742106ad19bfb331c2a97fbd811 dc01e5ecd706f54aabd580d36577648260f17f24 metering-20200218-git metering.asd -method-combination-utilities http://beta.quicklisp.org/archive/method-combination-utilities/2014-11-06/method-combination-utilities-20141106-git.tgz 7311 881048d7bed117b8d7b4547a5111812d cb5a6ab010f6981e27c83f2ba22d33649a4db46a method-combination-utilities-20141106-git method-combination-utilities.asd -method-hooks http://beta.quicklisp.org/archive/method-hooks/2020-09-25/method-hooks-20200925-git.tgz 14360 4fad17e5482de27554abc24eed285666 acb7bf29a84865152b7b533456d87909ea22ae40 method-hooks-20200925-git method-hooks-test.asd method-hooks.asd -method-versions http://beta.quicklisp.org/archive/method-versions/2011-05-22/method-versions_0.1.2011.05.18.tgz 4709 3e64215eeae18b8c830653e4ca22fe26 96476b31ff0c747c58477b2dc6227e1bfff611c8 method-versions_0.1.2011.05.18 method-versions.asd -mexpr http://beta.quicklisp.org/archive/mexpr/2015-07-09/mexpr-20150709-git.tgz 5385 7660c46156c0f98adc208451f64ff62f 9f9be5508184cc8dd23ed2e04812e1b71fdd1b5e mexpr-20150709-git mexpr-tests.asd mexpr.asd -mfiano-utils http://beta.quicklisp.org/archive/mfiano-utils/2023-02-14/mfiano-utils-20230214-git.tgz 9865 e92a66559c2cb89b8a591943b3d42028 d0a8eb9feb9e2c1bb1bfef2a5ee2e68b61fccfac mfiano-utils-20230214-git mfiano-utils.asd -mgl http://beta.quicklisp.org/archive/mgl/2022-02-20/mgl-20220220-git.tgz 809282 0d23508761ebb6ce1661c04fb09141d3 671f22917b8b7253de38560bd7b459c1aabd2ee5 mgl-20220220-git gnuplot/mgl-gnuplot.asd mgl-example.asd mgl.asd -mgl-mat http://beta.quicklisp.org/archive/mgl-mat/2023-02-14/mgl-mat-20230214-git.tgz 117529 70667909d609492a872681c4075c1ad0 a53d2398082fd3643f8eca2ed72e115c2ae856ae mgl-mat-20230214-git mgl-mat.asd -mgl-pax http://beta.quicklisp.org/archive/mgl-pax/2023-02-14/mgl-pax-20230214-git.tgz 250753 718769b8d8772356dbe3184d2370d9ed c2ff4ef78e9c7baf8fffc6d23fc09b5dc5d0dc3b mgl-pax-20230214-git mgl-pax.asd mgl-pax.asdf.asd -mgrs http://beta.quicklisp.org/archive/mgrs/2022-03-31/mgrs-20220331-git.tgz 16602 95ab791dfeeede7e7ebc806b21851909 6c8d2e6a8de1ef6ae99a258fec1cadc53ee947ca mgrs-20220331-git mgrs.asd -micmac http://beta.quicklisp.org/archive/micmac/2022-02-20/micmac-20220220-git.tgz 23645 e9fe025ecc57e55d3e34a4ac19b22859 d249f4eda9a406d690d10b031bdc03d6b5d0f11b micmac-20220220-git micmac.asd -midi http://beta.quicklisp.org/archive/midi/2010-10-06/midi-20070618.tgz 6886 78d494c8d2fbc9a6af1b2d3e1b3c25d7 73a273cd33bccfa2bcd8ff93b38de5b1523e9993 midi-20070618 midi.asd -millet http://beta.quicklisp.org/archive/millet/2021-12-09/millet-20211209-git.tgz 9564 ffad6f6b9b6846e6f26cc2905523b070 825dfb17f203096b2a1e697df44be0dfb5548bed millet-20211209-git millet.asd spec/millet.test.asd -minheap http://beta.quicklisp.org/archive/minheap/2016-06-28/minheap-20160628-git.tgz 17015 27a57cdd27e91eb767f1377fcbfe2af3 0fe362afcf54c58c43ac9c36d8384d0be4782e02 minheap-20160628-git minheap-tests.asd minheap.asd -mini-cas http://beta.quicklisp.org/archive/mini-cas/2015-09-23/mini-cas-20150923-git.tgz 7018 5b29524320ea446c59ee913d6787faf0 7361170e6ebafe271aaf8b32962214bb2e860b5f mini-cas-20150923-git mini-cas.asd -minilem http://beta.quicklisp.org/archive/minilem/2020-02-18/minilem-20200218-git.tgz 421541 b77bd135381061eb7482525e0bffd60d 8fbc4519ec6fc5e1c8059cb867d9e6e1ec7530d7 minilem-20200218-git minilem.asd -misc-extensions http://beta.quicklisp.org/archive/misc-extensions/2015-06-08/misc-extensions-20150608-git.tgz 25456 ef8a05dd4382bb9d1e3960aeb77e332e 3f22977672a040f72b46d49fa680757deeff6a12 misc-extensions-20150608-git misc-extensions.asd -mito http://beta.quicklisp.org/archive/mito/2023-02-14/mito-20230214-git.tgz 42547 105ade06312d466a02ff23fcbc16c295 a1224017c5cdcd347c226551130e6e4a18aedde6 mito-20230214-git lack-middleware-mito.asd mito-core.asd mito-migration.asd mito-test.asd mito.asd -mito-attachment http://beta.quicklisp.org/archive/mito-attachment/2023-02-14/mito-attachment-20230214-git.tgz 5724 4f8329a06b856635a816c0d729e437c7 b75da7e6b4359867e7c8ddc47adffb5711eb4b0d mito-attachment-20230214-git mito-attachment.asd -mito-auth http://beta.quicklisp.org/archive/mito-auth/2017-10-19/mito-auth-20171019-git.tgz 2014 f2ef144e4012a1ecac9420a64ac6ab16 f5c7ed9c9a43f739d1afddfb3616322b58b33746 mito-auth-20171019-git mito-auth.asd -mixalot http://beta.quicklisp.org/archive/mixalot/2015-12-18/mixalot-20151218-git.tgz 49886 c2132e94690a03a39343fff3a12cff1f 22856864b7a35fb44f52547cc6387e31f4db42e1 mixalot-20151218-git flac.asd mixalot-flac.asd mixalot-mp3.asd mixalot-vorbis.asd mixalot.asd mpg123-ffi.asd vorbisfile-ffi.asd -mk-defsystem http://beta.quicklisp.org/archive/mk-defsystem/2023-02-14/mk-defsystem-20230214-git.tgz 77934 f4d5d72f8da328e3d89c06aabccb6058 4dfdeed46485308eb7a6880cde012e7178e2628f mk-defsystem-20230214-git mk-defsystem.asd -mk-string-metrics http://beta.quicklisp.org/archive/mk-string-metrics/2018-01-31/mk-string-metrics-20180131-git.tgz 5395 40f23794a7d841cb178f5951d3992886 e869de7baf6a85580ae92dd30e2ddffd9ce35400 mk-string-metrics-20180131-git mk-string-metrics-tests.asd mk-string-metrics.asd -mmap http://beta.quicklisp.org/archive/mmap/2023-02-14/mmap-20230214-git.tgz 13874 d57d164d4187e40ee170a728fdba6581 a1917ac76f8e39d317a3a90087b1b51ef8473087 mmap-20230214-git mmap-test.asd mmap.asd -mnas-graph http://beta.quicklisp.org/archive/mnas-graph/2022-11-06/mnas-graph-20221106-git.tgz 44352 c57a9d37df88cc88cee574a62cbaf05c 082f9be890825b710e3d645be16997da24b1d8cb mnas-graph-20221106-git mnas-graph.asd -mnas-hash-table http://beta.quicklisp.org/archive/mnas-hash-table/2022-07-07/mnas-hash-table-20220707-git.tgz 16916 d36737d8b5357b1e7fce9794d9a1ed68 9f62d4844e7bdd02495882ed33742c005cda877b mnas-hash-table-20220707-git mnas-hash-table.asd -mnas-package http://beta.quicklisp.org/archive/mnas-package/2022-11-06/mnas-package-20221106-git.tgz 41336 2d57e94e2efadfea9863b42860efaabb d08ec2974829271ce2390a2244ab40831a113e62 mnas-package-20221106-git mnas-package.asd -mnas-path http://beta.quicklisp.org/archive/mnas-path/2022-07-07/mnas-path-20220707-git.tgz 3272 7f33ea3a4bc17637c50ba83e2159778f 62fdc3b2d23864cdbe41b419a28afa9b16f1434a mnas-path-20220707-git mnas-path.asd -mnas-string http://beta.quicklisp.org/archive/mnas-string/2022-07-07/mnas-string-20220707-git.tgz 27050 41a4a574589ef3d3aee12ede195608d7 6bccab5417bbd603043c27b4c0bd673f6c3cfc75 mnas-string-20220707-git mnas-string.asd -mockingbird http://beta.quicklisp.org/archive/mockingbird/2021-10-20/mockingbird-20211020-git.tgz 8152 e78333b9010d51104f094d7b6e41d718 90ce36a82f42bf47eb9c87fd8f4694e4753673f5 mockingbird-20211020-git mockingbird-test.asd mockingbird.asd -modest-config http://beta.quicklisp.org/archive/modest-config/2018-02-28/modest-config-20180228-git.tgz 4144 25b0ea7d813ee8b806fd8ac434252ffd b899245e88298eb9bc042cd07237a6f1e6925af0 modest-config-20180228-git modest-config-test.asd modest-config.asd -modf http://beta.quicklisp.org/archive/modf/2020-09-25/modf-20200925-git.tgz 14580 1673e7f6d51c31b7e7a1e9807c41ef55 033e0677c969da7633fb47ad7d9cc99baaf4805e modf-20200925-git modf-test.asd modf.asd -modf-fset http://beta.quicklisp.org/archive/modf-fset/2015-06-08/modf-fset-20150608-git.tgz 2115 aec2b57d064522f5065597cd6619f851 0fb42b40b822fc95b98dacf7dcc86a0781f581cd modf-fset-20150608-git modf-fset-test.asd modf-fset.asd -modularize http://beta.quicklisp.org/archive/modularize/2020-04-27/modularize-20200427-git.tgz 11043 4b3df3353c21acebe1fc17a0c6c393ad 8558d187f31278c8c5d891e5132ac91a76c97bfd modularize-20200427-git modularize-test-module.asd modularize.asd -modularize-hooks http://beta.quicklisp.org/archive/modularize-hooks/2019-07-10/modularize-hooks-20190710-git.tgz 6119 86d8ed59bb2e6231b3c651372920128a 164b8063183939b2b42aa744e4280bca1a626f35 modularize-hooks-20190710-git modularize-hooks.asd -modularize-interfaces http://beta.quicklisp.org/archive/modularize-interfaces/2021-06-30/modularize-interfaces-20210630-git.tgz 11195 1f3722a166109f568e7a4c125cddacc9 b4bb691e94094e4bf9dead475c12d6c5850e4c42 modularize-interfaces-20210630-git interfaces-test-implementation.asd modularize-interfaces.asd -moira http://beta.quicklisp.org/archive/moira/2017-11-30/moira-20171130-git.tgz 2823 a1cfcd5ab13cc5dda524d0f5e26e90ce 6e26e71c89b4ecdef7218d572ebcf342a26052bb moira-20171130-git moira.asd -monkeylib-binary-data http://beta.quicklisp.org/archive/monkeylib-binary-data/2011-12-03/monkeylib-binary-data-20111203-git.tgz 4927 ef6b8e9c30e6b8efa915ca35ed962cf3 77232f96c8600789af74f006a7af9eb1fc6e698d monkeylib-binary-data-20111203-git com.gigamonkeys.binary-data.asd -monkeylib-html http://beta.quicklisp.org/archive/monkeylib-html/2018-02-28/monkeylib-html-20180228-git.tgz 7951 2b2b680f1eb02d4392135cebc33825fe 464b87c31dcfde60e5e350c7f2b5bab63bd3eb32 monkeylib-html-20180228-git monkeylib-html.asd -monkeylib-json http://beta.quicklisp.org/archive/monkeylib-json/2018-02-28/monkeylib-json-20180228-git.tgz 4329 253e4e5aa8fd634fc76c97e8b9be0862 56e485b956487256210d5eb76a3031f95d54335d monkeylib-json-20180228-git com.gigamonkeys.json.asd -monkeylib-macro-utilities http://beta.quicklisp.org/archive/monkeylib-macro-utilities/2011-12-03/monkeylib-macro-utilities-20111203-git.tgz 1968 b03c3644ff328ded7e7e0a39741a69ba 4bc771174bdb9bb52952356408d7a617e6b4ce2c monkeylib-macro-utilities-20111203-git com.gigamonkeys.macro-utilities.asd -monkeylib-markup http://beta.quicklisp.org/archive/monkeylib-markup/2012-09-09/monkeylib-markup-20120909-git.tgz 51056 e2f052930d4ed6cbd97b802b20a83646 fcf29d2e6a193626a8c5eb3d2498caf192735479 monkeylib-markup-20120909-git com.gigamonkeys.markup.asd -monkeylib-markup-html http://beta.quicklisp.org/archive/monkeylib-markup-html/2012-02-08/monkeylib-markup-html-20120208-git.tgz 4582 f70d4f0c511f36d6fc4a10a6912b51e0 d1fb1db716fdb7fe0fa845e223d0da5e76629b69 monkeylib-markup-html-20120208-git monkeylib-markup-html.asd -monkeylib-parser http://beta.quicklisp.org/archive/monkeylib-parser/2012-02-08/monkeylib-parser-20120208-git.tgz 22347 3e4327f25a31e78f93fd50de71b41065 48d5b2a1b8072d27c7601124a166fbadb2bc1bb4 monkeylib-parser-20120208-git com.gigamonkeys.parser.asd -monkeylib-pathnames http://beta.quicklisp.org/archive/monkeylib-pathnames/2012-02-08/monkeylib-pathnames-20120208-git.tgz 3689 9f7c261f5a6f3e594c8b63f3a81fd87e 8d3750393675bcd26b42b59cf20ca4e9127d55f2 monkeylib-pathnames-20120208-git com.gigamonkeys.pathnames.asd -monkeylib-prose-diff http://beta.quicklisp.org/archive/monkeylib-prose-diff/2014-07-13/monkeylib-prose-diff-20140713-git.tgz 68305 6c656fe2d6bcb7eaba029b23da783a53 d70a0717980660fb19691b8f40c02fb430187a67 monkeylib-prose-diff-20140713-git com.gigamonkeys.prose-diff.asd -monkeylib-test-framework http://beta.quicklisp.org/archive/monkeylib-test-framework/2010-12-07/monkeylib-test-framework-20101207-git.tgz 7237 cebe94d4ac359f39cf0eef63cf0e8de5 52d736e23f6a71c8ea987186c1f4c1b460c5a356 monkeylib-test-framework-20101207-git com.gigamonkeys.test-framework.asd -monkeylib-text-languages http://beta.quicklisp.org/archive/monkeylib-text-languages/2011-12-03/monkeylib-text-languages-20111203-git.tgz 5234 a5ff209ee992b4fe4685cabd3616bc49 9e02022e60dfbcfa4e2c7399dec3d4e579721383 monkeylib-text-languages-20111203-git monkeylib-text-languages.asd -monkeylib-text-output http://beta.quicklisp.org/archive/monkeylib-text-output/2011-12-03/monkeylib-text-output-20111203-git.tgz 3919 1d0623eadd80d9b0bbfa71b5a6d08d31 12de87a35e9dd6169d0201c3d17f07ab7d9bcd16 monkeylib-text-output-20111203-git monkeylib-text-output.asd -monkeylib-utilities http://beta.quicklisp.org/archive/monkeylib-utilities/2017-04-03/monkeylib-utilities-20170403-git.tgz 12151 323d5400fe092b0aff4be8d39c8bef33 9c55b7c6192c126ff49da725fdadeaf4e90a5d3c monkeylib-utilities-20170403-git com.gigamonkeys.utilities.asd -monomyth http://beta.quicklisp.org/archive/monomyth/2021-12-30/monomyth-20211230-git.tgz 376647 95fb3ac0c1cf6cab58712ad5325100a9 3f5aba56abdf0d98da9b166e3b9ac74aa34cce19 monomyth-20211230-git monomyth.asd -montezuma http://beta.quicklisp.org/archive/montezuma/2018-02-28/montezuma-20180228-git.tgz 1264435 db964cddda9b92877259d7db67c2aac3 37dd0718f7823760da2d72d050b39a38c56b4758 montezuma-20180228-git contrib/montezuma-indexfiles/montezuma-indexfiles.asd lucene-in-action/lucene-in-action-tests.asd montezuma.asd -moptilities http://beta.quicklisp.org/archive/moptilities/2017-04-03/moptilities-20170403-git.tgz 15618 b118397be325e60a772ea3631c4f19a4 a2b4eb6acad43773290ed22ee7698367476b01f5 moptilities-20170403-git moptilities-test.asd moptilities.asd -more-cffi http://beta.quicklisp.org/archive/more-cffi/2023-02-14/more-cffi-20230214-git.tgz 13443 9a0333a2c1239356c373c145814a0784 f4f028c573ba2149c66a7cd9d17758eb57e4de4e more-cffi-20230214-git more-cffi.asd -more-conditions http://beta.quicklisp.org/archive/more-conditions/2018-08-31/more-conditions-20180831-git.tgz 20791 c4797bd3c6c50fba02a6e8164ddafe28 d81093734a1f68b0ce022eaa1577334d22987390 more-conditions-20180831-git more-conditions.asd -mp3-duration http://beta.quicklisp.org/archive/mp3-duration/2016-02-08/mp3-duration-20160208-git.tgz 2763 fe74eb23d4016d798f4c7ab39fae1991 edeab1547d760345c92b49dbb707adf69c4e16a8 mp3-duration-20160208-git mp3-duration-test.asd mp3-duration.asd -mpc http://beta.quicklisp.org/archive/mpc/2016-09-29/mpc-20160929-git.tgz 22507 7a4be8c7f3c1a896d2fa06c6aff4accf fc09c11b6e330eee4d0435e1fe5a9d09c3d1c803 mpc-20160929-git mpc.asd -mra-wavelet-plot http://beta.quicklisp.org/archive/mra-wavelet-plot/2018-12-10/mra-wavelet-plot-20181210-git.tgz 2672 6e58c7f058b996710f89095bd7d55140 4824e4d538ea298a76d6c69f6df99782ce5e0b41 mra-wavelet-plot-20181210-git mra-wavelet-plot.asd -mstrings http://beta.quicklisp.org/archive/mstrings/2022-07-07/mstrings-20220707-git.tgz 6312 55b26e36430a3d813aa7c2fd8b13d1ef dee659b597d7cc4d92f7ae139502e29365b9c802 mstrings-20220707-git mstrings.asd -mt19937 http://beta.quicklisp.org/archive/mt19937/2011-02-19/mt19937-1.1.1.tgz 5551 54c63977b6d77abd66ebe0227b77c143 268d9a0d1dc870bd409bf9a85f80ff39840efd49 mt19937-1.1.1 mt19937.asd -mtif http://beta.quicklisp.org/archive/mtif/2017-11-30/mtif-20171130-git.tgz 36178 a713b90c4790464371cdc469d44a441f 8ee07bbf0c5b5fbfd618054945055ab638c7db57 mtif-20171130-git mtif.asd -mtlisp http://beta.quicklisp.org/archive/mtlisp/2013-06-15/mtlisp-20130615-git.tgz 41092 651cd99d4c77b0d533c1ee94e515b6b7 4d9ce6610ce99f89ddbfaea4d40a4369f8e1c8f8 mtlisp-20130615-git mtlisp.asd -multilang-documentation http://beta.quicklisp.org/archive/multilang-documentation/2019-07-10/multilang-documentation-20190710-git.tgz 7361 ba61cdd7a06d398143c4f18614c2b3a7 fa7caa1284353367149f88f1606465fa4357f49a multilang-documentation-20190710-git multilang-documentation.asd -multiple-value-variants http://beta.quicklisp.org/archive/multiple-value-variants/2014-08-26/multiple-value-variants-1.0.1.tgz 6991 b5676f66549832298262156277a79a52 b149d999e846c682677d7bbfbd3791c1baf73480 multiple-value-variants-1.0.1 multiple-value-variants.asd -multiposter http://beta.quicklisp.org/archive/multiposter/2023-02-14/multiposter-20230214-git.tgz 19844 07f091db6ffdf61798d6c0055f15eb00 60526bbc58de93fbb8ca7716b27eb7f35fbf59bf multiposter-20230214-git multiposter-git.asd multiposter-lichat.asd multiposter-mastodon.asd multiposter-studio.asd multiposter-tumblr.asd multiposter-twitter.asd multiposter.asd -multival-plist http://beta.quicklisp.org/archive/multival-plist/2012-03-05/multival-plist-20120305-git.tgz 2263 db7767930bc07a150b697a6b63c369db eb4c2b023fccebd18549008ad67aa1ce6d4ace09 multival-plist-20120305-git multival-plist-test.asd multival-plist.asd -music-spelling http://beta.quicklisp.org/archive/music-spelling/2023-02-14/music-spelling-20230214-git.tgz 11505 054f0d540c012dab996bd49abb8bace8 e57523e00330ba18db4eac771d52384c42c6a305 music-spelling-20230214-git music-spelling.asd -mutility http://beta.quicklisp.org/archive/mutility/2023-02-14/mutility-20230214-git.tgz 38229 eb175a59c6a5cb322b8266618c2587fe e0593d5cc29706ab5240b708e1c3c398c2659ce8 mutility-20230214-git mutility.asd -mw-equiv http://beta.quicklisp.org/archive/mw-equiv/2010-10-06/mw-equiv-0.1.3.tgz 6115 671497babfd44f6d9c5f0c02bddb457c 4a79edf2ca9f5e65daff7f37323da4f1055d914c mw-equiv-0.1.3 mw-equiv.asd -mystic http://beta.quicklisp.org/archive/mystic/2016-02-08/mystic-20160208-git.tgz 7566 c76b5583defbbc0a921332f496fee7c5 a0ddfaea0aea12b7ce41e05d446626cf02a5d99f mystic-20160208-git mystic-file-mixin.asd mystic-fiveam-mixin.asd mystic-gitignore-mixin.asd mystic-library-template.asd mystic-readme-mixin.asd mystic-test.asd mystic-travis-mixin.asd mystic.asd -myway http://beta.quicklisp.org/archive/myway/2022-11-06/myway-20221106-git.tgz 5354 81c32575181b11f9a9cb6a58ed6dbeea 11688394e718c5858c764149187dc77bfa95b250 myway-20221106-git myway-test.asd myway.asd -myweb http://beta.quicklisp.org/archive/myweb/2015-06-08/myweb-20150608-git.tgz 29572 bc91336495ca1421dac79bf14c5e6881 9e6e03663659d582aca58d1bfb7606952e9a7fcf myweb-20150608-git myweb.asd -nail http://beta.quicklisp.org/archive/nail/2023-02-14/nail-20230214-git.tgz 4658 5e694fdcebdfbcbd921200f2e8169dfa f4441d953c7089ba0c1a456add16bbed8b76d141 nail-20230214-git nail.asd -named-closure http://beta.quicklisp.org/archive/named-closure/2022-02-20/named-closure-20220220-git.tgz 4053 af2d8b666c94eba3c9b5cb00a5a8fb56 e1bd01c5f198b9d03cde10ede875870e63ae83e9 named-closure-20220220-git named-closure.asd -named-read-macros http://beta.quicklisp.org/archive/named-read-macros/2021-02-28/named-read-macros-20210228-git.tgz 7657 dd44f3c294853f9c24af31d627570322 ed1e062396638d39dba115f2d0284298efc42c1a named-read-macros-20210228-git named-read-macros.asd test/named-read-macros-test.asd -named-readtables http://beta.quicklisp.org/archive/named-readtables/2022-03-31/named-readtables-20220331-git.tgz 26611 2b66af7f6896d656f54333142905a8c4 f32763a63473c936d73186dbccf6641dc7e071a7 named-readtables-20220331-git named-readtables.asd -nanovg-blob http://beta.quicklisp.org/archive/nanovg-blob/2020-10-16/nanovg-blob-stable-git.tgz 1609829 624ef174d1d5c8f2d8145f37bce4628d f31f67c0c03317d104763e3857cc9cea45f36e80 nanovg-blob-stable-git nanovg-blob.asd -napa-fft3 http://beta.quicklisp.org/archive/napa-fft3/2015-12-18/napa-fft3-20151218-git.tgz 31959 4930569d5c4092ab11f76d8886779e6e 61afdce14dfe27431acbbd063c9840786b5e5d11 napa-fft3-20151218-git napa-fft3.asd -narrowed-types http://beta.quicklisp.org/archive/narrowed-types/2018-02-28/narrowed-types-20180228-git.tgz 2510 a149f985d2032c17210a3f75a9eca101 130b28978940159ed19df76eed1945738cfd1b05 narrowed-types-20180228-git narrowed-types-test.asd narrowed-types.asd -nbd http://beta.quicklisp.org/archive/nbd/2021-10-20/nbd-20211020-git.tgz 9417 9f5755497817a667537f5bbcde153512 6303fc53f5f55d1f268ee483ef98c41ef1df2758 nbd-20211020-git nbd.asd -nclasses http://beta.quicklisp.org/archive/nclasses/2023-02-14/nclasses-20230214-git.tgz 2115154 8a6876b23543fb5aec28a3ebf07ddbd8 2feaff68d62548e565e5aa80a6f83efa4ec36d11 nclasses-20230214-git nclasses.asd -ndebug http://beta.quicklisp.org/archive/ndebug/2023-02-14/ndebug-20230214-git.tgz 8507 824e24c4843eea6f4d3bf9e12f7574a7 e097869eecc328470846721c041cab7800f6928e ndebug-20230214-git ndebug.asd -neo4cl http://beta.quicklisp.org/archive/neo4cl/2022-07-07/neo4cl-20220707-git.tgz 30360 a45d7c7ef99fc3daef66f4bc39e5db1d 75bddb4e37ecf76779352f0f0ae6896b33d9b79e neo4cl-20220707-git src/neo4cl.asd test/neo4cl-test.asd -net-telent-date http://beta.quicklisp.org/archive/net-telent-date/2010-10-06/net-telent-date_0.42.tgz 12575 6fedf40113b2462f7bd273d07950066b 2a0efdd496136ba7d0d1d7b701ff57f9f0a0929f net-telent-date_0.42 net-telent-date.asd -network-addresses http://beta.quicklisp.org/archive/network-addresses/2016-06-28/network-addresses-20160628-git.tgz 4504 6b48746dc7beff85ed4b81edc4d31732 aa2e821a7e184fa885827db8b111896d641d3f6b network-addresses-20160628-git network-addresses-test.asd network-addresses.asd -neural-classifier http://beta.quicklisp.org/archive/neural-classifier/2022-11-06/neural-classifier-20221106-git.tgz 11679025 9edd6e0b50958715b1ccd3c68a37a856 19e1ceb983b1ab7b8fd06c4be1e0ecd2a9aac8f1 neural-classifier-20221106-git neural-classifier.asd -new-op http://beta.quicklisp.org/archive/new-op/2023-02-14/new-op-20230214-git.tgz 22322 f466ffa60d6aa5d9d03e4328834ab665 b9616df7a4043a0501baf256e0e957c8967ae60f new-op-20230214-git new-op.asd -nfiles http://beta.quicklisp.org/archive/nfiles/2023-02-14/nfiles-20230214-git.tgz 6735265 de4f901f6c3fa9b89389ffcd27b6d9bb 43712938be5b59d8cbe020536cc54d9894a858a7 nfiles-20230214-git nfiles.asd -nhooks http://beta.quicklisp.org/archive/nhooks/2023-02-14/nhooks-20230214-git.tgz 8611 0351ea4c514ef94dad06bc9a14f0ebe0 f9a79c4d5d0911b7903b40747523011f1c169973 nhooks-20230214-git nhooks.asd -nibbles http://beta.quicklisp.org/archive/nibbles/2022-03-31/nibbles-20220331-git.tgz 18758 cd021b794b24ef251e76a24cac0d59ab d637716caf748acb1a7b96b707ea99d4063ecc9c nibbles-20220331-git nibbles.asd -nibbles-streams http://beta.quicklisp.org/archive/nibbles-streams/2022-07-07/nibbles-streams-20220707-git.tgz 5442 f976be5c1724fe1a03df2c91454a62cc 55be2783a0b720662626249677ab01d737340745 nibbles-streams-20220707-git nibbles-streams.asd -nineveh http://beta.quicklisp.org/archive/nineveh/2019-10-07/nineveh-release-quicklisp-0a10a846-git.tgz 47692 c7c3fe5e3a5a3bb9e8e7de3086cf95bb 43962ced034bf55962f61fe06ba75c2dd85a47a6 nineveh-release-quicklisp-0a10a846-git nineveh.asd -ningle http://beta.quicklisp.org/archive/ningle/2021-12-30/ningle-20211230-git.tgz 7069 e5316c7625a24d0fe3a06662728404b0 e957b6b0c4c124472224b3881a5f8de9878bdbb6 ningle-20211230-git ningle-test.asd ningle.asd -njson http://beta.quicklisp.org/archive/njson/2023-02-14/njson-20230214-git.tgz 1976066 972b41d425d4cfd6717ac7294f82cdbe 4c670c24db8ccf4d66996898e6f7402b5a860157 njson-20230214-git njson.asd -nkeymaps http://beta.quicklisp.org/archive/nkeymaps/2023-02-14/nkeymaps-20230214-git.tgz 22098 23b4b4d88c70f8fbdf75cf384a22920d fd3ba9155fdb361cfc5d186ab692d1550dc7a6ca nkeymaps-20230214-git nkeymaps.asd -nlopt http://beta.quicklisp.org/archive/nlopt/2022-07-07/nlopt-20220707-git.tgz 16683 8ab078db93be79ffe8e47e1c4680b73a b744e8b75be537fe6350a53b9a4a9d3b7de36622 nlopt-20220707-git nlopt.asd -nodgui http://beta.quicklisp.org/archive/nodgui/2023-02-14/nodgui-20230214-git.tgz 138012 3afd7524105585bb4e766dafcbe19504 b3aa5ed562a0970f81d65030d93b10532f4cb017 nodgui-20230214-git nodgui.asd -north http://beta.quicklisp.org/archive/north/2023-02-14/north-20230214-git.tgz 53747 269dfb9b66993c2f3a5d60a3a9d5e45e c41da199b3eff30ffa38ce5066dcca156daf27cd north-20230214-git example/north-example.asd north-core.asd north-dexador.asd north-drakma.asd north.asd -nsort http://beta.quicklisp.org/archive/nsort/2015-05-05/nsort-20150505-git.tgz 1785 71e01656a21f61447e0298f89d3af456 912766fd5765889a4ce4a6a0b64fc2d14d29f63a nsort-20150505-git nsort.asd -nsymbols http://beta.quicklisp.org/archive/nsymbols/2023-02-14/nsymbols-20230214-git.tgz 33369 bbf900260967dcc2419d484ad3f7befa a116b851f5467a2d37aebab498fc7e83d9053efd nsymbols-20230214-git nsymbols.asd -nuclblog http://beta.quicklisp.org/archive/nuclblog/2014-08-26/nuclblog-20140826-git.tgz 20053 fb80583640212d0bfc452f9156917eac ffded3e808a703fdda65f3b3ab7c677c9be60946 nuclblog-20140826-git nuclblog.asd -nuklear-blob http://beta.quicklisp.org/archive/nuklear-blob/2020-10-16/nuklear-blob-stable-git.tgz 1137399 470a715768c9c23922c2ab6cd7f48785 7a778bccc113677eb465e18d16cb63efa14e7ba1 nuklear-blob-stable-git nuklear-blob.asd -nuklear-renderer-blob http://beta.quicklisp.org/archive/nuklear-renderer-blob/2020-10-16/nuklear-renderer-blob-stable-git.tgz 1042893 633ca88967148af18d77793c2727698b ca1eb34453d57a96bfd1b35b7dbf940afb970649 nuklear-renderer-blob-stable-git nuklear-renderer-blob.asd -null-package http://beta.quicklisp.org/archive/null-package/2022-07-07/null-package-20220707-git.tgz 9604 448486330acec3e6f54c3f20d19b2bb0 54e26bddc2f63ac20967bf4f2b132978de7dc73f null-package-20220707-git null-package.asd spec/null-package.test.asd -numcl http://beta.quicklisp.org/archive/numcl/2022-11-06/numcl-20221106-git.tgz 266962 f29d768d3febb64870ebdb335f4fa444 4ca347e38e7a13acb9e28299d948cbbb14aea799 numcl-20221106-git numcl.asd numcl.test.asd -numerical-utilities http://beta.quicklisp.org/archive/numerical-utilities/2023-02-14/numerical-utilities-20230214-git.tgz 657960 e612c597eb99115ef8421437764f88d1 128f47f63cd14212c43ac48323b25c0cf8bcced1 numerical-utilities-20230214-git num-utils.asd -numericals http://beta.quicklisp.org/archive/numericals/2023-02-14/numericals-2023.02.0.tgz 254080 b081dbfbd1913f8220b4ddccd7c568f7 45b9047c75da3cdb3ede4a947e446fa14b59bf74 numericals-2023.02.0 dense-numericals.asd numericals.asd numericals.common.asd -numpy-file-format http://beta.quicklisp.org/archive/numpy-file-format/2021-01-24/numpy-file-format-20210124-git.tgz 5141 0d81ce1e67ed1323787eb0f3cd698113 d47cb6bd3871541cfdfec2c460c6f4056d507c1d numpy-file-format-20210124-git code/numpy-file-format.asd -nyaml http://beta.quicklisp.org/archive/nyaml/2021-12-30/nyaml-20211230-git.tgz 169260 3bfbf82accf389ed820952c2a6932703 f1749e7c5cae3525e0a03bf5dfed4fd5226ba67f nyaml-20211230-git nyaml.asd -nyxt http://beta.quicklisp.org/archive/nyxt/2023-02-14/nyxt-20230214-git.tgz 26131733 4c9d57cecbc260d99e88a72b440348b0 4c944796840bdcf131d8c2a78cb306c0bb9a169b nyxt-20230214-git libraries/nasdf/nasdf.asd nyxt-ubuntu-package.asd nyxt.asd -object-class http://beta.quicklisp.org/archive/object-class/2020-09-25/object-class_1.0.tgz 6010 f0defa601fa8bc627810f12a0a8dff83 d45fdb627c0c0d0ae53ea36fe79797232d168a09 object-class_1.0 object-class.asd tests/object-class_tests.asd -oclcl http://beta.quicklisp.org/archive/oclcl/2019-05-21/oclcl-20190521-git.tgz 171806 3e1768e4d9c1412aabd19fc23457ca8f 2f49a21ab843dc52b012a82c286142994c122e95 oclcl-20190521-git oclcl-examples.asd oclcl-test.asd oclcl.asd -ode-blob http://beta.quicklisp.org/archive/ode-blob/2020-10-16/ode-blob-stable-git.tgz 3753751 10ebb08bdcf76faa8f3313127022b830 e501970718de3c605a2e6b9766ccc9be841ee57e ode-blob-stable-git ode-blob.asd -oe-encode http://beta.quicklisp.org/archive/oe-encode/2015-08-04/oe-encode-20150804-git.tgz 49756 317e7cb5295306a3b64a7b5cfe673093 1d2ad0214c58b88ddff8c2f66e8ef1d89b6de0ba oe-encode-20150804-git oe-encode.asd -olc http://beta.quicklisp.org/archive/olc/2022-03-31/olc-20220331-git.tgz 14971 9d8413918a443fb026da8c5adc3bbcc9 65fd78043489f678f39a7ab03802731cabfefd26 olc-20220331-git olc.asd -omer-count http://beta.quicklisp.org/archive/omer-count/2021-04-11/omer-count-20210411-git.tgz 15326 091d8e3b9fc957d64a6e1e590db65e84 b0b1bc0e6a5c40e1e8bfa9506184a8fb0972b077 omer-count-20210411-git eclecticse.omer.asd -omglib http://beta.quicklisp.org/archive/omglib/2023-02-14/omglib-20230214-git.tgz 346346 5114b302427ca25523becd64dcf1ddad b30b88a6877ea08be057222d7519f9d489f2ce52 omglib-20230214-git omg.asd -one-more-re-nightmare http://beta.quicklisp.org/archive/one-more-re-nightmare/2022-11-06/one-more-re-nightmare-20221106-git.tgz 42434 e6231f8ce3fa544619e511cf1a6dcdb4 56c034f5a7211a384b94bd95e2c7f03a9a93154e one-more-re-nightmare-20221106-git Code/SIMD/one-more-re-nightmare-simd.asd Code/one-more-re-nightmare.asd Tests/one-more-re-nightmare-tests.asd -oneliner http://beta.quicklisp.org/archive/oneliner/2013-10-03/oneliner-20131003-git.tgz 3129 8709f2596797542709d9fc02e557d8c2 b2c7d3ee581dc13e43cf14a85b1f3e0bca093625 oneliner-20131003-git cl-oneliner.asd -ook http://beta.quicklisp.org/archive/ook/2023-02-14/ook-20230214-git.tgz 13968 53d4b8f2682dbfdf9d39b71d5910e5c2 a6819e8ee89a4751db4f43499081cb03938af987 ook-20230214-git ook.asd -oook http://beta.quicklisp.org/archive/oook/2017-11-30/oook-20171130-git.tgz 12023 eb6ee68a5f48b3720d7285fae7336485 b368840c0547253cb2c82e9ef9c48ffd27fed565 oook-20171130-git oook.asd -open-location-code http://beta.quicklisp.org/archive/open-location-code/2022-03-31/open-location-code-20220331-git.tgz 16351 e0acb3f7e60d6c3929e0df66748b9da1 a09956a30c4a26d2f79f1dea505ab925d2515ba1 open-location-code-20220331-git open-location-code.asd -open-vrp http://beta.quicklisp.org/archive/open-vrp/2014-09-14/open-vrp-20140914-git.tgz 925579 718ad8132bb06eb5a66b1c1a814b7e66 066d3adb2be495e1a76dadf9e55ec2e66519715c open-vrp-20140914-git open-vrp-lib.asd open-vrp.asd -openal-blob http://beta.quicklisp.org/archive/openal-blob/2020-10-16/openal-blob-stable-git.tgz 4536591 5c3002b5d6963821c12f32aceeb62a45 a1b567c9192e91126defaed59e01e94e7552ac02 openal-blob-stable-git openal-blob.asd -openid-key http://beta.quicklisp.org/archive/openid-key/2018-12-10/openid-key-20181210-git.tgz 3284 cbe196eef93ee9eec7ef117557c440b2 4cdb875b541259e7bb9bbf8d26244f3dba1078b2 openid-key-20181210-git openid-key-test.asd openid-key.asd -ops5 http://beta.quicklisp.org/archive/ops5/2020-02-18/ops5-20200218-git.tgz 42739 89d7d0549272c77f000543b8bc2a5818 e37e16211f574db5815deacbe27708b5af08f592 ops5-20200218-git ops5.asd -opticl http://beta.quicklisp.org/archive/opticl/2022-02-20/opticl-20220220-git.tgz 254013 82143b7ab0bde3d8927d02e085110d86 0471b29b88942e454a067b9edae876c81b03dbbf opticl-20220220-git opticl-doc.asd opticl.asd -opticl-core http://beta.quicklisp.org/archive/opticl-core/2017-10-19/opticl-core-20171019-git.tgz 4502 612766d24e14244a87d0bf41a789ed5a 90fe1cccff0248626018b5634abdf717f5e8c445 opticl-core-20171019-git opticl-core.asd -optima http://beta.quicklisp.org/archive/optima/2015-07-09/optima-20150709-git.tgz 20345 20523dc3dfc04bb2526008dff0842caa aec56f162a6b34024d0b419ed9dfb35ef9e75be6 optima-20150709-git optima.asd optima.ppcre.asd optima.test.asd -org-davep-dict http://beta.quicklisp.org/archive/org-davep-dict/2019-05-21/org-davep-dict-20190521-git.tgz 6731 a5c307e394ddaf3dc23fd415fb025e04 84ce779221666927b4e07aaa47fcd26fb24f7bf0 org-davep-dict-20190521-git org-davep-dict.asd -org-davep-dictrepl http://beta.quicklisp.org/archive/org-davep-dictrepl/2019-05-21/org-davep-dictrepl-20190521-git.tgz 2983 311107f58978970b214e575690815a62 89eb453c83abfd72dd4c6a821a5b9704794e2fab org-davep-dictrepl-20190521-git org-davep-dictrepl.asd -org-sampler http://beta.quicklisp.org/archive/org-sampler/2016-03-18/org-sampler-0.2.0.tgz 61604 1d367f79a5cb325abce3e1640ce6bc91 e7e572deb75c9bb2f55bdca3a5915bf1fb4440da org-sampler-0.2.0 org-sampler.asd -origin http://beta.quicklisp.org/archive/origin/2022-07-07/origin-20220707-git.tgz 57816 98b0478d6f42d8f770b735633b76db07 20ba394ed81f9052a1d4ad3817bff9858f8ca6f3 origin-20220707-git origin.asd origin.test.asd -orizuru-orm http://beta.quicklisp.org/archive/orizuru-orm/2021-02-28/orizuru-orm-20210228-git.tgz 49633 12546f2f34c3a1741d46c6dbd0ad3214 e3b50e1342662685f3fcfb20f55d328d8a9c65f4 orizuru-orm-20210228-git orizuru-orm.asd -osc http://beta.quicklisp.org/archive/osc/2023-02-14/osc-20230214-git.tgz 32305 13d3ce3f828c7f311b7b8a646c43ca84 a709c796da3c6ffceb952b6dd3a3405c85ae384b osc-20230214-git osc.asd -osicat http://beta.quicklisp.org/archive/osicat/2023-02-14/osicat-20230214-git.tgz 66376 9837bc471b2355616b465fa610af718d 0f8c05fd785ac2cbe91c52e6f8534830603e2596 osicat-20230214-git osicat.asd -osmpbf http://beta.quicklisp.org/archive/osmpbf/2021-06-30/osmpbf-20210630-git.tgz 23232 75378297ea30adbe7eeb445be1e4d67a 94186bfaf2de9de1815501018e887c2ec60fcf29 osmpbf-20210630-git osmpbf.asd -ospm http://beta.quicklisp.org/archive/ospm/2022-11-06/ospm-20221106-git.tgz 12048 be9b4545e53d5856b8c7bd2192540573 ad0125818ea4af6f79992e9e987a8bc07eeff2eb ospm-20221106-git ospm.asd -overlord http://beta.quicklisp.org/archive/overlord/2022-11-06/overlord-20221106-git.tgz 57402 1e960f3e57f5af90013fe350bda2b8e2 b54c5203d5d702ac41d464ca02a0359dd82dcd38 overlord-20221106-git overlord.asd -oxenfurt http://beta.quicklisp.org/archive/oxenfurt/2019-07-10/oxenfurt-20190710-git.tgz 23362 d3399266edf13969b0031f972a15477f 146d6718296832a33ebd25076d743677b4a74a95 oxenfurt-20190710-git oxenfurt-core.asd oxenfurt-dexador.asd oxenfurt-drakma.asd oxenfurt.asd -pack http://beta.quicklisp.org/archive/pack/2011-06-19/pack-20110619-git.tgz 3684 f769fa83d8487575facf6fe5adf9b245 e33f75deac5ab3a1facc24fc378c9184b6be6d04 pack-20110619-git pack.asd -package-renaming http://beta.quicklisp.org/archive/package-renaming/2012-04-07/package-renaming-20120407-git.tgz 4522 b9d7b446196fba632edd088bf9ad23ae bcba6923289ab9cf2f539dec333853ff7d9e0a65 package-renaming-20120407-git package-renaming-test.asd package-renaming.asd -packet http://beta.quicklisp.org/archive/packet/2015-03-02/packet-20150302-git.tgz 10533 71312a40fa6abb7027b94c8a57a90d00 5c459eb3feebdfed53359a7b021cba522ae6df71 packet-20150302-git packet.asd -packet-crafting http://beta.quicklisp.org/archive/packet-crafting/2020-06-10/packet-crafting-20200610-git.tgz 2785 aaa0333dddfcc5e25e44edffbb993513 32c3e7f30ad90505371082fce4921c2a2f4bbc44 packet-crafting-20200610-git packet-crafting.asd -paiprolog http://beta.quicklisp.org/archive/paiprolog/2018-02-28/paiprolog-20180228-git.tgz 172150 1f04f011c9f09d7fe854b98e845d21bd e5505fd5ff9fb77bf6e3374ab0d5e9e37cc7186a paiprolog-20180228-git paiprolog.asd unifgram.asd -pal http://beta.quicklisp.org/archive/pal/2015-06-08/pal-20150608-git.tgz 3707918 ce7afd79040188475efc67ae87287949 795d4e4f69cb4132ee35b641e564ee01ab6365d9 pal-20150608-git examples/bermuda/bermuda.asd pal.asd -pandocl http://beta.quicklisp.org/archive/pandocl/2015-09-23/pandocl-20150923-git.tgz 2581 ee9450a491206f3c606c05bb63268c08 613046a725fc6925372f484d1771c6acf4b74b0d pandocl-20150923-git pandocl.asd -pango-markup http://beta.quicklisp.org/archive/pango-markup/2020-03-25/pango-markup-20200325-git.tgz 9297 148111aed4d8c504e5e5e1fd7f929c71 82e509817917e36c1d65caf4e91033afe1791e34 pango-markup-20200325-git pango-markup.asd -papyrus http://beta.quicklisp.org/archive/papyrus/2022-11-06/papyrus-20221106-git.tgz 74977 a57110e7ef84d5b136db446c34ff1cf5 b276e1811dce38072e48978c9fcd1aa21c709de9 papyrus-20221106-git papyrus.asd -parachute http://beta.quicklisp.org/archive/parachute/2023-02-14/parachute-20230214-git.tgz 55125 de28b3bc3f643290a31a118b123c768f f051bb812439533f1fcdedda0fc3e9d7fe974c68 parachute-20230214-git compat/parachute-fiveam.asd compat/parachute-lisp-unit.asd compat/parachute-prove.asd parachute.asd -parameterized-function http://beta.quicklisp.org/archive/parameterized-function/2019-03-07/parameterized-function-20190307-hg.tgz 3178 13de98b8381cd84c9cad3dde122e919a d0ee504ad9a10a393ff6326f1885ebfd16981149 parameterized-function-20190307-hg parameterized-function.asd -paren-files http://beta.quicklisp.org/archive/paren-files/2011-04-18/paren-files-20110418-git.tgz 11665 cf10bbcfa01d65e1487b2764d3967aeb 136c1ec5faace0cb6642fde48c9c8c317e0a3b91 paren-files-20110418-git paren-files.asd -paren-test http://beta.quicklisp.org/archive/paren-test/2017-08-30/paren-test-20170830-git.tgz 2796 1699edb46292e81cc416a717d42eb13a 8337b21fd440117d26c77f1ce1c6c3d81ec49265 paren-test-20170830-git examples/arith.asd paren-test.asd -paren-util http://beta.quicklisp.org/archive/paren-util/2011-04-18/paren-util-20110418-git.tgz 9583 ce8212375a6586235774baa4f7cfc4c5 1928ce6c595d307357e01e49fd47c32993b8562e paren-util-20110418-git paren-util.asd -paren6 http://beta.quicklisp.org/archive/paren6/2022-03-31/paren6-20220331-git.tgz 12264 9d3bfbdad61668c691622d7ac25ae67d 4018882007e03814de6649d2cbb2d2602522db41 paren6-20220331-git paren6.asd test-paren6.asd -parenml http://beta.quicklisp.org/archive/parenml/2015-09-23/parenml-20150923-git.tgz 2084 e02a5cb32d6ceda30744c90589b854cb 87db838f002b09178393e5162ebf681b43d23be6 parenml-20150923-git parenml-test.asd parenml.asd -parenscript http://beta.quicklisp.org/archive/parenscript/2018-12-10/Parenscript-2.7.1.tgz 103952 047c9a72bd36f1b4a5ec67af9453a0b9 2532046ecb26bcbc808bf8ed2d14d140a9a33fba Parenscript-2.7.1 parenscript.asd parenscript.tests.asd -parenscript-classic http://beta.quicklisp.org/archive/parenscript-classic/2011-12-03/parenscript-classic-20111203-darcs.tgz 185472 9d355c65babf238bdce498ff628e187b 3ea1563d8e21583c48b31677797e99b74fd31492 parenscript-classic-20111203-darcs parenscript-classic.asd -parse http://beta.quicklisp.org/archive/parse/2020-09-25/parse-20200925-git.tgz 7379 29779e94f9d0253b2c1d4fedf09801eb eb16fbc5dfc002b6428470446ada1a245a04674a parse-20200925-git parse.asd -parse-declarations http://beta.quicklisp.org/archive/parse-declarations/2010-10-06/parse-declarations-20101006-darcs.tgz 36664 e49222003e5b59c5c2a0cf58b86cfdcd f2ed7dbb076058e4aef57553469759b13a0a618c parse-declarations-20101006-darcs parse-declarations-1.0.asd -parse-float http://beta.quicklisp.org/archive/parse-float/2020-02-18/parse-float-20200218-git.tgz 4653 149e40a8c5fd6ab0e43242cb898d66bf 8031b1b03c4861658df12660cf2465e195af4bce parse-float-20200218-git parse-float.asd -parse-front-matter http://beta.quicklisp.org/archive/parse-front-matter/2016-08-25/parse-front-matter-20160825-git.tgz 1378 478c27505370135f5d8859fe5c755431 2da48a358580ac203b5762acdce7eb3e6516f39b parse-front-matter-20160825-git parse-front-matter-test.asd parse-front-matter.asd -parse-js http://beta.quicklisp.org/archive/parse-js/2016-04-21/parse-js-20160421-git.tgz 10664 14049fdc5f55bf48d7e3d54a9549a97e c6baef888b9383b2d437d31426f231de8a31b064 parse-js-20160421-git parse-js.asd -parse-number http://beta.quicklisp.org/archive/parse-number/2018-02-28/parse-number-v1.7.tgz 5715 b9ec925018b8f10193d73403873dde8f 472816dd6ad673d3be65ae33495c5378ba6b6588 parse-number-v1.7 parse-number.asd -parse-number-range http://beta.quicklisp.org/archive/parse-number-range/2012-11-25/parse-number-range-1.0.tgz 5733 a1a173bffeafcdca9320473f14103f80 c79d229ba4d3a0c5267b21b3560026b78a8c2300 parse-number-range-1.0 parse-number-range.asd -parseltongue http://beta.quicklisp.org/archive/parseltongue/2013-03-12/parseltongue-20130312-git.tgz 27941 4519905cf797085c6063c33bf0107b9c 3f9099ad7ee505fe0b8abaaca1e32d03bf6892b0 parseltongue-20130312-git parseltongue.asd -parseq http://beta.quicklisp.org/archive/parseq/2021-05-31/parseq-20210531-git.tgz 40928 a62fdb0623450f7ef82297e8b23fd343 8337a8abcb1e481150dd3580cb2d78f2fe16303c parseq-20210531-git parseq.asd -parser.common-rules http://beta.quicklisp.org/archive/parser.common-rules/2020-07-15/parser.common-rules-20200715-git.tgz 18930 6391d962ae6fc13cc57312de013504c5 71e704909ca1940d80e48c78f44d95c1fed4abe8 parser.common-rules-20200715-git parser.common-rules.asd parser.common-rules.operators.asd -parser.ini http://beta.quicklisp.org/archive/parser.ini/2018-10-18/parser.ini-20181018-git.tgz 11142 83943b433684f7bef2ad113adef8e4fd 60010609b62b382abbdda31e8824ab3026a42ffe parser.ini-20181018-git parser.ini.asd -parsnip http://beta.quicklisp.org/archive/parsnip/2022-03-31/parsnip-20220331-git.tgz 99114 9643c293d4e4dc62a11a2e581f8ce607 5bb773de88a22430bc661a1c971ea8c7e1a1a35d parsnip-20220331-git parsnip.asd -patchwork http://beta.quicklisp.org/archive/patchwork/2022-07-07/patchwork-20220707-git.tgz 5333 543fe66067f4a2ef1560eea4732ded06 497acf28e04ed585df383d37dadce415b14aeb16 patchwork-20220707-git patchwork.asd -path-parse http://beta.quicklisp.org/archive/path-parse/2016-04-21/path-parse-20160421-git.tgz 2115 83ace94d06e0759f717bf11be698602e 331bfeef1557fa4133220cac48bf4afb4f62a8da path-parse-20160421-git path-parse-test.asd path-parse.asd -path-string http://beta.quicklisp.org/archive/path-string/2016-08-25/path-string-20160825-git.tgz 4983 bc3d1e818a793d955eb6877f67bd4d52 833c85edc0fffcfcef2a9b5cfd111910c648293a path-string-20160825-git path-string-test.asd path-string.asd -pathname-utils http://beta.quicklisp.org/archive/pathname-utils/2022-11-06/pathname-utils-20221106-git.tgz 19971 22c2d4179b5b4f69df3b88f1ee0b6106 475930c915922e9e3655df3fc0fa2d1588b6f702 pathname-utils-20221106-git pathname-utils-test.asd pathname-utils.asd -patron http://beta.quicklisp.org/archive/patron/2013-04-20/patron-20130420-git.tgz 12195 dd08fa2247852002f9884ccc842aeae4 6d2f8130f0ab4eab47b9aba79e3cc060ef6da096 patron-20130420-git patron.asd -pcall http://beta.quicklisp.org/archive/pcall/2010-10-06/pcall-0.3.tgz 14561 019d85dfd1d5d0ee8d4ee475411caf6b 65626582e38d7a8b3180382a694a96290fde4b2c pcall-0.3 pcall-queue.asd pcall.asd -percent-encoding http://beta.quicklisp.org/archive/percent-encoding/2012-10-13/percent-encoding-20121013-git.tgz 5240 de4b28564907c12b598630d27135d80f c945ddb56afaf0244019242f77e396edfe870e1f percent-encoding-20121013-git percent-encoding.asd -perceptual-hashes http://beta.quicklisp.org/archive/perceptual-hashes/2022-07-07/perceptual-hashes-20220707-git.tgz 77319 4bad0585364e19336b3ccc82d4b00bba ff2c8aad83ce7818e56fb020cca4c9b18c22b42c perceptual-hashes-20220707-git perceptual-hashes.asd -periodic-table http://beta.quicklisp.org/archive/periodic-table/2011-10-01/periodic-table-1.0.tgz 5100 1fe8e203b8b622857fe1af4ade13e7ce 1f118c131789908e9108b84e72c2e1325f1ee22e periodic-table-1.0 periodic-table.asd -periods http://beta.quicklisp.org/archive/periods/2022-11-06/periods-20221106-git.tgz 33407 555ac25b534463a627b87f09d0cd6253 0c4d7db8501e8be163e1e2051e81d3d545d9a460 periods-20221106-git periods-series.asd periods.asd -perlre http://beta.quicklisp.org/archive/perlre/2020-07-15/perlre-20200715-git.tgz 7494 c441e4b9618789d3e6ffeadc9561c334 9799c4194934eee14732c91eb8c1bd56ec85f5bd perlre-20200715-git perlre.asd -pero http://beta.quicklisp.org/archive/pero/2023-02-14/pero-20230214-git.tgz 2817 0e6dd87234a89245917c2cfafd42c1ce f29b96c409df4e4bf85c8a841b4d8ee2dcd8ea65 pero-20230214-git pero.asd -persistent-tables http://beta.quicklisp.org/archive/persistent-tables/2012-02-08/persistent-tables-20120208-git.tgz 2585 08f6feb0c4716102d9f4c0ebe817a7be d53ebc25f643ca4ff4f4dda34421ddd1f6a2137c persistent-tables-20120208-git persistent-tables.asd -persistent-variables http://beta.quicklisp.org/archive/persistent-variables/2013-03-12/persistent-variables-20130312-git.tgz 117127 ba06997b04bdbeee85fc8861e0cdf687 ac9009d2637c21140d015c84b88200659808a7e1 persistent-variables-20130312-git persistent-variables.asd -petalisp http://beta.quicklisp.org/archive/petalisp/2023-02-14/petalisp-20230214-git.tgz 171118 ee336a5be41fd5cc637568cc0ad81e5a 11097733a0ae5e8fe49e7526abbb4a581e800f75 petalisp-20230214-git code/api/petalisp.api.asd code/core/petalisp.core.asd code/graphviz/petalisp.graphviz.asd code/ir/petalisp.ir.asd code/native-backend/petalisp.native-backend.asd code/petalisp.asd code/test-suite/petalisp.test-suite.asd code/utilities/petalisp.utilities.asd code/xmas-backend/petalisp.xmas-backend.asd examples/petalisp.examples.asd -petit.package-utils http://beta.quicklisp.org/archive/petit.package-utils/2014-08-26/petit.package-utils-20140826-git.tgz 2290 58e6dceab797eec3cea779e5fb366486 f8a4735180f1d47481349ed8801433a4a6a5a8df petit.package-utils-20140826-git petit.package-utils.asd -petit.string-utils http://beta.quicklisp.org/archive/petit.string-utils/2014-11-06/petit.string-utils-20141106-git.tgz 4262 dea2dea0ac8045a1930a81231a1ac39b 8169426736e26e55f30171560c3b0e17c0175eea petit.string-utils-20141106-git petit.string-utils-test.asd petit.string-utils.asd -petri http://beta.quicklisp.org/archive/petri/2020-04-27/petri-20200427-git.tgz 139139 07ab9ed43e146849dcf32f2a8f06cc40 fc87e5028922295ca9967c44b8f88c56327d2804 petri-20200427-git petri.asd -pettomato-deque http://beta.quicklisp.org/archive/pettomato-deque/2012-01-07/pettomato-deque-20120107-git.tgz 5573 f4aebae99019f5ca7c82fec60540bbd9 7f132a9c5c15aac2d555bc1c19570973d32eb5c3 pettomato-deque-20120107-git pettomato-deque-tests.asd pettomato-deque.asd -pettomato-indexed-priority-queue http://beta.quicklisp.org/archive/pettomato-indexed-priority-queue/2012-09-09/pettomato-indexed-priority-queue-20120909-git.tgz 7555 f734b68ce8cdb911562cdd62eed1d5aa fdeebe7c9c560e4c559c18ba9ee833310685a1eb pettomato-indexed-priority-queue-20120909-git pettomato-indexed-priority-queue-tests.asd pettomato-indexed-priority-queue.asd -pg http://beta.quicklisp.org/archive/pg/2015-06-08/pg-20150608-git.tgz 48921 11a6ddac157a7443155158e255a2452b 6e5a808a1b08d0049450724574058280cf3a8a2d pg-20150608-git pg.asd -pgloader http://beta.quicklisp.org/archive/pgloader/2022-11-06/pgloader-v3.6.9.tgz 3710890 18bd05a740af2cd5c327732f9a793efe b45c084262645f7cfae11f0761f49792cc14abd4 pgloader-v3.6.9 pgloader.asd -phoe-toolbox http://beta.quicklisp.org/archive/phoe-toolbox/2021-01-24/phoe-toolbox-20210124-git.tgz 11392 43058ff6121fdc5b91a60c7f7223fb4d 860947b7239e2a2dc8795aeec55f86fda638724e phoe-toolbox-20210124-git phoe-toolbox.asd -phos http://beta.quicklisp.org/archive/phos/2022-02-20/phos-20220220-git.tgz 6059 34e65de883f34a39fcbe9d97e4bb7b12 e197369e7d65b226ec60cf08e58dd062e016de46 phos-20220220-git phos.asd -physical-quantities http://beta.quicklisp.org/archive/physical-quantities/2021-10-20/physical-quantities-20211020-git.tgz 29571 a322db845056f78a237630a565b41490 28a95f39d0aab6007d00f498e8ce9ed0c4c533bc physical-quantities-20211020-git physical-quantities.asd -picl http://beta.quicklisp.org/archive/picl/2021-01-24/picl-20210124-git.tgz 14029 7647fb7da88b067b365cc52138887e1a 0b05a7e8e6f1711c24247fa4140a6ccc730ef408 picl-20210124-git picl.asd -piggyback-parameters http://beta.quicklisp.org/archive/piggyback-parameters/2020-06-10/piggyback-parameters-20200610-git.tgz 6875 470a00d9671d91458573bbbe2ccba65b a53ed83556517233b71d88c12b0166539b2fb015 piggyback-parameters-20200610-git piggyback-parameters.asd -pileup http://beta.quicklisp.org/archive/pileup/2015-07-09/pileup-20150709-git.tgz 20217 230aeb8bbb0993c5fecd4ef47052623f 045fe18800b0e56283617fa5b032c483f38be280 pileup-20150709-git pileup.asd -pipes http://beta.quicklisp.org/archive/pipes/2015-09-23/pipes-20150923-git.tgz 5603 77717361af87e7a83d38e84d08ad29f5 e7ce78dc510136ebd0b8b6a7495fac662233a363 pipes-20150923-git pipes.asd -piping http://beta.quicklisp.org/archive/piping/2022-11-06/piping-20221106-git.tgz 9601 5cb995feb994d83e6ed72500a11a3437 f36e8247a01218b1162f4dd11456fbb985508bba piping-20221106-git piping.asd -pithy-xml http://beta.quicklisp.org/archive/pithy-xml/2010-10-06/pithy-xml-20101006-git.tgz 10188 5401547ac31ab9c502d3409a9200a0dc 9445d371b1e0801e3e75ff112f8ba551bb372276 pithy-xml-20101006-git pithy-xml.asd -pjlink http://beta.quicklisp.org/archive/pjlink/2022-03-31/pjlink-20220331-git.tgz 16106 80ae9df50eec86d567ae95d26b603d25 38152bbe3b603ff0a90e8ff02599cfa0388123e2 pjlink-20220331-git src/pjlink.asd -pk-serialize http://beta.quicklisp.org/archive/pk-serialize/2022-11-06/pk-serialize-20221106-git.tgz 8573 cd30a8f0ab67f15637a865aae63c88be fb03d2d7b419b5e3b2815da288166db4212a86ca pk-serialize-20221106-git pk-serialize.asd -pkg-doc http://beta.quicklisp.org/archive/pkg-doc/2020-09-25/pkg-doc-20200925-git.tgz 18257 28fedd7417265067bfe9602b634957e7 af9f4d14eb96e6b39a36c9005f2337f3787ca4f7 pkg-doc-20200925-git pkg-doc.asd -place-modifiers http://beta.quicklisp.org/archive/place-modifiers/2012-11-25/place-modifiers-2.1.tgz 10202 8c209e6ee7e376b20b447a4e75fb12e3 3a15cc3cd06e587cb81222057b99efa0a27a1545 place-modifiers-2.1 place-modifiers.asd -place-utils http://beta.quicklisp.org/archive/place-utils/2018-10-18/place-utils-0.2.tgz 14315 5462562949ab3a8b5a9f40e9e6d2a628 164c95f8afeab6e8ddf256f1f845108665035fa0 place-utils-0.2 place-utils.asd -plain-odbc http://beta.quicklisp.org/archive/plain-odbc/2019-11-30/plain-odbc-20191130-git.tgz 60040 cfa0da32a083a406344e6f6504d962de 9a7a0ce75ac9e1ef7c2fddc0705a1b2429196400 plain-odbc-20191130-git plain-odbc.asd -planks http://beta.quicklisp.org/archive/planks/2011-05-22/planks-20110522-git.tgz 13152 b0881e48b242ea36e95a815ba6118950 6fd7b423ace8306647696ae42d465683bec59e1a planks-20110522-git planks.asd -plexippus-xpath http://beta.quicklisp.org/archive/plexippus-xpath/2019-05-21/plexippus-xpath-20190521-git.tgz 56479 eb9a4c39a7c37aa0338c401713b3f944 6acb71007298138bb494e04abe39a79fff54af86 plexippus-xpath-20190521-git xpath.asd -plokami http://beta.quicklisp.org/archive/plokami/2020-02-18/plokami-20200218-git.tgz 20037 09cc4ee4c130da33562f277b56418b33 610357b49e11de7666e88ad9747dd478669b0ced plokami-20200218-git plokami.asd -plot http://beta.quicklisp.org/archive/plot/2023-02-14/plot-20230214-git.tgz 474872 162a8be9500856e4fe5069ca3c2c0ef2 6695fe1ea079bcf328baa9b0fde51f5804ea5666 plot-20230214-git plot.asd -pludeck http://beta.quicklisp.org/archive/pludeck/2018-08-31/pludeck-20180831-git.tgz 5125 7cc744ed744245026604347abf01a539 3bed71c98b172d330579aaa8833575f9f7b5b7f3 pludeck-20180831-git pludeck.asd -plump http://beta.quicklisp.org/archive/plump/2023-02-14/plump-20230214-git.tgz 51134 f63274c3e56d7126793778165f81b6d1 8ddc9f9ba6ad2b564c6f5e16642250cb94f1e899 plump-20230214-git plump-dom.asd plump-lexer.asd plump-parser.asd plump.asd -plump-bundle http://beta.quicklisp.org/archive/plump-bundle/2019-07-10/plump-bundle-20190710-git.tgz 7705 a89ccc2557c1657fa080302d5c929a6d 7a4b27d045b483bfc99ecfd43e5084bc6b985e60 plump-bundle-20190710-git plump-bundle.asd -plump-sexp http://beta.quicklisp.org/archive/plump-sexp/2021-05-31/plump-sexp-20210531-git.tgz 3716 651ef53b4b258971de4ca66a299a5157 3a961ac6f4414379688d9c05d0cd105a743a8691 plump-sexp-20210531-git plump-sexp.asd -plump-tex http://beta.quicklisp.org/archive/plump-tex/2021-05-31/plump-tex-20210531-git.tgz 3505 31f9b03d00f414b4e823e72adee1369a 56c4e93b1491ec7a76b74cb32dc12afa3138b066 plump-tex-20210531-git plump-tex-test.asd plump-tex.asd -png-read http://beta.quicklisp.org/archive/png-read/2017-08-30/png-read-20170830-git.tgz 8677 40354aa5f3f3321a4d42629c15c6f9f7 d36071bb47abcda177284afddd83cf518d579b19 png-read-20170830-git png-read.asd -pngload http://beta.quicklisp.org/archive/pngload/2022-07-07/pngload-20220707-git.tgz 106560 c25e6a697b33f8e30dd80a8fff8f8a05 3a57d287dd82efbe9e903a597635932e50765b28 pngload-20220707-git pngload.asd pngload.test.asd -poler http://beta.quicklisp.org/archive/poler/2018-12-10/poler-20181210-git.tgz 6505 9f7588fcb283ff5c56bab084304fc4a3 fbf7235432d08b6d488bd1282ba19dddd9e0db36 poler-20181210-git poler-test.asd poler.asd -policy-cond http://beta.quicklisp.org/archive/policy-cond/2020-04-27/policy-cond-20200427-git.tgz 5976 c62090127d03b788518ac1257f49eda2 a6e5303456d976a67cfe6f05badc513b088664c6 policy-cond-20200427-git policy-cond.asd -polisher http://beta.quicklisp.org/archive/polisher/2021-12-30/polisher-20211230-git.tgz 8088 018a57d2e94b9e8458c29c4e3aad4fdf 3da4faf6d9b74689b39929271db70be44d948d7b polisher-20211230-git polisher.asd polisher.test.asd -polymorphic-functions http://beta.quicklisp.org/archive/polymorphic-functions/2023-02-14/polymorphic-functions-20230214-git.tgz 68225 3613203b1f35ace0f99a4e2fd3a94da3 38d1ea2187f47e7e1109a44252d4dd253013d3a1 polymorphic-functions-20230214-git polymorphic-functions.asd -pooler http://beta.quicklisp.org/archive/pooler/2015-06-08/pooler-20150608-git.tgz 4985 75efc3d397c6962954ec3c37b0f45c5f b118bb296d55bcd7d783a4b52b293a970b46728c pooler-20150608-git pooler.asd -portable-condition-system http://beta.quicklisp.org/archive/portable-condition-system/2021-08-07/portable-condition-system-20210807-git.tgz 52721 649af73ed93e5411e9c3dfdcaf22d2ae 60bcfce550b68c58105a720d81ee8ec27cb8a82a portable-condition-system-20210807-git integration/portable-condition-system.integration.asd portable-condition-system.asd -portable-threads http://beta.quicklisp.org/archive/portable-threads/2021-05-31/portable-threads-20210531-git.tgz 31602 e69804b686166e68385bb710f3bb7e97 fc2cf73edff3456db89d864d20ec0e8fce2e4825 portable-threads-20210531-git portable-threads.asd -portableaserve http://beta.quicklisp.org/archive/portableaserve/2019-08-13/portableaserve-20190813-git.tgz 586259 4cd7af3fbd45693800a823aff55fa442 dfd074e79bfd1d98385f2066a82dacf8b3f98bea portableaserve-20190813-git acl-compat/acl-compat.asd aserve/aserve.asd aserve/htmlgen/htmlgen.asd aserve/webactions/webactions.asd -portal http://beta.quicklisp.org/archive/portal/2021-12-09/portal-20211209-git.tgz 17664 77eba399ed30f9c4d051b9cf7ef21aaf 04b135d1e89771ef31e6f6cb02cf9bd41b270b32 portal-20211209-git portal.asd -positional-lambda http://beta.quicklisp.org/archive/positional-lambda/2012-10-13/positional-lambda-2.0.tgz 7250 1099a5457455b7c570132556073aa21f 7433ee7798c5bdbd6c2edd9869f5173d93178727 positional-lambda-2.0 positional-lambda.asd -posix-shm http://beta.quicklisp.org/archive/posix-shm/2022-11-06/posix-shm-20221106-git.tgz 15492 7e255dabb09076f6bf604597d0c6f6ad 8be2368f5ed6391443d7099c2e9f68b31b3215c2 posix-shm-20221106-git posix-shm.asd -postmodern http://beta.quicklisp.org/archive/postmodern/2023-02-14/postmodern-20230214-git.tgz 590389 e8f77ce780065af6c481bc8dad20b3df 21c3c202980b0a945c704815ccbdb2ddbf10cb7d postmodern-20230214-git cl-postgres.asd postmodern.asd s-sql.asd simple-date.asd -postmodern-localtime http://beta.quicklisp.org/archive/postmodern-localtime/2020-06-10/postmodern-localtime-20200610-git.tgz 1165 1af6deb83df625574d7e2e541e1ddd5a 25e8544b5822f362a5f4482c0ded2f06d46550bc postmodern-localtime-20200610-git postmodern-localtime.asd -postmodernity http://beta.quicklisp.org/archive/postmodernity/2017-01-24/postmodernity-20170124-git.tgz 3251 9109aace9c9a906732eb0259a15274e0 380ce87aaceedd6aa00a2d94da9b4dfaa16ddd6a postmodernity-20170124-git postmodernity.asd -postoffice http://beta.quicklisp.org/archive/postoffice/2012-09-09/postoffice-20120909-git.tgz 36931 d09dd023aac099aba49bd3a485179a26 0e6aa7efb53da555f44a8b7caefff3dce1e7eaf3 postoffice-20120909-git postoffice.asd -pounds http://beta.quicklisp.org/archive/pounds/2016-02-08/pounds-20160208-git.tgz 22888 7690a4a5aaca79a60bbb5c49ac9ef1b2 b60ec9318d7017a982e95eae42a2a5c6844da2b7 pounds-20160208-git pounds.asd -pp-toml http://beta.quicklisp.org/archive/pp-toml/2022-11-06/pp-toml-20221106-git.tgz 10962 66d1a6c2cc970f7d7569b22b0fc9aa18 68c9902cfff4e9b68042c018e81e14fa2653114d pp-toml-20221106-git pp-toml-tests.asd pp-toml.asd -ppath http://beta.quicklisp.org/archive/ppath/2018-07-11/ppath-20180711-git.tgz 26911 bcfdda2ff1161721b98c2c1233434429 b93079de943fb4f9cf8ef0a3c2517ce4292b8cdc ppath-20180711-git ppath-test.asd ppath.asd -practical-cl http://beta.quicklisp.org/archive/practical-cl/2018-04-30/practical-cl-20180430-git.tgz 241556 6d0d20024a11897b190d9680fb067d79 462ef8018d44d307ae58197ff03d049ad9a0eff1 practical-cl-20180430-git practicals/Chapter03/pcl-simple-database.asd practicals/Chapter08/pcl-macro-utilities.asd practicals/Chapter09/pcl-test-framework.asd practicals/Chapter15/pcl-pathnames.asd practicals/Chapter23/pcl-spam.asd practicals/Chapter24/pcl-binary-data.asd practicals/Chapter25/pcl-id3v2.asd practicals/Chapter26/pcl-url-function.asd practicals/Chapter27/pcl-mp3-database.asd practicals/Chapter28/pcl-shoutcast.asd practicals/Chapter29/pcl-mp3-browser.asd practicals/Chapter31/pcl-html.asd practicals/practical-cl.asd -prbs http://beta.quicklisp.org/archive/prbs/2018-02-28/prbs-20180228-git.tgz 16327 6baec1bb244961320d1a034a30fdb89a c09a9e8fe05cea4dcc3b4573b33c5f517e4c566b prbs-20180228-git doc/prbs-docs.asd prbs.asd -pretty-function http://beta.quicklisp.org/archive/pretty-function/2013-06-15/pretty-function-20130615-git.tgz 6248 7b6ad93307bc8c8ec585a8199e5e9cb6 3eaf9baa4d31922b3adf8b04005393e7d054b4aa pretty-function-20130615-git pretty-function.asd -primecount http://beta.quicklisp.org/archive/primecount/2020-03-25/primecount-20200325-git.tgz 3066 58cddf7bf57bbf3f97ef4f619daea71c e0a3d5f1e82f5ef5de108dfcc81fb4758bfe6ee7 primecount-20200325-git primecount.asd -print-html http://beta.quicklisp.org/archive/print-html/2018-10-18/print-html-20181018-git.tgz 2917 c9f8962deb792e5dd82c3971bfdf3daa ec23887721f684f8cd6170676d7141df9c3b381b print-html-20181018-git print-html.asd -print-licenses http://beta.quicklisp.org/archive/print-licenses/2022-07-07/print-licenses-20220707-git.tgz 3822 c1b02680f1148d081c5989f0d9417b08 15bbc79e73a3ca71c4f7f7004978017cec144ade print-licenses-20220707-git print-licenses.asd -printv http://beta.quicklisp.org/archive/printv/2021-12-30/printv-20211230-git.tgz 16013 2ca0c88812b49484e30306b2d973abc9 182d927f00580f9f027a1682bbe629ad67a0b57d printv-20211230-git printv.asd -priority-queue http://beta.quicklisp.org/archive/priority-queue/2015-07-09/priority-queue-20150709-git.tgz 2535 5196d0b355b72215228de49eeb0df745 65644f0e3eb8bd23af1ffe64f856bbd9c4d1ac15 priority-queue-20150709-git priority-queue.asd -proc-parse http://beta.quicklisp.org/archive/proc-parse/2019-08-13/proc-parse-20190813-git.tgz 8695 99bdce79943071267c6a877d8de246c5 18fff39d2a228aeb60547154bb09745d2a8769e1 proc-parse-20190813-git proc-parse-test.asd proc-parse.asd -projectured http://beta.quicklisp.org/archive/projectured/2017-12-27/projectured-quicklisp-c3a60e76-git.tgz 3573436 501022101c0211a267b608c4615fdce0 3e002e0bc323ffa8a6495bdd42883027516f69c6 projectured-quicklisp-c3a60e76-git projectured.document.asd projectured.editor.asd projectured.executable.asd projectured.projection.asd projectured.sdl.asd projectured.sdl.test.asd projectured.swank.asd projectured.test.asd -prometheus.cl http://beta.quicklisp.org/archive/prometheus.cl/2020-12-20/prometheus.cl-20201220-git.tgz 26101 c5834e4037e9a987b1f3dea353fe86be a2f6e45e3bbc38947610e4d0dbcd20d66e2da6d2 prometheus.cl-20201220-git prometheus.asd prometheus.collectors.process.asd prometheus.collectors.process.test.asd prometheus.collectors.sbcl.asd prometheus.collectors.sbcl.test.asd prometheus.examples.asd prometheus.exposers.hunchentoot.asd prometheus.exposers.hunchentoot.test.asd prometheus.formats.text.asd prometheus.formats.text.test.asd prometheus.pushgateway.asd prometheus.pushgateway.test.asd prometheus.test.all.asd prometheus.test.asd prometheus.test.support.asd -promise http://beta.quicklisp.org/archive/promise/2023-02-14/promise-20230214-git.tgz 13772 c2b52b8cc1dc66841ae239e8a7a1dc84 9e7faee87665693718d87ee56c5d45a60a94931d promise-20230214-git promise-test.asd promise.asd -prompt-for http://beta.quicklisp.org/archive/prompt-for/2022-07-07/prompt-for-20220707-git.tgz 5290 df68b8f199784e21f552cc81530579e1 7daaaa1c7a8b2a053b1b4d9fa83ba3053624f1c7 prompt-for-20220707-git prompt-for.asd spec/prompt-for.test.asd -protest http://beta.quicklisp.org/archive/protest/2020-12-20/protest-20201220-git.tgz 68187 caee2a3cc32c8fa45170aaafb906697b 5bbbbc08387809f2b3616788dfa0b887432e5a41 protest-20201220-git protest.asd -protobuf http://beta.quicklisp.org/archive/protobuf/2022-03-31/protobuf-20220331-git.tgz 92900 0672e54102a7063ca33e08817bc9d0dd 11db05abee1783e85e396890db0b89d65667cbfd protobuf-20220331-git conformance/protobuf-conformance.asd protobuf.asd varint/varint.asd -prove http://beta.quicklisp.org/archive/prove/2020-02-18/prove-20200218-git.tgz 877452 85780b65e84c17a78d658364b8c4d11b 1582bc8fb61acc47ab94e7b41072ae4c91fcbad4 prove-20200218-git cl-test-more.asd prove-asdf.asd prove-test.asd prove.asd -pseudonyms http://beta.quicklisp.org/archive/pseudonyms/2020-03-25/pseudonyms-20200325-git.tgz 4086 b768d5c75ba7b417ef894bcd2c3c2b28 bae12df342a5e866b7b458ee0098283900bf1aa5 pseudonyms-20200325-git pseudonyms.asd -psgraph http://beta.quicklisp.org/archive/psgraph/2010-10-06/psgraph-1.2.tgz 8448 df735b2f6c45e14ea18c16650ad8e90d 1cb75fe9886dd39bc7dbdd92c5e4a0b7e229218a psgraph-1.2 psgraph.asd -psychiq http://beta.quicklisp.org/archive/psychiq/2020-09-25/psychiq-20200925-git.tgz 17646 f4a13dcb918491137ad6b396afe50456 3c72aa6c3a39417dd141b1fd311a3558c06ed991 psychiq-20200925-git psychiq-test.asd psychiq.asd -ptester http://beta.quicklisp.org/archive/ptester/2016-09-29/ptester-20160929-git.tgz 12713 938a4366b6608ae5c4a0be9da11a61d4 c32afa4c3f143967eddf4ace14f3e15429610f7f ptester-20160929-git ptester.asd -purgatory http://beta.quicklisp.org/archive/purgatory/2022-07-07/purgatory-20220707-git.tgz 42502 7db575f3629f82c439ef89333388557d 68d09380fcf6cf8d4767f603f6fa762a8a993cef purgatory-20220707-git purgatory-tests.asd purgatory.asd -puri http://beta.quicklisp.org/archive/puri/2020-10-16/puri-20201016-git.tgz 29178 890c61df1d7204b2d681bf146c43e711 9bfd6d8fea4903f8a4333d2788d9a45a33292098 puri-20201016-git puri.asd -purl http://beta.quicklisp.org/archive/purl/2016-09-29/purl-20160929-git.tgz 32297 ab5d05fcdd2b09d143ebc4e332b4058b 7ce1d37badf30b8386747f26d330b0432d2be4a1 purl-20160929-git purl.asd -pvars http://beta.quicklisp.org/archive/pvars/2021-02-28/pvars-20210228-git.tgz 2000 f4a305664f44d496724d5cc90e21822e 0577e02c256c7555e29f4f2293402ec437630618 pvars-20210228-git pvars.asd -py-configparser http://beta.quicklisp.org/archive/py-configparser/2017-08-30/py-configparser-20170830-svn.tgz 8452 b6a9fc2a9c70760d6683cafe656f9e90 256cf7e56d08aa7021f8c0739f0f6a2912780c1c py-configparser-20170830-svn py-configparser.asd -py4cl http://beta.quicklisp.org/archive/py4cl/2022-07-07/py4cl-20220707-git.tgz 616493 029de49a10fcb001f8e50b3499479b0f 0dee6df9f41940deada17026b8b75483cebd3c22 py4cl-20220707-git py4cl.asd -py4cl2 http://beta.quicklisp.org/archive/py4cl2/2023-02-14/py4cl2-v2.9.1.tgz 877408 50c22f23e253aabf584481f1d7295847 6053c0c240e2797494232b4e0f7a2d5524b84cb6 py4cl2-v2.9.1 py4cl2.asd -py4cl2-cffi http://beta.quicklisp.org/archive/py4cl2-cffi/2023-02-15/py4cl2-cffi-20230215-git.tgz 45505 f17fe073288a20f5bd48f819f6a7e223 29ebf8ee0e230853dd72875d1ac9385a552d1bba py4cl2-cffi-20230215-git py4cl2-cffi.asd -pythonic-string-reader http://beta.quicklisp.org/archive/pythonic-string-reader/2018-07-11/pythonic-string-reader-20180711-git.tgz 3594 8156636895b1148fad6e7bcedeb6b556 084f20b11e986f7f186f5f8744ce0e77c2065129 pythonic-string-reader-20180711-git pythonic-string-reader.asd -pzmq http://beta.quicklisp.org/archive/pzmq/2021-05-31/pzmq-20210531-git.tgz 21958 1d3b5223582898476399e164a0c982d2 9a9a01e9695cdd71ca64e2cf3e56bfb5162f563c pzmq-20210531-git pzmq.asd -qbase64 http://beta.quicklisp.org/archive/qbase64/2022-02-20/qbase64-20220220-git.tgz 15720 501aa5fc53a7706ac379ee1ed13642f2 f6107234416cf603573856ebda67fbda4aa0ee79 qbase64-20220220-git qbase64.asd -qbook http://beta.quicklisp.org/archive/qbook/2013-03-12/qbook-20130312-darcs.tgz 12971 6e1cc023c21340d4884da27ce1a1df39 872d11a845287195e88e3fd1d3045a0c471e5698 qbook-20130312-darcs qbook.asd -ql-checkout http://beta.quicklisp.org/archive/ql-checkout/2019-05-21/ql-checkout-20190521-git.tgz 4290 e2b0b29b3829a67a6f88aab932b68e5f c3cf51de9f3c2a6155d838e5645363be4c596dd4 ql-checkout-20190521-git ql-checkout.asd -qlot http://beta.quicklisp.org/archive/qlot/2022-03-31/qlot-20220331-git.tgz 36189 5870b35d10bd13ff527d09f69442acff 13113b4ffde786450bad1278ddd610f23fb43c50 qlot-20220331-git qlot.asd -qmynd http://beta.quicklisp.org/archive/qmynd/2019-07-10/qmynd-20190710-git.tgz 48872 c4a230ca44c5c037664979dfd48985a9 2a43db7117073bc830ad419da96a5e60cb1d2a89 qmynd-20190710-git qmynd.asd tests/qmynd-test.asd -qoi http://beta.quicklisp.org/archive/qoi/2022-07-07/qoi-20220707-git.tgz 3197 d04842521ef0e9610abdccb87b74b8bd e18b150b12cc018f6d7867c6ac0befb15f18604b qoi-20220707-git qoi.asd -qt-libs http://beta.quicklisp.org/archive/qt-libs/2021-05-31/qt-libs-20210531-git.tgz 52711 dd7f9861ca98aec24693681848a98268 a9369ba3a63377d6a612b71ab1ee313fdb8ac69c qt-libs-20210531-git qt-lib-generator.asd qt-libs.asd systems/commonqt.asd systems/phonon.asd systems/qimageblitz.asd systems/qsci.asd systems/qt3support.asd systems/qtcore.asd systems/qtdbus.asd systems/qtdeclarative.asd systems/qtgui.asd systems/qthelp.asd systems/qtnetwork.asd systems/qtopengl.asd systems/qtscript.asd systems/qtsql.asd systems/qtsvg.asd systems/qttest.asd systems/qtuitools.asd systems/qtwebkit.asd systems/qtxml.asd systems/qtxmlpatterns.asd systems/qwt.asd systems/smokebase.asd -qtools http://beta.quicklisp.org/archive/qtools/2023-02-14/qtools-20230214-git.tgz 197054 1e6de330a02ba3215b11970a1706f5c8 e8f2c98ec6952ad59425bdc54e6ac18ad745dc0e qtools-20230214-git examples/evaluator/qtools-evaluator.asd examples/game/qtools-game.asd examples/helloworld/qtools-helloworld.asd examples/melody/qtools-melody.asd examples/opengl/qtools-opengl.asd examples/titter/qtools-titter.asd q+.asd qtools.asd -qtools-ui http://beta.quicklisp.org/archive/qtools-ui/2020-02-18/qtools-ui-20200218-git.tgz 66141 d03693fdcd2f5d7db452565223783beb 0bb39cfd917f51e84ebd6c7743b016e965aafc0b qtools-ui-20200218-git qtools-ui-auto-resizing-textedit.asd qtools-ui-base.asd qtools-ui-bytearray.asd qtools-ui-cell.asd qtools-ui-color-history.asd qtools-ui-color-picker.asd qtools-ui-color-sliders.asd qtools-ui-color-triangle.asd qtools-ui-compass.asd qtools-ui-container.asd qtools-ui-debugger.asd qtools-ui-dialog.asd qtools-ui-dictionary.asd qtools-ui-drag-and-drop.asd qtools-ui-executable.asd qtools-ui-fixed-qtextedit.asd qtools-ui-flow-layout.asd qtools-ui-helpers.asd qtools-ui-imagetools.asd qtools-ui-keychord-editor.asd qtools-ui-layout.asd qtools-ui-listing.asd qtools-ui-notification.asd qtools-ui-options.asd qtools-ui-panels.asd qtools-ui-placeholder-text-edit.asd qtools-ui-plot.asd qtools-ui-progress-bar.asd qtools-ui-repl.asd qtools-ui-slider.asd qtools-ui-spellchecked-text-edit.asd qtools-ui-splitter.asd qtools-ui-svgtools.asd qtools-ui.asd -quad-tree http://beta.quicklisp.org/archive/quad-tree/2022-07-07/quad-tree-20220707-git.tgz 2298 2f7f69077222242d286340cf1e24d84a 35fea9123ad1fd7f82523ad2a8faed2c04fe09ec quad-tree-20220707-git quad-tree.asd -quadtree http://beta.quicklisp.org/archive/quadtree/2015-07-09/quadtree-20150709-git.tgz 3869 50ff5dc28ea35f3073946739537f039d 7961bb58a4a4e50008d5398fbb1ae71380e36248 quadtree-20150709-git quadtree-test.asd quadtree.asd -quantile-estimator.cl http://beta.quicklisp.org/archive/quantile-estimator.cl/2016-08-25/quantile-estimator.cl-20160825-git.tgz 3510 3a28f05e4466c714f712d31cc190992c 30796c8194de9b436e022a35aa5973db986fbd05 quantile-estimator.cl-20160825-git quantile-estimator.asd quantile-estimator.test.asd -quasiquote-2.0 http://beta.quicklisp.org/archive/quasiquote-2.0/2015-05-05/quasiquote-2.0-20150505-git.tgz 8956 7c557e0c10cf7608afa5a20e4a83c778 5f61d74c96a9a863f38ab56c08b5287187bd9ef7 quasiquote-2.0-20150505-git quasiquote-2.0.asd -queen.lisp http://beta.quicklisp.org/archive/queen.lisp/2016-09-29/queen.lisp-20160929-git.tgz 22553 2e7c68441e99d826cfb2c7cb9aa83766 f7988f650dfc560c49226e848de326b9d69da068 queen.lisp-20160929-git queen.asd -query-fs http://beta.quicklisp.org/archive/query-fs/2022-11-06/query-fs-20221106-git.tgz 457337 7b65347c411d4a38148235bc6bf49b59 a32720dde6e37150937c97c4c63242832261fd14 query-fs-20221106-git query-fs.asd -query-repl http://beta.quicklisp.org/archive/query-repl/2022-03-31/query-repl-20220331-git.tgz 9141 368ccf17fd176bf9f40808bacb15dc60 9dfe190ce2c56f2669455c01ddadccfd1a6277b9 query-repl-20220331-git query-repl.asd spec/query-repl.test.asd -queues http://beta.quicklisp.org/archive/queues/2017-01-24/queues-20170124-git.tgz 8748 9b291db09b7385e12515697f1f918e27 3835c55c8a7010b35d4b2ef2e9ce54845ca564bc queues-20170124-git queues.asd queues.priority-cqueue.asd queues.priority-queue.asd queues.simple-cqueue.asd queues.simple-queue.asd -quick-patch http://beta.quicklisp.org/archive/quick-patch/2022-11-06/quick-patch-20221106-git.tgz 10291 a846bbf9d14b3470c9576c2e563de329 37a106882f563e8bdd16c172d78eec5d85ca3be7 quick-patch-20221106-git quick-patch.asd -quickapp http://beta.quicklisp.org/archive/quickapp/2016-08-25/quickapp-20160825-git.tgz 7116 f7c00d1217d7b58f6f1f023668580891 2f4eff6c45eca224463eb0a32eacfd5e34513f0f quickapp-20160825-git quickapp.asd -quicklisp-slime-helper http://beta.quicklisp.org/archive/quicklisp-slime-helper/2015-07-09/quicklisp-slime-helper-20150709-git.tgz 2211 08a86772cfee1a9dc7b1d4a9bb7d371e 6abe815efe3a1b03cb485d4d95329188b1100fe5 quicklisp-slime-helper-20150709-git quicklisp-slime-helper.asd -quicklisp-stats http://beta.quicklisp.org/archive/quicklisp-stats/2021-04-11/quicklisp-stats-20210411-git.tgz 2779 aea4334ca7e8f4a81276fff085a4d1a8 ddba869c5a1bf742afb1a27c70e068ea74cf6796 quicklisp-stats-20210411-git quicklisp-stats.asd -quickproject http://beta.quicklisp.org/archive/quickproject/2019-12-27/quickproject-1.4.1.tgz 6777 1d582d9dc066e0904f716166e448ccb7 eefaabe524fb4113b7b785f623899e417bed7d72 quickproject-1.4.1 quickproject.asd -quicksearch http://beta.quicklisp.org/archive/quicksearch/2017-10-19/quicksearch-20171019-git.tgz 13482 b64e3f756d4edafe270499058b087c26 8984719946dc05f5ad03063265e1fbc1e9986516 quicksearch-20171019-git quicksearch.asd -quickutil http://beta.quicklisp.org/archive/quickutil/2021-08-07/quickutil-20210807-git.tgz 1508477 4713b543b2cc81cfd180ae40bb78d8d3 8cbb1868dae3b8a8846eba4a35efb5f744a429c0 quickutil-20210807-git quickutil-client/quickutil-client-management.asd quickutil-client/quickutil-client.asd quickutil-client/quickutil.asd quickutil-server/quickutil-server.asd quickutil-utilities/quickutil-utilities-test.asd quickutil-utilities/quickutil-utilities.asd -quilc http://beta.quicklisp.org/archive/quilc/2021-12-09/quilc-v1.26.0.tgz 2341004 9902feccf5c96a99bbaf999e11f12638 8837e82842d2433aaf0e3318d6e93d3636489b92 quilc-v1.26.0 boondoggle/boondoggle-tests.asd boondoggle/boondoggle.asd cl-quil-benchmarking.asd cl-quil-tests.asd cl-quil.asd quilc-tests.asd quilc.asd -quri http://beta.quicklisp.org/archive/quri/2022-11-06/quri-20221106-git.tgz 71549 993d698354b40c797b18550ac0fcc24b ae21361a3da48078de8fca74c9346e034e95fecd quri-20221106-git quri-test.asd quri.asd -quux-hunchentoot http://beta.quicklisp.org/archive/quux-hunchentoot/2021-12-30/quux-hunchentoot-20211230-git.tgz 4566 d362b11910f41fdd9ef84cee8d78e3d9 54e98fbc830221484b224ec3260e0680718f1580 quux-hunchentoot-20211230-git quux-hunchentoot.asd -quux-time http://beta.quicklisp.org/archive/quux-time/2015-04-07/quux-time-20150407-git.tgz 34282 f89bd972e19dd2fd5abae2a9e8b143e2 51b24561e194e32110bbb5a6e6be5d98c6daac8c quux-time-20150407-git quux-time.asd -qvm http://beta.quicklisp.org/archive/qvm/2021-06-30/qvm-v1.17.2.tgz 391434 5a183912982de99c0bfa7b98995b7cfd f491a882cac8bac0389cb891b616569265b9a55f qvm-v1.17.2 qvm-app-ng-tests.asd qvm-app-ng.asd qvm-app-tests.asd qvm-app.asd qvm-benchmarks.asd qvm-examples.asd qvm-tests.asd qvm.asd -racer http://beta.quicklisp.org/archive/racer/2019-07-10/racer-20190710-git.tgz 28462787 ecc163e4033836e93aaeb3990052fe3a f27637cb6f310019ad45377016535f15b1cbffdf racer-20190710-git clients/lracer/lracer.asd racer.asd -random http://beta.quicklisp.org/archive/random/2019-10-07/random-20191007-git.tgz 4620 13a609118dd74e217fafd018875b8366 9c3214946a660c5edc558c2f592ff70994c3df65 random-20191007-git acm-random-test.asd acm-random.asd random-test.asd random.asd -random-access-lists http://beta.quicklisp.org/archive/random-access-lists/2012-02-08/random-access-lists-20120208-git.tgz 4903 36e5b00c2556ffda4cc2d6297471d053 7f2fe5a0f6497a98b538bfed7fa0dea7c3c3d8cc random-access-lists-20120208-git random-access-lists.asd -random-sample http://beta.quicklisp.org/archive/random-sample/2021-12-30/random-sample-20211230-git.tgz 3363 72775bdff5ee3bd7afed1e37a319d468 e7da15f940e6e61215357fb1d8bed6c5acf15198 random-sample-20211230-git random-sample.asd -random-state http://beta.quicklisp.org/archive/random-state/2023-02-14/random-state-20230214-git.tgz 17287 cecd7ea23dd30845488e3d5252850c5d 336fc8ea854808e129dee1e5f412ecbd0dfcf4c1 random-state-20230214-git random-state-viewer.asd random-state.asd -random-uuid http://beta.quicklisp.org/archive/random-uuid/2022-07-07/random-uuid-20220707-git.tgz 2656 3a1d72c90c6cb2f344ff9ffd8cb4062f 790bf569a91f7fc2c68a84df573187560227f501 random-uuid-20220707-git random-uuid.asd -rate-monotonic http://beta.quicklisp.org/archive/rate-monotonic/2020-03-25/rate-monotonic-20200325-git.tgz 16931 260c267ffe9cb9b81d5eda850b680541 524a7cfec798f4bd8234489eabeed524da199f37 rate-monotonic-20200325-git rate-monotonic.asd rate-monotonic.examples.asd -ratify http://beta.quicklisp.org/archive/ratify/2019-10-07/ratify-20191007-git.tgz 30103 bb3371f343c1cfd75b6cc4ea6f2e7cc1 c4e33d368e883efdb66356afd4cffc0c6593bedf ratify-20191007-git ratify.asd -ratmath http://beta.quicklisp.org/archive/ratmath/2020-02-18/ratmath-20200218-git.tgz 17994 dfc7111393f55ac9c1b3b0ebe1ef08dd 017dd71f6e9e7a6810ea2377663fd3477dece6a9 ratmath-20200218-git ratmath.asd -rcl http://beta.quicklisp.org/archive/rcl/2020-12-20/rcl-20201220-http.tgz 40946 e398fb471f675b98aa45cd5bdc8528d4 780a0712e9e5026a3e12b3bc800b0b9148547c99 rcl-20201220-http rcl.asd -re http://beta.quicklisp.org/archive/re/2021-06-30/re-20210630-git.tgz 8650 957bb9a39cf0e286952fbc9abd911188 dc221562d81b94af4a7f202f55accc26d613128e re-20210630-git re.asd -read-as-string http://beta.quicklisp.org/archive/read-as-string/2022-07-07/read-as-string-20220707-git.tgz 7465 9f5e5104a798bd01242a95e48d17dc73 65ae87fd3b5dc2844b2871f7b5daae93687490b6 read-as-string-20220707-git read-as-string.asd spec/read-as-string.test.asd -read-csv http://beta.quicklisp.org/archive/read-csv/2018-10-18/read-csv-20181018-git.tgz 4924 ef21abc13722ff1ede9f72951bd725af ac27005e51ff658b0b28665fefc260b812032802 read-csv-20181018-git read-csv.asd -read-number http://beta.quicklisp.org/archive/read-number/2023-02-14/read-number-20230214-git.tgz 13982 2058e8f063604e70471204c54aed5c37 5be4501b170b99f5aad594de8f3a61b3abcfb04a read-number-20230214-git read-number.asd -reader http://beta.quicklisp.org/archive/reader/2020-12-20/reader-v0.10.0.tgz 8646 4f175d1110f2b5622fdb1a0fe2c42de2 de6be40138a21cfc03067846ca1a767711f89cf3 reader-v0.10.0 reader+swank.asd reader.asd -reader-interception http://beta.quicklisp.org/archive/reader-interception/2015-06-08/reader-interception-20150608-git.tgz 5162 8bb17a9cb708c842cb9cac112bd2d7b7 b8319c2a038be121cf1cc5ac493e876880d52ea2 reader-interception-20150608-git reader-interception-test.asd reader-interception.asd -rectangle-packing http://beta.quicklisp.org/archive/rectangle-packing/2013-06-15/rectangle-packing-20130615-git.tgz 16507 98a4a3e3a1daf65b56475e1f850ca0a7 08ed9778cc20bb058a54e1db28fbbdeb75c929ba rectangle-packing-20130615-git rectangle-packing.asd -recur http://beta.quicklisp.org/archive/recur/2019-03-07/recur-20190307-hg.tgz 1485 c29fa990323309c17e98cc7eadd2b31d edc298a910d5c737937aed72f66f7d484a55485a recur-20190307-hg recur.asd -recursive-regex http://beta.quicklisp.org/archive/recursive-regex/2012-04-07/recursive-regex-20120407-git.tgz 11763 fefa07fe68a4a99338900a7be78129b3 4a09f21c6e6daf510dc1570431ed4ddd40716815 recursive-regex-20120407-git recursive-regex.asd -recursive-restart http://beta.quicklisp.org/archive/recursive-restart/2016-10-31/recursive-restart-20161031-git.tgz 3054 39d5c3ca334229dd5f5111a6f993d8a0 cf91a8a01feb4efbf8ce3d7cd74e34b224a90faf recursive-restart-20161031-git recursive-restart.asd -red-black-tree http://beta.quicklisp.org/archive/red-black-tree/2022-07-07/red-black-tree-20220707-git.tgz 3576 ec7a44b46105b584f7b16af45a21a3f9 77fc93e44a70a4e304a693e8f237abe4f2507ee5 red-black-tree-20220707-git red-black-tree.asd -redirect-stream http://beta.quicklisp.org/archive/redirect-stream/2019-07-10/redirect-stream-20190710-git.tgz 3914 3dbcdaad096f9ba1e308a351fce12744 14dcc7ff3bd776e2b391fa7f74a17b089b975c17 redirect-stream-20190710-git redirect-stream.asd -regex http://beta.quicklisp.org/archive/regex/2012-09-09/regex-20120909-git.tgz 30204 545d10011ea7d33cea0dfcb238acf94b 9ab918df7063e4aac22c3cb0a4776529747cf080 regex-20120909-git regex.asd -regular-type-expression http://beta.quicklisp.org/archive/regular-type-expression/2020-02-18/regular-type-expression-export-to-quicklisp-502a46e2-git.tgz 2734810 6a3a7577be89230e4c2d3c4e64351ea1 bf986266bc4152db470e150638aac0db79b0a8e9 regular-type-expression-export-to-quicklisp-502a46e2-git 2d-array/2d-array-test.asd 2d-array/2d-array.asd adjuvant/adjuvant-test.asd adjuvant/adjuvant.asd cl-robdd/cl-robdd-analysis-test.asd cl-robdd/cl-robdd-analysis.asd cl-robdd/cl-robdd-test.asd cl-robdd/cl-robdd.asd dispatch/dispatch-test.asd dispatch/dispatch.asd lisp-types/lisp-types-analysis.asd lisp-types/lisp-types-test.asd lisp-types/lisp-types.asd ndfa/ndfa-test.asd ndfa/ndfa.asd research.asd rte-regexp/rte-regexp-test.asd rte-regexp/rte-regexp.asd rte/rte-test.asd rte/rte.asd scrutiny/scrutiny-test.asd scrutiny/scrutiny.asd -remote-js http://beta.quicklisp.org/archive/remote-js/2019-07-10/remote-js-20190710-git.tgz 4434 fcc3b2e4201c1ad11ec8575a98bce39e 0a623b75ed970fe8e5f9d5572c4bf1bccbcf3ec5 remote-js-20190710-git remote-js-test.asd remote-js.asd -repl-utilities http://beta.quicklisp.org/archive/repl-utilities/2021-02-28/repl-utilities-20210228-git.tgz 11317 8a0e083369155c2ac67a741733e9e8e9 5a42ac95db63038de5fa574c9d0e593d7f4712ec repl-utilities-20210228-git repl-utilities.asd -replic http://beta.quicklisp.org/archive/replic/2023-02-14/replic-20230214-git.tgz 31828 43bfd6d308f74834ce014c6a5e829450 4de2c4aee32f966971eb46d5df5f1b08fe6bd6eb replic-20230214-git replic-test.asd replic.asd -resignal-bind http://beta.quicklisp.org/archive/resignal-bind/2021-10-20/resignal-bind-20211020-git.tgz 5423 a7dc4a99ab8ed9233edf505095b45eb7 365b63f6f1af9188406624491dfa199f4bf77cea resignal-bind-20211020-git resignal-bind.asd spec/resignal-bind.test.asd -restas http://beta.quicklisp.org/archive/restas/2019-10-08/restas-20191008-git.tgz 182787 ceec9a0482460e2ad32446d43623480b cec4ae81730d0f741cdf3a436750a564de2c9d31 restas-20191008-git docs/restas-doc.asd restas.asd -restas-directory-publisher http://beta.quicklisp.org/archive/restas-directory-publisher/2013-01-28/restas-directory-publisher-20130128-git.tgz 13313 ac714dd7b907eebaa428fc411fce7434 112f0d8f6aa05b4e4a3fbae8131c1dd20f05a1cf restas-directory-publisher-20130128-git restas-directory-publisher.asd -restas.file-publisher http://beta.quicklisp.org/archive/restas.file-publisher/2012-01-07/restas.file-publisher-20120107-git.tgz 1176 74b3636315653b08c83747b8a45796d5 48bd0eb451bc218675ba47a64240d261a8cd5d4f restas.file-publisher-20120107-git restas.file-publisher.asd -restful http://beta.quicklisp.org/archive/restful/2015-06-08/restful-20150608-git.tgz 12311 fb8e34eba9a82fcd8351eb16dd908176 aebeed541ff77427483632265e4f0dda44c62669 restful-20150608-git restful-test.asd restful.asd -restricted-functions http://beta.quicklisp.org/archive/restricted-functions/2019-05-21/restricted-functions-20190521-git.tgz 6700 0ae3b25b8fa92ea9d625cae324ec445f 7e47bc6d54ff68ec0d0e65f34c635a3b6f9d9d10 restricted-functions-20190521-git code/restricted-functions.asd -retrospectiff http://beta.quicklisp.org/archive/retrospectiff/2021-12-09/retrospectiff-20211209-git.tgz 1626750 c2094a8867cda6e93d5d82d7903158f1 80549f493f480069a07467206a54c8c22ed06c72 retrospectiff-20211209-git retrospectiff.asd -reversi http://beta.quicklisp.org/archive/reversi/2020-10-16/reversi-20201016-git.tgz 100397 6d316cc54ccf5938d43165ecea27d26a e17a8c0945af94bf4b2707926aa20be6a030cc42 reversi-20201016-git reversi.asd -rfc2109 http://beta.quicklisp.org/archive/rfc2109/2015-12-18/rfc2109-20151218-darcs.tgz 29102 ca039ac430baaed87f08a1a01e4cfe91 8cfa85913f22053a81c691d8eb8309aa6e9eeeb6 rfc2109-20151218-darcs rfc2109.asd -rfc2388 http://beta.quicklisp.org/archive/rfc2388/2018-08-31/rfc2388-20180831-git.tgz 12522 f57e3c588e5e08210516260e67d69226 b9fce4ee84e60426fc9ef11f1847235b13dd256e rfc2388-20180831-git rfc2388.asd -rfc2388-binary http://beta.quicklisp.org/archive/rfc2388-binary/2017-01-24/rfc2388-binary-20170124-darcs.tgz 98374 0f0e4796ce5b4c0d30aee6f87ecf13d5 4ea6b34d653445314332dce88e4792b8332004f0 rfc2388-binary-20170124-darcs rfc2388-binary.asd -rlc http://beta.quicklisp.org/archive/rlc/2015-09-23/rlc-20150923-git.tgz 3997 b26fd533287f1033a7a2885a780c2318 e9d56b4078c5672498325308ae2898ab9dd9b797 rlc-20150923-git rlc.asd -roan http://beta.quicklisp.org/archive/roan/2020-12-20/roan-20201220-git.tgz 1164621 63579220fdeb48ba8beca3de3d327f72 a2c942c4c6b61cee9bad4f4c809fd85549b38003 roan-20201220-git roan.asd -rock http://beta.quicklisp.org/archive/rock/2015-06-08/rock-20150608-git.tgz 9855 e54b64ba4d201d559355eb6bdb8e9d34 fcbcdd37d9cf8de9ae4c8b392ab7de632f58bdd9 rock-20150608-git rock-test.asd rock-web.asd rock.asd -romreader http://beta.quicklisp.org/archive/romreader/2014-07-13/romreader-20140713-git.tgz 6533 1e7c5f085d2495bd7a131b479b85ca8b 4133137ffba648f72739f0faa56b79b8bb48ec3a romreader-20140713-git romreader.asd -rove http://beta.quicklisp.org/archive/rove/2023-02-14/rove-20230214-git.tgz 17141 dff01abaeb7bba62acb41e70a029a753 a81c1e84c068e5799840002cdba3e3c6aa161791 rove-20230214-git rove.asd -rpcq http://beta.quicklisp.org/archive/rpcq/2022-07-07/rpcq-v3.10.0.tgz 85557 b2c3f1fb75bec04dd3b0b90022452b76 08c76dccdd0c8da050ce8c7a58864fda0fcaf194 rpcq-v3.10.0 rpcq-tests.asd rpcq.asd -rpm http://beta.quicklisp.org/archive/rpm/2016-04-21/rpm-20160421-git.tgz 4835 3c60f17576cb2c22554fff9b0eec2796 15eb5b24e92715d7e25605acd314702178122486 rpm-20160421-git rpm.asd -rs-colors http://beta.quicklisp.org/archive/rs-colors/2022-03-31/rs-colors-20220331-git.tgz 2144027 6440d7e4391f8a5e78c0832ddbf903de e3e0cdd7d9c2c759f88dc863b9eab7f4b8ad9d8d rs-colors-20220331-git dictionaries/rs-colors-html.asd dictionaries/rs-colors-material-io.asd dictionaries/rs-colors-ral-design.asd dictionaries/rs-colors-ral.asd dictionaries/rs-colors-svg.asd dictionaries/rs-colors-tango.asd dictionaries/rs-colors-x11.asd rs-colors-internal.asd rs-colors.asd -rt http://beta.quicklisp.org/archive/rt/2010-10-06/rt-20101006-git.tgz 10676 94a56c473399572ca835ac91c77c04e5 80643f045a1ff7313d55db64a3f6787236f68eff rt-20101006-git rt.asd -rt-events http://beta.quicklisp.org/archive/rt-events/2016-03-18/rt-events-20160318-git.tgz 5518 c9c0de2cafffd8319bc6f8a9ee9c4908 86aabf4057d784d88d938890ca0273ff1dba31f6 rt-events-20160318-git rt-events.asd rt-events.examples.asd -rtg-math http://beta.quicklisp.org/archive/rtg-math/2019-10-07/rtg-math-release-quicklisp-29fc5b3d-git.tgz 94423 fefa73c6923964666ecc8a8c382df718 2ce1482195edd95a831dd09c37f959277cb1a2e5 rtg-math-release-quicklisp-29fc5b3d-git rtg-math.asd rtg-math.vari.asd -rucksack http://beta.quicklisp.org/archive/rucksack/2015-06-08/rucksack-20150608-git.tgz 111832 e968c9e90632cbba892dae1e2833efe3 3e3ec1762970a3ad7df8d87afdae2bd80ab27af0 rucksack-20150608-git rucksack.asd tests/rucksack-test.asd -rutils http://beta.quicklisp.org/archive/rutils/2022-11-06/rutils-20221106-git.tgz 170456 6e108714e5cd2487c6c5ac133db725ab d25626f3c08c3155a7eb3425de22fd9277f00350 rutils-20221106-git rutils-test.asd rutils.asd rutilsx.asd -ryeboy http://beta.quicklisp.org/archive/ryeboy/2020-10-16/ryeboy-20201016-git.tgz 4100 4e7a440ea9cfd3a09281ed7311f49811 635600ea35309820ec1d938105781337798db7f1 ryeboy-20201016-git ryeboy.asd -s-base64 http://beta.quicklisp.org/archive/s-base64/2013-01-28/s-base64-20130128-git.tgz 7033 9c4220053ea4b18fca7a49f29aae0ee1 70c7fc4ed0762db40bc6e0e71f36f358a2c6cb9a s-base64-20130128-git s-base64.asd -s-dot2 http://beta.quicklisp.org/archive/s-dot2/2018-10-18/s-dot2-20181018-git.tgz 6015 2f0d0948c7ab66c0fb75a761f113b9e9 bb3d07b3bc6c9803b97c65aa3dbc1f69cc187299 s-dot2-20181018-git s-dot2.asd -s-graphviz http://beta.quicklisp.org/archive/s-graphviz/2020-12-20/s-graphviz-20201220-git.tgz 137256 dac9eb8efd927ae8db6a2a7481364cba aa9d786602dcc7372d26a3ea2b89463412b50719 s-graphviz-20201220-git s-graphviz.asd -s-http-client http://beta.quicklisp.org/archive/s-http-client/2020-04-27/s-http-client-20200427-git.tgz 10270 42009b81c887a8de095216e908aa0dfd c0d61d645010c9437a7441e0185f781357249951 s-http-client-20200427-git s-http-client.asd -s-http-server http://beta.quicklisp.org/archive/s-http-server/2020-04-27/s-http-server-20200427-git.tgz 24634 c3c20906113eae9ba786c302917c87d1 ae76e253d983a7d22cb7de8e9dfc379c775b14a9 s-http-server-20200427-git s-http-server.asd -s-sysdeps http://beta.quicklisp.org/archive/s-sysdeps/2021-02-28/s-sysdeps-20210228-git.tgz 4359 25d8c1673457341bf60a20752fe59772 fc391038f42567f711c0480f36745e25d53501ba s-sysdeps-20210228-git s-sysdeps.asd -s-utils http://beta.quicklisp.org/archive/s-utils/2020-04-27/s-utils-20200427-git.tgz 5486 ff731815e83ea9d2bbcd537da8407e69 9afe78191625c511232d84dad8a6f34569e54b36 s-utils-20200427-git s-utils.asd -s-xml http://beta.quicklisp.org/archive/s-xml/2015-06-08/s-xml-20150608-git.tgz 21248 9c31c80f0661777c493fab683f776716 03cb87aacf1c44877a76572510df60c563727125 s-xml-20150608-git s-xml.asd -s-xml-rpc http://beta.quicklisp.org/archive/s-xml-rpc/2019-05-21/s-xml-rpc-20190521-git.tgz 23981 33c268048222002af4d6232d71ee7222 d8b595ab60be528be3848eaf64d3b9a77fc62319 s-xml-rpc-20190521-git s-xml-rpc.asd -safe-queue http://beta.quicklisp.org/archive/safe-queue/2020-03-25/safe-queue-20200325-git.tgz 3521 7ba20fe1ffcef15d659dcfeec6f3ca34 f0ca15987798bc3ef5d13da4146f2a42cb12fe35 safe-queue-20200325-git safe-queue.asd -safe-read http://beta.quicklisp.org/archive/safe-read/2022-02-20/safe-read-20220220-git.tgz 5827 f5daf70c6c6d93c09d8b9a31c847aa0a 6095ee304bb34f8be1bcb7db2b2eab791161fdab safe-read-20220220-git safe-read.asd -safety-params http://beta.quicklisp.org/archive/safety-params/2019-02-02/safety-params-20190202-git.tgz 7110 44bdeb52d69878bf67ecf413613538cb 3380fbb899e4130dbc98475d1803f733245e54e5 safety-params-20190202-git safety-params.asd -salza2 http://beta.quicklisp.org/archive/salza2/2021-10-20/salza2-2.1.tgz 17080 867f3e0543a7e34d1be802062cf4893d 5958988357db20d25099248434f3ae284e6b2ab1 salza2-2.1 salza2.asd -sandalphon.lambda-list http://beta.quicklisp.org/archive/sandalphon.lambda-list/2018-07-11/sandalphon.lambda-list-20180711-git.tgz 11120 6b75d6bcd35d610abb1278547266246f 49223fc82d7af2364aba90b495442be3153b4494 sandalphon.lambda-list-20180711-git sandalphon.lambda-list.asd -sanity-clause http://beta.quicklisp.org/archive/sanity-clause/2021-08-07/sanity-clause-20210807-git.tgz 28595 446ca7128c0b540426000337a790b6c8 db6ea132558fef1f5c74c929a193f9dcf3fbb777 sanity-clause-20210807-git sanity-clause.asd -sapaclisp http://beta.quicklisp.org/archive/sapaclisp/2012-05-20/sapaclisp-1.0a.tgz 141501 5a9d213d0063de0cc1ef9fd3aea811ca 2f3bbe44b16bc0bdc6c29be6f00312e9372f61cb sapaclisp-1.0a sapaclisp.asd -sb-cga http://beta.quicklisp.org/archive/sb-cga/2021-05-31/sb-cga-20210531-git.tgz 34880 2481fcad9d95024147dbb70762217501 320d82156f0d81dc19562c6d5b6cd004bbca774b sb-cga-20210531-git sb-cga.asd -sb-fastcgi http://beta.quicklisp.org/archive/sb-fastcgi/2021-01-24/sb-fastcgi-20210124-git.tgz 4584 eceb82ee932bcbf674899c00240cfa9f 66137ecb2c830632b7b6ea54f4feedf71afafe12 sb-fastcgi-20210124-git sb-fastcgi.asd -sb-vector-io http://beta.quicklisp.org/archive/sb-vector-io/2011-08-29/sb-vector-io-20110829-git.tgz 5263 a57684e11ed481a7c4cf7f2623942e49 15faae433ceb327a16f5bcf29cdcd7728a5c1aca sb-vector-io-20110829-git sb-vector-io.asd -sc-extensions http://beta.quicklisp.org/archive/sc-extensions/2023-02-14/sc-extensions-20230214-git.tgz 8859 c1b6c4730f9e9c5e73a22d98dcb5feed a698bf590a8d41fc60a0dd19b38ce8522134c399 sc-extensions-20230214-git sc-extensions.asd -schannel http://beta.quicklisp.org/archive/schannel/2021-12-30/schannel-20211230-git.tgz 21822 4440ad0f8b797a85091c28ca5620fc63 72fd633614649f69a16e0eb6e648789914251db4 schannel-20211230-git schannel.asd -scheduler http://beta.quicklisp.org/archive/scheduler/2022-07-07/scheduler-20220707-git.tgz 11427 603b43d176699f5a4433c6b0433eb666 7f4dce49d8e18e785243b9b36fd46810602453d7 scheduler-20220707-git scheduler.asd -screamer http://beta.quicklisp.org/archive/screamer/2021-08-07/screamer-20210807-git.tgz 953917 221b12fca9e7042e6a8e66fa2330b5c4 d0a4f1fdab543ce45c5628b4418c3d60232efe22 screamer-20210807-git screamer-tests.asd screamer.asd -scriba http://beta.quicklisp.org/archive/scriba/2022-07-07/scriba-20220707-git.tgz 33803 1b8d1d30981d198c1402ca7a0238f253 d718e2c5659857880bfe6b75937ec26da607849b scriba-20220707-git scriba-test.asd scriba.asd -scribble http://beta.quicklisp.org/archive/scribble/2016-06-28/scribble-20160628-git.tgz 15810 976a908f6bbe7ac8516a4916dd6cee20 e1e46a668bfda1cb2848b489176ea6d82d5800d7 scribble-20160628-git scribble.asd -scriptl http://beta.quicklisp.org/archive/scriptl/2018-02-28/scriptl-20180228-git.tgz 125271 37927d71784ccef1cdeb309272416d0a 3f940ab4a12dcbb23f78f2a3d8b33f3aaf454793 scriptl-20180228-git scriptl-examples.asd scriptl-util.asd scriptl.asd -sdl2-game-controller-db http://beta.quicklisp.org/archive/sdl2-game-controller-db/2018-02-28/sdl2-game-controller-db-release-quicklisp-335d2b68-git.tgz 7352 ad3ab5458419a5a259313807c8e0b181 770ccc1def893343b1d3ed5ad511b3537b5c7b02 sdl2-game-controller-db-release-quicklisp-335d2b68-git sdl2-game-controller-db.asd -sdl2kit http://beta.quicklisp.org/archive/sdl2kit/2017-11-30/sdl2kit-20171130-git.tgz 11804 906f93a606d1ff2ed8ed613a3fb2d553 0e077fd40e966e93f505a90a9027fe784dc8aaaf sdl2kit-20171130-git sdl2kit-examples.asd sdl2kit.asd -sealable-metaobjects http://beta.quicklisp.org/archive/sealable-metaobjects/2020-06-10/sealable-metaobjects-20200610-git.tgz 10851 f3107ecfe2f98dfca12df289197e16c4 bded3ef5f75b4b088ad1e7ec7fd0f4069a2974d6 sealable-metaobjects-20200610-git code/sealable-metaobjects.asd -secret-values http://beta.quicklisp.org/archive/secret-values/2020-12-20/secret-values-20201220-git.tgz 2545 37e8da2c18e5f0dd33e32f0045cfc60c 943ee86fbc4959765784fa88e44db59ccd995d9e secret-values-20201220-git secret-values.asd -secure-random http://beta.quicklisp.org/archive/secure-random/2016-02-08/secure-random-20160208-git.tgz 2912 ee57beb30d51da8b3969c27ca52fd0d7 5f5b15e224164c1658ed62532759761ba9c26ccc secure-random-20160208-git secure-random.asd -seedable-rng http://beta.quicklisp.org/archive/seedable-rng/2022-07-07/seedable-rng-20220707-git.tgz 37664 a366ca5a1bfff677e8123029bdb54412 20a0871603b3ac44c29c4015103ada69bc3aeecc seedable-rng-20220707-git seedable-rng.asd -sel http://beta.quicklisp.org/archive/sel/2023-02-14/sel-20230214-git.tgz 1653811 8b8d0a36c27f23b15b0770fb29e2ced0 822498854d2ddc2d7e49f6d98bfd723a9df4819a sel-20230214-git software-evolution-library.asd -select http://beta.quicklisp.org/archive/select/2022-11-06/select-20221106-git.tgz 293029 d29f31bf29c65abd55c39a6cd57bbebc 2628aace2fb41be7a99eb746da7c63efe538fbf9 select-20221106-git select.asd -select-file http://beta.quicklisp.org/archive/select-file/2020-04-27/select-file-20200427-git.tgz 11859 0ccf85337a7d8892c379d4d1a673b6d6 41a3c9c35ed07008684eeead063ad6e3e3c81c11 select-file-20200427-git select-file.asd -semantic-spinneret http://beta.quicklisp.org/archive/semantic-spinneret/2017-08-30/semantic-spinneret-20170830-git.tgz 2079 3cdc958d8000f1e26f683aa30f0950cb afeea07a5ef5c41d6d90ba0c7b7dfbb9d9569e15 semantic-spinneret-20170830-git semantic-spinneret.asd -sequence-iterators http://beta.quicklisp.org/archive/sequence-iterators/2013-08-13/sequence-iterators-20130813-darcs.tgz 34899 a6b61a5e9026a03c4978f3721bb17632 7cab8da70f985eb5165aa2145e937a04c605e23c sequence-iterators-20130813-darcs extensible-sequences/extensible-sequences.asd sequence-iterators.asd -serapeum http://beta.quicklisp.org/archive/serapeum/2023-02-14/serapeum-20230214-git.tgz 245764 5449bce3a0f442f57672405f6b0f582f f52a035976856d8c102efad2df0f43ba072ca937 serapeum-20230214-git serapeum.asd -serializable-object http://beta.quicklisp.org/archive/serializable-object/2019-12-27/serializable-object-20191227-git.tgz 22152 5035427309018750274ef7767cf2b2e7 bbdcb991e44ad56e18b3fc8e4873539b731a937e serializable-object-20191227-git serializable-object.asd serializable-object.test.asd -series http://beta.quicklisp.org/archive/series/2013-11-11/series-20131111-git.tgz 151865 396c160a736ad38829dce1db13a75bcc 6bf27684cdd5fae7ab739d954a72bfde7154bc67 series-20131111-git series.asd -session-token http://beta.quicklisp.org/archive/session-token/2014-11-06/session-token-20141106-git.tgz 3020 5e7727a5a92a8ca9b70304f47b6b52b6 713d1d511e522fe2bd1732e03b088ff062852e8f session-token-20141106-git session-token.asd -sexml http://beta.quicklisp.org/archive/sexml/2014-07-13/sexml-20140713-git.tgz 27508 f71d4ee8da885671be8b779266cd865a f4f482c546f955b9eb4f8c200cc5947528ae6b7e sexml-20140713-git contrib/sexml-objects/sexml-objects.asd sexml.asd -sha1 http://beta.quicklisp.org/archive/sha1/2021-10-20/sha1-20211020-git.tgz 3251 7c911414871884f6ec569ee940701f95 c104a176843797a8668c676011e5a13e8b61b9b6 sha1-20211020-git sha1.asd -sha3 http://beta.quicklisp.org/archive/sha3/2018-02-28/sha3-20180228-git.tgz 17156 26078e9dcb90cc6d6e3174880c4514cb 6ba93591c151ee6b04f0aadfc5f93292ef238527 sha3-20180228-git sha3.asd -shadchen http://beta.quicklisp.org/archive/shadchen/2013-10-03/shadchen-20131003-git.tgz 11298 159f11f77ef2c1c2279e502213a97d43 751e9e27c0d249076ae7a14c275d22f5007c9f69 shadchen-20131003-git shadchen.asd -shadow http://beta.quicklisp.org/archive/shadow/2022-07-07/shadow-20220707-git.tgz 15644 cba887b8ada64862384f201cca06192c 8bf568a9878e0cc9c141b234d0631761ad2d9b64 shadow-20220707-git shadow.asd -shared-preferences http://beta.quicklisp.org/archive/shared-preferences/2021-02-28/shared-preferences_1.1.1.tgz 4890 a7e009387968212768f9dec2f85c6f3f 3a998aa794ea3693470b07664285aa9979bf59cf shared-preferences_1.1.1 shared-preferences.asd tests/shared-preferences_tests.asd -shasht http://beta.quicklisp.org/archive/shasht/2022-11-06/shasht-20221106-git.tgz 45542 e820c0c610963f633ede4b2cdaac99c4 0b966982ed7a4708d840b81e67617073c4701b1e shasht-20221106-git shasht.asd -sheeple http://beta.quicklisp.org/archive/sheeple/2021-01-24/sheeple-20210124-git.tgz 623272 024ac85e5aa4741320f8a36e4c6bae75 3cd854d5141acf61a0a8abb952d88a8b78336e74 sheeple-20210124-git sheeple.asd -shellpool http://beta.quicklisp.org/archive/shellpool/2020-09-25/shellpool-20200925-git.tgz 25821 b6be45de2b2c4c6b217f91fce8e5e31a 717b1553825dcdb563c6a0b301b7c45082a4903e shellpool-20200925-git shellpool.asd -shelly http://beta.quicklisp.org/archive/shelly/2014-11-06/shelly-20141106-git.tgz 18127 824938aaaac93602dc927a9734aa1581 2dc9eff9949e91277a0db6376a431b6992681d4b shelly-20141106-git shelly-test.asd shelly.asd -shop3 http://beta.quicklisp.org/archive/shop3/2023-02-14/shop3-20230214-git.tgz 9765151 9c4533f1f697b1105d4a2ead6035f2c6 d2b998cba0c7673df767ec7c327e033d0899fc7d shop3-20230214-git shop3/examples/rovers/strips/rovers-problem-translator.asd shop3/shop3-theorem-prover.api/shop3-thmpr-api.asd shop3/shop3.asd -should-test http://beta.quicklisp.org/archive/should-test/2019-10-07/should-test-20191007-git.tgz 7618 f27c9a9c25be4f67204f7c3dccde755f 32aeafca31add71fa61077717e5e5e932033f85f should-test-20191007-git should-test.asd -shuffletron http://beta.quicklisp.org/archive/shuffletron/2018-10-18/shuffletron-20181018-git.tgz 125912 ffa1e84964f41af31bbb853d0b0776a9 7a8f2aaf66cd8978094dacd5e92242dc859deca7 shuffletron-20181018-git shuffletron.asd -simple-actors http://beta.quicklisp.org/archive/simple-actors/2020-09-25/simple-actors-20200925-git.tgz 5277 851e0b289705bf2dd14c7cdb6b58cc08 44858a7ff006db2384d5f6a696dc33c55384f952 simple-actors-20200925-git simple-actors.asd -simple-config http://beta.quicklisp.org/archive/simple-config/2022-07-07/simple-config-20220707-git.tgz 2857 c2f2779efb3333d50944c5f42b6f1845 6a8ee5588b2201c0dada6d4baee14aaae6ad69cc simple-config-20220707-git simple-config-test.asd simple-config.asd -simple-currency http://beta.quicklisp.org/archive/simple-currency/2017-11-30/simple-currency-20171130-git.tgz 12557 71ea0f64c63b4287fc56ece336e08ef9 aa40c0d344e0c9c4b20583d8df86887e55081b2b simple-currency-20171130-git simple-currency.asd -simple-date-time http://beta.quicklisp.org/archive/simple-date-time/2016-04-21/simple-date-time-20160421-git.tgz 5688 a5b1e4af539646723dafacbc8cf732a0 74ea55a0c7d77d7b967b3ad94f9f67137c9cd01e simple-date-time-20160421-git simple-date-time.asd -simple-finalizer http://beta.quicklisp.org/archive/simple-finalizer/2010-10-06/simple-finalizer-20101006-git.tgz 3415 fcc7c3966af77de524e6f24bb9dc1c94 6ac4c1cb19186e78e445885f86da20ba99d868bb simple-finalizer-20101006-git simple-finalizer.asd -simple-flow-dispatcher http://beta.quicklisp.org/archive/simple-flow-dispatcher/2020-10-16/simple-flow-dispatcher-stable-git.tgz 2471 cfbedd68986d9a7b04d913b69616ba88 78c087d2cff43976da25fc4d6cd351b4cbad02ec simple-flow-dispatcher-stable-git simple-flow-dispatcher.asd -simple-guess http://beta.quicklisp.org/archive/simple-guess/2020-09-25/simple-guess_1.0.tgz 9079 13d8551889e77b29188b93bef7f70e0b 450ee24a2c5661ba41e1f33a431071a4a9130575 simple-guess_1.0 simple-guess.asd tests/simple-guess_tests.asd -simple-inferiors http://beta.quicklisp.org/archive/simple-inferiors/2020-03-25/simple-inferiors-20200325-git.tgz 9622 f90ae807c10d5b3c4b9eef1134a537c8 702bd4d3b2964b5d412c1d38fb594d2349984eb6 simple-inferiors-20200325-git simple-inferiors.asd -simple-neural-network http://beta.quicklisp.org/archive/simple-neural-network/2023-02-14/simple-neural-network-20230214-git.tgz 11620667 583ab2125bc9c104f3ca01d7a6adb3b5 e4dd3c7877fb58ed96246d9446ebd13704d2d61a simple-neural-network-20230214-git simple-neural-network.asd -simple-parallel-tasks http://beta.quicklisp.org/archive/simple-parallel-tasks/2020-12-20/simple-parallel-tasks-20201220-git.tgz 14403 24d4c346d6e175d339ce6f0ea5040274 60ea356bc11a7875aad2023d92e452a1bed8ec07 simple-parallel-tasks-20201220-git simple-parallel-tasks-tests.asd simple-parallel-tasks.asd -simple-rgb http://beta.quicklisp.org/archive/simple-rgb/2019-05-21/simple-rgb-20190521-git.tgz 5464 8afe42c3bb2bec023cfae77a8153c668 2573e45d315e8fe7a0b30f90bd5bb9624044cdb5 simple-rgb-20190521-git simple-rgb.asd -simple-routes http://beta.quicklisp.org/archive/simple-routes/2018-02-28/simple-routes-20180228-git.tgz 6209 95b881171c381674a275da21692442f2 06b1a640d86490ed1e346b2a37306e4a8c7a66f2 simple-routes-20180228-git simple-routes.asd -simple-tasks http://beta.quicklisp.org/archive/simple-tasks/2019-07-10/simple-tasks-20190710-git.tgz 12567 8e88a9a762bc8691f92217d256baa55e 3fdcc5d1debf45d1480f31ce5f7de206ff6aeb87 simple-tasks-20190710-git simple-tasks.asd -simplet http://beta.quicklisp.org/archive/simplet/2019-12-27/simplet-20191227-git.tgz 16303 9fa3343c7a0b9f6f7f43d8b4ed706d98 bf0ee7b1a8770cc028a66ffd6da9770ab6492a3a simplet-20191227-git simplet-asdf.asd simplet.asd -simplified-types http://beta.quicklisp.org/archive/simplified-types/2019-08-13/simplified-types-20190813-git.tgz 6647 c3666e2faf2aed0ec040912db0a91285 c89aa23f3c54e114a3c8de9f3b8254d128bdf7f3 simplified-types-20190813-git code/simplified-types.asd test-suite/simplified-types-test-suite.asd -simpsamp http://beta.quicklisp.org/archive/simpsamp/2010-10-06/simpsamp-0.1.tgz 44485 afd8bdfae4b4f0924839753086bab0bf 38b802cbd0a7855ff101020e71ee2e9fd7927316 simpsamp-0.1 simpsamp.asd -single-threaded-ccl http://beta.quicklisp.org/archive/single-threaded-ccl/2015-06-08/single-threaded-ccl-20150608-git.tgz 2611 fa4c2cf5223e2c57e1b3352edeecca0c 3f7bedd0e7741ac4503bd09a6a84da5921e62b81 single-threaded-ccl-20150608-git single-threaded-ccl.asd -sip-hash http://beta.quicklisp.org/archive/sip-hash/2020-06-10/sip-hash-20200610-git.tgz 5225 a2f874af975545019615435c3b8babd2 c450b0b869d4f49ce15e01fdc8be8d46d3619b44 sip-hash-20200610-git sip-hash.asd -skeleton-creator http://beta.quicklisp.org/archive/skeleton-creator/2019-12-27/skeleton-creator-20191227-git.tgz 42572 ca2c99e3eb2951f96db1190da7ed3c15 68ef28b145fe342fbc69df5b67d300f23733fea4 skeleton-creator-20191227-git skeleton-creator.asd -sketch http://beta.quicklisp.org/archive/sketch/2023-02-14/sketch-20230214-git.tgz 1119286 0128e333f454e7fad5686982b96cd249 b3372685364420401f3893b49a04fc0d258ddaae sketch-20230214-git sketch-examples.asd sketch.asd -skippy http://beta.quicklisp.org/archive/skippy/2015-04-07/skippy-1.3.12.tgz 31965 c64deda635cd8b93768ff837c3b66a72 0a9255fa75a12a7c2f74db9ad584abe68d66a538 skippy-1.3.12 skippy.asd -skippy-renderer http://beta.quicklisp.org/archive/skippy-renderer/2022-11-06/skippy-renderer-20221106-git.tgz 2565 f4d37a207c7fec3c72016e0d3b02ff66 29e7144057affb78a8b932c73e16fb20c86aef21 skippy-renderer-20221106-git skippy-renderer.asd -skitter http://beta.quicklisp.org/archive/skitter/2018-02-28/skitter-release-quicklisp-620772ae-git.tgz 21551 d9148bdb15605412b813b955cc9fb46b 984a7e9102c2fc65635cec373b3944f884e65a03 skitter-release-quicklisp-620772ae-git skitter.asd skitter.glop.asd skitter.sdl2.asd -slack-client http://beta.quicklisp.org/archive/slack-client/2016-08-25/slack-client-20160825-git.tgz 7752 245f64f7188363f1eabbb4b8a2e9c572 c500065dbbd1bf63fc37ec82114d0f76ebc9d906 slack-client-20160825-git slack-client-test.asd slack-client.asd -slime http://beta.quicklisp.org/archive/slime/2023-02-14/slime-v2.28.tgz 827061 da46527f398c07ec10aec0a077590319 04c511e13e2f67a22a8e88bf6d6fcf09bb462990 slime-v2.28 swank.asd -slite http://beta.quicklisp.org/archive/slite/2022-11-06/slite-20221106-git.tgz 13391 f8a0a9d8047dd5d09559d46c96f40612 abfe4612a7aced4d0de4a55ec4922fdd5cafd72a slite-20221106-git slite.asd -slk-581 http://beta.quicklisp.org/archive/slk-581/2019-01-07/slk-581-20190107-git.tgz 4848 d90326b00b92d657b6424002dee00a56 f367c37a8378bddf0810f8fc91a87cbae39a4097 slk-581-20190107-git eclecticse.slk-581.asd -slot-extra-options http://beta.quicklisp.org/archive/slot-extra-options/2021-04-11/slot-extra-options-20210411-git.tgz 25603 87d6dbf73502fca06359c4c4ba07cbd6 4510460f96e02cf02350238eb4c9c10e3ee9aa42 slot-extra-options-20210411-git slot-extra-options-tests.asd slot-extra-options.asd -slot-map http://beta.quicklisp.org/archive/slot-map/2022-07-07/slot-map-20220707-git.tgz 2686 930e19abbfb2545ce1b2ba846a900f34 935a2e9e788df2e84677ada8fa15868a93a86065 slot-map-20220707-git slot-map.asd -sly http://beta.quicklisp.org/archive/sly/2023-02-14/sly-20230214-git.tgz 1835158 e10c2a5b001c3328800cb5ef1eb287cb 690fd8f5789460eb4caf961345e0efa66bcf5e7d sly-20230214-git slynk/slynk.asd -smackjack http://beta.quicklisp.org/archive/smackjack/2018-02-28/smackjack-20180228-git.tgz 17449 398e790adbd5c3d1c85d211d8e119990 9de59527f4fa97c9c09aaaa448978fdc9d3e4ac7 smackjack-20180228-git demo/smackjack-demo.asd smackjack.asd -smart-buffer http://beta.quicklisp.org/archive/smart-buffer/2021-10-20/smart-buffer-20211020-git.tgz 3382 d09d02788667d987b3988b6de09d09c3 6c240b92d649a3cb3ca138bbc638cafb67bf74c3 smart-buffer-20211020-git smart-buffer-test.asd smart-buffer.asd -smug http://beta.quicklisp.org/archive/smug/2021-12-30/smug-20211230-git.tgz 77473 8661c0d2306a06f0df4bcfe94b48ab7e 77e38fd3add5982edc83a82bc33766f900fab2a1 smug-20211230-git smug.asd -snakes http://beta.quicklisp.org/archive/snakes/2022-11-06/snakes-20221106-git.tgz 16983 d8cd4752b7a6f34218a2461da31d0ae8 6a10fd3b7a54203b6c14ef38b61de40da24ee031 snakes-20221106-git snakes.asd -snappy http://beta.quicklisp.org/archive/snappy/2021-12-09/snappy-20211209-git.tgz 1341585 b9069ecaea208b32d4c959ee87b3fa79 e4a32502587dad72893f88c16d5add64f0773236 snappy-20211209-git snappy.asd -snark http://beta.quicklisp.org/archive/snark/2016-04-21/snark-20160421-git.tgz 275436 b7ee5cb5350f5c675359022c10fc6bb9 b265505c5c331237e1fffbb0aa19fa68ff581cee snark-20160421-git snark-agenda.asd snark-auxiliary-packages.asd snark-deque.asd snark-dpll.asd snark-examples.asd snark-feature.asd snark-implementation.asd snark-infix-reader.asd snark-lisp.asd snark-loads.asd snark-numbering.asd snark-pkg.asd snark-sparse-array.asd snark.asd -sndfile-blob http://beta.quicklisp.org/archive/sndfile-blob/2020-10-16/sndfile-blob-stable-git.tgz 4974837 17379c194e68dd5cf1706b9946c89e35 c75ff2a3ea3aa7aa8a133e5703d2a06901fdfd5f sndfile-blob-stable-git sndfile-blob.asd -snmp http://beta.quicklisp.org/archive/snmp/2016-10-31/snmp-6.1.tgz 4454924 9ea185bf039906911b5f48b73a43c31f 826501f7973e77cd5e2cb19a7ce79d3cb2ecdf1d snmp-6.1 snmp-server.asd snmp-test.asd snmp-ui.asd snmp.asd -snooze http://beta.quicklisp.org/archive/snooze/2021-08-07/snooze-20210807-git.tgz 36375 a215308d9e9c20f9587ea448363b712b e9015553843dccad51f3865f7abec64f4940cf42 snooze-20210807-git snooze.asd -softdrink http://beta.quicklisp.org/archive/softdrink/2020-04-27/softdrink-20200427-git.tgz 5703 fe546b6fa74522959df95606dbe90c5a ea18a1389f6583ddcb6b9d3e817a00b0f7ad85b9 softdrink-20200427-git softdrink.asd -solid-engine http://beta.quicklisp.org/archive/solid-engine/2019-05-21/solid-engine-20190521-git.tgz 6543 f666e1d94dd1a915ce8c680d43ddbf02 a8f3345f2690c751b2df8522c9ad200db016960f solid-engine-20190521-git solid-engine.asd -soundex http://beta.quicklisp.org/archive/soundex/2010-10-06/soundex-1.0.tgz 1652 247f7c15b49b230100d37bbc3964bd10 8515dcfcd3bf21025931ca0837e9fe83c2622012 soundex-1.0 soundex.asd -south http://beta.quicklisp.org/archive/south/2019-07-10/south-20190710-git.tgz 20288 5635201c1fe341b9e75f1c0ea97e4e33 77c9ede6f2025cc776071555e2fc2844fce08650 south-20190710-git south.asd -sparse-set http://beta.quicklisp.org/archive/sparse-set/2022-07-07/sparse-set-20220707-git.tgz 1988 2607221d5f97ad8f986761d82e22f493 908dd185d0d07fc40372efb0bdba6f11d89960ab sparse-set-20220707-git sparse-set.asd -spatial-trees http://beta.quicklisp.org/archive/spatial-trees/2014-08-26/spatial-trees-20140826-git.tgz 21925 2772b963aae5c4d06fff83c22e5c8aa9 5038860caf1e9687de757b3158f9df3086a4d54e spatial-trees-20140826-git spatial-trees.asd spatial-trees.nns.asd spatial-trees.nns.test.asd spatial-trees.test.asd -special-functions http://beta.quicklisp.org/archive/special-functions/2022-11-06/special-functions-20221106-git.tgz 678075 7cf92610d27103e7e38f6e285f1296d7 31c0dd2f65c270feb13d8c2ad9c29dc9f81ea776 special-functions-20221106-git special-functions.asd -specialization-store http://beta.quicklisp.org/archive/specialization-store/2020-06-10/specialization-store-v0.0.5.tgz 64599 d00584daca8e0b9d2535b68a3115d1f9 2929bf40e540306eb990743c4c2b1f64c4944df1 specialization-store-v0.0.5 specialization-store-features.asd specialization-store-tests.asd specialization-store.asd -specialized-function http://beta.quicklisp.org/archive/specialized-function/2021-05-31/specialized-function-20210531-git.tgz 101230 9690bc5e2a9eadd42f5c9b7c21630bb3 38013b2d082293c187d03aeca9a5ed5200773702 specialized-function-20210531-git specialized-function.asd specialized-function.test.asd -speechless http://beta.quicklisp.org/archive/speechless/2023-02-14/speechless-20230214-git.tgz 43720 cf1b90644e58543d51c7a8a15300d21c e74301d81771887380891ad00b789169dec4f602 speechless-20230214-git speechless.asd -spell http://beta.quicklisp.org/archive/spell/2019-03-07/spell-20190307-git.tgz 3643983 f765650ae77e3aa237817ea9d0edf292 b8280c38fd4e628358ffc445d233b4c2a55c1f36 spell-20190307-git spell.asd -spellcheck http://beta.quicklisp.org/archive/spellcheck/2013-10-03/spellcheck-20131003-git.tgz 2375587 1633f18983bbb368192d1355f3f4f13e f6de93b47beda9d56e14184826bb8b49e10cb789 spellcheck-20131003-git spellcheck.asd -spinneret http://beta.quicklisp.org/archive/spinneret/2023-02-14/spinneret-20230214-git.tgz 29608 74e134ce3fb32c289fddc1c391ab507a c841abc88d1d4d344b3b5be268c45f7dd20aafe2 spinneret-20230214-git spinneret.asd -split-sequence http://beta.quicklisp.org/archive/split-sequence/2021-05-31/split-sequence-v2.0.1.tgz 11705 871be321b4dbca0a1f958927e9173795 fe250d09a3d2b24a0459bebef9ccf401a4733475 split-sequence-v2.0.1 split-sequence.asd -sprint-stars http://beta.quicklisp.org/archive/sprint-stars/2018-08-31/sprint-stars-20180831-git.tgz 1517 db7adeef5208184377f65388661f7ed2 a9de0cfd9e556c34cd2807084fc6ad2e2328a54f sprint-stars-20180831-git stars.asd -srfi-1 http://beta.quicklisp.org/archive/srfi-1/2020-02-18/srfi-1-20200218-git.tgz 17608 e71d27ef564477835be544777d06c3f4 2e8c613d82cb640be609d79df5049b7d84602819 srfi-1-20200218-git srfi-1.asd -srfi-23 http://beta.quicklisp.org/archive/srfi-23/2020-02-18/srfi-23-20200218-git.tgz 1510 8961c102b6d10469c8c73eea590c53fc 8bc69556d6a08b506c8bb21cd64501a25968ad04 srfi-23-20200218-git srfi-23.asd -srfi-6 http://beta.quicklisp.org/archive/srfi-6/2020-02-18/srfi-6-20200218-git.tgz 1556 e9ac54acc1292f6b3174b393e1699eb0 d85e3050e9d34f085967d9b86e7eaf8b0cf1aec7 srfi-6-20200218-git srfi-6.asd -srfi-98 http://beta.quicklisp.org/archive/srfi-98/2020-02-18/srfi-98-20200218-git.tgz 2241 bcd40c30f56cd5e9bf166765db5f920a 805ca9496c161381bb27c38cea866b96ea4786a5 srfi-98-20200218-git srfi-98.asd -st-json http://beta.quicklisp.org/archive/st-json/2021-06-30/st-json-20210630-git.tgz 7916 0297580a888db434426152d4f5dcf786 36fe247ac59fce5ba3edbe8c19676ce182d72b6d st-json-20210630-git st-json.asd -staple http://beta.quicklisp.org/archive/staple/2022-11-06/staple-20221106-git.tgz 99493 b3046e66e4204310e2bcee8707c2ab27 30f7bdb7d296f7dd5325f01d555e8160c25b97f1 staple-20221106-git parser/staple-code-parser.asd server/staple-server.asd staple-markdown.asd staple-markless.asd staple-package-recording.asd staple-restructured-text.asd staple.asd -static-dispatch http://beta.quicklisp.org/archive/static-dispatch/2021-12-09/static-dispatch-20211209-git.tgz 37618 f74cb2bd29ef9cfe966f470c7f63420f 2b0c68b3fc79a57dd54cada8c25f5bdf58c44f79 static-dispatch-20211209-git static-dispatch.asd -static-vectors http://beta.quicklisp.org/archive/static-vectors/2021-06-30/static-vectors-v1.8.9.tgz 6982 f14b819c0d55e7fbd28e9b4a0bb3bfc9 baf9cd392bc3f9f61a6e2c35419348f38c8f1847 static-vectors-v1.8.9 static-vectors.asd -statistics http://beta.quicklisp.org/archive/statistics/2023-02-14/statistics-20230214-git.tgz 405658 5ece30113f91452ab6d3d9ef0ecc192a b501ce7491fd1a307427ca74e5b9100cdee97861 statistics-20230214-git statistics.asd -stealth-mixin http://beta.quicklisp.org/archive/stealth-mixin/2021-10-20/stealth-mixin-20211020-git.tgz 2240 2651e2de91ff06c25159ec322fa1ce86 cb646c7b0644cdf7692250ea155ccdf010a608aa stealth-mixin-20211020-git stealth-mixin.asd -stefil http://beta.quicklisp.org/archive/stefil/2018-12-10/stefil-20181210-git.tgz 18041 3418bf358366748593f65e4b6e1bb8cf f974b02c814ebaaa804f2ecf4c86b0a18abfe6b2 stefil-20181210-git stefil.asd -stefil- http://beta.quicklisp.org/archive/stefil-/2021-12-09/stefil--20211209-git.tgz 5441 f08c80a8739f7279a83a2e6a3de7d448 9827274a32ae7485132eb2c14f6627843a789ea4 stefil--20211209-git stefil+.asd -stem http://beta.quicklisp.org/archive/stem/2015-06-08/stem-20150608-git.tgz 116071 0dc7713fb0412a4d116304960410cdd7 2eecde21d5d4c35d095bc83b2dd26b55bf8d461e stem-20150608-git stem.asd -stepster http://beta.quicklisp.org/archive/stepster/2023-02-14/stepster-20230214-git.tgz 6678 92e43d02b24d85c861c7c6e25517e9ca 69e1d23b317d7f70553221db1c279007e98925ee stepster-20230214-git stepster.asd -stl http://beta.quicklisp.org/archive/stl/2017-10-19/stl-20171019-git.tgz 3089 01a69ac8892b8f4a4bb97c57cf4a9da7 90d1d6084da63bf66ecf50ebf2f84d28531d10b4 stl-20171019-git stl.asd -stmx http://beta.quicklisp.org/archive/stmx/2020-12-20/stmx-stable-49eef1d5-git.tgz 363917 411ecb277dca0a62c5df713234c4ed14 622c26024b49fcf08afe0eb97bb6acef2d780cba stmx-stable-49eef1d5-git stmx.asd stmx.test.asd -strict-function http://beta.quicklisp.org/archive/strict-function/2021-10-20/strict-function-20211020-git.tgz 6241 d3808d9976ecc7b9883d2330322da0ee 120a6689f530972c8f88d77464fc37a29b678a49 strict-function-20211020-git strict-function.asd -string-case http://beta.quicklisp.org/archive/string-case/2018-07-11/string-case-20180711-git.tgz 9081 145c4e13f1e90a070b0a95ca979a9680 ff3958a84d23a5b9e743fbf30726a1d9b6c0fbfd string-case-20180711-git string-case.asd -string-escape http://beta.quicklisp.org/archive/string-escape/2015-04-07/string-escape-20150407-http.tgz 15485 8e2acbd7ce3914258979b87a0284a4a1 1d9841f3e851d744c21af85156651eba4aa322d6 string-escape-20150407-http string-escape.asd -stripe http://beta.quicklisp.org/archive/stripe/2022-07-07/stripe-20220707-git.tgz 11600 debcce472b50ea3516dbee414c69b521 80cd9481490fbc2612408c349df0960e27d43085 stripe-20220707-git stripe.asd -stripe-against-the-modern-world http://beta.quicklisp.org/archive/stripe-against-the-modern-world/2022-11-06/stripe-against-the-modern-world-20221106-git.tgz 10365 b64aea9ac478fab947692c146f02764e b3c4f65857beef809d36a78d091b3faf4bf6b6e5 stripe-against-the-modern-world-20221106-git stripe-against-the-modern-world.asd -structure-ext http://beta.quicklisp.org/archive/structure-ext/2021-12-09/structure-ext-20211209-git.tgz 9324 3da78b5c429c8a137198a603dee03259 7530aaada37f7211d7390674c1cb5bfb9e7a741e structure-ext-20211209-git accessors/spec/structure-ext.left-arrow-accessors.test.asd accessors/structure-ext.left-arrow-accessors.asd as-class/spec/structure-ext.as-class.test.asd as-class/structure-ext.as-class.asd make-instance/spec/structure-ext.make-instance.test.asd make-instance/structure-ext.make-instance.asd structure-ext.asd -structy-defclass http://beta.quicklisp.org/archive/structy-defclass/2017-06-30/structy-defclass-20170630-git.tgz 2769 ae666e7951c4137242d95fff9ca6c31e df7f719fa42dc7d3115ed1e0e14cd289eb9f7cce structy-defclass-20170630-git structy-defclass.asd -studio-client http://beta.quicklisp.org/archive/studio-client/2021-02-28/studio-client-20210228-git.tgz 8803 5daaad861363d121e1f3d8fa2c6675ee f7af497cb1cea04306ee0b93e38ed8dd48e75d93 studio-client-20210228-git studio-client.asd -stumpwm http://beta.quicklisp.org/archive/stumpwm/2023-02-14/stumpwm-20230214-git.tgz 282018 40925e152ea16e48f2e45f641645c35f 079ad692eb5e36b3d9a23a1be23fb5ac8713fb6c stumpwm-20230214-git stumpwm-tests.asd stumpwm.asd -stumpwm-dynamic-float http://beta.quicklisp.org/archive/stumpwm-dynamic-float/2022-11-06/stumpwm-dynamic-float-20221106-git.tgz 9077 cd433cf1530e5d304a201509cf5ad09e f1343eb5e2f33ff6bf4fe3e1784cb49852dcf774 stumpwm-dynamic-float-20221106-git stumpwm-dynamic-float.asd -stumpwm-sndioctl http://beta.quicklisp.org/archive/stumpwm-sndioctl/2021-05-31/stumpwm-sndioctl-20210531-git.tgz 2044 f6725d06e5dc151c77b3532d1f08ac1b 0e83a033859cc0932ec34b4cf5ea3f41967ff0ce stumpwm-sndioctl-20210531-git stumpwm-sndioctl.asd -sucle http://beta.quicklisp.org/archive/sucle/2020-04-27/sucle-20200427-git.tgz 447331 b771e797fbee7a5b051b160ac20f3b12 fbbbe5535b2c1ae59e364207f4225875c756c8eb sucle-20200427-git src/aabbcc/aabbcc.asd src/application/application.asd src/camera-matrix/camera-matrix.asd src/character-modifier-bits/character-modifier-bits.asd src/control/control.asd src/crud/crud.asd src/deflazy/deflazy.asd src/fps-independent-timestep/fps-independent-timestep.asd src/image-utility/image-utility.asd src/lem-opengl/lem-opengl.asd src/ncurses-clone-for-lem/ncurses-clone-for-lem.asd src/nsb-cga/nsb-cga.asd src/opengl/glhelp.asd src/quads/quads.asd src/scratch-buffer/scratch-buffer.asd src/sucle-multiprocessing/sucle-multiprocessing.asd src/sucle-serialize/sucle-serialize.asd src/sucle/sucle.asd src/text-subsystem/doc/text-subsystem-generate-font.asd src/text-subsystem/text-subsystem.asd src/uncommon-lisp/uncommon-lisp.asd src/window/window.asd temp/sucle-temp.asd test/sucle-test.asd -swank-client http://beta.quicklisp.org/archive/swank-client/2023-02-14/swank-client-20230214-git.tgz 16076 c1236da8733e269b52e577106dcbd4e1 bc52179e59e6c7b910d7bb6aa4f82adf7e55db35 swank-client-20230214-git swank-client.asd -swank-crew http://beta.quicklisp.org/archive/swank-crew/2023-02-14/swank-crew-20230214-git.tgz 15984 df811fe53e3f7b43ccc52c66e0f6ce57 e55096775858af05baa7523e4b46151f34ff8552 swank-crew-20230214-git swank-crew.asd -swank-protocol http://beta.quicklisp.org/archive/swank-protocol/2021-10-20/swank-protocol-20211020-git.tgz 7679 c4511a55390efe63549cca9be8c6630c efb59a56e63ac6129f5250a7430fcef4f2d89da8 swank-protocol-20211020-git swank-protocol.asd -swank.live http://beta.quicklisp.org/archive/swank.live/2016-02-08/swank.live-20160208-git.tgz 1754 0cfd0cc920b37a27359244797dfd8817 0e98e9c945773a2f6e8e79688081c942a3327f9d swank.live-20160208-git swank.live.asd -swap-bytes http://beta.quicklisp.org/archive/swap-bytes/2019-11-30/swap-bytes-v1.2.tgz 4342 eea516d7fdbe20bc963a6708c225d719 e1ab274454408933c57dd932be413f0b11f18444 swap-bytes-v1.2 swap-bytes.asd -sxql http://beta.quicklisp.org/archive/sxql/2021-06-30/sxql-20210630-git.tgz 26680 cf2310671511527a490184f05ea6b7ed 1dd59585fc517b06bbc27501ca8359f8a3ef94a5 sxql-20210630-git sxql-test.asd sxql.asd -sxql-composer http://beta.quicklisp.org/archive/sxql-composer/2020-03-25/sxql-composer-20200325-git.tgz 2967 bfca2d302b62b46a90a4c4effa3f3e54 7af4ac339fb7cd05241221836b47b8b5bc426d54 sxql-composer-20200325-git sxql-composer.asd -sycamore http://beta.quicklisp.org/archive/sycamore/2021-10-20/sycamore-20211020-git.tgz 56384 0a9f35519b5cb3e5f9467427632ff0f8 8d7d5a43dcab099f04d8b112a095452549676461 sycamore-20211020-git src/sycamore.asd -symath http://beta.quicklisp.org/archive/symath/2023-02-14/symath-20230214-git.tgz 13839 95558c976f01d6a41b3d02608cc00703 881e7e6bf1c13dc37163389daec98eea61ab587c symath-20230214-git symath.asd -symbol-munger http://beta.quicklisp.org/archive/symbol-munger/2022-02-20/symbol-munger-20220220-git.tgz 5164 1490f027785e2ca1ec7cd138cd2864ce 92188ad0c2fcbc75857c0edf86d1d4b2349e8ec3 symbol-munger-20220220-git symbol-munger.asd -symbol-namespaces http://beta.quicklisp.org/archive/symbol-namespaces/2013-01-28/symbol-namespaces-1.0.tgz 4915 0ffbf4f50332e324feb40269ca1848cd 1088d4f5d922d472fc16a77da01c498ec956a9a7 symbol-namespaces-1.0 symbol-namespaces.asd -synonyms http://beta.quicklisp.org/archive/synonyms/2019-03-07/synonyms-20190307-hg.tgz 1628 6f956534aa5f68cd03988303fdc40f30 2a5f07c4a581566a998f4a56048850c9e7f6268b synonyms-20190307-hg synonyms.asd -system-locale http://beta.quicklisp.org/archive/system-locale/2020-06-10/system-locale-20200610-git.tgz 6250 01cb055dffb694ede75c0bdf8dc792d0 42dce53529ee6fb95f9ec7705366d54f923ec3bf system-locale-20200610-git system-locale.asd -tagger http://beta.quicklisp.org/archive/tagger/2020-07-15/tagger-20200715-git.tgz 1108833 ee0d4eee120eb0895f000257b64687b1 db86d5219d8fe0fceb70c713bbc4b6c30508da06 tagger-20200715-git tagger.asd -taglib http://beta.quicklisp.org/archive/taglib/2021-04-11/taglib-20210411-git.tgz 49547 836af420af19428b002b4a157eafc2c7 365b92fb89ed57e68ad073f5d6c46db1e88211cc taglib-20210411-git taglib-tests.asd taglib.asd -tailrec http://beta.quicklisp.org/archive/tailrec/2021-08-07/tailrec-20210807-git.tgz 12360 9e8f4805ed0641797c0916ee824e450f e18b3cdfde372bdb42b3d332b0f45f58bd8ecb36 tailrec-20210807-git tailrec.asd -talcl http://beta.quicklisp.org/archive/talcl/2018-02-28/talcl-20180228-git.tgz 32272 12f54d47f90bc8385b3fa8bc4ded7530 39bf555e8bcdb9497663597dc6fe0d725d4c9388 talcl-20180228-git talcl.asd -tap-unit-test http://beta.quicklisp.org/archive/tap-unit-test/2017-12-27/tap-unit-test-20171227-git.tgz 6640 999414b562bcad22ad8be263d13cf813 bee7f65ad728387c7496f6ee412711c2982d8d7c tap-unit-test-20171227-git tap-unit-test.asd -targa http://beta.quicklisp.org/archive/targa/2018-10-18/targa-20181018-git.tgz 6717 abdb921075c2f42c314bcaa6af93402a 5d82e49c058ae56f9c586a82424f853476023ee7 targa-20181018-git targa.asd -tclcs-code http://beta.quicklisp.org/archive/tclcs-code/2021-01-24/tclcs-code-20210124-git.tgz 22539 ba9b75b597dad7a1f81a314fbd40888a 229b74c9efaef8d69b6631e70cd245b56019ef70 tclcs-code-20210124-git tclcs-code.asd -teddy http://beta.quicklisp.org/archive/teddy/2021-10-20/teddy-20211020-git.tgz 548350 88828f5f6ef802614a0bd88c8acd4613 7b65a916e35d68361a2dd83e4fe9f53a749aeac3 teddy-20211020-git teddy.asd -teepeedee2 http://beta.quicklisp.org/archive/teepeedee2/2023-02-14/teepeedee2-20230214-git.tgz 92879 3109e426a07629470d6cd2eb0548b5df f5b6ad5aa295ff73336e641fbad6ce2f4e60662f teepeedee2-20230214-git teepeedee2-test.asd teepeedee2.asd -telnetlib http://beta.quicklisp.org/archive/telnetlib/2014-12-17/telnetlib-20141217-git.tgz 9030 d002d6c2aa8cda700fa7b0e114404197 65dff3a01133aacc554aea10ecfb2d4a95ad6c12 telnetlib-20141217-git telnetlib.asd -template http://beta.quicklisp.org/archive/template/2019-03-07/template-20190307-hg.tgz 3558 f1f963f928879fb2ef6903e5e0466d6d a2a448c28c9b96927ef288929c04f931a86ed63c template-20190307-hg template.asd -template-function http://beta.quicklisp.org/archive/template-function/2017-11-30/template-function-v0.0.1-git.tgz 28074 cfe8ff39d2006b55a46b7f0bdf770ecb 327ad56f17a4923c9124834168791462d5274252 template-function-v0.0.1-git template-function-tests.asd template-function.asd -temporal-functions http://beta.quicklisp.org/archive/temporal-functions/2017-10-19/temporal-functions-20171019-git.tgz 6586 0a4ad318c90a9cc2c7ca391d2c471c1a 70bfe85677d18c3de5434d054d6dd7b6ae3395d4 temporal-functions-20171019-git temporal-functions.asd -temporary-file http://beta.quicklisp.org/archive/temporary-file/2015-06-08/temporary-file-20150608-git.tgz 10812 0df609812523566a84604d768158f3b0 1ac3046923b6136defee3d28344f9c4e69d8e83a temporary-file-20150608-git temporary-file.asd -ten http://beta.quicklisp.org/archive/ten/2023-02-14/ten-20230214-git.tgz 13335 c8f6a6dd7b37f0795fab1f43b7cff44c d03c50e1637e2d55c1b5f230f0aeb8fd4cd5447a ten-20230214-git ten.asd ten.examples.asd ten.i18n.cl-locale.asd ten.i18n.gettext.asd ten.tests.asd -terminfo http://beta.quicklisp.org/archive/terminfo/2021-01-24/terminfo-20210124-git.tgz 12758 b4c386aa1c25252ec725647de21d620a ee09cd9f2f3d7303a3cc7b2588eba933dbbcd5f6 terminfo-20210124-git terminfo.asd -terrable http://beta.quicklisp.org/archive/terrable/2019-07-10/terrable-20190710-git.tgz 8756 99d92ae77464827a2c3f17cbcef09388 5b7f6b7821374d913cc4f8aa34968db75a065480 terrable-20190710-git terrable.asd -tesseract-capi http://beta.quicklisp.org/archive/tesseract-capi/2020-12-20/tesseract-capi-20201220-git.tgz 16920 cc5206faf91891373dfaf0e5a0215a27 e8d4b0e6439288963a121e3edccefc90c4d8ffae tesseract-capi-20201220-git tesseract-capi.asd -test-utils http://beta.quicklisp.org/archive/test-utils/2020-06-10/test-utils-20200610-git.tgz 5084 7c8ce4b1311ce35db20f49b106dfad24 d6cac41f82ed3f11ab4ed400c087f610ebdfe005 test-utils-20200610-git test-utils.asd -testbild http://beta.quicklisp.org/archive/testbild/2010-12-07/testbild-20101207-git.tgz 52330 d3008e32481ed01aaf4bf8d2fd0bcbad 95fca0344bb5af81f7f9c0453ed51e24fd27419f testbild-20101207-git testbild-test.asd testbild.asd -testiere http://beta.quicklisp.org/archive/testiere/2023-02-14/testiere-20230214-git.tgz 16457 3c01a6dad16ee67807955dd949e199d0 ee2aeff8eed3eed72fd1e6e247f0cdc72e3762f9 testiere-20230214-git testiere.asd -texp http://beta.quicklisp.org/archive/texp/2015-12-18/texp-20151218-git.tgz 16321 0ded17b1ba2ad4506e5f4bde9ba9a2d7 e73f7a2267913b386f31b78b6e68ddd4c896de92 texp-20151218-git texp.asd -text-query http://beta.quicklisp.org/archive/text-query/2011-11-05/text-query-1.1.tgz 5548 57d28b552f346a00ece98824b1bc898f f5ec2327f9d7049749d6bea161ea7d90a5db5017 text-query-1.1 text-query.asd -textery http://beta.quicklisp.org/archive/textery/2020-12-20/textery-20201220-git.tgz 4117 41a870dc7b12e26b63317620ac673d4f 7bd30e1bb0456168df12882eb595b70ea6e3c504 textery-20201220-git textery.asd -tfeb-lisp-hax http://beta.quicklisp.org/archive/tfeb-lisp-hax/2023-02-14/tfeb-lisp-hax-20230214-git.tgz 74834 0e01ac109c71ce2b5eb2eee5fe1fc82b c3b8cb5663d0eba87329ff04dd196b0af13c2577 tfeb-lisp-hax-20230214-git org.tfeb.hax.abstract-classes.asd org.tfeb.hax.asd org.tfeb.hax.binding.asd org.tfeb.hax.collecting.asd org.tfeb.hax.comment-form.asd org.tfeb.hax.cs-forms.asd org.tfeb.hax.define-functions.asd org.tfeb.hax.dynamic-state.asd org.tfeb.hax.iterate.asd org.tfeb.hax.memoize.asd org.tfeb.hax.metatronic.asd org.tfeb.hax.object-accessors.asd org.tfeb.hax.read-package.asd org.tfeb.hax.simple-loops.asd org.tfeb.hax.singleton-classes.asd org.tfeb.hax.slog.asd org.tfeb.hax.spam.asd org.tfeb.hax.stringtable.asd org.tfeb.hax.trace-macroexpand.asd org.tfeb.hax.utilities.asd org.tfeb.hax.wrapping-standard.asd -tfeb-lisp-tools http://beta.quicklisp.org/archive/tfeb-lisp-tools/2022-11-06/tfeb-lisp-tools-20221106-git.tgz 34067 37dcc3dc6ba4c72d7e0554d9f6306e92 cd836ce667992eccd446ac5828cf6af400b2c913 tfeb-lisp-tools-20221106-git org.tfeb.tools.asd org.tfeb.tools.asdf-module-sysdcls.asd org.tfeb.tools.build-modules.asd org.tfeb.tools.deprecations.asd org.tfeb.tools.feature-expressions.asd org.tfeb.tools.install-providers.asd org.tfeb.tools.require-module.asd -tfm http://beta.quicklisp.org/archive/tfm/2021-04-11/tfm-20210411-git.tgz 85389 00c8221716755b00f127f568c1e803a0 cb2f38b2d3d1cd6fd7578357a96363aafc9d8c5b tfm-20210411-git core/net.didierverna.tfm.core.asd net.didierverna.tfm.asd setup/net.didierverna.tfm.setup.asd -the-cost-of-nothing http://beta.quicklisp.org/archive/the-cost-of-nothing/2019-11-30/the-cost-of-nothing-20191130-git.tgz 6864 e7b9891f6a3827425124ed8c00b13bab c8f6ee5ed5ee075729d28dcbe354386ba555aab1 the-cost-of-nothing-20191130-git the-cost-of-nothing.asd -thnappy http://beta.quicklisp.org/archive/thnappy/2018-08-31/thnappy-20180831-git.tgz 2879 e399d3a0aea4a4d46b4f3779b083b759 e68599d93d642eb88c3c4ead9a7724c43c34bf5c thnappy-20180831-git thnappy.asd -thorn http://beta.quicklisp.org/archive/thorn/2015-06-08/thorn-20150608-git.tgz 4539 efcc67773fb54b4e4680d50ed5091f9a 436eb3485d54524cc23cc97d1d30ea4f3d1af29b thorn-20150608-git thorn-doc.asd thorn-test.asd thorn.asd -thread-pool http://beta.quicklisp.org/archive/thread-pool/2012-01-07/thread-pool-20120107-git.tgz 3061 9dfcb3dd5692d474d90f7916722d5bf8 5754230b3648ae4d84f80a8cf552518d6851e96b thread-pool-20120107-git thread-pool.asd -thread.comm.rendezvous http://beta.quicklisp.org/archive/thread.comm.rendezvous/2012-10-13/thread.comm.rendezvous-20121013-git.tgz 3295 819e6c2c9fc715f47b9fc1fae4dd9620 fb0ada0703f62f9d2c38cd8d100571b087d6f61f thread.comm.rendezvous-20121013-git thread.comm.rendezvous.asd thread.comm.rendezvous.test.asd -tile-grid http://beta.quicklisp.org/archive/tile-grid/2022-07-07/tile-grid-20220707-git.tgz 2460 6746af6b419cd03a1f8ff4d7f41ae381 0b7c1acf141e5f8bfec3455398d873e41c2fe017 tile-grid-20220707-git tile-grid.asd -time-interval http://beta.quicklisp.org/archive/time-interval/2019-02-02/time-interval-20190202-git.tgz 3914 be8f598fa583bc02d5aef61c9da05497 2e3b1a01d3aca24e573fdf98ce81b5a15909ce2c time-interval-20190202-git time-interval.asd -timer-wheel http://beta.quicklisp.org/archive/timer-wheel/2018-02-28/timer-wheel-20180228-git.tgz 6804 aecee06490b30b7395bd6bf8e30e293f f5394005e0e5214210a8dd1a0d41fd35674c364d timer-wheel-20180228-git timer-wheel.asd timer-wheel.examples.asd -tinaa http://beta.quicklisp.org/archive/tinaa/2017-12-27/tinaa-20171227-git.tgz 80171 bc067fbe6af7f03f247e93c0d35c5f3a 7cb5eed990ef9deaa609f923c9361840131a90f2 tinaa-20171227-git tinaa-test.asd tinaa.asd -tiny-routes http://beta.quicklisp.org/archive/tiny-routes/2022-03-31/tiny-routes-20220331-git.tgz 10829 e09dccb34615059cb3e3be37858de920 0b411b225d785ec332d2eca5bbefcb1f7b187a30 tiny-routes-20220331-git tiny-routes.asd -tm http://beta.quicklisp.org/archive/tm/2018-02-28/tm-v0.8.tgz 173992 8c2219879aa24677951a02235855dcf6 dbe34f193e9e3e16b829d8516ef3c510322408c0 tm-v0.8 tm.asd -tmpdir http://beta.quicklisp.org/archive/tmpdir/2020-02-18/tmpdir-20200218-git.tgz 2080 9d1147084d923c1470e9eb003b97f468 ad4713528770d3b00ca247a0e69dc3195cc32424 tmpdir-20200218-git tmpdir.asd tmpdir.tests.asd -toadstool http://beta.quicklisp.org/archive/toadstool/2013-06-15/toadstool-20130615-git.tgz 14309 8bd093fb81edf56821b538339c70c1f1 404dd62b14525f642110dfd30dadbe4e753f1e9f toadstool-20130615-git toadstool-tests.asd toadstool.asd -toot http://beta.quicklisp.org/archive/toot/2012-11-25/toot-20121125-git.tgz 57834 569c801b0b9e880977df5ab9743ec23c b97041f2040590e8751eae383532996923ec5ad0 toot-20121125-git toot.asd -tooter http://beta.quicklisp.org/archive/tooter/2023-02-14/tooter-20230214-git.tgz 56071 6a734e38b23ed58fb9fffc509bff2da4 d9eaa97b7fdcd95b7f10fa9d11ab698cf0883ffe tooter-20230214-git tooter.asd -towers http://beta.quicklisp.org/archive/towers/2014-12-17/towers-20141217-git.tgz 17597 2af927bf9a75351e0216b45dafef01ce 8949f07d1929307532b2b9ad4009480ea166c808 towers-20141217-git towers.asd -trace-db http://beta.quicklisp.org/archive/trace-db/2023-02-14/trace-db-20230214-git.tgz 207125 4ef851fa4fefb8befff49b9132b9b67d 52da016847050a3ec96e8e3104d69f42f2c1f129 trace-db-20230214-git trace-db.asd -track-best http://beta.quicklisp.org/archive/track-best/2022-02-20/track-best-20220220-git.tgz 6167 8e5d910c4f6a72b57256dad257648b81 69d1047057e89ca2418b87e8a6e2149c799bba03 track-best-20220220-git track-best.asd -trainable-object http://beta.quicklisp.org/archive/trainable-object/2019-12-27/trainable-object-20191227-git.tgz 19230 9db5fb29c21927d7d1aee421e673ee66 bcb41c52a7278aaf9c381b14218eb79617290766 trainable-object-20191227-git trainable-object.asd trainable-object.test.asd -translate http://beta.quicklisp.org/archive/translate/2018-02-28/translate-20180228-git.tgz 6688 95c46dec58c83cd01efd27d60049712f 8660e413ff82b5e83b42bb0d3a64990ee1383db7 translate-20180228-git translate.asd -translate-client http://beta.quicklisp.org/archive/translate-client/2018-02-28/translate-client-20180228-git.tgz 4495 94b7fb3e9836500104348162732512be bdf15a4a38460632c85d3979ef08ea27e79f8c3c translate-client-20180228-git translate-client.asd -transparent-wrap http://beta.quicklisp.org/archive/transparent-wrap/2020-09-25/transparent-wrap-20200925-git.tgz 9955 a82773c9dec366fdf2da8f52a716a7fd 60be87e9f50ecbbde5038341a990ab8e5aaa18f4 transparent-wrap-20200925-git transparent-wrap.asd -tree-search http://beta.quicklisp.org/archive/tree-search/2020-12-20/tree-search-0.0.1.tgz 2039 34f3fc86a9d123841045ead78556bd77 e763a3149fbbe9b4798af346690b8821e1736666 tree-search-0.0.1 tree-search.asd -treedb http://beta.quicklisp.org/archive/treedb/2016-08-25/treedb-20160825-git.tgz 16294 af216acd41ca7a14497d3f045af39b26 d12e833c2d1c271e6ef49bc189a51ccd8f4edfde treedb-20160825-git doc/treedb.doc.asd tests/treedb.tests.asd treedb.asd -trees http://beta.quicklisp.org/archive/trees/2018-01-31/trees-20180131-git.tgz 20019 a1b156d15d444d114f475f7abc908064 3e5523710bbc6c5d96894e036377fbb4487460f9 trees-20180131-git trees.asd -trestrul http://beta.quicklisp.org/archive/trestrul/2021-10-20/trestrul-20211020-git.tgz 8313 9d768924c4b9b74e536c0c6a705029a9 0e78a8985e9578cd6957f1f5a672a93bb39f9100 trestrul-20211020-git spec/trestrul.test.asd trestrul.asd -trivia http://beta.quicklisp.org/archive/trivia/2022-07-07/trivia-20220707-git.tgz 62027 9aabbb90a45b24c6e2e98ca0c4aed4a8 36c5f42a0a1bc6b0d0254addc16de0ac754df0e9 trivia-20220707-git trivia.asd trivia.balland2006.asd trivia.benchmark.asd trivia.cffi.asd trivia.fset.asd trivia.level0.asd trivia.level1.asd trivia.level2.asd trivia.ppcre.asd trivia.quasiquote.asd trivia.test.asd trivia.trivial.asd -trivial-arguments http://beta.quicklisp.org/archive/trivial-arguments/2020-09-25/trivial-arguments-20200925-git.tgz 3397 3d7b76a729b272019c8827e40bfb6db8 20ed920b2c283ae5c02844d43eae4b9a4eab84fa trivial-arguments-20200925-git trivial-arguments.asd -trivial-backtrace http://beta.quicklisp.org/archive/trivial-backtrace/2023-02-14/trivial-backtrace-20230214-git.tgz 9368 e4ca5a103fd923b398fd7795b432cbec 55641c4c29ebf6c24b1cf91f0ef36e1547ee8765 trivial-backtrace-20230214-git trivial-backtrace-test.asd trivial-backtrace.asd -trivial-battery http://beta.quicklisp.org/archive/trivial-battery/2021-10-20/trivial-battery-20211020-git.tgz 2172 9418bbc845f5a361b947f3689031b2a3 f13fceb155f8e99202ae1d9c99ff0e140b4e4803 trivial-battery-20211020-git trivial-battery.asd -trivial-benchmark http://beta.quicklisp.org/archive/trivial-benchmark/2022-07-07/trivial-benchmark-20220707-git.tgz 15036 ffe529f1006c31a49dcc65ac1bdf8cc3 e9739681f3f2b9b63ecffe348285956c8aafc439 trivial-benchmark-20220707-git trivial-benchmark.asd -trivial-bit-streams http://beta.quicklisp.org/archive/trivial-bit-streams/2019-07-10/trivial-bit-streams-20190710-git.tgz 7667 c08ad7b58a972f45c4939ad6869a9283 819805e50d470ec6b09ee0ea53889f633754408e trivial-bit-streams-20190710-git trivial-bit-streams-tests.asd trivial-bit-streams.asd -trivial-build http://beta.quicklisp.org/archive/trivial-build/2015-12-18/trivial-build-20151218-git.tgz 3150 51479b61f4cbe7a113065b0f3ac50834 654770325c8c5ebd1632430aae2bc3f4ac027fd7 trivial-build-20151218-git trivial-build-test.asd trivial-build.asd -trivial-channels http://beta.quicklisp.org/archive/trivial-channels/2016-04-21/trivial-channels-20160421-git.tgz 2810 7bd8731f8ffbbc61aeaf7fde3309c2a3 2c856642b1ac4006d2f8a1f8bd55d18697c9329e trivial-channels-20160421-git trivial-channels.asd -trivial-clipboard http://beta.quicklisp.org/archive/trivial-clipboard/2022-11-06/trivial-clipboard-20221106-git.tgz 4650 5a0ae4b05bd20330b1b23901b8a3a90b 415bc7a3a340f427e409b6a24a7da4224a167cf4 trivial-clipboard-20221106-git trivial-clipboard-test.asd trivial-clipboard.asd -trivial-cltl2 http://beta.quicklisp.org/archive/trivial-cltl2/2021-12-30/trivial-cltl2-20211230-git.tgz 6394 1724626b5c6081d9d8860640166c69a7 e85dab8698a8e6aa2fa4692b5bcc5d67274bb684 trivial-cltl2-20211230-git trivial-cltl2.asd -trivial-coerce http://beta.quicklisp.org/archive/trivial-coerce/2023-02-14/trivial-coerce-20230214-git.tgz 6685 5e840632b1dce06efb8d50adfde2b3e0 91b7a80e5e8451e79c0a35ae29c91b8a9c33ec38 trivial-coerce-20230214-git trivial-coerce.asd -trivial-compress http://beta.quicklisp.org/archive/trivial-compress/2020-12-20/trivial-compress-20201220-git.tgz 2800 e42dd11e969cfc1bd09af9c2352ba874 6ee23d6b31c1841cd8ab9a64afdcd617f2b0e947 trivial-compress-20201220-git trivial-compress-test.asd trivial-compress.asd -trivial-continuation http://beta.quicklisp.org/archive/trivial-continuation/2019-10-07/trivial-continuation-20191007-git.tgz 6021 cd66f3f621bd6004b18c8cfb834fa61c b031d2c2d477949c038e14b9a84fb13cba7f5ae6 trivial-continuation-20191007-git trivial-continuation.asd -trivial-coverage http://beta.quicklisp.org/archive/trivial-coverage/2020-02-18/trivial-coverage-20200218-git.tgz 4414 c5f1c656f46de68d5da349b56ec1b82c a7f10c7eed17b92a30b8413a3d8b25d7c6e44b1f trivial-coverage-20200218-git trivial-coverage.asd -trivial-custom-debugger http://beta.quicklisp.org/archive/trivial-custom-debugger/2020-09-25/trivial-custom-debugger-20200925-git.tgz 3544 e827a5d5c9586c2dc6db8d6b3d0dd40f 9b5591da1181fe253ea7b8b6eb50d71dc5a63a2a trivial-custom-debugger-20200925-git trivial-custom-debugger.asd -trivial-debug-console http://beta.quicklisp.org/archive/trivial-debug-console/2015-04-07/trivial-debug-console-20150407-git.tgz 2602 570ce84cfc527c3ce9a66eb9a3e32a33 c78bc7dbf398faba7518f9edc3fa7ef64ac74768 trivial-debug-console-20150407-git trivial-debug-console.asd -trivial-do http://beta.quicklisp.org/archive/trivial-do/2022-03-31/trivial-do-20220331-git.tgz 2650 911889cba99951fd7b7978f9b42cee3e a4816471ad9b5aa4f063d74a5f638ea9770fcedc trivial-do-20220331-git trivial-do.asd -trivial-documentation http://beta.quicklisp.org/archive/trivial-documentation/2016-12-04/trivial-documentation-20161204-git.tgz 15596 9f092a90567e4f77dc9bd1d06fa58ed0 be1d89ac255c31e9de3ad7966312cfa1e6cda9e2 trivial-documentation-20161204-git trivial-documentation-test.asd trivial-documentation.asd -trivial-download http://beta.quicklisp.org/archive/trivial-download/2023-02-14/trivial-download-20230214-git.tgz 3777 d12ad560f622cc2b4f3af148605454d7 fd15ee5cae034a3b08e7c31cf4b2ec3b7018d73c trivial-download-20230214-git trivial-download.asd -trivial-dump-core http://beta.quicklisp.org/archive/trivial-dump-core/2017-02-27/trivial-dump-core-20170227-git.tgz 5550 1ba1e853c238b2545002db6ee9530144 8a54cef6a4d0dea05cb5844ebb44f0cf03da762d trivial-dump-core-20170227-git trivial-dump-core.asd -trivial-ed-functions http://beta.quicklisp.org/archive/trivial-ed-functions/2021-08-07/trivial-ed-functions-20210807-git.tgz 2789 0efb515d097f5f8efb559f9cf8f507e7 59d59fce7eb04ec732b501f5cc72788df4670269 trivial-ed-functions-20210807-git trivial-ed-functions.asd -trivial-escapes http://beta.quicklisp.org/archive/trivial-escapes/2018-02-28/trivial-escapes-20180228-git.tgz 6079 b8afeb445f9a3fd8e046d5899fd21e2e 102cfd6ba8f9af527302062704cbd04974848bae trivial-escapes-20180228-git test/trivial-escapes-test.asd trivial-escapes.asd -trivial-exe http://beta.quicklisp.org/archive/trivial-exe/2015-12-18/trivial-exe-20151218-git.tgz 1983 d85a8e198c31aa3d6c07351a41732e49 a860186969c29240babffd1c0e2209635a5e2e3a trivial-exe-20151218-git trivial-exe-test.asd trivial-exe.asd -trivial-extensible-sequences http://beta.quicklisp.org/archive/trivial-extensible-sequences/2022-11-06/trivial-extensible-sequences-20221106-git.tgz 15515 146d7365fbc40fc996980fc7c6486d17 4b3c0bc0317c8f317e3104ffd4d7f9a559d91fc7 trivial-extensible-sequences-20221106-git trivial-extensible-sequences.asd -trivial-extract http://beta.quicklisp.org/archive/trivial-extract/2016-04-21/trivial-extract-20160421-git.tgz 3545 b9c3ede33a7f4d565f6916a52a6ea708 c89c03f8cd08876c412a3ae40b0ac763b1930635 trivial-extract-20160421-git trivial-extract-test.asd trivial-extract.asd -trivial-features http://beta.quicklisp.org/archive/trivial-features/2021-12-09/trivial-features-20211209-git.tgz 11377 eca3e353c7d7f100a07a5aeb4de02098 b0fdd2120b75486b8cf0320d27b2cbcdb4f694db trivial-features-20211209-git trivial-features-tests.asd trivial-features.asd -trivial-file-size http://beta.quicklisp.org/archive/trivial-file-size/2022-11-06/trivial-file-size-20221106-git.tgz 3225 8293365da6dc57f4831f5e0a56f8bb56 beb8230dbe372ea3bc860b3ad3e07b13c6c5d0d6 trivial-file-size-20221106-git trivial-file-size.asd -trivial-garbage http://beta.quicklisp.org/archive/trivial-garbage/2021-12-30/trivial-garbage-20211230-git.tgz 10996 6e2b3c0360733f30c7ed36357eb8d54a e246e1350d57823f1aca63747ddc2414f934483b trivial-garbage-20211230-git trivial-garbage.asd -trivial-gray-streams http://beta.quicklisp.org/archive/trivial-gray-streams/2021-01-24/trivial-gray-streams-20210124-git.tgz 8046 1b93af1cae9f8465d813964db4d10588 1a899121477a783ea3996c9875f44db44e8cd089 trivial-gray-streams-20210124-git trivial-gray-streams-test.asd trivial-gray-streams.asd -trivial-hashtable-serialize http://beta.quicklisp.org/archive/trivial-hashtable-serialize/2019-10-07/trivial-hashtable-serialize-20191007-git.tgz 4010 9983c4dff65eb69b0eadb067cf03a834 79afe82d413cd42fbcd64a6f66a7bdb0f15ad245 trivial-hashtable-serialize-20191007-git trivial-hashtable-serialize.asd -trivial-http http://beta.quicklisp.org/archive/trivial-http/2011-02-19/trivial-http-20110219-http.tgz 12646 9f6b15eb07fd99fd0b6b69387a520a4f c71ab658c7c6a98eefdd9a69f8d358a9752bb1dc trivial-http-20110219-http trivial-http-test.asd trivial-http.asd -trivial-indent http://beta.quicklisp.org/archive/trivial-indent/2021-05-31/trivial-indent-20210531-git.tgz 3564 3bb7d208d9d0614121c1f57fcffe65c7 b5282042ed3f4b8dfdefba8665f0f56bdce6baaa trivial-indent-20210531-git trivial-indent.asd -trivial-inspector-hook http://beta.quicklisp.org/archive/trivial-inspector-hook/2021-08-07/trivial-inspector-hook-20210807-git.tgz 2574 9f29b2cf709949e784cc978a44d276f5 f8ecefed709afd0acf43f4017b2273535674fe3a trivial-inspector-hook-20210807-git trivial-inspector-hook.asd -trivial-irc http://beta.quicklisp.org/archive/trivial-irc/2017-10-19/trivial-irc-20171019-git.tgz 22705 e63a9436c7db593d5aab25d4eb89679b 1fd2165891ad015f7d978e275dc7f99063a605fa trivial-irc-20171019-git trivial-irc-echobot.asd trivial-irc.asd -trivial-json-codec http://beta.quicklisp.org/archive/trivial-json-codec/2022-07-07/trivial-json-codec-20220707-git.tgz 8091 b6364d56a543bc6a71958ddc8cb69ea4 cdd79437c47a0dc94f24bb5ab2e3ee16f9073fb0 trivial-json-codec-20220707-git trivial-json-codec.asd -trivial-jumptables http://beta.quicklisp.org/archive/trivial-jumptables/2019-11-30/trivial-jumptables_1.1.tgz 12374 f8ef2c3b2659c6874a0d3f5555b353af 83d069ac067e1a258ad39ee3b5d0cc437f33469f trivial-jumptables_1.1 tests/trivial-jumptables_tests.asd trivial-jumptables.asd -trivial-lazy http://beta.quicklisp.org/archive/trivial-lazy/2015-07-09/trivial-lazy-20150709-git.tgz 1714 ebb499de9ea8b79b0d580222d36ddee9 e9b99256aeec0f0184f3ae5cf20a9e294c1dd972 trivial-lazy-20150709-git trivial-lazy.asd -trivial-ldap http://beta.quicklisp.org/archive/trivial-ldap/2018-07-11/trivial-ldap-20180711-git.tgz 28258 355759d2c532a377b0ec3c0a689548fd 160ff42b50f8f664b029cb53e598301cd8f2d7f4 trivial-ldap-20180711-git trivial-ldap.asd -trivial-left-pad http://beta.quicklisp.org/archive/trivial-left-pad/2019-08-13/trivial-left-pad-20190813-git.tgz 6592 04a7ef287111319605989f582bf7ce4f 544fa2a3c678fe11f7a5a65e7f3e591abf9bcd5e trivial-left-pad-20190813-git trivial-left-pad.asd -trivial-macroexpand-all http://beta.quicklisp.org/archive/trivial-macroexpand-all/2017-10-23/trivial-macroexpand-all-20171023-git.tgz 1968 9cec494869344eb64ebce802c01928c5 87006c97029637389a4371efc28ba43ececfc315 trivial-macroexpand-all-20171023-git trivial-macroexpand-all.asd -trivial-main-thread http://beta.quicklisp.org/archive/trivial-main-thread/2019-07-10/trivial-main-thread-20190710-git.tgz 6114 ab95906f1831aa5b40f271eebdfe11a3 899bc9fa1f863baeece94f9aea0d7f6b7385dbbb trivial-main-thread-20190710-git trivial-main-thread.asd -trivial-method-combinations http://beta.quicklisp.org/archive/trivial-method-combinations/2019-11-30/trivial-method-combinations-20191130-git.tgz 1502 810ed9f3459831000b175970a35c0a0f 323703b64bd61e9dbe911d601c8360e4500c0057 trivial-method-combinations-20191130-git trivial-method-combinations.asd -trivial-mimes http://beta.quicklisp.org/archive/trivial-mimes/2023-02-14/trivial-mimes-20230214-git.tgz 22593 892631728a80cd6ea1fae7cc05f04162 33b100e2f1ec0e2f6f7662fda457251f5c7239d1 trivial-mimes-20230214-git trivial-mimes.asd -trivial-mmap http://beta.quicklisp.org/archive/trivial-mmap/2021-01-24/trivial-mmap-20210124-git.tgz 3831 6c02cc87b2b0b654e8b42f9bd40594e9 ea5cfb87e7bc946895c3bbcb455b78ead070090d trivial-mmap-20210124-git trivial-mmap.asd -trivial-monitored-thread http://beta.quicklisp.org/archive/trivial-monitored-thread/2022-07-07/trivial-monitored-thread-20220707-git.tgz 6578 7cc0b646eb4733603bd993d4069e9ebd b17a267a982940709dd2b793e54b1ddf0109f3d5 trivial-monitored-thread-20220707-git trivial-monitored-thread.asd -trivial-msi http://beta.quicklisp.org/archive/trivial-msi/2016-02-08/trivial-msi-20160208-git.tgz 2142 c2b860a6959e61707142419756f7cf3e 0d6d8cf48d175a6616a245801fa44a165baee4c4 trivial-msi-20160208-git trivial-msi-test.asd trivial-msi.asd -trivial-nntp http://beta.quicklisp.org/archive/trivial-nntp/2016-12-04/trivial-nntp-20161204-git.tgz 4937 f03c13ee62ce27792941d9f9d8cd7c43 b311c46a549c4dbffaed13b8c338ce976ad7b892 trivial-nntp-20161204-git trivial-nntp.asd -trivial-object-lock http://beta.quicklisp.org/archive/trivial-object-lock/2022-07-07/trivial-object-lock-20220707-git.tgz 128519 028a5e195db6962351d74b4a121e8042 8070dda223df1ef711dfab7cc99f31a09d78d5d9 trivial-object-lock-20220707-git trivial-object-lock.asd -trivial-octet-streams http://beta.quicklisp.org/archive/trivial-octet-streams/2013-01-28/trivial-octet-streams-20130128-git.tgz 3452 00d2c8cd41b5ace65519f366bc6542fb e0b865e9b1787e6f91b5d5e6c454a1a5890e077e trivial-octet-streams-20130128-git trivial-octet-streams.asd -trivial-open-browser http://beta.quicklisp.org/archive/trivial-open-browser/2016-08-25/trivial-open-browser-20160825-git.tgz 1176 038c4cd110fa9b34a77fe655bc1e35ba bac02728c1ed3037f88b89764dacf204bb8a1b4a trivial-open-browser-20160825-git trivial-open-browser.asd -trivial-openstack http://beta.quicklisp.org/archive/trivial-openstack/2016-06-28/trivial-openstack-20160628-git.tgz 9849 fd4cea1d1a6e3079f4778c226fbb08b1 d7bb60c337b47ad21205099b8ac38efb7b48bd59 trivial-openstack-20160628-git trivial-openstack-test.asd trivial-openstack.asd -trivial-package-local-nicknames http://beta.quicklisp.org/archive/trivial-package-local-nicknames/2022-02-20/trivial-package-local-nicknames-20220220-git.tgz 3827 d6959b6dd52f354bafa5fa6bcb7b42a1 b1d0d4d699b4bafda4c2235160a3b77c3b4df290 trivial-package-local-nicknames-20220220-git trivial-package-local-nicknames.asd -trivial-package-locks http://beta.quicklisp.org/archive/trivial-package-locks/2023-02-14/trivial-package-locks-20230214-git.tgz 3777 18e421e15f3561bcaca35752fb099c4d a56a16d8b2bfae4596028515d3264707ed1d0281 trivial-package-locks-20230214-git trivial-package-locks.asd -trivial-package-manager http://beta.quicklisp.org/archive/trivial-package-manager/2017-12-27/trivial-package-manager-20171227-git.tgz 6042 161ae810ca261f04aae86068365839da bdda9666a328e2d6e8278fceb8d6b9dff46e1c31 trivial-package-manager-20171227-git trivial-package-manager.asd trivial-package-manager.test.asd -trivial-pooled-database http://beta.quicklisp.org/archive/trivial-pooled-database/2020-12-20/trivial-pooled-database-20201220-git.tgz 6268 b7f41f2e8a9c273d1221899ed46b7c1d eeed3be17989e423a1dd6f0076453f9045c7c0ae trivial-pooled-database-20201220-git trivial-pooled-database.asd -trivial-project http://beta.quicklisp.org/archive/trivial-project/2017-08-30/trivial-project-quicklisp-9e3fe231-git.tgz 7676 1702cda33bf5d228c4f865f4ca2f28da f9050c412d5c9851d3f384000a6b8b8eaab82473 trivial-project-quicklisp-9e3fe231-git trivial-project.asd -trivial-raw-io http://beta.quicklisp.org/archive/trivial-raw-io/2014-12-17/trivial-raw-io-20141217-git.tgz 2861 627f83a54a94278675c03c14934b272a f89b8c4e06554471bfcb9216dd2eb385b5dd8e8a trivial-raw-io-20141217-git trivial-raw-io.asd -trivial-renamer http://beta.quicklisp.org/archive/trivial-renamer/2017-08-30/trivial-renamer-quicklisp-1282597d-git.tgz 3794 ff77e08decb7ca7b5b18e7b03c6cb05b 071cd2c4f5eb569ca958dbfd91a8effb3f0df647 trivial-renamer-quicklisp-1282597d-git trivial-renamer.asd -trivial-rfc-1123 http://beta.quicklisp.org/archive/trivial-rfc-1123/2022-07-07/trivial-rfc-1123-20220707-git.tgz 5492 678efb57d23c4fbc959bcfe833587151 423d6a908b157610c1771924b26806a8fdb11c60 trivial-rfc-1123-20220707-git trivial-rfc-1123.asd -trivial-sanitize http://beta.quicklisp.org/archive/trivial-sanitize/2022-11-06/trivial-sanitize-20221106-git.tgz 18931 b088903dbf3b12a02adfcb8fdb8e6ed3 b8e9f57ab2a1a3438cd5c142a37bf17e6c4ebf98 trivial-sanitize-20221106-git trivial-sanitize-tests.asd trivial-sanitize.asd -trivial-shell http://beta.quicklisp.org/archive/trivial-shell/2023-02-14/trivial-shell-20230214-git.tgz 14728 be135b4b762d316809ccde874974f5f5 c7f6766c999bcef81ed5ee1cbdd9e36a09fee132 trivial-shell-20230214-git trivial-shell-test.asd trivial-shell.asd -trivial-signal http://beta.quicklisp.org/archive/trivial-signal/2019-07-10/trivial-signal-20190710-git.tgz 13446 835a39ed6f968c22862be53487bab640 f1eda45929be115101e995590fefd4fcf8abd6f3 trivial-signal-20190710-git trivial-signal.asd -trivial-sockets http://beta.quicklisp.org/archive/trivial-sockets/2019-01-07/trivial-sockets-20190107-git.tgz 11603 bd56e19a9716b8beb0d482d38fc16472 da768132611e7d7ff0b44212a8011bf17b45e99f trivial-sockets-20190107-git trivial-sockets.asd -trivial-ssh http://beta.quicklisp.org/archive/trivial-ssh/2019-11-30/trivial-ssh-20191130-git.tgz 16118 d1b5dcc547de445a4fde156b66942ab1 001183c4093a3ff5b6133f9f81327f062842d8a5 trivial-ssh-20191130-git trivial-ssh-libssh2.asd trivial-ssh-test.asd trivial-ssh.asd -trivial-string-template http://beta.quicklisp.org/archive/trivial-string-template/2020-12-20/trivial-string-template-20201220-git.tgz 9793 3eeaa59237394b0bdc5f645219e355aa 4bcea2910724eeaabdbcd0200f7e4144c0df3fe2 trivial-string-template-20201220-git trivial-string-template-test.asd trivial-string-template.asd -trivial-tco http://beta.quicklisp.org/archive/trivial-tco/2013-10-03/trivial-tco-20131003-git.tgz 2541 9123b9c05aec84967cb9db6648c958f4 2416c68735324bfec2f53d16abfd76cc29846861 trivial-tco-20131003-git trivial-tco-test.asd trivial-tco.asd -trivial-thumbnail http://beta.quicklisp.org/archive/trivial-thumbnail/2019-07-10/trivial-thumbnail-20190710-git.tgz 5331 c8bfe5f627830e849104d7e0ba54bca6 86865b4054ada83afe01f1a5fbebf35076328215 trivial-thumbnail-20190710-git trivial-thumbnail.asd -trivial-timeout http://beta.quicklisp.org/archive/trivial-timeout/2023-02-14/trivial-timeout-20230214-git.tgz 9784 7f9fa031b7d27cda4b48369f589f65d3 896ca1992ed147006079b3f5bff2552a2d25d009 trivial-timeout-20230214-git trivial-timeout.asd -trivial-timer http://beta.quicklisp.org/archive/trivial-timer/2021-05-31/trivial-timer-20210531-git.tgz 6060 16a1f8cadb31f234a77a673ead9acc44 92bafca098d4689410b25e0cbaf9df99977d78b9 trivial-timer-20210531-git trivial-timer.asd -trivial-types http://beta.quicklisp.org/archive/trivial-types/2012-04-07/trivial-types-20120407-git.tgz 3228 b14dbe0564dcea33d8f4e852a612d7db acf9e5a4b0ef99bdcb121cfbc8f07c647c302e57 trivial-types-20120407-git trivial-types.asd -trivial-update http://beta.quicklisp.org/archive/trivial-update/2018-01-31/trivial-update-20180131-git.tgz 2718 d8c0e6814b49272876ea768cd1e46e2f 4b672e0127418b00f5c12a21f24f5db7cc8af279 trivial-update-20180131-git trivial-update.asd -trivial-utf-8 http://beta.quicklisp.org/archive/trivial-utf-8/2022-02-20/trivial-utf-8-20220220-git.tgz 6976 7c9e40bde1c7f5579bbc71e1e3c22eb0 e8ea1dcd00773fb30093a6f4b6df172a5d175b64 trivial-utf-8-20220220-git trivial-utf-8.asd -trivial-utilities http://beta.quicklisp.org/archive/trivial-utilities/2022-07-07/trivial-utilities-20220707-git.tgz 6882 c2a5e8eb0786cc6ade1b7e3b1fe8146e feaeb81695be9f573c07e0ae275ecde358c1b856 trivial-utilities-20220707-git trivial-utilities.asd -trivial-variable-bindings http://beta.quicklisp.org/archive/trivial-variable-bindings/2019-10-07/trivial-variable-bindings-20191007-git.tgz 4594 13e84f4912598f04d5da6a4bd4c7be5f 8bfa3f68d6b82a13767f88f5595cecc8a6df2d3a trivial-variable-bindings-20191007-git trivial-variable-bindings.asd -trivial-wish http://beta.quicklisp.org/archive/trivial-wish/2017-06-30/trivial-wish-quicklisp-910afeea-git.tgz 3604 37c6d054b8047635f893bcca3b20043f 477cbc87778ab161717f3247495b99ce82d26fe0 trivial-wish-quicklisp-910afeea-git trivial-wish.asd -trivial-with http://beta.quicklisp.org/archive/trivial-with/2017-08-30/trivial-with-quicklisp-2fd8ca54-git.tgz 1554 8b816ed9e2c29f3f8015efb749417e1f ee005208b66ede42608dd15837b701d270932620 trivial-with-quicklisp-2fd8ca54-git trivial-with.asd -trivial-with-current-source-form http://beta.quicklisp.org/archive/trivial-with-current-source-form/2021-10-20/trivial-with-current-source-form-20211020-git.tgz 36908 b4a3721cbef6101de1c43c540b446efc 07dba0515a945be80ef2e993b30c1e7bea63859e trivial-with-current-source-form-20211020-git trivial-with-current-source-form.asd -trivial-ws http://beta.quicklisp.org/archive/trivial-ws/2018-01-31/trivial-ws-20180131-git.tgz 2798 d94a58b084bfae82b57533be1ab60d22 6b21f895b2401e4b6ba676597db3398d4d45eeaa trivial-ws-20180131-git trivial-ws-client.asd trivial-ws-test.asd trivial-ws.asd -trivial-yenc http://beta.quicklisp.org/archive/trivial-yenc/2016-12-04/trivial-yenc-20161204-git.tgz 24777 3e30073ec4a3aac9eb79bcedd773afd3 63208129d025e58445a65f7da343aaf5a2661d96 trivial-yenc-20161204-git trivial-yenc.asd -trivialib.bdd http://beta.quicklisp.org/archive/trivialib.bdd/2021-12-09/trivialib.bdd-20211209-git.tgz 5628 a140061a2553aa426849e2c01bedcf0e e674b8a5ed4a88c807b1fed7aa8db353100e9334 trivialib.bdd-20211209-git trivialib.bdd.asd trivialib.bdd.test.asd -trivialib.type-unify http://beta.quicklisp.org/archive/trivialib.type-unify/2020-03-25/trivialib.type-unify-20200325-git.tgz 6636 78d639eb1e7eda0e73a003854457938c 5c418715ea5055ed60e1f9e4315c98dfbe424db0 trivialib.type-unify-20200325-git trivialib.type-unify.asd trivialib.type-unify.test.asd -trucler http://beta.quicklisp.org/archive/trucler/2022-07-07/trucler-20220707-git.tgz 31733 2ab7483930f73d77ef77dc817729a8b7 e1be4062e678dcaec75eb9b3d2fbea7241bb980a trucler-20220707-git Code/Implementations/Native/Test/trucler-native-test.asd Code/Implementations/Native/trucler-native.asd Code/Implementations/Reference/trucler-reference.asd Code/trucler-base.asd Code/trucler.asd -truetype-clx http://beta.quicklisp.org/archive/truetype-clx/2020-02-18/truetype-clx-20200218-git.tgz 4022 78e52139bd604bed152972e39b46db2c e12cb1bd1ed1d70787c57d796d86bb274d8266bb truetype-clx-20200218-git truetype-clx.asd -try http://beta.quicklisp.org/archive/try/2022-03-31/try-20220331-git.tgz 134744 33bf4a38021c6d7c7b8f259872dfb355 877b28c7ec26f0be147223a5d7692c2cdda227d2 try-20220331-git try.asd try.asdf.asd -tsqueue http://beta.quicklisp.org/archive/tsqueue/2022-11-06/tsqueue-20221106-git.tgz 5253 75cbbc8e65c5b6c2e7fe46a0bfd7f2ae fb7673d5ff8d83314bd79de9dd263328e7b0f43b tsqueue-20221106-git tsqueue.asd -ttt http://beta.quicklisp.org/archive/ttt/2022-07-07/ttt-20220707-git.tgz 1339408 726170159da82e2e9963a3ea02173dc9 6751e8408aae525fbf089ba12507beb8fb8eebfd ttt-20220707-git src/ttt.asd -twfy http://beta.quicklisp.org/archive/twfy/2013-04-20/twfy-20130420-git.tgz 6872 970b20e4c143014bf2faf5d470e3cf72 3840c3c70a63c07bf225bea595bc196ed243b17c twfy-20130420-git twfy.asd -type-i http://beta.quicklisp.org/archive/type-i/2023-02-14/type-i-20230214-git.tgz 6081 11b528b02d2a40a5d80608512dd7b0c1 b4abddf9fffae2e628b687afec5836f257ea3df8 type-i-20230214-git type-i.asd type-i.test.asd -type-r http://beta.quicklisp.org/archive/type-r/2019-12-27/type-r-20191227-git.tgz 10627 9dd5400746e6c8352fc4248e5384669a 82c0916f793c2f678770c2c0152dbd26af130259 type-r-20191227-git type-r.asd type-r.test.asd -typo http://beta.quicklisp.org/archive/typo/2023-02-14/typo-20230214-git.tgz 38892 ce68cfbb79f48c0c1f20e8a503eac905 f413bf33a4f6ccdd0f6849aa82f38f7fc2fe8a0c typo-20230214-git code/test-suite/typo.test-suite.asd code/typo.asd -uax-14 http://beta.quicklisp.org/archive/uax-14/2020-09-25/uax-14-20200925-git.tgz 130668 d2ed691427a0bb0f84d4bf22227d7a08 5189b0c0c726677222e011d7f551818617592fe3 uax-14-20200925-git uax-14-test.asd uax-14.asd -uax-15 http://beta.quicklisp.org/archive/uax-15/2022-11-06/uax-15-20221106-git.tgz 834366 489df3b2f037997ed2d0870824568ffa 893a3bc8746f1afbb97feaa35e160e757cd4b46f uax-15-20221106-git uax-15.asd -uax-9 http://beta.quicklisp.org/archive/uax-9/2023-02-14/uax-9-20230214-git.tgz 1794749 e15b0b6fea400728594e13756ccb1935 c8ea0828f8a2440ac3be6ef250bf2a597c045d92 uax-9-20230214-git uax-9-test.asd uax-9.asd -ubiquitous http://beta.quicklisp.org/archive/ubiquitous/2019-07-10/ubiquitous-20190710-git.tgz 43252 f1300d3ed47beda6abc92ef0d85a8eee 30b0eb81f56864c4e07a916d94a849c72577cd9e ubiquitous-20190710-git ubiquitous-concurrent.asd ubiquitous.asd -ucons http://beta.quicklisp.org/archive/ucons/2021-02-28/ucons-20210228-git.tgz 5834 d5f2cfa499ee384b35d0a835a5f4386a c39b6d852d25253dc18052616ab8fe9c48f2eafa ucons-20210228-git code/ucons.asd -ucw http://beta.quicklisp.org/archive/ucw/2016-02-08/ucw-20160208-darcs.tgz 164029 b5a4f28e311b70010bd98be79e544c48 d461b81886f15d368a521ba254c282f224638623 ucw-20160208-darcs ucw-core.asd ucw.asd -uffi http://beta.quicklisp.org/archive/uffi/2018-02-28/uffi-20180228-git.tgz 179928 b0dfb2f966912f4797327948aa7e9119 3fa7b46bc21bcbbc59528bf4c2ea9bda84f57088 uffi-20180228-git uffi-tests.asd uffi.asd -ufo http://beta.quicklisp.org/archive/ufo/2021-08-07/ufo-20210807-git.tgz 5048 262532d5b0759c3f5246a8e18c009d9f 737680d4d0e2649ab3002d7eb373ed8dcfa15513 ufo-20210807-git ufo-test.asd ufo.asd -ugly-tiny-infix-macro http://beta.quicklisp.org/archive/ugly-tiny-infix-macro/2016-08-25/ugly-tiny-infix-macro-20160825-git.tgz 8284 ed38d0a89cf772f96244934a78bc1ec4 3d5e3f693c1f45322d1c7f6d117fa96a3d9d4557 ugly-tiny-infix-macro-20160825-git ugly-tiny-infix-macro.asd -uiop http://beta.quicklisp.org/archive/uiop/2022-11-06/uiop-3.3.6.tgz 105036 812e0f5ac2fbe27ff485c9b00a6a3ad2 cc90b3bd08eec3f34cc0ea74752b1ec77acaa6c9 uiop-3.3.6 asdf-driver.asd uiop.asd -umbra http://beta.quicklisp.org/archive/umbra/2022-07-07/umbra-20220707-git.tgz 24962 a57ed1eb17088e7e350138f68a8e11e3 984dd71b8b937b4f8598389143ef8a1201e7bc12 umbra-20220707-git umbra.asd -umlisp http://beta.quicklisp.org/archive/umlisp/2021-04-11/umlisp-20210411-git.tgz 46998 3cd1f69fa3046bb4d0d2b73b3be9eb46 9ac78a455125749ea9e12e714ba4b600b8c0c202 umlisp-20210411-git umlisp-tests.asd umlisp.asd -umlisp-orf http://beta.quicklisp.org/archive/umlisp-orf/2015-09-23/umlisp-orf-20150923-git.tgz 31495 401d1d133f874eccafc76426495bdfc6 340233287e9c9c427e2d0260eb2cb457cb494a56 umlisp-orf-20150923-git umlisp-orf.asd -uncursed http://beta.quicklisp.org/archive/uncursed/2022-02-20/uncursed-20220220-git.tgz 24184 5f2e1cdf4479d82fcae29a8e5f3423cc 839eb08169922109aa2b077091243a66db69b5c2 uncursed-20220220-git uncursed-examples.asd uncursed.asd -unicly http://beta.quicklisp.org/archive/unicly/2021-01-24/unicly-20210124-git.tgz 101946 b445da828ba22cad3d94bca17340da95 74a73d2f1507e0bd808aefffa5e7519ccadcdfbb unicly-20210124-git unicly.asd -unit-formula http://beta.quicklisp.org/archive/unit-formula/2018-07-11/unit-formula-20180711-git.tgz 22478 4739cdb264153430300215eec7d8a766 43c9faa30a3d9bf36d81be4df653f66c5104a8c2 unit-formula-20180711-git unit-formulas.asd -unit-test http://beta.quicklisp.org/archive/unit-test/2012-05-20/unit-test-20120520-git.tgz 5026 ffcde1c03dd33862cd4f7288649c3cbc a90ba788826db66fb183ef221a2bd57550d66d51 unit-test-20120520-git unit-test.asd -universal-config http://beta.quicklisp.org/archive/universal-config/2018-04-30/universal-config-20180430-git.tgz 18717 ea3d382afa8904aa76d6e3131c89a1b8 b177d9d562fe68db71f805451e6d7e357647d055 universal-config-20180430-git universal-config.asd -unix-options http://beta.quicklisp.org/archive/unix-options/2015-10-31/unix-options-20151031-git.tgz 11220 3bbdeafbef3e7a2e94b9756bf173f636 64c26167d493cca5c981c1c9a3f923f7406d6e25 unix-options-20151031-git unix-options.asd -unix-opts http://beta.quicklisp.org/archive/unix-opts/2021-01-24/unix-opts-20210124-git.tgz 15695 c75d3233c0f2e16793b1ce19bfc83811 89b779761b8146989d5272ae5323728e86aac92f unix-opts-20210124-git unix-opts.asd -uri-template http://beta.quicklisp.org/archive/uri-template/2019-08-13/uri-template-1.3.1.tgz 20667 2819c38acf5408c90ef2c4f12bfaf73e 42d350f11de6975925bd1aba0878e322836b8817 uri-template-1.3.1 uri-template.asd uri-template.test.asd -url-rewrite http://beta.quicklisp.org/archive/url-rewrite/2017-12-27/url-rewrite-20171227-git.tgz 12733 a27f51e1cd3b62263386c02b07b754b5 16fe74d55e44c734edc7286ac793686150721520 url-rewrite-20171227-git url-rewrite.asd -userial http://beta.quicklisp.org/archive/userial/2011-06-19/userial_0.8.2011.06.02.tgz 25305 18ca2d20cbb483ddb2cb6712387384dc 358b810d26b835ff5a26e1be33aeb6721801d94d userial_0.8.2011.06.02 userial-tests.asd userial.asd -usocket http://beta.quicklisp.org/archive/usocket/2022-11-06/usocket-0.8.5.tgz 91098 82f33c272abd0de3258410e1835ab042 c751b010d65ba5f546b07fda03697e29d1e5789a usocket-0.8.5 usocket-server.asd usocket-test.asd usocket.asd -utilities.binary-dump http://beta.quicklisp.org/archive/utilities.binary-dump/2018-12-10/utilities.binary-dump-20181210-git.tgz 13155 2f2ae5e2669f8d4f3e0bbea638cf473f 437ea86b8f923e9929ffc644beebc1e687433e9f utilities.binary-dump-20181210-git utilities.binary-dump.asd -utilities.print-items http://beta.quicklisp.org/archive/utilities.print-items/2022-11-06/utilities.print-items-20221106-git.tgz 10569 2eb057c82b7144e9773fce16f92a913f 000198d0cae5069612f753003dd532d7c01e9072 utilities.print-items-20221106-git utilities.print-items.asd -utilities.print-tree http://beta.quicklisp.org/archive/utilities.print-tree/2022-11-06/utilities.print-tree-20221106-git.tgz 9697 c7b9a55849256f9960911efc690d50ba 7c09c753cd2a4a298308c973d1fc35c89a911e4e utilities.print-tree-20221106-git utilities.print-tree.asd -utility http://beta.quicklisp.org/archive/utility/2019-02-02/utility-20190202-git.tgz 5158 55e9e5ba352fe19b956af04fa4dc19bc 62360ca825f0bbbbaf2d244698a01cbf75f6e86e utility-20190202-git utility.asd -utility-arguments http://beta.quicklisp.org/archive/utility-arguments/2016-12-04/utility-arguments-20161204-git.tgz 8656 0f60552f326f7164cac4b957e4d48099 9cdfeb9cad7d4e0d84c18ac8f895ce7561bf62e4 utility-arguments-20161204-git utility-arguments.asd -utils-kt http://beta.quicklisp.org/archive/utils-kt/2020-02-18/utils-kt-20200218-git.tgz 17973 888a8505fcd3f9023b4938ed53f700ec 2c82fb87dd2d9c9d1720b22508d7000d5bd13a38 utils-kt-20200218-git utils-kt.asd -utm http://beta.quicklisp.org/archive/utm/2020-02-18/utm-20200218-git.tgz 5366 1c8f9f8ad98c0022b9b606be96156cc3 972d99046777cc8e246357232ac39cb27954e0c1 utm-20200218-git utm.asd utm.test.asd -utm-ups http://beta.quicklisp.org/archive/utm-ups/2021-02-28/utm-ups-20210228-git.tgz 19924 1806dd729202723bea6d746d0569a095 84fcded58f15680b5f71c0fca1b46b119269c7f4 utm-ups-20210228-git utm-ups.asd -uuid http://beta.quicklisp.org/archive/uuid/2020-07-15/uuid-20200715-git.tgz 22210 e550de5e4e0f8cc9dc92aff0b488a991 a68cc19869cbc10c691c967e6355c4fcb58e4f39 uuid-20200715-git uuid.asd -validate-list http://beta.quicklisp.org/archive/validate-list/2021-04-11/validate-list-20210411-git.tgz 11893 d372937ef2299768f6adb55ad6eaabd3 a002d9b7214e0deb8828f88e2bd1d42a19002abc validate-list-20210411-git validate-list.asd -varjo http://beta.quicklisp.org/archive/varjo/2021-01-24/varjo-release-quicklisp-92f9c75b-git.tgz 336707 78a3b8021885ebfab4015e20b885cdcf 5239f7015582f01cf2439a3e001f4417db2dd7b0 varjo-release-quicklisp-92f9c75b-git varjo.asd varjo.import.asd varjo.tests.asd -vas-string-metrics http://beta.quicklisp.org/archive/vas-string-metrics/2021-12-09/vas-string-metrics-20211209-git.tgz 6888 b1264bac0f9516d9617397e1b7a7c20e 4b62b060f1007ba3f686d262c918d18d0682594e vas-string-metrics-20211209-git test.vas-string-metrics.asd vas-string-metrics.asd -vecto http://beta.quicklisp.org/archive/vecto/2021-12-30/vecto-1.6.tgz 71198 9b7f7ddb9cc4d8de353979e339182c31 2818b227789355999efb4a93830c41410902ccb1 vecto-1.6 vecto.asd vectometry/vectometry.asd -vector http://beta.quicklisp.org/archive/vector/2013-01-28/vector-20130128-git.tgz 13555 d00644c19ce7e0d1302acda0bf238081 042f916e4c5c4648ab2b8e2d41f164783563522a vector-20130128-git com.elbeno.vector.asd -vectors http://beta.quicklisp.org/archive/vectors/2017-12-27/vectors-20171227-git.tgz 4968 413caa1cced2681421c9ee3438079a7c a52d5b2e5ff875860d90cd76f8cf63650041e60a vectors-20171227-git vectors.asd -vellum http://beta.quicklisp.org/archive/vellum/2023-02-14/vellum-20230214-git.tgz 104221 b04dededd74d1026214e79454bc6a878 636588f90fcf7218c941a016b834323c030e2e00 vellum-20230214-git vellum-tests.asd vellum.asd -vellum-clim http://beta.quicklisp.org/archive/vellum-clim/2021-05-31/vellum-clim-20210531-git.tgz 1855 9a0f92839445a89d25934dd36ad58e22 0a9a1ee49e530d0fe058420642ad61cc46b0b61c vellum-clim-20210531-git vellum-clim.asd -vellum-csv http://beta.quicklisp.org/archive/vellum-csv/2022-07-07/vellum-csv-20220707-git.tgz 10762 aed5b75011ceee9adbd166795d1e2427 fbc20c998588989beb30bdb7b602e415dc9357fb vellum-csv-20220707-git vellum-csv-tests.asd vellum-csv.asd -vellum-postmodern http://beta.quicklisp.org/archive/vellum-postmodern/2023-02-14/vellum-postmodern-20230214-git.tgz 2883 9aa475d1aafa2b577edc09a010e99880 9ae5b976236ba3cbb8d5d79c70a8d5072fd7f5d0 vellum-postmodern-20230214-git vellum-postmodern.asd -verbose http://beta.quicklisp.org/archive/verbose/2020-12-20/verbose-20201220-git.tgz 61480 5a36b6316092d722acee9570dc590906 6560efa8ae90d4770a205fbbdb77a712563f7212 verbose-20201220-git verbose.asd -verlet http://beta.quicklisp.org/archive/verlet/2021-12-09/verlet-20211209-git.tgz 14694 732b6e14e5ba0fbc79e39f4d44663de2 50600c8260938a374760ffd159e098f6c1505e50 verlet-20211209-git verlet.asd -vernacular http://beta.quicklisp.org/archive/vernacular/2021-10-20/vernacular-20211020-git.tgz 40989 b81a39654d827b44ccc02aae6fb26f5a 58a95976e3513383e09cdbbc14f51d5d20b745a7 vernacular-20211020-git vernacular.asd -verrazano http://beta.quicklisp.org/archive/verrazano/2012-09-09/verrazano-20120909-darcs.tgz 154093 fdb516677e8414b3400fd8dd6f91817b 3dfe039d928da642c40544b7418fcc8929a43dae verrazano-20120909-darcs verrazano-runtime.asd verrazano.asd -vertex http://beta.quicklisp.org/archive/vertex/2015-06-08/vertex-20150608-git.tgz 3549 f0e1a725b6733155306c4dd9d8245ea8 27473fcccbf03bd3a904a3c0d04b8c40413c514d vertex-20150608-git vertex-test.asd vertex.asd -vgplot http://beta.quicklisp.org/archive/vgplot/2022-07-07/vgplot-20220707-git.tgz 34852 501191985751a7b3eb226523d520ad8b 3888bedc247581be80f39e188cf76c0aca98d1bb vgplot-20220707-git vgplot.asd -vivid-colors http://beta.quicklisp.org/archive/vivid-colors/2022-07-07/vivid-colors-20220707-git.tgz 101674 8bae78831d589ffac9781efdd9f71fb2 d95a25c2ffae22d52aafa6587336d8fe7b5f071e vivid-colors-20220707-git content/spec/vivid-colors.content.test.asd content/vivid-colors.content.asd dispatch/spec/vivid-colors.dispatch.test.asd dispatch/vivid-colors.dispatch.asd queue/spec/vivid-colors.queue.test.asd queue/vivid-colors.queue.asd shared/spec/vivid-colors.shared.test.asd shared/vivid-colors.shared.asd spec/vivid-colors.test.asd stream/spec/vivid-colors.stream.test.asd stream/vivid-colors.stream.asd vivid-colors.asd -vivid-diff http://beta.quicklisp.org/archive/vivid-diff/2022-07-07/vivid-diff-20220707-git.tgz 25712 d8380d738d71b282b9610aae91b08b0f 15ba7bf5ae869a397988730b423a3bfd9cdfaa0b vivid-diff-20220707-git spec/vivid-diff.test.asd vivid-diff.asd -vk http://beta.quicklisp.org/archive/vk/2023-02-14/vk-20230214-git.tgz 631667 1476029867d5bf0a3bb04c44f2fa5f48 a9b283f271ccd0b287f46e948ce2c555583cdb03 vk-20230214-git vk.asd -vom http://beta.quicklisp.org/archive/vom/2016-08-25/vom-20160825-git.tgz 4286 ad16bdc0221b08de371be6ce25ce3d47 4618a41b412c27f8a543c70bef09b49d68d9b1f7 vom-20160825-git vom.asd -vom-json http://beta.quicklisp.org/archive/vom-json/2020-06-10/vom-json-20200610-git.tgz 5506 bf4c4f9418c91b8ff0a0b722aac2b335 5e740ae88b867216b8408e31eaee3f47f29ea45d vom-json-20200610-git vom-json.asd -vp-trees http://beta.quicklisp.org/archive/vp-trees/2023-02-14/vp-trees-20230214-git.tgz 5534 0b8632e619f14d2615b468ae31c48911 2693571823bb2b29b53b0d2e999cbbd9261cd649 vp-trees-20230214-git vp-trees.asd -wallstreetflets http://beta.quicklisp.org/archive/wallstreetflets/2021-12-09/wallstreetflets-20211209-git.tgz 15177 06a0c728903eefec1deb052011bdae3a dc4cdfa394328df1acb6b957ab27f97a779e7589 wallstreetflets-20211209-git wallstreetflets.asd -wasm-encoder http://beta.quicklisp.org/archive/wasm-encoder/2021-06-30/wasm-encoder-20210630-git.tgz 25736 92965e08a87bf5a6dcb438f3a22e9b5f 7138aa2ec824afc3ca306b060d28ab815a9cf78d wasm-encoder-20210630-git wasm-encoder.asd -water http://beta.quicklisp.org/archive/water/2019-01-07/water-20190107-git.tgz 2387 8340d15004bc9b07d822eb08d73846d7 679bc44d0f73f8963f5ced8211c3abd45e7cb8b8 water-20190107-git water.asd -wayflan http://beta.quicklisp.org/archive/wayflan/2023-02-14/wayflan-20230214-git.tgz 617457 31af986520c3ab3e1d8b2811968aea2c 90b45e3cef03239147d4da392717fcad25f57b74 wayflan-20230214-git wayflan-client.asd wayflan.asd -webapi http://beta.quicklisp.org/archive/webapi/2021-10-20/webapi-20211020-git.tgz 4232 8ed6e60719474dafa3b74acb93b9d612 a2cc4307f83ba5742e799368f3a399bf1415b4c1 webapi-20211020-git webapi.asd -weblocks http://beta.quicklisp.org/archive/weblocks/2021-10-20/weblocks-20211020-git.tgz 312633 1f465c9ae7627a319e5838ea57198cbb e416f64744e54eb0e7cb6e199c09d3b797ea21b3 weblocks-20211020-git weblocks-scripts.asd weblocks-util.asd -weblocks-stores http://beta.quicklisp.org/archive/weblocks-stores/2021-10-20/weblocks-stores-20211020-git.tgz 24830 e63774086fe46ff8b5d43b63b5e1b379 55f2582051f6490ec3e505ddc8c81edb063794c8 weblocks-stores-20211020-git src/store/clsql/weblocks-clsql.asd src/store/memory/weblocks-memory.asd src/store/montezuma/weblocks-montezuma.asd src/store/perec/weblocks-perec.asd src/store/prevalence/weblocks-prevalence.asd weblocks-stores.asd -websocket-driver http://beta.quicklisp.org/archive/websocket-driver/2022-03-31/websocket-driver-20220331-git.tgz 11621 d97de4dccbbac21858568a8e47cb9eef 95f5cecd275a3c490ddd2a3ce69399e198114b67 websocket-driver-20220331-git websocket-driver-base.asd websocket-driver-client.asd websocket-driver-server.asd websocket-driver.asd -weft http://beta.quicklisp.org/archive/weft/2018-02-28/weft-20180228-git.tgz 6282 ec7196f159294035d3c06b5723920058 d9ea5ff22d830c1f0deb6fd047e4b62ec280c74c weft-20180228-git weft.asd -westbrook http://beta.quicklisp.org/archive/westbrook/2018-01-31/westbrook-20180131-git.tgz 3249 43e514336921135f6fc3c1b3063eaf4b 97ed8af62728b92027a7321387a64b918475ca7c westbrook-20180131-git westbrook-tests.asd westbrook.asd -what3words http://beta.quicklisp.org/archive/what3words/2016-12-04/what3words-20161204-git.tgz 5600 54303b21497ffca394575c7376c8b9f3 7b37b1c4c32ab419d4f07cf6f1798f4a0b69b88f what3words-20161204-git what3words.asd -which http://beta.quicklisp.org/archive/which/2016-04-21/which-20160421-git.tgz 2063 d352101dca7f6e985c0e437bcdb6fe40 528a7fdbb3c1485e5685145fd0023ece6a9b32c5 which-20160421-git which-test.asd which.asd -whirlog http://beta.quicklisp.org/archive/whirlog/2021-10-20/whirlog-20211020-git.tgz 30872 ab973d92af617b99d4604299c0192b87 d46b878157f360b5e63fb6b2fa6699d2a4cfeba4 whirlog-20211020-git whirlog.asd -whofields http://beta.quicklisp.org/archive/whofields/2021-10-20/whofields-20211020-git.tgz 5394 0b6b7b116a6ce9ba6c7ddcb1abfa5e33 520ef39d46eed4734d891be27a44fadd80b54ae4 whofields-20211020-git whofields.asd -wild-package-inferred-system http://beta.quicklisp.org/archive/wild-package-inferred-system/2021-05-31/wild-package-inferred-system-20210531-git.tgz 9674 4744e08ef5f50da04a429ae9af60bb80 6e8706a7d2208983ccf0d553ed201b9efb893b59 wild-package-inferred-system-20210531-git test/foo-wild/foo-wild.asd wild-package-inferred-system.asd -winhttp http://beta.quicklisp.org/archive/winhttp/2020-06-10/winhttp-20200610-git.tgz 15445 d241af100e613f3b24a800f35ed94944 e93d35b56fbd44ae4ea39074038776bf1b758b4a winhttp-20200610-git winhttp.asd -winlock http://beta.quicklisp.org/archive/winlock/2019-11-30/winlock-20191130-git.tgz 3577 f637484323c2b64fc680325bcadef786 fc646ddf5184afcbf5c84370b68087120a63e7bd winlock-20191130-git winlock.asd -with-branching http://beta.quicklisp.org/archive/with-branching/2022-02-20/with-branching-20220220-git.tgz 4777 c3c309a6a2516caca19c28ec328d179a a08cb95c337195815be41800681f950f9a362861 with-branching-20220220-git with-branching.asd -with-c-syntax http://beta.quicklisp.org/archive/with-c-syntax/2022-11-06/with-c-syntax-20221106-git.tgz 110532 c8a73f50e07291a5642ea6b7a7ff7cfb db736696ac722f7a0269ec50672995bafc897285 with-c-syntax-20221106-git with-c-syntax-test.asd with-c-syntax.asd -with-cached-reader-conditionals http://beta.quicklisp.org/archive/with-cached-reader-conditionals/2017-06-30/with-cached-reader-conditionals-20170630-git.tgz 2457 16049564ecfdb5a6db9edd1bdcf0a921 4be7101d32ea9f59c716ce5b822a58e0bb124a05 with-cached-reader-conditionals-20170630-git with-cached-reader-conditionals.asd -with-contexts http://beta.quicklisp.org/archive/with-contexts/2023-02-14/with-contexts-20230214-git.tgz 27957 836c88fba46d98846f8739f7407990d0 dc053b38a253d4c02c4a2ad47675fb6aa04f985b with-contexts-20230214-git with-contexts.asd -with-output-to-stream http://beta.quicklisp.org/archive/with-output-to-stream/2019-10-07/with-output-to-stream_1.0.tgz 4266 d9bee5027d6c04bcd7f63f4c48706f5c a3b23295277552cf9dd81191edd50ed8019a1c67 with-output-to-stream_1.0 tests/with-output-to-stream_tests.asd with-output-to-stream.asd -with-setf http://beta.quicklisp.org/archive/with-setf/2018-02-28/with-setf-release-quicklisp-df3eed9d-git.tgz 2558 9218b3765e9e2fd26a7f103e63fc89fe a6db3e7df0bb1b289e2134d8668be0ff51b4389e with-setf-release-quicklisp-df3eed9d-git with-setf.asd -with-shadowed-bindings http://beta.quicklisp.org/archive/with-shadowed-bindings/2019-01-07/with-shadowed-bindings-1.0.tgz 5127 1f583c77f5d2c67c934ab33d2ba810c3 a786cd36c9aee7348f63f7d6fe482225a728ccb2 with-shadowed-bindings-1.0 tests/with-shadowed-bindings_tests.asd with-shadowed-bindings.asd -with-user-abort http://beta.quicklisp.org/archive/with-user-abort/2023-02-14/with-user-abort-20230214-git.tgz 1094 b58f160825dcf029ac4cb058a15c43a9 fab1e0b551a24f7279d7de6aaccb28517c806160 with-user-abort-20230214-git with-user-abort.asd -woo http://beta.quicklisp.org/archive/woo/2022-07-07/woo-20220707-git.tgz 225778 64a9cd4acc9fc520605dd3cf86912570 556b56ab637c54203db969f865a905dcf9904d4a woo-20220707-git clack-handler-woo.asd woo-test.asd woo.asd -wookie http://beta.quicklisp.org/archive/wookie/2023-02-14/wookie-20230214-git.tgz 29782 fcdb16ea4dc5aab07940692d1f4c2d58 5d3c8172c9467adce9a99b1d50d72500ca34546a wookie-20230214-git wookie.asd -wordnet http://beta.quicklisp.org/archive/wordnet/2022-02-20/wordnet-20220220-git.tgz 10485176 7e7552e61d3e9578498038cbb2e4e604 1c098b7dc2bd5c40c74764454e2a830368f8ee9d wordnet-20220220-git wordnet.asd -workout-timer http://beta.quicklisp.org/archive/workout-timer/2023-02-14/workout-timer-20230214-git.tgz 319898 896ae75adca3cf0cc2d57bbef3af3ddf 99daedceee79116e8ec382dde3b2ca8f0e7ca40b workout-timer-20230214-git workout-timer.asd -wu-decimal http://beta.quicklisp.org/archive/wu-decimal/2013-01-28/wu-decimal-20130128-git.tgz 6244 e0676ea5ba7ce65e4d80cc5128c1e668 b37c145557a1b9541f9219629c1091976dc2656f wu-decimal-20130128-git wu-decimal.asd -wu-sugar http://beta.quicklisp.org/archive/wu-sugar/2016-08-25/wu-sugar-20160825-git.tgz 3555 ef7aec6772cda55c04bf117a2a8cb4ac a2dde559d7e28bdaa93dfcf0e1f080447873c9d3 wu-sugar-20160825-git wu-sugar.asd -wuwei http://beta.quicklisp.org/archive/wuwei/2022-11-06/wuwei-20221106-git.tgz 150962 d4ad66b127b1913278003f6ac3678dee 96984d473bbdb701116765069a680d473b13b6b4 wuwei-20221106-git wuwei.asd -x.let-star http://beta.quicklisp.org/archive/x.let-star/2020-03-25/x.let-star-20200325-git.tgz 7940 c6984b5a4e60a3a88d088ebe69e840b0 c66f72bf9b9e42964818dcc75c322203a262c52b x.let-star-20200325-git x.let-star.asd -xarray http://beta.quicklisp.org/archive/xarray/2014-01-13/xarray-20140113-git.tgz 26181 477bb421f87f6de0236065bf81949a32 5466b0687c3ac4a6466d2761b9d29510658785bb xarray-20140113-git xarray-test.asd xarray.asd -xcat http://beta.quicklisp.org/archive/xcat/2020-09-25/xcat-20200925-git.tgz 7671 ae0f3e8c401266ef9a56245b4021112f 2ca9c1cd50d20186d605ecb9a3ebd451ff5744cf xcat-20200925-git xcat.asd -xecto http://beta.quicklisp.org/archive/xecto/2015-12-18/xecto-20151218-git.tgz 29803 f770596c9d7a9ce86fb2d7952bc9e40e 489a3f39048451dfaab304a73681d5f8ce779a8b xecto-20151218-git xecto.asd -xhtmlambda http://beta.quicklisp.org/archive/xhtmlambda/2023-02-14/xhtmlambda-20230214-git.tgz 54391 95ec2624a1923599ce378ef2481ec712 33883f9139ee8c83224aaf067a2c0090e700dcd0 xhtmlambda-20230214-git xhtmlambda.asd -xhtmlgen http://beta.quicklisp.org/archive/xhtmlgen/2017-01-24/xhtmlgen-20170124-git.tgz 4264 17fc90eab99b1fb0cf6335065e84c109 bbb503e316f419d7cffb2f3f648e0227bc61cb15 xhtmlgen-20170124-git xhtmlgen.asd -xlsx http://beta.quicklisp.org/archive/xlsx/2018-07-11/xlsx-20180711-git.tgz 3050 10133595e8973f9acdd0301c00d04f8c 5a5dc8579c348ffae3625fbb088aa4ee008e3eaf xlsx-20180711-git xlsx.asd -xlunit http://beta.quicklisp.org/archive/xlunit/2015-09-23/xlunit-20150923-git.tgz 9484 1c673862f57e998c7a7b8e74de0d0c92 de0142632a8227f339178055eb5543a0c8dce789 xlunit-20150923-git xlunit.asd -xml-emitter http://beta.quicklisp.org/archive/xml-emitter/2022-11-06/xml-emitter-20221106-git.tgz 8095 085c162bbb17fc1712a5efe0e458c807 bfa1afd67b37010f0db07630974bf396d82cee5b xml-emitter-20221106-git xml-emitter.asd -xml-mop http://beta.quicklisp.org/archive/xml-mop/2011-04-18/xml-mop-20110418-git.tgz 15391 028fde76c0d121865cb5167962a4b78b f5fb4a43a2defedb352b072be94d4c22f433dfc3 xml-mop-20110418-git xml-mop.asd -xml.location http://beta.quicklisp.org/archive/xml.location/2020-03-25/xml.location-20200325-git.tgz 31507 90cf4fd2450ba562c7f9657391dacb1d e8ac43311d5a362c9e39e5e52fc46b1df2bc11ef xml.location-20200325-git xml.location-and-local-time.asd xml.location.asd -xmls http://beta.quicklisp.org/archive/xmls/2022-07-07/xmls-release-c6ca1b39-git.tgz 116932 ef2cf297230d1a1f8a09abf6c7f40bad f2bfe7b8b7b140b7fc748b4c2a40f888d21bdf56 xmls-release-c6ca1b39-git xmls.asd -xptest http://beta.quicklisp.org/archive/xptest/2015-09-23/xptest-20150923-git.tgz 6874 61f6ff5cc44cf8da5d8036084a31fbc3 09eebbc1fa611a9b628c9d2de12f6c81bf4420b8 xptest-20150923-git xptest.asd -xsubseq http://beta.quicklisp.org/archive/xsubseq/2017-08-30/xsubseq-20170830-git.tgz 4006 960bb8f329649b6e4b820e065e6b38e8 77ef22871e590349e22e892cd8f80121db1b1566 xsubseq-20170830-git xsubseq-test.asd xsubseq.asd -xuriella http://beta.quicklisp.org/archive/xuriella/2012-03-05/xuriella-20120305-git.tgz 122204 55eb6e13da338bc47b640a2767b0bd20 49899b4682e3a72322c69feb21ced8a109675833 xuriella-20120305-git xuriella.asd -yaclml http://beta.quicklisp.org/archive/yaclml/2018-01-31/yaclml-20180131-git.tgz 32006 b3dba0cd334aef4fc75b465b2b31a94a 76172119d82a08b4483721cc6746228c8d9b8079 yaclml-20180131-git yaclml.asd -yah http://beta.quicklisp.org/archive/yah/2022-11-06/yah-20221106-git.tgz 2382 c29c4a87ce3e1e7ccb78a4d744d2fa1d 24efb0eed6a734713b5d266408e1ec58c589e63b yah-20221106-git yah.asd -yason http://beta.quicklisp.org/archive/yason/2023-02-14/yason-20230214-git.tgz 31072 1e3d41cc0288a1167e00eee19f71958f 60a601f69e1adaf95deb2bbac47679973a5dc20f yason-20230214-git yason.asd -youtube http://beta.quicklisp.org/archive/youtube/2019-12-27/youtube-20191227-git.tgz 3054 36af0a0118f51e4e57d1dee28f720a44 dc8b73c9c8d14ba29827baf8ef5bda3b0a25d275 youtube-20191227-git youtube.asd -zacl http://beta.quicklisp.org/archive/zacl/2021-08-07/zacl-20210807-git.tgz 22798 c1ab72503b3a9f0bb67bc902369ab23e 20e90bef77d393419cdf08528be2183b25b4dd1c zacl-20210807-git zacl.asd -zaws http://beta.quicklisp.org/archive/zaws/2015-04-07/zaws-20150407-git.tgz 13832 13ada144680e2f5d111df8f0a0217d99 8d181469163fac8b77280c98c5ab28ca7098fe4b zaws-20150407-git xml/zaws-xml.asd zaws.asd -zbucium http://beta.quicklisp.org/archive/zbucium/2019-07-10/zbucium-20190710-git.tgz 4503 90b10e33e3fa82d42174016881d557bc d0e1df0c25eb87e1e0e66af27fd2dac5b20c7fb4 zbucium-20190710-git zbucium.asd -zcdb http://beta.quicklisp.org/archive/zcdb/2015-04-07/zcdb-1.0.4.tgz 7393 e924c2b419f9875364cd662184fc55d1 db5f7a8e8a22f858794b64ef255f7dea015835f8 zcdb-1.0.4 zcdb.asd -zenekindarl http://beta.quicklisp.org/archive/zenekindarl/2017-11-30/zenekindarl-20171130-git.tgz 17395 2c8e9002b6434d92761ced8e187c5903 0a732633d8173828feec7a8b5eaab103de638e7f zenekindarl-20171130-git zenekindarl-test.asd zenekindarl.asd -zip http://beta.quicklisp.org/archive/zip/2015-06-08/zip-20150608-git.tgz 20940 5be194863779dcbd3c83e07524392f14 a8fa33dc2a19df78942e02c0e35a78f054992bd7 zip-20150608-git zip.asd -zippy http://beta.quicklisp.org/archive/zippy/2023-02-14/zippy-20230214-git.tgz 101324 8589a49c47538857bc89d753c67fa6b5 02fe2ae8884f1c050d18846e5fd8152455a5d039 zippy-20230214-git zippy-dwim.asd zippy.asd -ziz http://beta.quicklisp.org/archive/ziz/2019-10-07/ziz-20191007-git.tgz 3184 24b32be09b15855c77b6fddc2d6d6ea3 f9d30703cd655564a12063a77b466930cd52a41d ziz-20191007-git ziz.asd -zlib http://beta.quicklisp.org/archive/zlib/2017-04-03/zlib-20170403-git.tgz 9104 67450036249df47288f4a8330ea28f57 498b41ab3e46c63d5f0ae3ece8eeb47c95009bad zlib-20170403-git zlib.asd -zpb-exif http://beta.quicklisp.org/archive/zpb-exif/2021-01-24/zpb-exif-release-1.2.5.tgz 14751 195389d99058243d1022f2c31facf0e7 bef28435ef937710fad945636aae240d5b236fe7 zpb-exif-release-1.2.5 zpb-exif.asd -zpb-ttf http://beta.quicklisp.org/archive/zpb-ttf/2021-01-24/zpb-ttf-release-1.0.4.tgz 45564 b66f67b0a1fc347657d4d71ddb304920 689de6a6535a6a5a005039c7f2d2248f41ef2ccb zpb-ttf-release-1.0.4 zpb-ttf.asd -zpng http://beta.quicklisp.org/archive/zpng/2015-04-07/zpng-1.2.2.tgz 40141 0a208f4ce0087ef578d477341d5f4078 0374a5e03f266152dea01c6fff9839798725697c zpng-1.2.2 zpng.asd -zs3 http://beta.quicklisp.org/archive/zs3/2019-10-07/zs3-1.3.3.tgz 57149 5ea13aa7a490758882e245c3f8bb063e 8b3bcc4f7a524ca09f3b6fa6600c510e1f2d9e3b zs3-1.3.3 zs3.asd -zsort http://beta.quicklisp.org/archive/zsort/2012-05-20/zsort-20120520-git.tgz 6259 08689032aed3f283c9ab84b536d0aca3 5b8b68c44983d394a8328f30cdc2b8fb6c96331a zsort-20120520-git zsort.asd diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/.gitignore b/quicklisp/dists/quicklisp/software/3bz-20201220-git/.gitignore deleted file mode 100644 index 72b0d98..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*~ -*.fasl \ No newline at end of file diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/3bz.asd b/quicklisp/dists/quicklisp/software/3bz-20201220-git/3bz.asd deleted file mode 100644 index 9d1f954..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/3bz.asd +++ /dev/null @@ -1,29 +0,0 @@ -(defsystem :3bz - :description "deflate decompressor" - :depends-on (alexandria - (:feature (:and (:not :mezzano) (:not :abcl)) cffi) - (:feature (:and (:not :mezzano) (:not :abcl)) mmap) - trivial-features - nibbles - babel) - :serial t - :license "MIT" - :author "Bart Botta <00003b at gmail.com>" - :components - ((:file "package") - (:file "tuning") - (:file "util") - (:file "constants") - (:file "types") - (:file "huffman-tree") - (:file "ht-constants") - (:file "io-common") - (:file "io-nommap" :if-feature (:or :mezzano :abcl)) - (:file "io-mmap" :if-feature (:and (:not :mezzano) (:not :abcl))) - (:file "io") - (:file "deflate") - (:file "checksums") - (:file "zlib") - (:file "gzip") - (:file "api"))) - diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/README.md b/quicklisp/dists/quicklisp/software/3bz-20201220-git/README.md deleted file mode 100644 index 20457f2..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/README.md +++ /dev/null @@ -1,94 +0,0 @@ -Yet another CL impementation of [rfc1951 -deflate](https://tools.ietf.org/html/rfc1951) decompression -(optionally with [rfc1950 zlib](https://tools.ietf.org/html/rfc1950) -or [rfc1952 -gzip](https://tools.ietf.org/html/rfc1952https://tools.ietf.org/html/rfc1952) -wrappers), with support for reading from foreign pointers (for use with -mmap and similar, etc), and from CL octet vectors and streams. - -### Still somewhat WIP, but approaching usability. - -Performance for vectors/pointers is somewhere between FFI to libz and chipz, -still needs some low-level optimization of copy routines and checksums. -Stream API is very slow, and may be replaced at some point. - -API isn't completely stable yet, needs some actual use to figure out -the details. - - -#### API/usage - -##### easy API: -`decompress-vector (compressed &key (format :zlib) output` - -```lisp -;; pass a (simple-array (unsigned-byte 8) (*)) -(3bz:decompress-vector (alexandria:read-file-into-byte-vector "foo.gz") - :format :gzip) ;; accepts :deflate, :zlib, :gzip -;; -> -#(....) -1234 -;; get back decompressed data and size as 2 values - -``` - -If decompressed size is known, you can save some copies by passing in -a pre-allocated `(simple-array (unsigned-byte 8) (*))` vector with -`:OUTPUT`. - -##### full API: - -Allows input and output in multiple pieces, as well as input from -vectors, FFI pointers, or streams (streams are currently very slow -though). - - -* step 1: make a decompression state: - - `make-deflate-state`, `make-zlib-state`, or `make-gzip-state`. -Optionally with `:output-buffer octet-vector` to provide initial -output buffer. - -* step 2: make an input context - - `make-octet-vector-context`, `make-octet-stream-context`, or `with-octet-pointer`+`make-octet-pointer-context`. - - pass source of coresponding type, + optional `:start`,`:end`,`:offset` -to specify valid region within source. For FFI pointers, use -`(with-octet-pointer (octet-pointer ffi-pointer size) ...)` to wrap a -raw pointer + size into `octet-pointer` to pass to -`make-octet-pointer-context`. (If you need indefinite scope pointers, -file an issue so support that can be added to API.) - -* step 3: decompress - - `(decompress context state)` returns current offset into output buffer. - -* step 4: check decompression state - - * if `(finished state)`, you are done. - - * if `(input-underrun state)`, you need to supply more input by creating a new input context, and call `decompress` again with new context. - - * if `(output-overflow state)`, you need to provide a new output buffer with `(replace-output-buffer state new-buffer)` and call `decompress` again. - - -##### performance notes: - -* Streams API is currently *very* slow, and will probably be rewritten at some point. - -* Output in small pieces is slow: - - `deflate` needs to maintain a 32kb history window, so every time -output buffer overflows, it copies 32kb of history. If output buffer -is smaller than 32kb, that means more history is copied than total -output, so avoid small output buffers. - - Ideally, if output size is known in advance and output buffer never -overflows, there is no extra copies for history window. - - If output size isn't known, if you start with something like `(min -input-size 32768)` and double (or at least scale by 1.x) on each -overflow, there will only be O(N) bytes copied to combine output -buffers, and O(lgN) byytes copied for history. - diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/api.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/api.lisp deleted file mode 100644 index 4f5b834..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/api.lisp +++ /dev/null @@ -1,71 +0,0 @@ -(in-package 3bz) - -(defun decompress (context state) - (etypecase state - (gzip-state - (decompress-gzip context state)) - (zlib-state - (decompress-zlib context state)) - (deflate-state - (decompress-deflate context state)))) - -(defun replace-output-buffer (state buffer) - (unless (or (zerop (ds-output-offset state)) - (ds-output-overflow state)) - ;; we don't create/fill window until output buffer overflows, so - ;; would need to do that here. error for now until someone needs - ;; that ability... - (error "can't switch buffers without filling old one yet.")) - (setf (ds-output-buffer state) buffer) - (setf (ds-output-offset state) 0) - (setf (ds-output-overflow state) nil)) - -(defun decompress-vector (compressed &key (format :zlib) (start 0) (end (length compressed)) output) - "decompress octet-vector COMPRESSED using -FORMAT (:deflate,:zlib,:gzip). If output is supplied, it should be an -octet-vector large enough to hold entire uncompressed output. - -Returns buffer containing decompressed data (OUTPUT if supplied) and # -of octets decompressed." - (let ((parts nil) - (state (ecase format - (:gzip (make-gzip-state)) - (:zlib (make-zlib-state)) - (:deflate (make-deflate-state)))) - (rc (make-octet-vector-context compressed :start start :end end))) - (if output - (progn - (setf (ds-output-buffer state) output) - (setf (ds-output-offset state) 0) - (let ((c (decompress rc state))) - (unless (ds-finished state) - (cond - ((ds-input-underrun state) - (error "incomplete ~a stream" format)) - ((ds-output-overflow state) - (error "not enough space to decompress ~a stream" format)) - (t (error "?")))) - (values output c))) - (progn - (loop for out = (make-array (min (- end start) 32768) - :element-type 'octet) - then (make-array (* 2 (length out)) :element-type 'octet) - do (replace-output-buffer state out) - (let ((c (decompress rc state))) - (push (cons out c) parts)) - (assert (not (ds-input-underrun state))) - until (ds-finished state)) - (let* ((s (reduce '+ parts :key 'cdr)) - (b (make-array s :element-type 'octet))) - (loop for start = 0 then (+ start c) - for (p . c) in (nreverse parts) - do (replace b p :start1 start :end2 c)) - (values b (length b))))))) - -(defun finished (state) - (ds-finished state)) -(defun input-underrun (state) - (ds-input-underrun state)) -(defun output-overflow (state) - (ds-output-overflow state)) - diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/bench.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/bench.lisp deleted file mode 100644 index cc1bbd7..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/bench.lisp +++ /dev/null @@ -1,122 +0,0 @@ -(in-package 3bz) - -#++(ql:quickload '(3bz salza2 flexi-streams chipz deoxybyte-gzip)) - - -(defvar *foo* nil) -(defvar *chipz* nil) -(defvar *3bz* nil) -#++ -(prog1 nil - (push *foo* *chipz*)) -#++ -(prog1 nil - (push *foo* *3bz*)) - -(defvar *zzz* nil) -(let* ((d (time - (alexandria:read-file-into-byte-vector "e:/tmp/t/linux-2.2.26.tar")) - #++(setf *foo* - (time - (map-into (make-array (expt 2 24) :element-type 'octet) - (lambda () (random 225)))))) - (tmp (make-array (length d) :element-type 'octet - :initial-element 0)) - (v #++(time - (salza2:compress-data d 'salza2:deflate-compressor)) - (or *zzz* - (setf *zzz* - (time - (multiple-value-bind (x r w) - (gz:deflate-vector d tmp :compression 9 - :suppress-header t) - (declare (ignore r)) - (subseq x 0 w)))))) - (c (make-instance 'octet-vector-context - :octet-vector v - :boxes (make-context-boxes :end (length v)))) - (state (make-deflate-state :output-buffer tmp))) - #++(time (dump-deflate v "-sirqq")) - #++(time (dump-deflate v "-sir")) - (format t "chipz:~%") - (fill tmp 0) - (with-simple-restart (continue "continue") - (let ((x (time (chipz:decompress tmp 'chipz:deflate v)))) - (declare (ignore x)) - (assert (equalp d tmp)))) - (fill tmp 0) - (format t "3bz:~%") ;; 0.36 - (let ((x (time (decompress c state)))) - (assert (not (ds-output-overflow state))) - (assert (ds-finished state)) - (assert (equalp (typecase x - (cons - (time (apply 'concatenate 'octet-vector x))) - (vector x) - (number - (subseq tmp 0 x))) - d))) - (fill tmp 0) - (format t "3bz/pointer:~%") ;; 0.36 - (cffi:with-pointer-to-vector-data (p v) - (with-octet-pointer (op p (length v)) - (let ((x (time (decompress (make-instance 'octet-pointer-context - :pointer p :op op - :boxes (make-context-boxes :end (length v))) - (make-deflate-state :output-buffer tmp))))) - (assert (equalp (if (consp x) - (time (apply 'concatenate 'octet-vector x)) - (subseq tmp 0 x)) - d))))) - (fill tmp 0) - (format t "3bz/stream:~%") - (flex:with-input-from-sequence (s v) - (let ((x (time (decompress (make-instance 'octet-stream-context - :octet-stream s - :boxes (make-context-boxes :end (length v))) - (make-deflate-state :output-buffer tmp))))) - (assert (equalp (if (consp x) - (time (apply 'concatenate 'octet-vector x)) - (subseq tmp 0 x)) - d)))) - - (fill tmp 0) - (format t "gz:~%") - (let ((x (time (gz:inflate-vector v tmp :suppress-header t)))) - (assert (equalp x d))) - (print (length v)) - nil) - -(let* ((d (time - (alexandria:read-file-into-byte-vector "e:/tmp/t/linux-2.2.26.tar"))) - (tmp (make-array (length d) :element-type 'octet - :initial-element 0)) - (v (or *zzz* - (setf *zzz* - (time - (multiple-value-bind (x r w) - (gz:deflate-vector d tmp :compression 9 - :suppress-header t) - (declare (ignore r)) - (subseq x 0 w))))))) - (fill tmp 0) - (format t "3bz:~%") ;; 0.33 - (let ((x (time (decompress (make-instance 'octet-vector-context - :octet-vector v - :boxes (make-context-boxes - :end (length v))) - (make-deflate-state :output-buffer tmp))))) - (assert (equalp (if (consp x) - (time (apply 'concatenate 'octet-vector x)) - (subseq tmp 0 x)) - d))) - (format t " x10:~%") - (time - (loop repeat 10 - do (decompress (make-instance 'octet-vector-context - :octet-vector v - :boxes (make-context-boxes - :end (length v))) - (make-deflate-state :output-buffer tmp)))) - - nil) diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/checksums.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/checksums.lisp deleted file mode 100644 index 7af142c..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/checksums.lisp +++ /dev/null @@ -1,209 +0,0 @@ -(in-package 3bz) -#++ -(let ((max (1- (expt 2 29)))) - (flet ((s (n) - (+ (* (1+ n) 65520) - (* (/ (* n (1+ n)) 2) 255)))) - (loop with n1 = 0 - with n = (/ max 2) - with n2 = max - when (>= (s n) max) - do (psetf n (floor (+ n n1) 2) - n2 n) - else do (psetf n (floor (+ n n2) 2) - n1 n) - until (< (- n2 n1) 2) - finally (return n1)))) - -(defun adler32/ub64 (buf end s1 s2) - (declare (type octet-vector buf) - (type (unsigned-byte 16) s1 s2) - (type fixnum end) - (optimize speed)) - ;; with 64bit accumulators, we need to do the MOD every 380368439 - ;; adds. formula = (+ (* (1+ n) 65520) (* (/ (* n (1+ n)) 2) 255)) - (let* ((unroll #1=#.+adler32-unroll+) - (chunk-size ;(* unroll (floor 5552 unroll)) - (* unroll (floor 380368439 unroll))) - (s1 s1) - (s2 s2)) - (declare (type (unsigned-byte 64) s1 s2) - (fixnum chunk-size)) - (assert (<= end (length buf))) - (macrolet ((a (i) - `(progn - (setf s1 (ub64+ s1 - (locally - (declare (optimize (safety 0))) - (aref buf (the fixnum ,i))))) - (setf s2 (ub64+ s2 s1)))) - (unroll (n) - `(progn - ,@(loop for x below n - collect `(a (fixnum+ i ,x)))))) - (loop with i of-type fixnum = 0 - for rem fixnum = (the fixnum (- end i)) - for c fixnum = (fixnum+ i (min (* #1# (floor rem #1#)) - chunk-size)) - while (> rem #1#) - do (loop while (< i c) - do (unroll #1#) - (locally (declare (optimize (safety 0))) - (setf i (fixnum+ i #1#)))) - (setf s1 (mod s1 +adler32-prime+) - s2 (mod s2 +adler32-prime+)) - finally (progn - (assert (<= i end)) - (loop for i fixnum from i below end - do (a i)))) - (setf s1 (mod s1 +adler32-prime+) - s2 (mod s2 +adler32-prime+))) - (locally (declare (type (unsigned-byte 16) s1 s2)) - (values s1 s2)))) - -(progn - (eval-when (:compile-toplevel :load-toplevel :execute) - (defconstant +accumulate-count+ - (let ((max most-positive-fixnum)) - (flet ((s (n) - (+ (* (1+ n) 65520) - (* (/ (* n (1+ n)) 2) 255)))) - (loop with n1 = 0 - with n = (/ max 2) - with n2 = max - when (>= (s n) max) - do (psetf n (floor (+ n n1) 2) - n2 n) - else do (psetf n (floor (+ n n2) 2) - n1 n) - until (< (- n2 n1) 2) - finally (return n1)))))) - ;; need at least 20 or so bits of accumulator, and add a few more so - ;; we can unroll - (assert (> +accumulate-count+ 100)) - (defun adler32/fixnum (buf end s1 s2) - (declare (type octet-vector buf) - (type (unsigned-byte 16) s1 s2) - (type non-negative-fixnum end) - (optimize speed)) - (let* ((unroll #1=#.+adler32-unroll+) - (chunk-size - (* unroll (floor +accumulate-count+ unroll))) - (s1 s1) - (s2 s2)) - (declare (type non-negative-fixnum s1 s2 chunk-size)) - (assert (<= end (length buf))) - (macrolet ((a (i) - `(progn - (setf s1 (the fixnum (+ s1 - (the octet (aref buf (the fixnum ,i)))))) - (setf s2 (the fixnum (+ s2 s1))))) - (unroll (n) - `(progn - ,@(loop for x below n - collect `(a (+ i ,x)))))) - (loop with i of-type non-negative-fixnum = 0 - for rem fixnum = (the fixnum (- end i)) - for c fixnum = (the fixnum (+ i - (the fixnum - (min (* #1# (floor rem #1#)) - chunk-size)))) - while (> rem #1#) - do (loop while (< i c) - do (unroll #1#) - (locally (declare (optimize (safety 0))) - (setf i (the fixnum (+ i #1#))))) - (setf s1 (mod s1 +adler32-prime+) - s2 (mod s2 +adler32-prime+)) - finally (progn - (assert (<= i end)) - (loop for i fixnum from i below end - do (a i)))) - (setf s1 (mod s1 +adler32-prime+) - s2 (mod s2 +adler32-prime+))) - (locally (declare (type (unsigned-byte 16) s1 s2)) - (values s1 s2))))) - -(defun adler32/ub32 (buf end s1 s2) - (declare (type octet-vector buf) - (type (unsigned-byte 16) s1 s2) - (type fixnum end) - (optimize speed )) - ;; with 32bit accumulators, we need to do the MOD every 5552 adds. - (let* ((unroll #1=#.+adler32-unroll+) - (chunk-size (* unroll (floor 5552 unroll))) - (s1 s1) - (s2 s2)) - (declare (type (unsigned-byte 32) s1 s2)) - (assert (<= end (length buf))) - (macrolet ((a (i) - `(progn - (setf s1 (the (unsigned-byte 32) (+ s1 (aref buf ,i)))) - (setf s2 (the (unsigned-byte 32) (+ s2 s1))))) - (unroll (n) - `(progn - ,@(loop for x below n - collect `(a (+ i ,x)))))) - (loop with i fixnum = 0 - while (> (- end i) #1#) - for c fixnum = (+ i (min (* #1# (floor (- end i) #1#)) - chunk-size)) - do (loop while (< i c) - do (unroll #1#) - (locally (declare (optimize (safety 0))) - (incf i #1#))) - (setf s1 (mod s1 +adler32-prime+) - s2 (mod s2 +adler32-prime+)) - finally (progn - (assert (<= i end)) - (loop for i from i below end - do (a i)))) - (setf s1 (mod s1 +adler32-prime+) - s2 (mod s2 +adler32-prime+))) - (locally (declare (type (unsigned-byte 16) s1 s2)) - (values s1 s2)))) - -(declaim (inline adler32)) -(defun adler32 (buf end s1 s2) - #+#.(3bz::use-adler32 :ub64) - (adler32/ub64 buf end s1 s2) - #+#.(3bz::use-adler32 :fixnum) - (adler32/fixnum buf end s1 s2) - #+#.(3bz::use-adler32 :ub32) - (adler32/ub32 buf end s1 s2)) - - -(eval-when (:compile-toplevel :load-toplevel :execute) - (defun generate-crc32-table () - (let ((table (make-array 256 :element-type '(unsigned-byte 32)))) - (loop for n below (length table) - do (setf (aref table n) - (let ((c n)) - (loop for k below 8 - if (oddp c) - do (setf c (logxor #xedb88320 (ash c -1))) - else - do (setf c (ash c -1))) - c))) - table))) - -(declaim (type (simple-array (unsigned-byte 32) (256)) +crc32/table+)) -(alexandria:define-constant +crc32/table+ - (generate-crc32-table) :test 'equalp) - - -(defun crc32/table (buf end crc) - (declare (type octet-vector buf) - (type fixnum end) - (type (unsigned-byte 32) crc) - (optimize speed)) - (let ((crc (logxor crc #xffffffff))) - (declare (type (unsigned-byte 32) crc)) - (loop for b across buf - repeat end - do (setf crc - (logxor (ldb (byte 24 8) crc) - (aref +crc32/table+ - (ldb (byte 8 0) - (logxor crc b)))))) - (logxor crc #xffffffff))) diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/constants.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/constants.lisp deleted file mode 100644 index afead27..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/constants.lisp +++ /dev/null @@ -1,73 +0,0 @@ -(in-package 3bz) - -;; libz says these are enough entries for zlib as specified -(defconstant +max-tree-entries/len+ 852) -(defconstant +max-tree-entries/dist+ 592) -(defconstant +max-tree-size+ (+ +max-tree-entries/len+ - +max-tree-entries/dist+)) - -;; max # of bits for an encoded huffman tree entry + and optional extra bits -;; (= 15 bits + 13 extra bits) -(defconstant +ht-max-bits+ 28) - -;; low-bit tags for nodes in tree -(defconstant +ht-literal+ #b00) -(defconstant +ht-link/end+ #b01) -(defconstant +ht-len/dist+ #b10) -(defconstant +ht-invalid+ #b11) - -;; 'end' code in lit/len alphabet -(defconstant +end-code+ 256) -;; first length code in lit/len alphabet -(defconstant +lengths-start+ 257) -;; last valid length (there are some extra unused values to fill tree) -(defconstant +lengths-end+ 285) -;; offset of length codes in extra-bits tables -(eval-when (:compile-toplevel :load-toplevel :execute) - (defconstant +lengths-extra-bits-offset+ 32)) - -(defconstant +adler32-prime+ 65521) - - - -;; extra-bits and len/dist-bases store -(declaim (type (simple-array (unsigned-byte 4) - (#. (+ 29 +lengths-extra-bits-offset+))) - +extra-bits+) - (type (simple-array (unsigned-byte 16) - (#. (+ 29 +lengths-extra-bits-offset+))) - +len/dist-bases+)) - -(alexandria:define-constant +extra-bits+ - (concatenate - '(simple-array (unsigned-byte 4) (61)) - (replace (make-array +lengths-extra-bits-offset+ :initial-element 0) - #(0 0 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13)) - #(0 0 0 0 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 0)) - :test 'equalp) - - -;; base length value for each length/distance code, add to extra bits -;; to get length -(alexandria:define-constant +len/dist-bases+ - (concatenate '(simple-array (unsigned-byte 16) (61)) - (replace (make-array +lengths-extra-bits-offset+ :initial-element 0) - #(1 2 3 4 5 7 9 13 17 25 33 49 65 97 - 129 193 257 385 513 769 - 1025 1537 2049 3073 4097 6145 8193 - 12289 16385 24577)) - #(3 4 5 6 7 8 9 10 11 13 15 17 19 23 27 31 35 43 51 59 67 83 99 - 115 131 163 195 227 258)) - :test 'equalp) - -(declaim (type (simple-array (unsigned-byte 8) (19)) +len-code-order+)) - -(alexandria:define-constant +len-code-order+ - (coerce #(16 17 18 0 8 7 9 6 10 5 11 4 12 3 13 2 14 1 15) - '(simple-array (unsigned-byte 8) (19))) - :test 'equalp) -(declaim (type (simple-array (unsigned-byte 4) (19)) +len-code-extra+)) -(alexandria:define-constant +len-code-extra+ - (coerce #(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 7) - '(simple-array (unsigned-byte 4) (19))) - :test 'equalp) diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/deflate-test.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/deflate-test.lisp deleted file mode 100644 index 6bda70a..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/deflate-test.lisp +++ /dev/null @@ -1,303 +0,0 @@ -(in-package 3bz) - -#++ -(ql:quickload '(salza2 flexi-streams chipz)) -#++ -(defun dump-deflate (octets &rest options) - (let ((uiop:*default-stream-element-type* '(unsigned-byte 8))) - (flex:with-input-from-sequence (s octets) - (sb-ext:run-program - ;; -r = raw deflate data, -d = print dynamic header, -s = print stats - #p"~/src/infgen/infgen.exe" (or options '("-rds")) - :input s - :output *standard-output*)))) - -#++ -(let* ((v (salza2:compress-data (coerce #(1 2 3 4 1 2 3 4 1 2) 'octet-vector) 'salza2:deflate-compressor)) - (c (make-instance 'octet-vector-context - :octet-vector v - :boxes (make-context-boxes :end (length v)))) - (state (make-deflate-state))) - (dump-deflate v) - (print (length (time (chipz:decompress nil 'chipz:deflate v)))) - (time - (decompress c state))) - - - -;; test streams from https://github.com/nayuki/Simple-DEFLATE-decompressor/blob/master/java/test/DecompressorTest.java - - -(defun deflate-test (in out &optional err) - (declare (ignorable err)) - (let* ((in (remove #\space in)) - (out (remove #\space out)) - (octets (make-array (* (ceiling (length in) 8)) - :element-type 'octet :initial-element 0))) - (declare (ignorable out)) - (loop for c across in - for x from 0 - for bit = (mod x 8) - for byte = (floor x 8) - do (setf (ldb (byte 1 bit) (aref octets byte)) - (digit-char-p c))) - (format t "~&test ~s~% -> ~x~%" in octets) - (dump-deflate octets) - (let* ((c (make-instance 'octet-vector-context - :octet-vector octets - :boxes (make-context-boxes :end (length octets)))) - (state (make-deflate-state)) - (d #++(with-output-to-string (*standard-output*) - (decompress c state) - #++(loop for b = (read-struct 'deflate-block c) - when (data b) - do (loop for a across (data b) - do (format s "~2,'0x" a)) - until (plusp (bfinal b)))) - (let* ((tmp (make-array 1024 :element-type 'octet)) - (d1 (decompress c state :into tmp))) - (setf d1 (list (subseq tmp 0 d1))) - (with-output-to-string (s) - (loop for v in d1 - do (loop for x across v - do (format s "~2,'0x" x))))))) - (format t "got <~a>~%" d) - (format t "expected <~a>~%" out) - (unless err (assert (string= d out)))))) - - ;; No blocks -(deflate-test "" "" 'eof) - -;; Reserved block type -(deflate-test "1 11 00000" "" 'format) - -;; Partial block type -(deflate-test "1 0" "" 'eof) ;; - -;; Uncompressed block len=0: (empty) -(deflate-test "1 00 00000 0000000000000000 1111111111111111" "") - -;; Uncompressed block len=3: 05 14 23 -(deflate-test "1 00 00000 1100000000000000 0011111111111111 10100000 00101000 11000100" "05 14 23") ; - -;; Uncompressed block len=1: 05 -;; Uncompressed block len=2: 14 23 -(deflate-test "0 00 00000 0100000000000000 1011111111111111 10100000 00101000 1 00 00000 1000000000000000 0111111111111111 11000100" "05 14 23") ; - -;; Uncompressed block (partial padding) (no length) -(deflate-test "1 00 000" "" 'eof) ; - - -;; Uncompressed block (partial length) -(deflate-test "1 00 00000 0000000000" "" 'eof) - - -;; Uncompressed block (mismatched len and nlen) -(deflate-test "1 00 00000 0010000000010000 1111100100110101" "" 'format) - - -;; Uncompressed block len=6: 55 EE (End) -(deflate-test "1 00 11111 0110000000000000 1001111111111111 10101010 01110111" "" 'eof) ; - -;; Uncompressed block len=0: (empty) -;; No final block -(deflate-test "0 00 00000 0000000000000000 1111111111111111" "" 'eof) - -;; Fixed Huffman block: 90 A1 FF End -;; Uncompressed block len=2: AB CD -(deflate-test "0 10 110010000 110100001 111111111 0000000 1 00 0100000000000000 1011111111111111 11010101 10110011" "90 A1 FF AB CD") ; - -;; Fixed Huffman block: End -(deflate-test "1 10 0000000" "") ; - -;; Fixed Huffman block: 00 80 8F 90 C0 FF End -(deflate-test "1 10 00110000 10110000 10111111 110010000 111000000 111111111 0000000" "00 80 8F 90 C0 FF") ; - - -;; Fixed Huffman block: 00 01 02 (33) End -(deflate-test "1 10 00110000 00110001 00110010 0000001 00010 0000000" "00 01 02 00 01 02") ; - -;; Fixed Huffman block: 01 (14) End -(deflate-test "1 10 00110001 0000010 00000 0000000" "01 01 01 01 01") ; - -;; Fixed Huffman block: 8E 8F (25) End -(deflate-test "1 10 10111110 10111111 0000011 00001 0000000" "8E 8F 8E 8F 8E 8F 8E") ; - -;; Fixed Huffman block: #286 -(deflate-test "1 10 11000110" "" 'format) ; - -;; Fixed Huffman block: #287 -(deflate-test "1 10 11000111" "" 'format) ; - -;; Fixed Huffman block: 00 #257 #30 -(deflate-test "1 10 00110000 0000001 11110" "" 'format) ; - -;; Fixed Huffman block: 00 #257 #31 -(deflate-test "1 10 00110000 0000001 11111" "" 'format) ; - -;; Fixed Huffman block: (partial symbol) -(deflate-test "1 10 00000" "" 'eof) ; - -;; Fixed Huffman block: 00 #269+1(partial) -(deflate-test "1 10 00110000 0001101 1" "" 'eof) ; - -;; Fixed Huffman block: 00 #285 #0 #257 #8+00(partial) -(deflate-test "1 10 00110000 11000101 00000 0000001 01000 00" "" 'eof) ; - -;; Dynamic Huffman block: -;; numCodeLen=19 -;; codeLenCodeLen = 0:0 1:1 2:0 ... 15:0 16:0 17:0 18:1 -;; numLitLen=257 numDist=2 -;; litLenCodeLen = 0:1 1:0 ... 255:0 256:1 -;; distCodeLen = 0:1 1:1 -;; Data: End -(let ((blockHeader "1 01") - (codeCounts "00000 10000 1111") - (codeLenCodeLens "000 000 100 000 000 000 000 000 000 000 000 000 000 000 000 000 000 100 000") - (codeLens "0 11111111 10101011 0 0 0") - (data "1")) - (deflate-test (concatenate 'string blockHeader codeCounts codeLenCodeLens codeLens data) "")) - -;; Dynamic Huffman block: -;; numCodeLen=18 -;; codeLenCodeLen = 0:2 1:2 2:0 ... 15:0 16:0 17:0 18:1 -;; numLitLen=257 numDist=1 -;; litLenCodeLen = 0:0 ... 254:0 255:1 256:1 -;; distCodeLen = 0:0 -;; Data: End - -(let ((blockHeader "1 01") - (codeCounts "00000 00000 0111") - (codeLenCodeLens "000 000 100 010 000 000 000 000 000 000 000 000 000 000 000 000 000 010") - (codeLens "01111111 00101011 11 11 10") - (data "1")) - (deflate-test (concatenate 'string blockHeader codeCounts codeLenCodeLens codeLens data) "")) - - - -;; Dynamic Huffman block: -;; numLitLen=257 numDist=1 numCodeLen=18 -;; codeLenCodeLen = 0:0 1:1 2:0 ... 15:0 16:1 17:0 18:0 -;; Literal/length/distance code lengths: #16+00 -(let ((blockHeader "1 01") - (codeCounts "00000 00000 0111") - (codeLenCodeLens "100 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 100") - (codeLens "1")) - (deflate-test (concatenate 'string blockHeader codeCounts codeLenCodeLens codeLens) "" 'format)) - - - -;; Dynamic Huffman block: -;; numLitLen=257 numDist=1 numCodeLen=18 -;; codeLenCodeLen = 0:0 1:1 2:0 ... 15:0 16:0 17:0 18:1 -;; Literal/length/distance code lengths: 1 1 #18+1111111 #18+1101100 -(let ((blockHeader "1 01") ; - (codeCounts "00000 00000 0111") ; - (codeLenCodeLens "000 000 100 000 000 000 000 000 000 000 000 000 000 000 000 000 000 100") ; - (codeLens "0 0 11111111 10011011")) ; - (deflate-test (concatenate 'string blockHeader codeCounts codeLenCodeLens codeLens) "" 'format)) - - - -;; Dynamic Huffman block: -;; numLitLen=257 numDist=1 numCodeLen=4 -;; codeLenCodeLen = 0:1 1:1 2:1 3:0 -(let ((blockHeader "1 01") - (codeCounts "00000 00000 0000") - (codeLenCodeLens "100 100 100 000") - (padding "0000000000000000000")) - (deflate-test (concatenate 'string blockHeader codeCounts codeLenCodeLens padding) "" 'format)) ; - - - -;; Dynamic Huffman block: -;; numLitLen=257 numDist=1 numCodeLen=4 -;; codeLenCodeLen = 0:1 1:1 2:1 3:1 -(let ((blockHeader "1 01") - (codeCounts "00000 00000 0000") - (codeLenCodeLens "100 100 100 100") - (padding "0000000000000000000")) - (deflate-test (concatenate 'string blockHeader codeCounts codeLenCodeLens padding) "" 'format)) ; - - - -;; Dynamic Huffman block: -;; numLitLen=257 numDist=1 numCodeLen=4 -;; codeLenCodeLen = 0:1 1:2 2:3 3:0 -(let ((blockHeader "1 01") - (codeCounts "00000 00000 0000") - (codeLenCodeLens "100 010 110 000") - (padding "0000000000000000000")) - (deflate-test (concatenate 'string blockHeader codeCounts codeLenCodeLens padding) "" 'format)) ; - - - -;; Dynamic Huffman block: -;; numLitLen=257 numDist=1 numCodeLen=4 -;; codeLenCodeLen = 0:0 1:0 2:0 3:0 -(let ((blockHeader "1 01") - (codeCounts "00000 00000 0000") - (codeLenCodeLens "000 000 000 000") - (padding "0000000000000000000")) - (deflate-test (concatenate 'string blockHeader codeCounts codeLenCodeLens padding) "" 'format)) ; - - -;; Dynamic Huffman block: -;; numLitLen=257 numDist=1 numCodeLen=4 -;; codeLenCodeLen = 0:0 1:0 2:1 3:0 -(let ((blockHeader "1 01") - (codeCounts "00000 00000 0000") - (codeLenCodeLens "000 000 100 000") - (padding "0000000000000000000")) - (deflate-test (concatenate 'string blockHeader codeCounts codeLenCodeLens padding) "" 'format)) ; - - -;; Dynamic Huffman block: -;; numLitLen=257 numDist=1 numCodeLen=4 -;; codeLenCodeLen = 0:2 1:1 2:0 3:0 -(let ((blockHeader "1 01") - (codeCounts "00000 00000 0000") - (codeLenCodeLens "010 100 000 000") - (padding "0000000000000000000")) - (deflate-test (concatenate 'string blockHeader codeCounts codeLenCodeLens padding) "" 'format)) ; - - -;; Dynamic Huffman block: -;; numLitLen=258 numDist=1 numCodeLen=18 -;; codeLenCodeLen = 0:2 1:2 2:2 ... 15:0 16:0 17:0 18:2 -;; Literal/length/distance code lengths: 0 2 #18+1111111 #18+1101001 1 2 1 -;; Data: 01 #257 #0 #256 -(let ((blockHeader "1 01") - (codeCounts "10000 00000 0111") - (codeLenCodeLens "000 000 010 010 000 000 000 000 000 000 000 000 000 000 000 010 000 010") - (codeLens "00 10 111111111 111001011 01 10 01") - (data "10 11 0 0")) - (deflate-test (concatenate 'string blockHeader codeCounts codeLenCodeLens codeLens data) "01 01 01 01")) ; - - -;; Dynamic Huffman block: -;; numLitLen=258 numDist=1 numCodeLen=18 -;; codeLenCodeLen = 0:2 1:2 2:2 ... 15:0 16:0 17:0 18:2 -;; Literal/length/distance code lengths: 0 2 #18+1111111 #18+1101001 1 2 1 -;; Data: 01 #257 #31 #256 -(let ((blockHeader "1 01") - (codeCounts "10000 00000 0111") - (codeLenCodeLens "000 000 010 010 000 000 000 000 000 000 000 000 000 000 000 010 000 010") - (codeLens "00 10 111111111 111001011 01 10 01") - (data "10 11 1 0")) - (deflate-test (concatenate 'string blockHeader codeCounts codeLenCodeLens codeLens data) "01 01 01 01" 'format)) ; - - -;; Dynamic Huffman block: -;; numLitLen=258 numDist=1 numCodeLen=18 -;; codeLenCodeLen = 0:2 1:2 2:2 ... 15:0 16:0 17:0 18:2 -;; Literal/length/distance code lengths: 2 #18+1111111 #18+1101010 1 2 0 -;; Data: 00 #257 -(let ((blockHeader "1 01") - (codeCounts "10000 00000 0111") - (codeLenCodeLens "000 000 010 010 000 000 000 000 000 000 000 000 000 000 000 010 000 010") - (codeLens "10 111111111 110101011 01 10 00") - (data "10 11") - (padding "0000000000000000")) - (deflate-test (concatenate 'string blockHeader codeCounts codeLenCodeLens codeLens data padding) "" 'format)) ; - diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/deflate.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/deflate.lisp deleted file mode 100644 index 924cd9e..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/deflate.lisp +++ /dev/null @@ -1,727 +0,0 @@ -(in-package 3bz) - -#++(ql:quickload '3bz) -(defstruct-cached (deflate-state (:conc-name ds-)) - ;; current state machine state - (current-state :start-of-block) - - ;; set when reading last block in stream - (last-block-flag nil :type (or nil t)) - - ;; storage for dynamic huffman tree, modified for each dynamic block - (dynamic-huffman-tree (cons (make-huffman-tree) (make-huffman-tree)) - :type (cons huffman-tree huffman-tree)) - ;; reference to either dynamic-huffman-tree or *static-huffman-tree* - ;; depending on curret block - (current-huffman-tree +static-huffman-trees+ - :type (cons huffman-tree huffman-tree)) - ;; dynamic huffman tree parameters being read - (dht-hlit 0 :type (unsigned-byte 10)) - (dht-hlit+hdist 0 :type (unsigned-byte 10)) - (dht-hclen 0 :type (unsigned-byte 4)) - (dht-len-codes (make-array 19 :element-type '(unsigned-byte 4) - :initial-element 0) - :type (simple-array (unsigned-byte 4) (19))) - - (dht-len-tree (make-huffman-tree)) ;; fixme: reduce size - (dht-lit/len/dist (make-array (+ 288 32) :element-type '(unsigned-byte 4) - :initial-element 0) - :type code-table-type) - (dht-lit/len/dist-index 0 :type (mod 320)) - (dht-last-len #xff :type octet) - - ;; number of bytes left to copy (for uncompressed block, or from - ;; history in compressed block) - (bytes-to-copy 0 :type (unsigned-byte 16)) - (copy-offset 0 :type (unsigned-byte 16)) - - ;; bitstream state: we read up to 64bits at a time to try to - ;; minimize time spent interacting with input source relative to - ;; decoding time. - (partial-bits 0 :type (unsigned-byte 64)) - ;; # of valid bits remaining in partial-bits (0 = none) - (bits-remaining 0 :type (unsigned-byte 7)) - - ;; output state - (output-offset 0 :type fixnum) ;; next octet to write - (output-buffer (make-array 0 :element-type 'octet) - :type octet-vector) - ;; window (only used if output buffer is filled mid-decode, - ;; otherwise output buffer is used directly) - (window nil :type (or null octet-vector)) - -;;; status for caller: - - ;; true if reached end of final block, and 'output' contains all - ;; decompressed data - (finished nil :type (or nil t)) - ;; true if there isn't enough space in 'output' to finish - (output-overflow nil :type (or nil t)) - ;; true if input is empty (or incomplete) without reaching end of - ;; final block - (input-underrun nil :type (or nil t))) - - -(defmacro state-machine ((state) &body tagbody) - (let ((tags (loop for form in tagbody when (atom form) collect form))) - `(symbol-macrolet ((.current-state ,(list nil))) - (macrolet ((next-state (next-state) - `(progn - (setf current-state ',next-state) - (go ,next-state))) - (%enter-state (s &environment env) - (setf (car (macroexpand '.current-state env)) s) - `(progn #++(format t "~s~%" ',s))) - (restart-state (&environment env) - `(go ,(car (macroexpand '.current-state env))))) - (tagbody - ;; possibly could do better than a linear search here, but - ;; if state machine is being interrupted often enough to - ;; matter, it probably won't matter anyway :/ at most, - ;; maybe define more commonly interrupted states earlier - (ecase (ds-current-state ,state) - ,@(loop for i in tags - collect `(,i (go ,i)))) - ,@(loop for f in tagbody - collect f - when (atom f) - collect `(%enter-state ,f))))))) - - -(defparameter *stats* (make-hash-table)) -(defun-with-reader-contexts decompress-deflate (read-context state) - (read-context) - (declare (optimize speed)) - (with-cached-state (state deflate-state save-state - partial-bits bits-remaining - current-huffman-tree - output-offset - current-state - bytes-to-copy - output-buffer) - (setf output-overflow nil - input-underrun nil) - (macrolet ((bits* (&rest sizes) - ;; only valid for fixed sizes, but possibly should - ;; allow passing +constants+ and try to eval them - ;; at macroexpansion instead of requiring numbers? - (let ((n (reduce '+ sizes))) - `(let ((b (bits ,n))) - (declare (type (unsigned-byte ,n) b)) - (values ,@(loop for o = 0 then (+ o s) - for s in sizes - collect `(ldb (byte ,s ,o) b)))))) - (eoi () ;; end of input - #++ (error "eoi") - #++ (go :eoi) - `(progn - (setf input-underrun t) - (save-state) - (throw :exit-loop :eoi))) - (eoo () ;; end of output - `(let ((window-size (expt 2 15))) - (declare (optimize (speed 1))) - (unless (ds-window state) - (setf (ds-window state) - ;; extra few bytes so we can use word-size - ;; copies - (make-array (+ window-size 8) - :element-type 'octet))) - (when (< output-offset window-size) - (replace (ds-window state) (ds-window state) - :start2 output-offset)) - (replace (ds-window state) output-buffer - :start1 (max 0 (- window-size output-offset)) - :start2 (max 0 (- output-offset window-size))) - (save-state) - (throw :exit-loop :eoo)))) - - (let ((ht-scratch (make-huffman-tree))) - (labels ((bits-avail (n) - (<= n bits-remaining)) - (byte-align () - (let ((r (mod bits-remaining 8))) - (unless (zerop r) - (setf partial-bits (ash partial-bits (- r))) - (decf bits-remaining r)))) - - ;; called when temp is empty, read bits and update - ;; remaining - (%fill-bits () - #+#.(3bz::use-ub64) - (multiple-value-bind (input octets) - (word64) - (declare (type (mod 9) octets) - (type (unsigned-byte 64) input)) - (setf bits-remaining (* 8 octets) - partial-bits input)) - #-#.(3bz::use-ub64) - (multiple-value-bind (input octets) - (word32) - (declare (type (mod 5) octets) - (type (unsigned-byte 32) input)) - (setf bits-remaining (* 4 octets) - partial-bits input))) - (%fill-bits32 (n) - (multiple-value-bind (input octets) - (word32) - (declare (type (mod 5) octets) - (type (unsigned-byte 32) input)) - (setf partial-bits - (logior - (ash (ldb (byte 32 0) input) - (min 32 bits-remaining)) - partial-bits)) - - (incf bits-remaining (* 8 octets)) - (>= bits-remaining n))) - ;; internals of bit reader, only call after - ;; ensuring there are enough bits available - (%bits (n) - (prog1 (ldb (byte n 0) partial-bits) - (setf partial-bits (ash partial-bits (- n))) - (decf bits-remaining n))) - ;; fast path for bit reader, inlined - (bits (n) - (if (<= n bits-remaining) - (%bits n) - (bits-full n))) - ;; slow path for bit reader, not inlined (should - ;; only be called if we know there aren't enough - ;; bits in temp. usually called from BITS) - (bits-full (n) - ;; we could handle 64 bits, but we limit it to - ;; make it more likely to fit in a fixnum - (declare (type (mod 56) n)) - ;; try to read (up to) 64 bits from input - ;; (returns 0 in OCTETS if no more input) - (multiple-value-bind (input octets) - ;; some callers need more than 32 bits at once, - ;; so no use-ub64 here for now - (word64) - (declare (type (mod 9) octets) - (type (unsigned-byte 6) bits-remaining) - (type (unsigned-byte 64) input)) - (let* ((bits (* octets 8)) - (total (+ bits-remaining bits))) - ;; didn't read enough bits, save any bits we - ;; did get for later, then fail - (when (> n total) - (assert (<= total 64)) - (setf partial-bits - (ldb (byte 64 0) - (logior (ash input bits-remaining) - partial-bits))) - (setf bits-remaining total) - (eoi)) - ;; if we get here, we have enough bits now, - ;; so combine them and store any leftovers - ;; for later - (let* ((n2 (- n bits-remaining)) - (r (ldb (byte n 0) - (logior (ash (ldb (byte n2 0) input) - bits-remaining) - (ldb (byte bits-remaining 0) - partial-bits)))) - (bits2 (- bits n2))) - (declare (type (unsigned-byte 6) n2) - (type (unsigned-byte 64) r)) - (setf partial-bits (ash input (- n2)) - bits-remaining bits2) - r)))) - - (out-byte (b) - (setf (aref output-buffer output-offset) b) - (setf output-offset (wrap-fixnum (1+ output-offset))) - nil) - - (copy-byte-or-fail () - (out-byte (bits 8))) - - (%copy-history (from to s d e count total-count offset) - (declare (type non-negative-fixnum d e) - (type fixnum s) - (type non-negative-fixnum count offset total-count)) - (cond - ;; if copy won't fit (or oversized copy below - ;; might overrun buffer), use slow path for - ;; now - ((> (+ d count 8) - e) - (loop while (< d e) - while (plusp count) - do (setf (aref to d) - (aref from s)) - (setf d (1+ d)) - (setf s (1+ s)) - (decf count) - (decf total-count)) - ;; todo: store state so it can continue - (when (plusp count) - (setf bytes-to-copy total-count) - (setf copy-offset offset) - (setf current-state :continue-copy-history) - (setf output-offset d) - (setf output-overflow t) - (eoo))) - ;; to speed things up, we allow writing past - ;; current output index (but not past end of - ;; buffer), and read/write as many bytes at a - ;; time as possible. - #+#.(3bz::use-ub64) - ((> offset 8) - (loop repeat (ceiling count 8) - do (setf (ub64ref/le to d) - (ub64ref/le from s)) - (setf d (wrap-fixnum (+ d 8))) - (setf s (wrap-fixnum (+ s 8))))) - ((= offset 1) - ;; if offset is 1, we are just repeating a - ;; single byte... - (loop with x of-type octet = (aref from s) - repeat count - do (setf (aref to d) x) - (setf d (wrap-fixnum (1+ d))))) - #+#.(3bz::use-ub64) - ((= offset 8) - (loop with x of-type ub64 = (ub64ref/le from s) - repeat (ceiling count 8) - do (setf (ub64ref/le to d) - x) - (setf d (wrap-fixnum (+ d 8))))) - ((> offset 4) - (loop repeat (ceiling count 4) - do (setf (ub32ref/le to d) - (ub32ref/le from s)) - (setf d (wrap-fixnum (+ d 4))) - (setf s (wrap-fixnum (+ s 4))))) - #+#.(3bz::use-ub64) - ((= offset 4) - (loop with x of-type ub32 = (ub32ref/le from s) - with xx of-type ub64 = (dpb x (byte 32 32) x) - repeat (ceiling count 8) - do (setf (ub64ref/le to d) xx) - (setf d (wrap-fixnum (+ d 8))))) - #-#.(3bz::use-ub64) - ((= offset 4) - (loop with x of-type ub32 = (ub32ref/le from s) - repeat (ceiling count 4) - do (setf (ub32ref/le to d) x) - (setf d (wrap-fixnum (+ d 4))))) - ((= offset 3) - (loop repeat (ceiling count 2) - do (setf (ub16ref/le to d) - (ub16ref/le from s)) - (setf d (wrap-fixnum (+ d 2))) - (setf s (wrap-fixnum (+ s 2))))) - #+#.(3bz::use-ub64) - ((= offset 2) - (loop with x of-type ub16 = (ub16ref/le from s) - with xx of-type ub32 = (dpb x (byte 16 16) x) - with xxxx of-type ub64 = (dpb xx (byte 32 32) xx) - repeat (ceiling count 8) - do (setf (ub64ref/le to d) xxxx) - (setf d (wrap-fixnum (+ d 8))))) - #-#.(3bz::use-ub64) - ((= offset 2) - (loop with x of-type ub16 = (ub16ref/le from s) - with xx of-type ub32 = (dpb x (byte 16 16) x) - repeat (ceiling count 4) - do (setf (ub32ref/le to d) xx) - (setf d (wrap-fixnum (+ d 4))))) - (t (error "?")))) - - (copy-history (count offset) - (declare (type non-negative-fixnum count offset)) - (let* ((d output-offset) - (s (- d offset)) - (e (length output-buffer)) - (n count)) - (when (< s 0) - (unless window - (error "no window?")) - (let ((c (min count (abs s)))) - (%copy-history window output-buffer - (+ 32768 s) d e - c count offset) - (decf n c) - (setf d (wrap-fixnum (+ d c)))) - (setf s 0)) - (when (plusp n) - (%copy-history output-buffer output-buffer - s d e n n offset)) - ;; D may be a bit past actual value, so calculate - ;; correct offset - (setf output-offset - (wrap-fixnum (+ output-offset count))))) - - (decode-huffman-full (ht old-bits old-count) - (declare (type huffman-tree ht) - (type (unsigned-byte 32) old-bits) - (type (or null (unsigned-byte 6)) old-count)) - (let ((ht-bits (ht-start-bits ht)) - (bits partial-bits) - ;; # of valid bits left in BITS - (avail bits-remaining) - ;; offset of next unused bit in BITS - (offset 0) - ;; if we had to refill bits, # we had before refill - (old 0) - (extra-bits nil) - (node 0) - (nodes (ht-nodes ht))) - (declare (type (unsigned-byte 64) bits) - (type (unsigned-byte 7) avail) - (type (unsigned-byte 7) old) - (type ht-bit-count-type ht-bits)) - (loop - ;; if we don't have enough bits, add some - when (> ht-bits avail) - do (incf old bits-remaining) - (%fill-bits) - ;; dist + extra is max 28 bits, so just - ;; grab enough for that from new input - ;; if available - (assert (< old 32)) - (setf bits - (logior bits - (ash - (ldb (byte (min 30 bits-remaining) - 0) - partial-bits) - old))) - (setf avail - (min 64 - (+ avail (min 30 bits-remaining)))) - (when (> ht-bits avail) - ;; still not enough bits, push bits back - ;; onto tmp if we read more, and EOI - (assert (< old 64)) - (assert (< (+ bits-remaining old) 64)) - - (setf partial-bits - (ldb (byte 64 0) - (ash partial-bits old))) - (setf (ldb (byte old 0) partial-bits) - (ldb (byte old 0) bits)) - (incf bits-remaining old) - ;; if we are reading a dist, put bits - ;; from len back too so we don't need - ;; separate states for lit/len and dist - (locally - (declare #+sbcl (sb-ext:muffle-conditions - sb-ext:code-deletion-note)) - (when old-count - ;; (lit/len + dist + extras is max 48 - ;; bits, so just - (assert (< (+ old-count bits-remaining) 64)) - (setf partial-bits - (ldb (byte 64 0) - (ash partial-bits old-count))) - (setf (ldb (byte old-count 0) partial-bits) - (ldb (byte old-count 0) old-bits)) - (incf bits-remaining old-count))) - (eoi)) - if extra-bits - do (setf extra-bits (ldb (byte ht-bits offset) bits)) - (incf offset ht-bits) - (decf avail ht-bits) - (loop-finish) - else - do (let* ((b (ldb (byte ht-bits offset) bits))) - (setf node (aref nodes (+ node b))) - (incf offset ht-bits) - (decf avail ht-bits) - (ecase (ht-node-type node) - (#.+ht-link/end+ - (when (ht-endp node) - (loop-finish)) - (setf ht-bits (ht-link-bits node)) - (setf node (ht-link-offset node))) - (#.+ht-literal+ - (loop-finish)) - (#.+ht-len/dist+ - (let ((x (ht-extra-bits node))) - (when (zerop x) - (loop-finish)) - (setf ht-bits x - extra-bits x)))))) - (let ((s (- offset old))) - (assert (< 0 s 64)) - (setf partial-bits (ash partial-bits (- s))) - (decf bits-remaining s)) - (assert (< offset 32)) - (values (ht-value node) - (or extra-bits 0) - (ht-node-type node) - (ldb (byte offset 0) bits) - offset))) - - ;; specialized version when we know we have enough bits - ;; (up to 28 depending on tree) - (%decode-huffman-fast (ht) - (declare (type huffman-tree ht)) - (let ((ht-bits (ht-start-bits ht)) - (bits partial-bits) - ;; offset of next unused bit in BITS - (offset 0) - (extra-bits nil) - (node 0) - (nodes (ht-nodes ht))) - (declare (type (unsigned-byte 64) bits) - (type ht-bit-count-type ht-bits) - (type (unsigned-byte 5) offset)) - (loop - for b = (ldb (byte ht-bits offset) bits) - do (setf node (aref nodes (+ node b))) - (incf offset ht-bits) - (ecase (ht-node-type node) - (#.+ht-link/end+ - (when (ht-endp node) - (loop-finish)) - (setf ht-bits (ht-link-bits node) - node (ht-link-offset node))) - (#.+ht-len/dist+ - (let ((x (ht-extra-bits node))) - (when (plusp x) - (setf extra-bits (ldb (byte x offset) bits)) - (incf offset x)) - (loop-finish))) - (#.+ht-literal+ - (loop-finish)))) - (setf partial-bits (ash partial-bits (- offset))) - (decf bits-remaining offset) - (values (ht-value node) ;; code - (or extra-bits 0) ;; extra - (ht-node-type node) ;; type - (ldb (byte offset 0) bits) ;; old-bits - offset))) ;; old-count - - (decode-huffman (ht old-bits old-count) - ;; seems to be faster to just use constant than - ;; try to optimize for specific table? - (if (or (bits-avail +ht-max-bits+) - (%fill-bits32 +ht-max-bits+)) - (%decode-huffman-fast ht) - (decode-huffman-full ht old-bits old-count)))) - (declare (inline bits-avail byte-align %fill-bits %bits bits - out-byte copy-byte-or-fail - decode-huffman %decode-huffman-fast - %fill-bits32 copy-history - %copy-history) - (ignorable #'bits-avail)) - (catch :exit-loop - (state-machine (state) - :start-of-block - (multiple-value-bind (final type) (bits* 1 2) - (setf last-block-flag (plusp final)) - (ecase type - (0 (next-state :uncompressed-block)) - (1 ;; static huffman tree - (setf current-huffman-tree +static-huffman-trees+) - (next-state :decode-compressed-data)) - (2 - (setf current-huffman-tree dynamic-huffman-tree) - (next-state :dynamic-huffman-block)))) - -;;; uncompressed block - - :uncompressed-block - (byte-align) - (multiple-value-bind (s n) (bits* 16 16) - (assert (= n (ldb (byte 16 0) (lognot s)))) - (setf bytes-to-copy s) - (next-state :copy-block)) - :copy-block - (loop while (and (plusp bits-remaining) - (plusp bytes-to-copy)) - do (out-byte (bits 8)) - (decf bytes-to-copy)) - (loop with e = (- (length output-buffer) 8) - while (and (> bytes-to-copy 8) - (< output-offset e)) - do (multiple-value-bind (w c) #+#.(3bz::use-ub64) (word64) #-#.(3bz::use-ub64) (word32) - (declare (type #+#.(3bz::use-ub64) ub64 - #-#.(3bz::use-ub64) ub32)) - (cond - #+#.(3bz::use-ub64) - ((= 8 c) - (setf (ub64ref/le output-buffer output-offset) - w) - (setf output-offset - (wrap-fixnum (+ output-offset 8))) - (decf bytes-to-copy 8)) - #-#.(3bz::use-ub64) - ((= 4 c) - (setf (ub32ref/le output-buffer - output-offset) - w) - (setf output-offset - (wrap-fixnum (+ output-offset 4))) - (decf bytes-to-copy 4)) - ((plusp c) - (loop for i below c - do (out-byte (ldb (byte 8 (* i 8)) w)) - (decf bytes-to-copy))) - (t (eoo))))) - (loop while (plusp bytes-to-copy) - do (copy-byte-or-fail) - (decf bytes-to-copy)) - (next-state :block-end) - -;;; dynamic huffman table block, huffman table - - :dynamic-huffman-block - ;; we have at least 26 bits of fixed data, 3 length - ;; fields, and first 4 code lengths, so try to read - ;; those at once - (multiple-value-bind (hlit hdist hclen l16 l17 l18 l0) - (bits* 5 5 4 3 3 3 3) - (let ((dlc dht-len-codes)) - (fill dlc 0) - (setf (aref dlc 16) l16) - (setf (aref dlc 17) l17) - (setf (aref dlc 18) l18) - (setf (aref dlc 0) l0)) - ;; possibly could optimize this a bit more, but - ;; should be fairly small part of any normal file - (setf dht-hlit (+ hlit 257) - dht-hlit+hdist (+ dht-hlit hdist 1) - dht-hclen hclen - dht-lit/len/dist-index 0) - (next-state :dht-len-table)) - - :dht-len-table - ;; we read 4 entries with header, so max 15 left = 45 - ;; bits. wait until we have at least that much - ;; available and extract all at once - (let* ((bitcount (* dht-hclen 3)) - (bits (bits bitcount)) - (permute +len-code-order+) - (lc dht-len-codes)) - (declare (type (unsigned-byte 48) bits)) - ;; extract length codes into proper elements of - ;; len-codes - (loop for i from 4 - for o from 0 by 3 ;downfrom (- bitcount 3) by 3 - repeat dht-hclen - do (setf (aref lc (aref permute i)) - (ldb (byte 3 o) bits))) - ;; and build a huffman tree out of them - (multiple-value-bind (count bits max) - (build-tree-part dht-len-tree 0 - dht-len-codes - :dht-len 0 19 - ht-scratch - +len-code-extra+) - (declare (ignore count)) - (setf (ht-start-bits dht-len-tree) bits) - (setf (ht-max-bits dht-len-tree) max)) - (setf dht-last-len #xff) - (next-state :dht-len-table-data)) - - :dht-len-table-data - (let ((ht dht-len-tree) - (end dht-hlit+hdist) - (lld dht-lit/len/dist)) - ;; decode-huffman will EOI if not enough bits - ;; available, so we need to track state in loop to - ;; be able to continue - (loop while (< dht-lit/len/dist-index end) - do (multiple-value-bind (code extra) - (decode-huffman ht 0 nil) - (cond - ((< code 16) - (setf (aref lld dht-lit/len/dist-index) - (setf dht-last-len code)) - (incf dht-lit/len/dist-index)) - ((= code 16) - (unless (< dht-last-len 16) - (error "tried to repeat length without previous length")) - (let ((e (+ dht-lit/len/dist-index extra 3))) - (assert (<= e dht-hlit+hdist)) - (loop for i from dht-lit/len/dist-index - repeat (+ extra 3) - do (setf (aref lld i) dht-last-len)) - #++(fill lld dht-last-len - :start dht-lit/len/dist-index - :end e) - (setf dht-lit/len/dist-index e))) - (t - (let* ((c (if (= code 17) 3 11)) - (e (+ dht-lit/len/dist-index extra c))) - (assert (<= e dht-hlit+hdist)) - (fill lld 0 - :start dht-lit/len/dist-index - :end e) - (setf dht-lit/len/dist-index e) - (setf dht-last-len 0))))))) - ;; if we get here, we have read whole table, build tree - (build-trees* (car dynamic-huffman-tree) - (cdr dynamic-huffman-tree) - dht-lit/len/dist - dht-hlit - dht-lit/len/dist-index - ht-scratch) - (next-state :decode-compressed-data) - -;;; dynamic or static huffman block, compressed data - - :decode-compressed-data - (symbol-macrolet ((bases +len/dist-bases+) - (ht current-huffman-tree)) - (loop - (multiple-value-bind (code extra type old-bits old-count) - (decode-huffman (car ht) 0 nil) - (ecase type - (#.+ht-len/dist+ - ;; got a length code, read dist and copy - (let ((octets (+ extra (aref bases code)))) - ;; try to read dist. decode-huffman* will - ;; push BITS back onto temp before calling - ;; EOI if it fails, so we can restart state - ;; at len code - (multiple-value-bind (dist extra) - (decode-huffman (cdr ht) - old-bits old-count) - ;; got dist code - (copy-history octets (+ (aref bases dist) extra))))) - (#.+ht-literal+ - (when (>= output-offset (length output-buffer)) - (setf current-state :out-byte) - (setf bytes-to-copy code) - (setf output-overflow t) - (eoo)) - (out-byte code)) - (#.+ht-link/end+ - (assert (= code 0)) - (assert (= extra 0)) - (next-state :block-end)))))) - - ;; continue copy if output filled up in the middle - :continue-copy-history - (copy-history bytes-to-copy copy-offset) - (next-state :decode-compressed-data) - - :out-byte - (when (> output-offset (length output-buffer)) - (when (> output-offset (length output-buffer)) - (error "tried to continue from overflow without providing more space in output")) - (setf output-overflow t) - (eoo)) - (out-byte bytes-to-copy) - (next-state :decode-compressed-data) - -;;; end of a block, see if we are done with deflate stream - :block-end - (if last-block-flag - (next-state :done) - (next-state :start-of-block)) - -;;; normal exit from state machine - :done - (setf finished t) -;;; any exit from state machine (should set flags first) - :exit-loop))))) - (save-state) - output-offset)) diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/gzip-test.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/gzip-test.lisp deleted file mode 100644 index 5ee91ed..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/gzip-test.lisp +++ /dev/null @@ -1,41 +0,0 @@ -(in-package 3bz) -#++ (ql:quickload '(ironclad 3bz deoxybyte-gzip chipz)) -(defvar *gzip* nil) -(let* ((d (time - (alexandria:read-file-into-byte-vector "e:/tmp/t/linux-2.2.26.tar"))) - (tmp (make-array (length d) :element-type 'octet - :initial-element 0)) - (v (or *gzip* - (setf *gzip* - (time - (multiple-value-bind (x r w) - (gz:deflate-vector d (make-array (* 2 (length d)) - :element-type 'octet) - :compression 9 - :gzip-format t) - (declare (ignore r)) - (subseq x 0 w))))))) - (format t "chipz:~%") - (fill tmp 0) - (with-simple-restart (continue "continue") - (let ((x (time (chipz:decompress tmp 'chipz:gzip v)))) - (declare (ignore x)) - (assert (equalp d tmp)))) - - (fill tmp 0) - (format t "3bz:~%") ;; 0.33 - (let ((x (time (decompress-gzip (make-instance 'octet-vector-context - :octet-vector v - :boxes (make-context-boxes - :end (length v))) - (make-gzip-state :output-buffer tmp))))) - (assert (equalp (if (consp x) - (time (apply 'concatenate 'octet-vector x)) - (subseq tmp 0 x)) - d))) - (fill tmp 0) - (format t "gz:~%") - (let ((x (time (gz:inflate-vector v tmp :gzip-format t)))) - (assert (equalp x d))) - - nil) diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/gzip.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/gzip.lisp deleted file mode 100644 index 8b4ca4d..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/gzip.lisp +++ /dev/null @@ -1,285 +0,0 @@ -(in-package 3bz) - -(defstruct (gzip-state (:conc-name gs-) - (:include deflate-state)) - - ;; A compliant decompressor must check ID1, ID2, and CM, and provide - ;; an error indication if any of these have incorrect values. It - ;; must examine FEXTRA/XLEN, FNAME, FCOMMENT and FHCRC at least so - ;; it can skip over the optional fields if they are present. It - ;; need not examine any other part of the header or trailer; in - ;; particular, a decompressor may ignore FTEXT and OS and always - ;; produce binary output, and still be compliant. A compliant - ;; decompressor must give an error indication if any reserved bit is - ;; non-zero, since such a bit could indicate the presence of a new - ;; field that would cause subsequent data to be interpreted - ;; incorrectly. - (gzip-state :header) - (compression-method nil) - (flags nil) - (extra nil) - (name nil) - (comment nil) - (operating-system nil) - (mtime/unix nil) - (mtime/universal nil) - (compression-level :default) - (header-bytes (make-array 16 :adjustable t :fill-pointer 0)) - (crc32 0 :type (unsigned-byte 32))) - -(defun decompress-gzip (read-context state) - (check-type state gzip-state) - ;; fixme: avoid duplication with these from deflate/zlib - (with-reader-contexts (read-context) - (with-accessors ((input-underrun gs-input-underrun) - (gzip-state gs-gzip-state) - (partial-bits gs-partial-bits) - (bits-remaining gs-bits-remaining) - (finished gs-finished) - (flags gs-flags) - (compression-level gs-compression-level) - (compression-method gs-compression-method) - (output-buffer gs-output-buffer) - (output-offset gs-output-offset) - (output-overflow gs-output-overflow) - (header-bytes gs-header-bytes) - (mtime/unix gs-mtime/unix) - (mtime/universal gs-mtime/universal) - (extra gs-extra) - (name gs-name) - (comment gs-comment) - (operating-system gs-operating-system) - (crc32 gs-crc32)) - state - (labels ((%fill-bits32 (n) - (multiple-value-bind (input octets) - (word32) - (declare (type (mod 5) octets)) - (setf partial-bits - (logior - (ash (ldb (byte 32 0) input) - (min 32 bits-remaining)) - partial-bits)) - (incf bits-remaining (* 8 octets)) - (>= bits-remaining n))) - (%bits (n) - (prog1 (ldb (byte n 0) partial-bits) - (setf partial-bits (ash partial-bits (- n))) - (decf bits-remaining n))) - (header-byte () - (let ((b (%bits 8))) - ;; might need to crc header, so store a copy - (when header-bytes - (vector-push-extend b header-bytes)) - b)) - (byte-align () - (let ((r (mod bits-remaining 8))) - (unless (zerop r) - (setf partial-bits (ash partial-bits (- r))) - (decf bits-remaining r)))) - (update-checksum () - (setf crc32 (crc32/table output-buffer output-offset crc32))) - (crc () - (when (and (< bits-remaining 32) - (not (%fill-bits32 32))) - (setf input-underrun t) - (return-from decompress-gzip 0)) - (let ((crc (logior (ash (header-byte) 0) - (ash (header-byte) 8) - (ash (header-byte) 16) - (ash (header-byte) 24)))) - #++(format t "crc = ~8,'0x ?= ~8,'0x~%" - crc crc32) - (assert (= crc crc32)) - (setf gzip-state :final-len))) - (len () - (when (and (< bits-remaining 32) - (not (%fill-bits32 32))) - (setf input-underrun t) - (return-from decompress-gzip 0)) - (let ((len (logior (ash (header-byte) 0) - (ash (header-byte) 8) - (ash (header-byte) 16) - (ash (header-byte) 24)))) - len - #++(format t "len = ~8,'0x ?= ~8,'0x~%" - len output-offset) - (setf gzip-state nil)))) - (declare (inline %fill-bits32 %bits byte-align) - (optimize (speed 1))) - (setf input-underrun nil) - (loop - while gzip-state - do (case gzip-state - (:header ;; magic # - (when (and (< bits-remaining 16) - (not (%fill-bits32 16))) - (setf input-underrun t) - (return-from decompress-gzip 0)) - (let ((id1 (header-byte)) - (id2 (header-byte))) - (assert (= id1 #x1f)) - (assert (= id2 #x8b)) - (setf gzip-state :header2))) - (:header2 ;; compression method, flags - (when (and (< bits-remaining 16) - (not (%fill-bits32 16))) - (setf input-underrun t) - (return-from decompress-gzip 0)) - (let ((cm (header-byte)) - (flg (header-byte))) - (if (= cm 8) - (setf compression-method :deflate) - (error "unknown compression method ~s~%" cm)) - (when (plusp (ldb (byte 3 5) flg)) - (error "reserved flag bits set in ~8,'0b" flg)) - (when (logbitp 0 flg) (push :text flags)) - (if (logbitp 1 flg) - (push :header-crc flags) - ;; no crc, stop remembering header contents - (setf header-bytes nil)) - (when (logbitp 2 flg) (push :extra flags)) - (when (logbitp 3 flg) (push :name flags)) - (when (logbitp 4 flg) (push :comment flags)) - (setf gzip-state :header-mtime))) - (:header-mtime - (when (and (< bits-remaining 32) - (not (%fill-bits32 32))) - (setf input-underrun t) - (return-from decompress-gzip 0)) - (let ((mtime (logior (ash (header-byte) 0) - (ash (header-byte) 8) - (ash (header-byte) 16) - (ash (header-byte) 24)))) - (unless (zerop mtime) - (setf mtime/unix mtime) - (setf mtime/universal - (+ mtime (encode-universal-time 0 0 0 1 1 1970 0)))) - (setf gzip-state :header3))) - - (:header3 ;; extra flags, os - (when (and (< bits-remaining 16) - (not (%fill-bits32 16))) - (setf input-underrun t) - (return-from decompress-gzip 0)) - (let ((xfl (header-byte)) - (os (header-byte))) - (setf compression-level - (or (case xfl (2 :maximum) (4 :fastest)) - xfl)) - (setf operating-system - (if (<= 0 os 13) - (aref #(:fat :amiga :vms :unix :vm/cms - :atari-tos :hpfs :macintosh - :z-system :cp/m :tops-20 - :ntfs :qdos :acorn-riscos) - os) - (list :unknown os))) - (setf gzip-state :header-extra))) - (:header-extra - (when (member :extra flags) - (unless extra - (when (and (< bits-remaining 16) - (not (%fill-bits32 16))) - (setf input-underrun t) - (return-from decompress-gzip 0)) - (let ((xlen (logior (ash (header-byte) 0) - (ash (header-byte) 8)))) - (setf extra (make-array xlen :element-type 'octet - :fill-pointer 0)))) - (loop while (< (fill-pointer extra) - (length extra)) - do (when (and (< bits-remaining 8) - (not (%fill-bits32 8))) - (setf input-underrun t) - (return-from decompress-gzip 0)) - (vector-push (header-byte) extra)) - (setf extra (coerce extra '(simple-array octet 1)))) - (setf gzip-state :header-name)) - (:header-name - (when (member :name flags) - (unless name - (setf name (make-array 16 :adjustable t :fill-pointer 0 - :element-type 'octet))) - (loop do (when (and (< bits-remaining 8) - (not (%fill-bits32 8))) - (setf input-underrun t) - (return-from decompress-gzip 0)) - (let ((b (header-byte))) - (cond - ((not (zerop b)) - (vector-push-extend b name)) - (t - (setf name - ;; rfc says 8859-1, but try utf8 anyway - (or (babel:octets-to-string - name :encoding :utf-8 :errorp nil) - (babel:octets-to-string - name :encoding :iso8859-1))) - (loop-finish)))))) - (setf gzip-state :header-comment)) - (:header-comment - (when (member :comment flags) - (unless comment - (setf comment (make-array 16 :adjustable t :fill-pointer 0 - :element-type 'octet))) - (loop do (when (and (< bits-remaining 8) - (not (%fill-bits32 8))) - (setf input-underrun t) - (return-from decompress-gzip 0)) - (let ((b (header-byte))) - (cond - ((not (zerop b)) - (vector-push-extend b comment)) - (t - (setf comment - ;; rfc says 8859-1, but try utf8 anyway - (or (babel:octets-to-string - comment :encoding :utf-8 :errorp nil) - (babel:octets-to-string - comment :encoding :iso8859-1))) - (loop-finish)))))) - (setf gzip-state :header-crc)) - (:header-crc - ;; check hcrc if present - (when (member :header-crc flags) - (when (and (< bits-remaining 16) - (not (%fill-bits32 16))) - (setf input-underrun t) - (return-from decompress-gzip 0)) - (let* ((hb (coerce header-bytes 'octet-vector)) - (crc (logior (ash (%bits 8) 0) - (ash (%bits 8) 8))) - (crc32 (crc32/table hb (length hb) 0))) - (format t "got header crc ~4,'0x, expected ~8,'0x~%" - crc crc32) - (assert (= crc (ldb (byte 16 0) crc32))))) - #++(format t "gzip header: method ~s, level ~s, os ~s, flags ~s~%" - compression-method compression-level - operating-system flags) - #++(when mtime/universal - (format t " mtime: ~s~%" - (reverse (multiple-value-list - (decode-universal-time mtime/universal))))) - #++(format t " name: ~s~%" name) - #++(format t " comment: ~s~%" comment) - #++(format t " extra: ~s~%" extra) - (setf gzip-state nil)) - (:final-crc - (crc)) - (:final-len - (len) - (return-from decompress-gzip output-offset))) - (unless gzip-state - (decompress-deflate read-context state) - (when (or finished output-overflow) - (update-checksum)) - (when finished - (byte-align) - (setf gzip-state :final-crc) - (setf finished nil)))) - (when (eql :final-crc gzip-state) - (crc)) - (when (eql :final-len gzip-state) - (len)) - output-offset)))) diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/ht-constants.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/ht-constants.lisp deleted file mode 100644 index 20fc36a..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/ht-constants.lisp +++ /dev/null @@ -1,33 +0,0 @@ -(in-package 3bz) -#++ -(defconstant +static-huffman-tree+ (if (boundp '+static-huffman-tree+) - +static-huffman-tree+ - (make-huffman-tree))) -#++ -(build-tree +static-huffman-tree+ *fixed-lit/length-table* *fixed-dist-table*) -#++(dump-tree +static-huffman-tree+) -(eval-when (:compile-toplevel :load-toplevel :execute) - (defvar %static-huffman-tree/len% (make-huffman-tree)) - (defvar %static-huffman-tree/dist% (make-huffman-tree) ) - - (build-trees %static-huffman-tree/len% - %static-huffman-tree/dist% - *fixed-lit/length-table* *fixed-dist-table*) - - (defconstant +static-huffman-tree/len+ (eval - '(if (boundp '+static-huffman-tree/len+) - +static-huffman-tree/len+ - %static-huffman-tree/len%))) - (defconstant +static-huffman-tree/dist+ (eval - '(if (boundp '+static-huffman-tree/dist+) - +static-huffman-tree/dist+ - %static-huffman-tree/dist%)))) -#-ccl -(eval-when (:compile-toplevel :load-toplevel :execute) - (alexandria:define-constant +static-huffman-trees+ - (cons +static-huffman-tree/len+ +static-huffman-tree/dist+) - :test 'equalp)) -#+ccl -(defparameter +static-huffman-trees+ - (cons +static-huffman-tree/len+ +static-huffman-tree/dist+)) - diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/huffman-tree.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/huffman-tree.lisp deleted file mode 100644 index e39ff53..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/huffman-tree.lisp +++ /dev/null @@ -1,333 +0,0 @@ -(in-package 3bz) - - -;; accessors/predicates/constructors for node in tree -;; low bits 00 = literal -;; low bits 01 = link flag, #x0001 = end, #xffff = invalid -;; low bits 10 = len/dist -;; (low bits 11 = invalid) - -(declaim (inline ht-linkp ht-invalidp ht-endp ht-node-type - ht-link-bits ht-link-offset - ht-literalp ht-extra-bits ht-value - ht-link-node ht-literal-node ht-len-node ht-dist-node - ht-invalid-node ht-end-node)) -(defun ht-linkp (node) - (oddp node)) -(defun ht-invalidp (node) - (= node #xffff)) -;; (usually will just check for link bits or link-offset = 0 for endp) -(defun ht-endp (node) - (= node #x0001)) -(defun ht-node-type (node) - (ldb (byte 2 0) node)) - -;; for valid link, store 4 bits of bit-count, 10 bits of table base -(defun ht-link-node (bits index) - (logior +ht-link/end+ - (ash bits 2) - (ash index 6))) -(defun ht-link-bits (node) - (ldb (byte 4 2) node)) -(defun ht-link-offset (node) - (ldb (byte 10 6) node)) - - -(defun ht-literalp (node) - (zerop (ldb (byte 2 0) node))) -(defun ht-len/dist-p (node) - (= 1 (ldb (byte 2 0) node))) -;; literals just store an 8-bit code value. len/dist codes store an -;; 8-bit index into base array, and 4bits extra bits count -;; fixme: merge these with link, so decoded can treat them the same? -(defun ht-extra-bits (node) - (ldb (byte 4 2) node)) -(defun ht-value (node) - (ldb (byte 10 6) node)) - - - -(defun ht-literal-node (value) - (logior +ht-literal+ - (ash value 6))) - -(defun ht-len-node (value extra-bits) - (assert (>= value +lengths-start+)) - ;; value stored in tree is offset so we can use single table - ;; for extra-bits and base-values for lengths and distances - (let ((v (+ +lengths-extra-bits-offset+ - (if (>= value +lengths-start+) - (- value +lengths-start+) - value)))) - (ldb (byte 16 0) - (logior +ht-len/dist+ - (ash v 6) - (ash (aref extra-bits v) 2))))) - -(defun ht-dist-node (value extra-bits) - (ldb (byte 16 0) - (logior +ht-len/dist+ - (ash value 6) - (ash (aref extra-bits value) 2)))) - -(eval-when (:compile-toplevel :load-toplevel :execute) - (defun ht-invalid-node () #xffff) - (defun ht-end-node () #x0001) - #-cmucl(declaim (inline ht-max-bits ht-start-bits)) - - (defstruct (huffman-tree (:conc-name ht-)) - (start-bits 0 :type ht-bit-count-type) - (max-bits 0 :type (mod 29)) - (nodes (make-array +max-tree-size+ - :element-type 'ht-node-type - :initial-element (ht-invalid-node)) - :type ht-node-array-type))) - -(defmethod make-load-form ((object huffman-tree) &optional environment) - (make-load-form-saving-slots object :environment environment)) - -(defparameter *fixed-lit/length-table* - (concatenate 'code-table-type - (make-array (1+ (- 143 0)) :initial-element 8) - (make-array (1+ (- 255 144)) :initial-element 9) - (make-array (1+ (- 279 256)) :initial-element 7) - (make-array (1+ (- 287 280)) :initial-element 8))) - -(defparameter *fixed-dist-table* - (coerce (make-array 32 :initial-element 5) 'code-table-type)) - -(defun build-tree-part (tree tree-offset table type start end - scratch - extra-bits) - (declare (type (and fixnum unsigned-byte) tree-offset start end) - (type code-table-type table extra-bits) - (optimize speed)) - (assert (typep scratch 'huffman-tree)) - ;; # of entries of each bit size - (let* ((counts (let ((a (make-array 16 :element-type '(unsigned-byte 11) - :initial-element 0))) - (loop for x from start below end - for i = (aref table x) - do (incf (aref a i))) - (loop for s fixnum = 1 then (ash s 1) - for c across a - for i from 0 below 16 - unless (zerop i) - do (if (> c s) - (error "too many entries in huffman table with bit length ~s: ~s/~s." i c s) - (decf s c)) - finally (when (and (plusp s) - (< 1 (- (- end start) - (aref a 0)))) - (error "incomplete huffman table ~s~%" s))) - (setf (aref a 0) 0) - a)) - ;; first position of each used bit size - (offsets (let ((c 0)) - (declare (type (unsigned-byte 11) c)) - (map '(simple-array (unsigned-byte 11) (16)) - (lambda (a) - (prog1 - (if (zerop a) 0 c) - (incf c a))) - counts))) - ;; first code of each used bit size - (code-offsets (let ((c 0)) - (declare (type (unsigned-byte 17) c)) - (map '(simple-array (unsigned-byte 16) (16)) - (lambda (a) - (prog1 - (if (zerop a) 0 c) - (setf c (ash (+ c a) 1)))) - counts))) - ;; range of bit sizes used - (min (position-if-not 'zerop counts)) - ;; max # of bits needed to read entry + extra bits for this tree - (max-bits (+ (or (position-if-not 'zerop counts :from-end t) 0) - (ecase type - (:dist 13) - (:lit/len 5) - (:dht-len 7)))) - ;; temp space for sorting table - (terminals scratch)) - (declare (type (or null (unsigned-byte 4)) min) - (type (simple-array (unsigned-byte 11) (16)) counts) - (dynamic-extent counts offsets code-offsets)) - (unless min - (return-from build-tree-part (values 0 0 0))) - ;; sort table/allocate codes - (loop with offset-tmp = (copy-seq offsets) - for i fixnum from 0 - for to fixnum from start below end - for l = (aref table to) - for nodes of-type (simple-array (unsigned-byte 16) 1) - = (ht-nodes terminals) - for o = (aref offset-tmp l) - for co = (aref code-offsets l) - when (plusp l) - do (incf (aref offset-tmp l)) - (cond - ((member type '(:dist :dht-len)) - (setf (aref nodes o) - (if (<= i 29) - (ht-dist-node i extra-bits) - ;; codes above 29 aren't used - (ht-invalid-node)))) - ((> i +lengths-end+) - (setf (aref nodes o) (ht-invalid-node))) - ((>= i +lengths-start+) - (setf (aref nodes o) (ht-len-node i extra-bits))) - ((= i +end-code+) - (setf (aref nodes o) (ht-end-node))) - (t - (setf (aref nodes o) (ht-literal-node i))))) - - ;; fill tree: - (let ((next-subtable tree-offset)) - (declare (type (unsigned-byte 12) next-subtable)) - (labels ((next-len (l) - (position-if #'plusp counts :start l)) - (subtable (prefix prefix-bits) - (declare (ignorable prefix)) - (or - (loop for entry-bits = (if (zerop (aref counts prefix-bits)) - (next-len prefix-bits) - prefix-bits) - while entry-bits - if (= prefix-bits entry-bits) - return (prog1 (aref (ht-nodes terminals) - (aref offsets entry-bits)) - (incf (aref offsets entry-bits)) - (decf (aref counts entry-bits))) - else - return (let ((start next-subtable) - (b (- entry-bits prefix-bits))) - (declare (type (unsigned-byte 16) b)) - (incf next-subtable (expt 2 b)) - (loop for i below (expt 2 b) - do (setf (aref (ht-nodes tree) - (+ start (bit-rev i b))) - (subtable i entry-bits))) - (values (ht-link-node b start)))) - (ht-invalid-node)))) - (incf next-subtable (expt 2 min)) - (loop for i below (expt 2 min) - do (setf (aref (ht-nodes tree) - (+ tree-offset (bit-rev i min))) - (subtable i min)))) - (values next-subtable min max-bits)))) - - - -#++ -(defun build-tree (tree lit/len dist) - (declare (optimize speed) - (type code-table-type lit/len dist)) - (multiple-value-bind (count bits) - (build-tree-part tree 0 lit/len :lit/len 0 (length lit/len) - (make-huffman-tree) - +extra-bits+) - (setf (ht-len-start-bits tree) bits) - (setf (ht-dist-offset tree) count) - (setf (ht-dist-start-bits tree) - (nth-value 1 (build-tree-part tree count dist :dist - 0 (length dist) - (make-huffman-tree) - +extra-bits+))))) -#++ -(defun build-tree* (tree lit/len/dist mid end scratch) - (declare (optimize speed) - (type (vector (unsigned-byte 4)) lit/len/dist) - (type (and unsigned-byte fixnum) mid)) - (multiple-value-bind (count bits) - (build-tree-part tree 0 lit/len/dist :lit/len 0 mid scratch +extra-bits+) - (setf (ht-len-start-bits tree) bits) - (setf (ht-dist-offset tree) count) - (setf (ht-dist-start-bits tree) - (nth-value 1 (build-tree-part tree count - lit/len/dist :dist - mid end - scratch - +extra-bits+))) - #++(dump-tree tree))) - -(defun build-trees (ltree dtree lit/len dist) - (declare (optimize speed) - (type code-table-type lit/len dist)) - (multiple-value-bind (count bits max) - (build-tree-part ltree 0 lit/len :lit/len 0 (length lit/len) - (make-huffman-tree) +extra-bits+) - (declare (ignore count)) - (setf (ht-start-bits ltree) bits) - (setf (ht-max-bits ltree) max) - (multiple-value-bind (count bits max) - (build-tree-part dtree 0 dist :dist 0 (length dist) - (make-huffman-tree) - +extra-bits+) - (declare (ignore count)) - (setf (ht-start-bits dtree) bits) - (setf (ht-max-bits dtree) max)) - #++(dump-tree tree))) - -(defun build-trees* (ltree dtree lit/len/dist mid end scratch) - (declare (optimize speed) - (type (vector (unsigned-byte 4)) lit/len/dist) - (type (and unsigned-byte fixnum) mid)) - (multiple-value-bind (count bits max) - (build-tree-part ltree 0 lit/len/dist :lit/len 0 mid scratch +extra-bits+) - (declare (ignore count)) - (setf (ht-start-bits ltree) bits) - (setf (ht-max-bits ltree) max) - (multiple-value-bind (count bits max) - (build-tree-part dtree 0 lit/len/dist :dist mid end - scratch +extra-bits+) - (declare (ignore count)) - (setf (ht-start-bits dtree) bits) - (setf (ht-max-bits dtree) max)) - #++(dump-tree tree))) - - - -#++ -(defun dump-tree (tree &key bits base (depth 0)) - (cond - ((and bits base) - (loop for i below (expt 2 bits) - for node = (aref (ht-nodes tree) (+ i base)) - do (format *debug-io* "~a~4,' d: ~a~%" - (make-string depth :initial-element #\~) - i - (ecase (ht-node-type node) - (#.+ht-literal+ (list :literal (ht-value node))) - (#.+ht-link/end+ - (if (ht-endp node) :end - (list :link - :bits (ht-link-bits node) - :offset (ht-link-offset node)))) - (#.+ht-len/dist+ - (let ((v (ht-value node))) - (list :len/dist v - (when (> v +lengths-extra-bits-offset+) - (+ v - +lengths-start+ - (- +lengths-extra-bits-offset+))) - :start (aref +len/dist-bases+ v) - :end (+ (aref +len/dist-bases+ v) - (1- (expt 2 (aref +extra-bits+ v))))))) - (#.+ht-invalid+ :invalid))) - (when (and (ht-linkp node) - (not (or (ht-endp node) - (ht-invalidp node)))) - (dump-tree tree :bits (ht-link-bits node) - :base (ht-link-offset node) - :depth (+ depth 2))))) - (t - (format *debug-io* "lit/len table:~%") - (dump-tree tree :bits (ht-len-start-bits tree) - :base 0 :depth 1) - (format *debug-io* "distance table:~%") - (when (plusp (ht-dist-start-bits tree)) - (dump-tree tree :bits (ht-dist-start-bits tree) - :base (ht-dist-offset tree) - :depth 1))))) - diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/io-common.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/io-common.lisp deleted file mode 100644 index 817fe9a..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/io-common.lisp +++ /dev/null @@ -1,69 +0,0 @@ -(in-package #:3bz) - -(deftype octet () '(unsigned-byte 8)) -(deftype octet-vector () '(simple-array octet (*))) - -;; typed container for offsets and bounds of current input source, and -;; remaining bits of partially read octets -(defstruct (context-boxes (:conc-name cb-)) - ;; start of 'active' region of buffer - (start 0 :type size-t) - ;; end of 'active' region of buffer - (end 0 :type size-t) - ;; offset of next unread byte, (<= start offset end) - (offset 0 :type size-t)) - - -(defmacro context-common ((boxes) &body body) - `(macrolet ((pos () - `(cb-offset ,',boxes)) - (end () - `(cb-end ,',boxes)) - (%octet (read-form - &optional (eob-form - '(error "read past end of buffer"))) - `(progn - (when (>= (pos) (end)) - ,eob-form) - (prog1 - ,read-form - (incf (pos))))) - (octets-left () - `(- (cb-end ,',boxes) (pos)))) - ,@body)) - - -(defclass octet-vector-context () - ((octet-vector :reader octet-vector :initarg :octet-vector) - (boxes :reader boxes :initarg :boxes))) - -(defun make-octet-vector-context (vector &key (start 0) (offset start) - (end (length vector))) - (make-instance 'octet-vector-context - :octet-vector vector - :boxes (make-context-boxes - :start start :offset offset :end end))) - -(defclass octet-stream-context () - ((octet-stream :reader octet-stream :initarg :octet-stream) - (boxes :reader boxes :initarg :boxes))) - -(defun make-octet-stream-context (file-stream &key (start 0) (offset 0) - (end (file-length file-stream))) - (make-instance 'octet-stream-context - :octet-stream file-stream - :boxes (make-context-boxes - :start start :offset offset :end end))) - -;; hack to allow storing parts of a file to use as context later. call -;; before using context -(defmethod %resync-file-stream (context)) -(defmethod %resync-file-stream ((context octet-stream-context)) - (file-position (octet-stream context) - (cb-offset (boxes context)))) - -(defun valid-octet-stream (os) - (and (typep os 'stream) - (subtypep (stream-element-type os) 'octet) - (open-stream-p os) - (input-stream-p os))) diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/io-mmap.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/io-mmap.lisp deleted file mode 100644 index 47c5f61..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/io-mmap.lisp +++ /dev/null @@ -1,115 +0,0 @@ -(in-package #:3bz) -;; we restrict size of these types a bit more on 64 bit platforms to -;; ensure intermediate results stay in reasonable range for -;; performance. 32bit probably needs tuned, might want to allow larger -;; than fixnum offsets for FFI use with implementations with small -;; fixnums? -(deftype size-t () (if (= 8 (cffi:foreign-type-size :pointer)) - `(unsigned-byte - ,(min 60 (1- (integer-length most-positive-fixnum)))) - `(unsigned-byte - ,(min 30 (integer-length most-positive-fixnum))))) -;; slightly larger so incrementing a size-t still fits -(deftype offset-t () (if (= 8 (cffi:foreign-type-size :pointer)) - `(unsigned-byte - ,(min 61 (integer-length most-positive-fixnum))) - `(unsigned-byte - ,(min 31 (integer-length most-positive-fixnum))))) - - - -(defclass octet-pointer () - ((base :reader base :initarg :base) - (size :reader size :initarg :size) ;; end? - (scope :reader scope :initarg :scope))) - -(defmacro with-octet-pointer ((var pointer size) &body body) - (with-gensyms (scope) - (once-only (pointer size) - `(let* ((,scope (cons t ',var))) - (unwind-protect - (let ((,var (make-instance 'octet-pointer :base ,pointer - :size ,size - :scope ,scope))) - ,@body) - (setf (car ,scope) nil)))))) - -(defun valid-octet-pointer (op) - (and (car (scope op)) - (not (cffi:null-pointer-p (base op))) - (plusp (size op)))) - -(defclass octet-pointer-context () - ((op :reader op :initarg :op) - (pointer :reader %pointer :initarg :pointer) - (boxes :reader boxes :initarg :boxes))) - -(defun make-octet-pointer-context (octet-pointer - &key (start 0) (offset 0) - (end (size octet-pointer))) - (make-instance 'octet-pointer-context - :op octet-pointer - :pointer (base octet-pointer) - :boxes (make-context-boxes - :start start :offset offset :end end))) - - -(defmacro with-pointer-context ((context) &body body) - (with-gensyms (boxes pointer) - (once-only (context) - `(let* ((,boxes (boxes ,context)) - (,pointer (base (op ,context)))) - (declare (optimize speed) - (ignorable ,pointer ,boxes) - (type context-boxes ,boxes)) - (assert (valid-octet-pointer (op ,context))) - (context-common (,boxes) - (macrolet ((word64 () - (with-gensyms (available result) - `(let ((,available (octets-left))) - (if (>= ,available 8) - (let ((,result (cffi:mem-ref - ,',pointer :uint64 (pos)))) - (incf (pos) 8) - (values ,result 8)) - (let ((,result 0)) - (declare (type (unsigned-byte 64) ,result)) - (loop - for i fixnum below (min 8 ,available) - do (setf ,result - (ldb (byte 64 0) - (logior - ,result - (ash - (cffi:mem-ref - ,',pointer - :uint8 - (+ (pos) i)) - (* i 8)))))) - (incf (pos) ,available) - (values ,result ,available)))))) - (word32 () - (with-gensyms (available result) - `(let ((,available (octets-left))) - (if (>= ,available 4) - (let ((,result (cffi:mem-ref - ,',pointer :uint32 (pos)))) - (incf (pos) 4) - (values ,result 4)) - (let ((,result 0)) - (declare (type (unsigned-byte 32) ,result)) - (loop - for i of-type (unsigned-byte 2) below (min 4 ,available) - do (setf ,result - (ldb (byte 32 0) - (logior - ,result - (ash - (cffi:mem-ref - ,',pointer - :uint8 - (+ (pos) i)) - (* i 8)))))) - (incf (pos) ,available) - (values ,result ,available))))))) - ,@body)))))) diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/io-nommap.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/io-nommap.lisp deleted file mode 100644 index 609f815..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/io-nommap.lisp +++ /dev/null @@ -1,20 +0,0 @@ -(in-package #:3bz) -;;; stubs of mmap/pointer routines to allow compilation on mezzano/abcl -#- (or abcl mezzano) -(error "this code assume mezzano/abcl, patches welcome if some other OS needs it") - -;; we restrict size of these types a bit more on 64 bit platforms to -;; ensure intermediate results stay in reasonable range for -;; performance. -(deftype size-t () `(unsigned-byte - ,(min 60 (1- (integer-length most-positive-fixnum))))) -;; slightly larger so incrementing a size-t still fits -(deftype offset-t () `(unsigned-byte - ,(min 61 (integer-length most-positive-fixnum)))) - -(defclass octet-pointer-context () - ()) - -(defmacro with-pointer-context ((context) &body body) - (declare (ignore context body)) - `(error "pointer contexts not supported on this platform")) diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/io.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/io.lisp deleted file mode 100644 index 98881b3..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/io.lisp +++ /dev/null @@ -1,141 +0,0 @@ -(in-package #:3bz) - -(defmacro with-vector-context ((context) &body body) - (with-gensyms (boxes vector) - (once-only (context) - `(let* ((,boxes (boxes ,context)) - (,vector (octet-vector ,context))) - (declare (optimize speed) - (ignorable ,vector ,boxes) - (type context-boxes ,boxes)) - (check-type ,vector octet-vector) - (locally (declare (type octet-vector ,vector)) - (context-common (,boxes) - (macrolet (;; read up to 8 octets in LE order, return - ;; result + # of octets read as multiple - ;; values - (word64 () - (with-gensyms (available result) - `(let ((,available (octets-left))) - (if (>= ,available 8) - (let ((,result (ub64ref/le - ,',vector (pos)))) - (incf (pos) 8) - (values ,result 8)) - (let ((,result 0)) - (loop - for i fixnum below ,available - do (setf ,result - (ldb (byte 64 0) - (logior - ,result - (ash - (aref ,',vector - (+ (pos) i)) - (* i 8)))))) - (incf (pos) ,available) - (values ,result ,available)))))) - (word32 () - (with-gensyms (available result) - `(let ((,available (octets-left))) - (if (>= ,available 4) - (let ((,result (ub32ref/le - ,',vector (pos)))) - (incf (pos) 4) - (values ,result 4)) - (let ((,result 0)) - (loop - for i of-type (unsigned-byte 2) below (min 4 ,available) - do (setf ,result - (ldb (byte 32 0) - (logior - ,result - (ash - (aref ,',vector - (+ (pos) i)) - (* i 8)))))) - (incf (pos) ,available) - (values ,result ,available))))))) - ,@body))))))) - -(defmacro with-stream-context ((context) &body body) - (with-gensyms (boxes stream) - (once-only (context) - `(let* ((,boxes (boxes ,context)) - (,stream (octet-stream ,context))) - (declare (optimize speed) - (ignorable ,stream ,boxes) - (type context-boxes ,boxes)) - (assert (valid-octet-stream ,stream)) - (context-common (,boxes) - (macrolet (;; override POS/SET-POS for streams - (pos () - `(file-position ,',stream)) - (word64 () - (with-gensyms (available result) - `(locally (declare (optimize (speed 1))) - (let ((,available (- (end) (pos)))) - (if (>= ,available 8) - (values (nibbles:read-ub64/le ,',stream) 8) - (let ((,result 0)) - (declare (type (unsigned-byte 64) ,result) - (type (mod 8) ,available)) - (loop - for i fixnum below (min 8 ,available) - do (setf (ldb (byte 8 (* i 8)) - ,result) - (read-byte ,',stream))) - (values ,result ,available))))))) - (word32 () - (with-gensyms (available result) - `(locally (declare (optimize (speed 1))) - (let ((,available (- (end) (pos)))) - (if (>= ,available 4) - (values (nibbles:read-ub32/le ,',stream) 4) - (let ((,result 0)) - (declare (type (unsigned-byte 64) ,result) - (type (mod 4) ,available)) - (loop - for i fixnum below (min 4 ,available) - do (setf (ldb (byte 8 (* i 8)) - ,result) - (read-byte ,',stream))) - (values ,result ,available)))))))) - ,@body)))))) - - - -(defmacro defun-with-reader-contexts (base-name lambda-list (in) &body body) - `(progn - ,@(with-standard-io-syntax - (loop for cc in '(vector stream pointer) - for w = (find-symbol (format nil "~a-~a-~a" 'with cc 'context) - (find-package :3bz)) - for n = (intern (format nil "~a/~a" base-name cc) - (find-package :3bz)) - collect `(defun ,n ,lambda-list - (,w (,in) - (let () - ,@body))))) - (defun ,base-name ,lambda-list - (etypecase ,in - ,@(with-standard-io-syntax - (loop for cc in '(vector stream pointer) - for ct = (find-symbol (format nil "~a-~a-~a" 'octet cc 'context) - (find-package :3bz)) - for n = (find-symbol (format nil "~a/~a" base-name cc) - (find-package :3bz)) - collect `(,ct (,n ,@lambda-list)))))))) - -(defmacro with-reader-contexts ((context) &body body) - `(etypecase ,context - (octet-vector-context - (with-vector-context (,context) - ,@body)) - (octet-pointer-context - (with-pointer-context (,context) - ,@body)) - (octet-stream-context - (with-stream-context (,context) - ,@body)))) - diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/package.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/package.lisp deleted file mode 100644 index ace859e..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/package.lisp +++ /dev/null @@ -1,28 +0,0 @@ -(defpackage 3bz - (:use :cl) - (:import-from :alexandria - #:with-gensyms - #:once-only - #:ensure-list) - - (:import-from #+mezzano #:mezzano.internals - #-mezzano #:nibbles - #:ub16ref/le - #:ub32ref/le - #:ub64ref/le) - (:export - #:decompress - #:decompress-vector - #:with-octet-pointer - #:make-octet-vector-context - #:make-octet-stream-context - #:make-octet-pointer-context - #:make-deflate-state - #:make-zlib-state - #:make-gzip-state - #:finished - #:input-underrun - #:output-overflow - #:%resync-file-stream - #:replace-output-buffer)) - diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/test-chunked-input.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/test-chunked-input.lisp deleted file mode 100644 index d389411..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/test-chunked-input.lisp +++ /dev/null @@ -1,89 +0,0 @@ -(in-package 3bz) - - -#++ -(ql:quickload '(deoxybyte-gzip)) - -#++ -(let ((*default-pathname-defaults* (asdf:system-relative-pathname '3bz ""))) - (with-open-file (o "test.deflated" :element-type 'octet :direction :output - :if-does-not-exist :create :if-exists :error) - (let* ((i (alexandria:read-file-into-byte-vector "deflate.lisp")) - (tmp (make-array (length i) :element-type 'octet - :initial-element 0))) - (multiple-value-bind (x r w) - (gz:deflate-vector i - tmp :compression 9 - :suppress-header t) - (declare (ignore r)) - (nibbles:write-ub64/le (length i) o) - (write-sequence (subseq x 0 w) o))))) - -(defparameter *test-file* - (let ((f (alexandria:read-file-into-byte-vector (asdf:system-relative-pathname '3bz "test.deflated")))) - (list (nibbles:ub64ref/le f 0) - (subseq f 8)))) - -(defun test-chunked (decompressed-size vector generator) - (let* ((l (length vector)) - (o 0) - (tmp (make-array decompressed-size :element-type 'octet - :initial-element 0)) - (state (make-deflate-state :output-buffer tmp))) - (loop for end = (min l (+ o (funcall generator))) - for s = (unless (= o l) - (subseq vector o end)) - for c = (make-instance 'octet-vector-context - :octet-vector s - :boxes (make-context-boxes :end (length s))) - while s - do (decompress c state) - (assert (or (ds-finished state) - (ds-input-underrun state))) - (setf o end)) - tmp)) - -(equalp - (gz:inflate-vector (second *test-file*) - (make-array (first *test-file*) - :element-type 'octet) - :suppress-header t) - (test-chunked (first *test-file*) (second *test-file*) - (constantly 3))) - -(defparameter *foo* nil) -(defparameter *c* 0) -(let ((ref (gz:inflate-vector (second *test-file*) - (make-array (first *test-file*) - :element-type 'octet) - :suppress-header t))) - (loop - for i from 0 - repeat 30000 - do (print i) - while - (progn - (setf *foo* nil) - (incf *c*) - (equalp - ref - (test-chunked (first *test-file*) (second *test-file*) - (lambda () - (let ((r (random 1234))) - (push r *foo*) - r))))) - count t)) - - -(let ((*default-pathname-defaults* (asdf:system-relative-pathname '3bz ""))) - (let* ((i (alexandria:read-file-into-byte-vector "deflate.lisp")) - (tmp (make-array (* 2 (length i)) :element-type 'octet - :initial-element 0))) - (multiple-value-bind (x r w) - (gz:deflate-vector i - tmp :compression 0 - :suppress-header t) - (declare (ignore r)) - (mismatch i - (test-chunked (length i) (subseq x 0 w) (constantly 1323134) - #++(lambda () (random 4))))))) diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/test-chunked-output.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/test-chunked-output.lisp deleted file mode 100644 index aa0cb54..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/test-chunked-output.lisp +++ /dev/null @@ -1,90 +0,0 @@ -(in-package 3bz) - - -#++ -(ql:quickload '(deoxybyte-gzip)) - -#++ -(let ((*default-pathname-defaults* (asdf:system-relative-pathname '3bz ""))) - (with-open-file (o "test.deflated" :element-type 'octet :direction :output - :if-does-not-exist :create :if-exists :error) - (let* ((i (alexandria:read-file-into-byte-vector "deflate.lisp")) - (tmp (make-array (length i) :element-type 'octet - :initial-element 0))) - (multiple-value-bind (x r w) - (gz:deflate-vector i - tmp :compression 9 - :suppress-header t) - (declare (ignore r)) - (nibbles:write-ub64/le (length i) o) - (write-sequence (subseq x 0 w) o))))) - -(defparameter *test-file* - (let ((f (alexandria:read-file-into-byte-vector (asdf:system-relative-pathname '3bz "test.deflated")))) - (list (nibbles:ub64ref/le f 0) - (subseq f 8)))) - -(defun test-chunked-output (vector generator) - (let* ((l (length vector)) - (state (make-deflate-state)) - (c (make-instance 'octet-vector-context - :octet-vector vector - :boxes (make-context-boxes :end l)))) - (setf (ds-output-buffer state) - (make-array (funcall generator) - :element-type 'octet :initial-element 0)) - (setf (ds-output-offset state) 0) - - (coerce - (loop - for x = (decompress c state) - #+do (format t "~s ~s~%" ss (subseq (ds-output-buffer state) 0 x)) - sum x into ss - when (or (ds-finished state) - (ds-output-overflow state)) - append (coerce (subseq (ds-output-buffer state) 0 x) 'list) - and - do (setf (ds-output-buffer state) - (make-array (funcall generator) :element-type 'octet - :initial-element 0)) - (Setf (ds-output-offset state) 0) - until (ds-finished state)) - 'vector))) - - -(let* ((a (gz:inflate-vector (second *test-file*) - (make-array (first *test-file*) - :element-type 'octet) - :suppress-header t)) - (b (test-chunked-output (second *test-file*) - (constantly 3))) - (c (mismatch a b))) - (when c - (list c - (subseq a c (length a)) - (subseq b c (length b)) - c))) - -(defparameter *foo* nil) -(defparameter *c* 0) -(let ((ref (gz:inflate-vector (second *test-file*) - (make-array (first *test-file*) - :element-type 'octet) - :suppress-header t))) - (loop - for i from 0 - repeat 30000 - do (princ i) (terpri) - while - (progn - (setf *foo* nil) - (incf *c*) - (equalp - ref - (test-chunked-output (second *test-file*) - (lambda () - (let ((r (+ 1 (random 12345)))) - (push r *foo*) - r))))) - count t)) - diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/test.deflated b/quicklisp/dists/quicklisp/software/3bz-20201220-git/test.deflated deleted file mode 100644 index 3f9f0cb..0000000 Binary files a/quicklisp/dists/quicklisp/software/3bz-20201220-git/test.deflated and /dev/null differ diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/tuning.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/tuning.lisp deleted file mode 100644 index 2acfb64..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/tuning.lisp +++ /dev/null @@ -1,42 +0,0 @@ -(in-package 3bz) - -;;; some tuning parameters, and functions used in #+#.(...) to control -;;; features used by code - -;;; deflate code tries to read/write/copy 64bits at a time, and uses -;;; ub64 buffer for bits when doing non-octet-unaligned reads, but -;;; that's slow if ub64 is a bignum, so this is used to switch to ub32 -;;; where possible -(defun use-ub64 () - '(:or) - ;; on mezzano, ub64 is better on some files, worse on others, so leaving off for now - #+ (or (and 64-bit sbcl)) - '(:and)) - -;;; similarly, adler32 checksum accumulates as many bytes as possible -;;; before doing mod, so we can either use :ub64, :ub32 or :fixnum -;;; versions of adler32 code depending on which is fastest -(defun use-adler32 (version) - (if (eql version - ;; ub64 is fastest on 64bit sbcl, and seems better on mezzano too now - #+ (or mezzano (and sbcl x86-64)) - :ub64 - ;; for now, just using fixnum elsewhere until there are - ;; proper benchmarks. not sure if ub32 is faster than - ;; fixnum anywhere, or if fixnum is good enough - #- (or mezzano abcl (and sbcl x86-64)) - :fixnum - #+ abcl - :ub32 - ) - '(:and) - '(:or))) -;;; adler32 checksum is unrolled a bit to reduce loop overhead, this -;;; specifies how many iterations to unroll -;; todo: set this for more combinations of cpu/implementation once -;; there are benchmarks -(defconstant +adler32-unroll+ - #+mezzano 16 - #+sbcl 32 - #- (or sbcl mezzano) 8) - diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/types.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/types.lisp deleted file mode 100644 index 7887c78..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/types.lisp +++ /dev/null @@ -1,16 +0,0 @@ -(in-package 3bz) - -(deftype ub8 () '(unsigned-byte 8)) -(deftype ub16 () '(unsigned-byte 16)) -(deftype ub32 () '(unsigned-byte 32)) -(deftype ub64 () '(unsigned-byte 64)) - -(deftype ht-bit-count-type ()'(unsigned-byte 4)) -(deftype ht-offset-type ()'(unsigned-byte 11)) -(deftype ht-node-type ()'(unsigned-byte 16)) -(deftype ht-node-array-type () `(simple-array ht-node-type (,+max-tree-size+))) - -(deftype code-table-type () '(simple-array (unsigned-byte 4) 1)) - -;; mezzano likes (integer 0 m-p-f) better than (and fixnum unsigned-byte) -(deftype non-negative-fixnum () `(integer 0 ,most-positive-fixnum)) diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/util.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/util.lisp deleted file mode 100644 index 1c25a56..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/util.lisp +++ /dev/null @@ -1,89 +0,0 @@ -(in-package 3bz) - -(eval-when (:compile-toplevel :load-toplevel :execute) - (defparameter *cached-struct-defs* (make-hash-table))) - -(defmacro defstruct-cached (name-and-options &body slots) - `(progn - (defstruct ,name-and-options - ,@slots) - (eval-when (:compile-toplevel :load-toplevel :execute) - ,(with-standard-io-syntax - (destructuring-bind (name &rest options) - (alexandria:ensure-list name-and-options) - (let ((conc-name (cadr (assoc :conc-name options)))) - (unless conc-name - (setf conc-name (format nil "~a" name))) - (flet ((accessor (slot) - (intern (format nil "~a~a" conc-name slot) - (find-package :3bz)))) - `(setf (gethash ',NAME *cached-struct-defs*) - ',(loop for (slot init . keys) in slots - for type = (getf keys :type) - collect (list slot (accessor slot) type)))))))))) - -(defmacro with-cached-state ((struct type save-state-fun &body vars) - &body body) - (let ((slots (gethash type *cached-struct-defs*))) - (assert slots) - `(symbol-macrolet ,(loop for (var accessor) in slots - unless (member var vars) - collect `(,var (,accessor ,struct))) - - (let ,(loop for (var accessor) in slots - when (member var vars) - collect `(,var (,accessor ,struct))) - (declare ,@(loop for (var nil type) in slots - when (and (member var vars) type) - collect `(type ,type ,var) - when (member var vars) - collect `(ignorable ,var))) - (flet ((,save-state-fun () - ,@(loop for (var accessor) in slots - when (member var vars) - collect `(setf (,accessor ,struct) ,var)))) - (declare (ignorable #',save-state-fun)) - ,@body))))) - - -(defmacro wrap-fixnum (x) - ;; a few places we already checked something will be a fixnum (for - ;; example an array index in a loop), so tell the compiler it doesn't - ;; need to check for bignums - #-mezzano - `(ldb (byte #. (integer-length most-positive-fixnum) 0) ,x) - #+mezzano - `(locally (declare (optimize speed (safety 0))) - (the fixnum ,x))) - -(declaim (type (simple-array (unsigned-byte 15) (32768)) *bit-rev-table*)) -(defparameter *bit-rev-table* - (coerce (loop for i below (expt 2 15) - collect (parse-integer - (reverse (format nil "~15,'0b" i)) :radix 2)) - '(simple-array (unsigned-byte 15) (*)))) - -(declaim (inline bit-rev)) -(defun bit-rev (x bits) - (declare (type (unsigned-byte 15) x)) - (ldb (byte bits (- 15 bits)) (aref *bit-rev-table* x))) - - -;; some wrappers for handling fast math when we know types and ranges -(defmacro ub64+ (a b) - #- (or mezzano sbcl) - `(the (unsigned-byte 64) (+ ,a ,b)) - #+mezzano - `(locally (declare (optimize speed (safety 0))) - (the (unsigned-byte 64) (+ ,a ,b))) - #+sbcl - `(ldb (byte 64 0) (+ ,a ,b))) - -(defmacro fixnum+ (a b) - #- (or mezzano sbcl) - `(the (fixnum) (+ ,a ,b)) - #+mezzano - `(locally (declare (optimize speed (safety 0))) - (the (fixnum) (+ ,a ,b))) - #+sbcl - `(+ ,a ,b)) diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/zlib-test.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/zlib-test.lisp deleted file mode 100644 index 70de35f..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/zlib-test.lisp +++ /dev/null @@ -1,41 +0,0 @@ -(in-package 3bz) -#++ (ql:quickload '(3bz deoxybyte-gzip chipz)) -(defvar *zlib* nil) -(let* ((d (time - (alexandria:read-file-into-byte-vector "e:/tmp/t/linux-2.2.26.tar"))) - (tmp (make-array (length d) :element-type 'octet - :initial-element 0)) - (v (or *zlib* - (setf *zlib* - (time - (multiple-value-bind (x r w) - (gz:deflate-vector d (make-array (* 2 (length d)) - :element-type 'octet) - :compression 9 - ) - (declare (ignore r)) - (subseq x 0 w))))))) - (format t "chipz:~%") - (fill tmp 0) - (with-simple-restart (continue "continue") - (let ((x (time (chipz:decompress tmp 'chipz:zlib v)))) - (declare (ignore x)) - (assert (equalp d tmp)))) - - (fill tmp 0) - (format t "3bz:~%") ;; 0.33 - (let ((x (time (decompress-zlib (make-instance 'octet-vector-context - :octet-vector v - :boxes (make-context-boxes - :end (length v))) - (make-zlib-state :output-buffer tmp))))) - (assert (equalp (if (consp x) - (time (apply 'concatenate 'octet-vector x)) - (subseq tmp 0 x)) - d))) - (fill tmp 0) - (format t "gz:~%") - (let ((x (time (gz:inflate-vector v tmp)))) - (assert (equalp x d))) - - nil) diff --git a/quicklisp/dists/quicklisp/software/3bz-20201220-git/zlib.lisp b/quicklisp/dists/quicklisp/software/3bz-20201220-git/zlib.lisp deleted file mode 100644 index 93934cb..0000000 --- a/quicklisp/dists/quicklisp/software/3bz-20201220-git/zlib.lisp +++ /dev/null @@ -1,144 +0,0 @@ -(in-package 3bz) - -(defstruct (zlib-state (:conc-name zs-) - (:include deflate-state)) - (zlib-state :header) - (compression-method nil) - (window-size 0) - (dict-id nil) - (compression-level :default) - ;; checksum state - (s1 1 :type (unsigned-byte 16)) - (s2 0 :type (unsigned-byte 16))) - -(defun check-zlib-header (cmf flg &key (errorp t)) - (let* ((cm (ldb (byte 4 0) cmf)) - (cinfo (ldb (byte 4 4) cmf)) - (check (zerop (mod (+ (* cmf 256) flg) 31))) - (dict (logbitp 5 flg)) - (level (ldb (byte 2 6) flg))) - (when (not check) - (when errorp - (error "invalid zlib header checksum"))) - (if (= cm 8) - (setf cm :deflate) - (progn - (when errorp - (error "invalid zlib compression type")) - (setf check nil))) - (when (> cinfo 7) - (when errorp - (error "invalid window size in zlib header")) - (setf check nil)) - (when dict - (when errorp - (error "preset dictionary not supported yet")) - (setf check nil)) - (values check cm cinfo dict level))) - -(defun decompress-zlib (read-context state) - (check-type state zlib-state) - ;; fixme: avoid duplication with these from deflate - (with-reader-contexts (read-context) - (with-accessors ((input-underrun zs-input-underrun) - (zlib-state zs-zlib-state) - (partial-bits zs-partial-bits) - (bits-remaining zs-bits-remaining) - (finished zs-finished) - (window-size zs-window-size) - (compression-level zs-compression-level) - (dict-id zs-dict-id) - (compression-method zs-compression-method) - (output-offset zs-output-offset) - (output-overflow zs-output-overflow)) - state - (labels ((%fill-bits32 (n) - (multiple-value-bind (input octets) - (word32) - (declare (type (mod 5) octets)) - (setf partial-bits - (logior - (ash (ldb (byte 32 0) input) - (min 32 bits-remaining)) - partial-bits)) - (incf bits-remaining (* 8 octets)) - (>= bits-remaining n))) - (%bits (n) - (prog1 (ldb (byte n 0) partial-bits) - (setf partial-bits (ash partial-bits (- n))) - (decf bits-remaining n))) - (byte-align () - (let ((r (mod bits-remaining 8))) - (unless (zerop r) - (setf partial-bits (ash partial-bits (- r))) - (decf bits-remaining r)))) - ;; these are called from 2 places to allow finishing in - ;; single call, while trying to minimize conditionals - ;; in hot path when working with input/output in chunks - (dictid () - (error "preset dictionary not supported yet")) - (adler () - (when (and (< bits-remaining 32) - (not (%fill-bits32 32))) - (setf input-underrun t) - (return-from decompress-zlib - output-offset)) - (let ((adler32 (logior (ash (%bits 8) 24) - (ash (%bits 8) 16) - (ash (%bits 8) 8) - (ash (%bits 8) 0))) - (calculated (logior (zs-s1 state) - (ash (zs-s2 state) 16)))) - (declare (optimize (speed 1))) - ;;(format t "checksum = ~8,'0x~%" adler32) - ;;(format t "calculated = ~8,'0x~%" calculated) - (assert (= adler32 calculated)) - (setf finished t))) - (update-checksum () - (declare (optimize speed)) - (setf (values (zs-s1 state) (zs-s2 state)) - (adler32 (zs-output-buffer state) - output-offset - (zs-s1 state) (zs-s2 state))))) - (declare (inline %fill-bits32 %bits byte-align) - (optimize (speed 1))) - (setf input-underrun nil) - (when zlib-state - (case zlib-state - (:header - (when (and (< bits-remaining 16) - (not (%fill-bits32 16))) - (setf input-underrun t) - (return-from decompress-zlib 0)) - (multiple-value-bind (ok cm cinfo dict level) - (check-zlib-header (%bits 8) (%bits 8)) - (declare (ignore ok)) - (setf compression-level - (aref #(:fastest :fast :default :maximum) level)) - (setf window-size (expt 2 (+ cinfo 8)))2 - (setf compression-method cm) - (setf dict-id dict) - (when dict - (setf zlib-state :header2) - (dictid)) - #++ - (format t "zlib header: method ~s, level ~s, window ~s, dict ~s~%" - compression-method compression-level window-size dict-id))) - (:header2 - (dictid)) - (:adler - (adler) - (setf zlib-state nil) - (return-from decompress-zlib output-offset))) - (setf zlib-state nil)) - (unless zlib-state - (decompress-deflate read-context state) - (when (or finished output-overflow) - (update-checksum)) - (when finished - (byte-align) - (setf zlib-state :adler) - (setf finished nil))) - (when (eql :adler zlib-state) - (adler)) - output-offset)))) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/.dir-locals.el b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/.dir-locals.el deleted file mode 100644 index 822baa8..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/.dir-locals.el +++ /dev/null @@ -1,9 +0,0 @@ -;;; Directory Local Variables -;;; For more information see (info "(emacs) Directory Variables") - -((nil - (indent-tabs-mode) - (fill-column . 69)) - (lisp-mode - (eval put 'test-ps-js 'common-lisp-indent-function 1) - (eval put 'test-js-eval 'common-lisp-indent-function 1))) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/.gitignore b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/.gitignore deleted file mode 100644 index 01a1587..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.*fsl -*.*fasl -*~ diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/COPYING b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/COPYING deleted file mode 100644 index 0028365..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/COPYING +++ /dev/null @@ -1,31 +0,0 @@ -Copyright (c) 2005 Manuel Odendahl -Copyright (c) 2005-2006 Edward Marco Baringer -Copyright (c) 2007-2013, 2018 Vladimir Sedach -Copyright (c) 2008, 2009 Travis Cross - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -1. Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/README b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/README deleted file mode 100644 index bfd4208..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/README +++ /dev/null @@ -1,56 +0,0 @@ -Parenscript is a translator from an extended subset of Common Lisp to -JavaScript. Parenscript code can run almost identically on both the -browser (as JavaScript) and server (as Common Lisp). - -Parenscript code is treated the same way as Common Lisp code, making -the full power of Lisp macros available for JavaScript. This provides -a web development environment that is unmatched in its ability to -reduce code duplication and provide advanced meta-programming -facilities to web developers. - -At the same time, Parenscript is different from almost all other -"language X" to JavaScript translators in that it imposes almost no -overhead: - - No run-time dependencies: - Any piece of Parenscript code is runnable as-is. There are no - JavaScript files to include. - Native types: - Parenscript works entirely with native JavaScript data types. There - are no new types introduced, and object prototypes are not - touched. - Native calling convention: - Any JavaScript code can be called without the need for - bindings. Likewise, Parenscript can be used to make efficient, - self-contained JavaScript libraries. - Readable code: - Parenscript generates concise, formatted, idiomatic JavaScript - code. Identifier names are preserved. This enables seamless - use of JavaScript debuggers. - Efficiency: - Parenscript introduces minimal overhead for advanced Common Lisp - features. The generated code is almost as fast as hand-written - JavaScript. - -Parenscript is available via Quicklisp: - (ql:quickload :parenscript) - -To run unit tests: - (ql:quickload :parenscript.tests) - (parenscript.tests:run-tests) - -Contributing: - Please send patches and bug reports to the mailing list: - parenscript-devel@common-lisp.net - -Documentation: - See docs/tutorial.html and docs/reference.html -Mailing list: - parenscript-devel@common-lisp.net - https://mailman.common-lisp.net/listinfo/parenscript-devel -Web site: - http://common-lisp.net/project/parenscript/ -Source repository: - https://gitlab.common-lisp.net/parenscript/parenscript.git -License: - BSD-3-Clause, see the file COPYING diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/contributors b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/contributors deleted file mode 100644 index 3e43e3a..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/contributors +++ /dev/null @@ -1,22 +0,0 @@ -This is a list of people who have contributed to the ParenScript -project. Please contact the maintainer if you see any errors or -omissions. - -Manuel Odendahl -Marco Baringer -Ivan Toshkov -Luca Capello -Alan Shields -Henrik Hjelte -Attila Lendvai -Marijn Haverbeke -Vladimir Sedach -John Fremlin -Red Daly -Travis Cross -Daniel Gackle -William Halliburton -Scott Bell -Bart Botta -Boris Smilga -Russell Sim diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/docs/LICENSE b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/docs/LICENSE deleted file mode 100644 index bf128be..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/docs/LICENSE +++ /dev/null @@ -1,451 +0,0 @@ - - GNU Free Documentation License - Version 1.3, 3 November 2008 - - - Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -0. PREAMBLE - -The purpose of this License is to make a manual, textbook, or other -functional and useful document "free" in the sense of freedom: to -assure everyone the effective freedom to copy and redistribute it, -with or without modifying it, either commercially or noncommercially. -Secondarily, this License preserves for the author and publisher a way -to get credit for their work, while not being considered responsible -for modifications made by others. - -This License is a kind of "copyleft", which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. - -We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. - - -1. APPLICABILITY AND DEFINITIONS - -This License applies to any manual or other work, in any medium, that -contains a notice placed by the copyright holder saying it can be -distributed under the terms of this License. Such a notice grants a -world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The "Document", below, -refers to any such manual or work. Any member of the public is a -licensee, and is addressed as "you". You accept the license if you -copy, modify or distribute the work in a way requiring permission -under copyright law. - -A "Modified Version" of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. - -A "Secondary Section" is a named appendix or a front-matter section of -the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall -subject (or to related matters) and contains nothing that could fall -directly within that overall subject. (Thus, if the Document is in -part a textbook of mathematics, a Secondary Section may not explain -any mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. - -The "Invariant Sections" are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. If a -section does not fit the above definition of Secondary then it is not -allowed to be designated as Invariant. The Document may contain zero -Invariant Sections. If the Document does not identify any Invariant -Sections then there are none. - -The "Cover Texts" are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. A Front-Cover Text may -be at most 5 words, and a Back-Cover Text may be at most 25 words. - -A "Transparent" copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, that is suitable for revising the document -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup, or absence of markup, has been arranged to thwart -or discourage subsequent modification by readers is not Transparent. -An image format is not Transparent if used for any substantial amount -of text. A copy that is not "Transparent" is called "Opaque". - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input format, SGML -or XML using a publicly available DTD, and standard-conforming simple -HTML, PostScript or PDF designed for human modification. Examples of -transparent image formats include PNG, XCF and JPG. Opaque formats -include proprietary formats that can be read and edited only by -proprietary word processors, SGML or XML for which the DTD and/or -processing tools are not generally available, and the -machine-generated HTML, PostScript or PDF produced by some word -processors for output purposes only. - -The "Title Page" means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, "Title Page" means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. - -The "publisher" means any person or entity that distributes copies of -the Document to the public. - -A section "Entitled XYZ" means a named subunit of the Document whose -title either is precisely XYZ or contains XYZ in parentheses following -text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as "Acknowledgements", -"Dedications", "Endorsements", or "History".) To "Preserve the Title" -of such a section when you modify the Document means that it remains a -section "Entitled XYZ" according to this definition. - -The Document may include Warranty Disclaimers next to the notice which -states that this License applies to the Document. These Warranty -Disclaimers are considered to be included by reference in this -License, but only as regards disclaiming warranties: any other -implication that these Warranty Disclaimers may have is void and has -no effect on the meaning of this License. - -2. VERBATIM COPYING - -You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no -other conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. - -You may also lend copies, under the same conditions stated above, and -you may publicly display copies. - - -3. COPYING IN QUANTITY - -If you publish printed copies (or copies in media that commonly have -printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the -copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. - -If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. - -If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a computer-network location from which the general network-using -public has access to download using public-standard network protocols -a complete Transparent copy of the Document, free of added material. -If you use the latter option, you must take reasonably prudent steps, -when you begin distribution of Opaque copies in quantity, to ensure -that this Transparent copy will remain thus accessible at the stated -location until at least one year after the last time you distribute an -Opaque copy (directly or through your agents or retailers) of that -edition to the public. - -It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to -give them a chance to provide you with an updated version of the -Document. - - -4. MODIFICATIONS - -You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -Version filling the role of the Document, thus licensing distribution -and modification of the Modified Version to whoever possesses a copy -of it. In addition, you must do these things in the Modified Version: - -A. Use in the Title Page (and on the covers, if any) a title distinct - from that of the Document, and from those of previous versions - (which should, if there were any, be listed in the History section - of the Document). You may use the same title as a previous version - if the original publisher of that version gives permission. -B. List on the Title Page, as authors, one or more persons or entities - responsible for authorship of the modifications in the Modified - Version, together with at least five of the principal authors of the - Document (all of its principal authors, if it has fewer than five), - unless they release you from this requirement. -C. State on the Title page the name of the publisher of the - Modified Version, as the publisher. -D. Preserve all the copyright notices of the Document. -E. Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices. -F. Include, immediately after the copyright notices, a license notice - giving the public permission to use the Modified Version under the - terms of this License, in the form shown in the Addendum below. -G. Preserve in that license notice the full lists of Invariant Sections - and required Cover Texts given in the Document's license notice. -H. Include an unaltered copy of this License. -I. Preserve the section Entitled "History", Preserve its Title, and add - to it an item stating at least the title, year, new authors, and - publisher of the Modified Version as given on the Title Page. If - there is no section Entitled "History" in the Document, create one - stating the title, year, authors, and publisher of the Document as - given on its Title Page, then add an item describing the Modified - Version as stated in the previous sentence. -J. Preserve the network location, if any, given in the Document for - public access to a Transparent copy of the Document, and likewise - the network locations given in the Document for previous versions - it was based on. These may be placed in the "History" section. - You may omit a network location for a work that was published at - least four years before the Document itself, or if the original - publisher of the version it refers to gives permission. -K. For any section Entitled "Acknowledgements" or "Dedications", - Preserve the Title of the section, and preserve in the section all - the substance and tone of each of the contributor acknowledgements - and/or dedications given therein. -L. Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section titles. -M. Delete any section Entitled "Endorsements". Such a section - may not be included in the Modified Version. -N. Do not retitle any existing section to be Entitled "Endorsements" - or to conflict in title with any Invariant Section. -O. Preserve any Warranty Disclaimers. - -If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. - -You may add a section Entitled "Endorsements", provided it contains -nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. - -You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. - -The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. - - -5. COMBINING DOCUMENTS - -You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice, and that you preserve all their Warranty Disclaimers. - -The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. - -In the combination, you must combine any sections Entitled "History" -in the various original documents, forming one section Entitled -"History"; likewise combine any sections Entitled "Acknowledgements", -and any sections Entitled "Dedications". You must delete all sections -Entitled "Endorsements". - - -6. COLLECTIONS OF DOCUMENTS - -You may make a collection consisting of the Document and other -documents released under this License, and replace the individual -copies of this License in the various documents with a single copy -that is included in the collection, provided that you follow the rules -of this License for verbatim copying of each of the documents in all -other respects. - -You may extract a single document from such a collection, and -distribute it individually under this License, provided you insert a -copy of this License into the extracted document, and follow this -License in all other respects regarding verbatim copying of that -document. - - -7. AGGREGATION WITH INDEPENDENT WORKS - -A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, is called an "aggregate" if the copyright -resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. -When the Document is included in an aggregate, this License does not -apply to the other works in the aggregate which are not themselves -derivative works of the Document. - -If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on -covers that bracket the Document within the aggregate, or the -electronic equivalent of covers if the Document is in electronic form. -Otherwise they must appear on printed covers that bracket the whole -aggregate. - - -8. TRANSLATION - -Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License, and all the license notices in the -Document, and any Warranty Disclaimers, provided that you also include -the original English version of this License and the original versions -of those notices and disclaimers. In case of a disagreement between -the translation and the original version of this License or a notice -or disclaimer, the original version will prevail. - -If a section in the Document is Entitled "Acknowledgements", -"Dedications", or "History", the requirement (section 4) to Preserve -its Title (section 1) will typically require changing the actual -title. - - -9. TERMINATION - -You may not copy, modify, sublicense, or distribute the Document -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense, or distribute it is void, and -will automatically terminate your rights under this License. - -However, if you cease all violation of this License, then your license -from a particular copyright holder is reinstated (a) provisionally, -unless and until the copyright holder explicitly and finally -terminates your license, and (b) permanently, if the copyright holder -fails to notify you of the violation by some reasonable means prior to -60 days after the cessation. - -Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - -Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, receipt of a copy of some or all of the same material does -not give you any rights to use it. - - -10. FUTURE REVISIONS OF THIS LICENSE - -The Free Software Foundation may publish new, revised versions of the -GNU Free Documentation License from time to time. Such new versions -will be similar in spirit to the present version, but may differ in -detail to address new problems or concerns. See -https://www.gnu.org/licenses/. - -Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. If the Document -specifies that a proxy can decide which future versions of this -License can be used, that proxy's public statement of acceptance of a -version permanently authorizes you to choose that version for the -Document. - -11. RELICENSING - -"Massive Multiauthor Collaboration Site" (or "MMC Site") means any -World Wide Web server that publishes copyrightable works and also -provides prominent facilities for anybody to edit those works. A -public wiki that anybody can edit is an example of such a server. A -"Massive Multiauthor Collaboration" (or "MMC") contained in the site -means any set of copyrightable works thus published on the MMC site. - -"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 -license published by Creative Commons Corporation, a not-for-profit -corporation with a principal place of business in San Francisco, -California, as well as future copyleft versions of that license -published by that same organization. - -"Incorporate" means to publish or republish a Document, in whole or in -part, as part of another Document. - -An MMC is "eligible for relicensing" if it is licensed under this -License, and if all works that were first published under this License -somewhere other than this MMC, and subsequently incorporated in whole or -in part into the MMC, (1) had no cover texts or invariant sections, and -(2) were thus incorporated prior to November 1, 2008. - -The operator of an MMC Site may republish an MMC contained in the site -under CC-BY-SA on the same site at any time before August 1, 2009, -provided the MMC is eligible for relicensing. - - -ADDENDUM: How to use this License for your documents - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: - - Copyright (c) YEAR YOUR NAME. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.3 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. - A copy of the license is included in the section entitled "GNU - Free Documentation License". - -If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the "with...Texts." line with this: - - with the Invariant Sections being LIST THEIR TITLES, with the - Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. - -If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. - -If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/docs/introduction.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/docs/introduction.lisp deleted file mode 100644 index bc284f7..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/docs/introduction.lisp +++ /dev/null @@ -1,100 +0,0 @@ -(in-package :ps) - -;;; Introduction -;;; -;;; Parenscript is a language that looks a lot like Common Lisp, but -;;; is JavaScript in disguise. This way, JavaScript programs can be -;;; seamlessly integrated in a Lisp web application. The programmer -;;; doesn't have to resort to a different syntax, and JavaScript code -;;; can easily be generated without having to resort to complicated -;;; string generation or `FORMAT' expressions. -;;; -;;; The following Lisp expression is a call to the Parenscript -;;; translator Parenscript transforms the expression in Parenscript -;;; into an equivalent, human-readable expression in JavaScript. - -(ps - (defun foobar (a b) - (+ a b))) - -;;; The resulting javascript is: - -" -function foobar(a, b) { - return a + b; -} -" - -;;; Great care has been given to the indentation and overall -;;; readability of the generated JavaScript code. - -;;; Features -;;; -;;; Parenscript supports all the statements and expressions defined by -;;; the EcmaScript 262 standard. Lisp symbols are converted to -;;; camelcase, javascript-compliant syntax. This idea is taken from -;;; Linj by Antonio Menezes Leitao. Case sensitivity (using the -;;; :invert readtable-case option) is supported. Here are a few -;;; examples of Lisp symbol to JavaScript name conversion: - -(ps foobar) => "foobar" -(ps foo-bar) => "fooBar" -(ps foo-b@r) => "fooBatr" -(ps *array) => "Array" -(ps FooBar) => "FooBar" - -;;; Parenscript supports a subset of Common Lisp iteration constructs. -;;; `for' loops can be written using the customary `DO*' syntax. - -(ps - (do* ((i 0 (incf i)) - (j (aref arr i) (aref arr i))) - ((>= i 10)) - (alert (+ "i is " i " and j is " j)))) - -;; compiles to -" -for (var i = 0, j = arr[i]; i < 10; i = ++i, j = arr[i]) { - alert('i is ' + i + ' and j is ' + j); -}; -" -;;; Parenscript uses the Lisp reader, allowing for reader macros. It -;;; also comes with its own macro environment, allowing host Lisp -;;; macros and Parenscript macros to coexist without interfering with -;;; each other. For example, the `1+' construct is implemented using -;;; a Parenscript macro: - -(defpsmacro 1+ (form) - `(+ ,form 1)) - -;;; Parenscript allows the creation of JavaScript objects in a Lispy -;;; way, using keyword arguments. - -(ps - (create :foo "foo" - :bla "bla")) - -;; compiles to -" -{ foo : 'foo', - bla : 'bla' } -" -;;; Parenscript features a HTML generator. Using the same syntax as -;;; the HTMLGEN package of Franz, Inc., it can generate JavaScript -;;; string expressions. This allows for a clean integration of HTML in -;;; Parenscript code, instead of writing the tedious and error-prone -;;; string generation code generally found in JavaScript. - -(ps - (defun add-div (name href link-text) - (funcall (getprop document 'write) - (ps-html ((:div :id name) - "The link is: " - ((:a :href href) link-text)))))) - -;; compiles to -" -function addDiv(name, href, linkText) { - return document.write(['
The link is: ', linkText, '
'].join('')); -}; -" diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/docs/reference.html b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/docs/reference.html deleted file mode 100644 index da2e6f1..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/docs/reference.html +++ /dev/null @@ -1,1587 +0,0 @@ - - - - - - - - - Parenscript Reference Manual - - - - - -

Parenscript Reference Manual

- -

- Copyright 2005 Marco Baringer.
- Copyright 2006 Henrik Hjelte.
- Copyright 2009-2012, 2018 Vladimir Sedach.
- - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.3 or any later version published by the Free Software - Foundation; with no Invariant Sections, no Front-Cover Texts, - and no Back-Cover Texts. A copy of the license can be - found on the - GNU website. -

- -

Table of Contents

- -
    -
  1. Notation used in this manual
  2. -
  3. The Parenscript compiler
  4. -
  5. Symbol conversion
  6. -
  7. The Parenscript namespace system - -
  8. -
  9. Reserved symbols
  10. -
  11. Statements, expressions, and return
  12. -
  13. Types and type predicates
  14. -
  15. Literals - -
  16. -
  17. Objects
  18. -
  19. Arrays
  20. -
  21. Arithmetic and boolean operators
  22. -
  23. Mathematical functions and constants
  24. -
  25. Blocks
  26. -
  27. Functions and multiple values
  28. -
  29. Control transfer and exceptions
  30. -
  31. Conditionals
  32. -
  33. Variable binding and declaration
  34. -
  35. Assignment
  36. -
  37. Iteration
  38. -
  39. Macros - -
  40. -
  41. Utilities - -
  42. -
  43. Run-time library
  44. -
  45. SLIME integration
  46. -
- -

Notation used in this manual

-
    -
  • Lisp form
  • -
  • Lisp variable
  • -
  • (lisp-function-name lisp-function-argument)
  • -
  • JavaScript code
  • -
  • Term
    Definition of term
  • -
  • (Lisp forms)
    Lisp forms compiled to JavaScript;
  • -
- -

The Parenscript compiler

- -
    -
  • (PS &body body)
  • -
  • (PS-TO-STREAM stream &body body)
  • -
  • (PS* &rest body)
  • -
  • (PS-DOC &body body)
  • -
  • (PS-DOC* &body body)
  • -
  • (PS-INLINE form &optional *JS-STRING-DELIMITER*)
  • -
  • (PS-INLINE* form &optional *JS-STRING-DELIMITER*)
  • -
  • (PS-COMPILE-STREAM stream)
  • -
  • (PS-COMPILE-FILE file)
  • -
  • (LISP lisp-form)
  • -
  • (SYMBOL-TO-JS-STRING symbol)
  • - -
  • *JS-TARGET-VERSION*
  • -
  • *PARENSCRIPT-STREAM*
  • -
  • *JS-STRING-DELIMITER*
  • -
  • *JS-INLINE-STRING-DELIMITER*
  • -
  • *PS-READ-FUNCTION*
  • -
  • *VERSION*
  • -
  • *DEFINED-OPERATORS*
  • -
- -
-
body
implicit PROGN
-
- -

The difference between the regular and * versions - of the Parenscript compiler forms is roughly the difference - between COMPILE - and EVAL. The * forms are functions - that do all compilation when they are evaluated, while the - regular forms are macros that do almost all (except for the use - of the LISP special form, see below) compilation at - macro-expansion time.

- -

PS and PS* are the main interfaces to - the Parenscript compiler. They come with PS-DOC - and PS-DOC* counterparts which compile the given - code - with *PS-GENSYM-COUNTER* - bound to 0, and are useful for writing automated - tests.

- -

By default, Parenscript writes output to a string. You can - output directly to a stream in one of two ways: either by - using PS-TO-STREAM instead of PS, or by - binding *PARENSCRIPT-STREAM* before - calling PS*.

- -

PS-INLINE and PS-INLINE* take a single - Parenscript form and output a string starting - with javascript: that can be used in HTML node - attributes. As well, they provide an argument to bind the value of - *JS-STRING-DELIMITER* to control the value of the - JavaScript string escape character to be compatible with - whatever the HTML generation mechanism is used (for example, if - HTML strings are delimited using #\', - using #\" will avoid conflicts without - requiring the output JavaScript code to be escaped). By default - the value is taken - from *JS-INLINE-STRING-DELIMITER*.

- -

Parenscript code can be compiled from a stream or file - via PS-COMPILE-STREAM - and PS-COMPILE-FILE, respectively. The special - variable *PS-READ-FUNCTION* is bound to the function - used to read the forms from the file/stream (READ by - default), and can be used to provide completely customizable - syntax for Parenscript files.

- -

Parenscript can also call out to arbitrary Common Lisp code at - output time (that is, every time an expression containing - a call to the Parenscript compiler is evaluated, compared - to compile time, where the effect is accomplished using - macros) using the special form LISP. The form - provided to LISP is evaluated, and its result is - compiled as though it were Parenscript code. For PS - and PS-INLINE, the Parenscript output code is - generated at macro-expansion time, and the LISP - statements are inserted inline into the output and have access - to the enclosing Common Lisp lexical - environment. PS* and PS1* evaluate the - LISP forms using EVAL, providing them - access to the current dynamic environment only - (using LISP when calling the * forms - is not strictly necessary, as the values can be inserted inline - into code).

- -

*JS-TARGET-VERSION* ("1.3" by default) - controls which version of JavaScript that Parenscript - targets. For newer versions of JS, some Parenscript special - forms may compile to more concise and/or efficient expressions - that are not present in earlier versions of JavaScript.

- -

SYMBOL-TO-JS-STRING is the Parenscript function - responsible for translating Common Lisp symbols to JavaScript - identifiers (see the section - on symbol conversion for the - translation rules). It is helpful for writing libraries or other - pieces of code that will interface with Parenscript-generated - JavaScript.

- -

Newer versions of Parenscript may implement Common Lisp special - forms, functions or macros that were left unimplemented by earlier - versions. This can cause problems if your code provides - implementations for those forms itself. To help deal with - this, *DEFINED-OPERATORS* provides a list of special - forms, macros, and symbol macros defined by Parenscript - itself. *VERSION* is bound to the current release - version number of Parenscript.

- -

Symbol conversion

- -

Parenscript supports output for both case-sensitive and - case-insensitive symbols. By default the Lisp reader up-cases all - symbols. By setting readtable-case - to :invert - (you can use - the named-readtables - library to make this more convenient) symbol case is preserved, - and Parenscript will output mixed-case symbols - (like encodeURIComponent) correctly.

- -

Lisp symbols (other than keywords) that are all uppercase or - contain special characters are converted to JavaScript - identifiers by following a few simple rules. Special - characters !, ?, #, @, %, /, * and + - get replaced by their written-out equivalents "bang", "what", - "hash", "at", "percent", "slash", "start" and "plus" - respectively. The $ character is untouched.

- -
-
!?#@%
-
bangwhathashatpercent;
-
- -

The - is an indication that the following - character should be converted to uppercase.

- -
-
bla-foo-bar
-
blaFooBar;
-
- -

JavaScript identifiers that begin with an uppercase letter can - be obtained with a leading - or *.

- -
-
*array
-
Array;
-
- -

A symbol starting and ending with + - or * is converted to all uppercase, to signify that - this is a constant or a global variable.

- -
-
*global-array*
-
GLOBALARRAY;
-
- -

Keywords are not translated to JavaScript identifiers, but are - printed in lower case without any character substitution as - strings. This is done because strings are the closest equivalent - to Common Lisp keywords (being self-evaluating objects in - JavaScript), and to permit keywords to be used for identifying - various symbols (for example, as tokens in a parser).

- -
-
:+
-
'+';
- -
:foo-Bar
-
'foo-bar';
-
- -

The Parenscript namespace system

-
    -
  • - (in-package package-designator) -
  • -
  • - (use-package package-designator) -
  • -
  • - (setf (PS-PACKAGE-PREFIX package-designator) string) -
  • -
- -

- Although JavaScript does not offer namespacing or a package - system, Parenscript does provide a namespace mechanism for - generated JavaScript by integrating with the Common Lisp package - system. Since Parenscript code is normally read in by the Lisp - reader, all symbols (except for uninterned ones, i.e. - those - specified with the #: reader macro) have a Lisp - package. By default, no packages are prefixed. You can specify - that symbols in a particular package receive a prefix when - translated to JavaScript with the - PS-PACKAGE-PREFIX place. -

- -
-
-
(defpackage "PS-REF.MY-LIBRARY"
-  (:use "PARENSCRIPT"))
-
-(setf (ps-package-prefix "PS-REF.MY-LIBRARY") "my_library_")
-
-(ps (defun ps-ref.my-library::library-function (x y)
-      (+ x y)))
-
- -
-
function my_library_libraryFunction(x, y) {
-    return x + y;
-};
-
-
- -

- Parenscript provides IN-PACKAGE - and USE-PACKAGE special forms, primarily useful - with PS-COMPILE-FILE - and PS-COMPILE-STREAM. -

- -

Identifier obfuscation

-
    -
  • - (OBFUSCATE-PACKAGE package-designator &optional symbol-map) -
  • -
  • - (UNOBFUSCATE-PACKAGE package-designator) -
  • -
- -

Similar to the namespace mechanism, Parenscript provides a - facility to generate obfuscated identifiers in specified CL - packages. The function OBFUSCATE-PACKAGE may - optionally be passed a closure that maps symbols to their - obfuscated counterparts. By default, the mapping is done - using PS-GENSYM.

- -
-
-
(defpackage "PS-REF.OBFUSCATE-ME")
-
-(obfuscate-package "PS-REF.OBFUSCATE-ME"
-  (let ((code-pt-counter #x8CF6)
-        (symbol-map (make-hash-table)))
-    (lambda (symbol)
-      (or (gethash symbol symbol-map)
-          (setf (gethash symbol symbol-map)
-                (make-symbol (string (code-char (incf code-pt-counter)))))))))
-
-(defun ps-ref.obfuscate-me::a-function (a b ps-ref.obfuscate-me::foo)
-  (+ a (ps-ref.my-library::library-function b ps-ref.obfuscate-me::foo)))
-
- -
-
function 賷(a, b, 賸) {
-    return a + libraryFunction(b, 賸);
-};
-
-
- -

The obfuscation and namespace facilities can be used on packages - at the same time.

- -

Since Parenscript doesn't know anything about the DOM or other - JavaScript libraries, library function and property names might be - inadvertently obfuscated. To help prevent that, Parenscript comes - with - the ps-dom1-symbols, ps-dom2-symbols, ps-window-wd-symbols, ps-dom-nonstandard-symbols - and ps-dhtml-symbols symbol packages that define - various DOM property and function identifiers as exported symbols - (in both case-sensitive and insensitive variants), which you can - import into your packages to help prevent symbols - like pageXOffset from being - obfuscated. The ps-dhtml-symbols package contains the - broadest range of symbols and is most generally useful.

- -

If you use obfuscation and external JavaScript libraries, you - can use the same technique to define your own packages with - symbols that will not be obfuscated.

- -

Minification

-
    -
  • *PS-PRINT-PRETTY*
  • -
  • *INDENT-NUM-SPACES*
  • -
- -

*PS-PRINT-PRETTY* and *INDENT-NUM-SPACES* - control whether the resulting JavaScript code is pretty-printed, - and if so, how many spaces go into each indent level, - respectively. By default the code is pretty-printed - with 4 spaces per indent level.

- -

Setting *PS-PRINT-PRETTY* to nil and turning - on obfuscation will minify the - generated JavaScript code.

- -

Reserved symbols

- -

The following symbols are reserved in Parenscript, and should not - be used as variable names.

- - - ! ~ ++ -- * / % + - << >> >>> < > - <= >= == != === !== & ^ | && || *= /= %= += -= <<= - >>= >>>= &= ^= |= 1- 1+ @ ABSTRACT AND AREF ARRAY - BOOLEAN BREAK BYTE CASE CATCH CHAR CLASS COMMA CONST CONTINUE - CREATE DEBUGGER DECF DEFAULT DEFUN DEFVAR DELETE DO DO* DOEACH - DOLIST DOTIMES DOUBLE ELSE ENUM EQL EXPORT EXTENDS F FALSE FINAL - FINALLY FLOAT FLOOR FOR FOR-IN FUNCTION GOTO IF IMPLEMENTS - IMPORT IN INCF INSTANCEOF INT INTERFACE JS LABELED-FOR LAMBDA - LET LET* LISP LIST LONG MAKE-ARRAY NATIVE NEW NIL NOT OR PACKAGE - PRIVATE PROGN PROTECTED PUBLIC RANDOM REGEX RETURN SETF SHORT - GETPROP STATIC SUPER SWITCH SYMBOL-MACROLET SYNCHRONIZED T THIS - THROW THROWS TRANSIENT TRY TYPEOF UNDEFINED UNLESS VAR VOID - VOLATILE WHEN WHILE WITH WITH-SLOTS - - -

Statements, expressions, and return

- -

- In contrast to Lisp, where everything is an expression, - JavaScript makes an arbitrary distinction between expressions, - which yield a value and can be nested in other expressions, and - statements, which have no value and cannot occur in expressions. -

- -

- Some Parenscript special forms compile to expressions, while - others can only compile to statements. Certain Parenscript - forms, like IF and PROGN, generate - different JavaScript depending on if they are used in an - expression context or a statement context. In such cases, - Parenscript tries to generate statement code if possible to - increase readability, only falling back to the expression code - if it is necessary. -

- -
-
- (+ i (if x (foo) (bar))) -
- -
- i + (x ? foo() : bar()); -
- -
- (if x (foo) (bar)) -
- -
-
if (x) {
-    foo();
-} else {
-    bar();
-};
-
-
- -

- One important feature found in Lisp but absent from JavaScript - is implicit return from functions. Parenscript automatically - provides implicit return for JavaScript statements and - expressions: -

- -
-
-
(defun foo (x)
-  (1+ x))
-
- -
-
function foo(x) {
-    return x + 1;
-};
-
- -
-
(lambda (x)
-  (case x
-    (1 (loop repeat 3 do (alert "foo")))
-    (:bar (alert "bar"))
-    (otherwise 4)))
-
- -
-
function (x) {
-    switch (x) {
-    case 1:
-        for (var _js1 = 0; _js1 < 3; _js1 += 1) {
-            alert('foo');
-        };
-        return null;
-    case 'bar':
-        return alert('bar');
-    default:
-        return 4;
-    };
-};
-
-
- -

- Parenscript generates code that works around the JavaScript - expression-statement dichotomy in an unobtrusive way: -

- -
-
-
(+ 1 (dotimes (x 3) (if (= x 2) (return (+ x x)))))
-
- -
-
(function () {
-    for (var x = 0; x < 3; x += 1) {
-        if (x === 2) {
-            return x + x;
-        };
-    };
-})() + 1;
-
-
- -

Types and type predicates

-
    -
  • (TYPEOF object)
  • -
  • (INSTANCEOF object type)
  • -
  • (NULL object)
  • -
  • (UNDEFINED object)
  • -
  • (DEFINED object)
  • -
  • (STRINGP object)
  • -
  • (NUMBERP object)
  • -
  • (FUNCTIONP object)
  • -
  • (OBJECTP object)
  • -
- -
-
object
an expression yielding an object
-
type
a type designator
-
- -

Parenscript is based around the JavaScript type system, and - does not introduce any new types or objects, nor does it attempt - to provide a Common Lisp-like interface to the type system.

- -

Literals

- -

Numbers

- -

Parenscript prints all integer literals as integers, and floats - and rationals as floats, in base 10.

- -
-
1
-
1;
- -
123.123
-
123.123;
- -
3/4
-
0.75;
- -
#x10
-
16;
-
- -

Strings and characters

- -

Lisp strings are converted to JavaScript strings.

- -
-
"foobar"
-
'foobar';
-
- -

Parenscript makes no effort to interpolate C-style escape - strings. Rather, non-printable characters in Lisp strings are - output using escape sequences:

- -
-
#\Tab
-
'\t';
- -
"\\n"
-
'\\n';
-
- -

Regular expressions

-
    -
  • (REGEX regex)
  • -
- -
-
regex
a string
-
- -

Regular expressions can be created by using - the REGEX form. If the argument does not start with - /, it is surrounded by /, otherwise it - is left as it is.

- -
-
(regex "foobar")
-
/foobar/;
- -
(regex "/foobar/i")
-
/foobar/i;
-
- -

CL-INTERPOL is - convenient for writing regular expressions:

- -
-
(regex #?r"/([^\s]+)foobar/i")
-
/([^\s]+)foobar/i;
-
- -

Booleans and undefined

-
    -
  • T
  • -
  • F
  • -
  • FALSE
  • -
  • NIL
  • -
  • UNDEFINED
  • -
- -

T and FALSE (or F) are - converted to their JavaScript boolean - equivalents true and false.

- -

NIL is converted to the JavaScript keyword - null.

- -

UNDEFINED is converted to the JavaScript global - variable undefined.

- -

Objects

-
    -
  • (NEW constructor)
  • -
  • (CREATE {name value}*)
  • -
  • (GETPROP object {slot-specifier}*)
  • -
  • (@ {slot-specifier}*)
  • -
  • (CHAIN {slot-specifier | function-call}*)
  • -
  • (WITH-SLOTS ({slot-name}*) object body)
  • -
  • (DELETE object)
  • -
- -
-
constructor
a function call to an object constructor
-
name
symbol, string or keyword
-
value
an expression
-
object
an expression yielding an object
-
slot-specifier
a quoted symbol, a string, a number, or an expression yielding a string or number
-
body
implicit PROGN
-
- -

The NEW operator maps to JavaScript like:

- -
-
(new (-Person age shoe-size))
-
new Person(age, shoeSize);
-
- -

Object literals are created - with CREATE. CREATE takes a property - list of property names and values.

- -
-
- (create foo "bar" :blorg 1) -
- -
- { foo : 'bar', 'blorg' : 1 }; -
- -
-
(create foo "hihi"
-        blorg (array 1 2 3)
-        another-object (create :schtrunz 1))
-
- -
-
{ foo : 'hihi',
-     blorg : [ 1, 2, 3 ],
-     anotherObject : { 'schtrunz' : 1 } };
-
-
- -

Object properties can be accessed using - GETPROP, which takes an object and a list of - properties.

- -
-
(getprop obj 'foo)
-
obj.foo;
- -
(getprop obj foo)
-
obj[foo];
- -
(getprop element i 'child-node 0 'node-value)
-
element[i].childNode[0].nodeValue;
-
- -

The convenience macro @ quotes all its given - symbol slot-specifiers to save typing:

- -
-
(@ an-object foo bar)
-
anObject.foo.bar;
- -
(@ foo bar child-node 0 node-value)
-
foo.bar.childNode[0].nodeValue;
-
- -

CHAIN can be used to conveniently chain together - accessors and function calls:

- -
-
(chain foo (bar x y) 0 baz)
-
foo.bar(x, y)[0].baz;
-
- -

WITH-SLOTS can be used to bind the given - slot-names to a symbol macro that will expand into - a GETPROP form at expansion time:

- -
-
-
(with-slots (a b c) this
-  (+ a b c))
-
- -
- this.a + this.b + this.c; -
-
- -

Arrays

-
    -
  • (ARRAY {value}*)
  • -
  • (LIST {value}*)
  • -
  • ([] {value}*)
  • -
  • (MAKE-ARRAY {value}*)
  • -
  • (LENGTH array)
  • -
  • (AREF array index)
  • -
  • (ELT array index)
  • -
  • (DESTRUCTURING-BIND bindings array body)
  • -
  • (CONCATENATE 'STRING {value}*)
  • -
  • (APPEND {value}*)
  • -
- -
-
value
an expression
-
array
an expression
-
index
an expression
-
- -

Array literals can be created using the ARRAY - or LIST forms.

- -
-
(array)
-
[];
- -
(array 1 2 3)
-
[1, 2, 3];
- -
(list (foo) (bar) 3)
-
[foo(), bar(), 3];
- -
-
(array (array 2 3)
-  (array "foo" "bar"))
-
- -
- [[ 2, 3 ], ['foo', 'bar']]; -
-
- -

The [] macro treats list arguments as quoted, - making it easy to write nested array literals:

- -
-
([] 1 2 (3 4) 5 6)
-
[1, 2, [3, 4], 5, 6];
-
- -

Arrays can also be created with a call to the Array - function using MAKE-ARRAY.

- -
-
(make-array)
-
new Array();
- -
(make-array 1 2 3)
-
new Array(1, 2, 3);
- -
-
(make-array
- (make-array 2 3)
- (make-array "foobar" "bratzel bub"))
-
- -
- new Array(new Array(2, 3), new Array('foobar', 'bratzel bub')); -
-
- -

Array elements can be accessed using AREF or ELT.

- -

Arithmetic and boolean operators

-
    -
  • (<operator> {argument}*)
  • -
  • (<single-operator> argument)
  • -
- -
-
<operator>
-
one of *, /, +, -, <, >, <=, >=, =, AND, ASH, EQ, EQL, EQUAL, LOGAND, LOGIOR, LOGXOR, MOD, OR, REM, SETF -
-
<single-operator>
-
one of DECF, INCF, LOGNOT, NOT
- -
argument
an expression
-
- -

Operator forms are similar to function call forms, but have an - operator as function name.

- -

Please note that = is converted to === in - JavaScript. The = Parenscript operator is not the - assignment operator.

- -
-
(* 1 2)
-
1 * 2;
- -
(= 1 2)
-
1 === 2;
-
- -

The negation of equality operators are obtained by through NOT. For example:

- -
-
(not (eql 1 2))
-
1 !== 2
-
- -

The operators that in CL have variable arity convert into multiple calls - to the equivalent operators in JavaScript

- -
-
(logxor 1 3 7 15)
-
1 ^ 3 ^ 7 ^ 15
-
- -

Mathematical functions and constants

-
    -
  • (MAX {number}*)
  • -
  • (MIN {number}*)
  • -
  • (FLOOR number &optional divisor)
  • -
  • (CEILING number &optional divisor)
  • -
  • (ROUND number &optional divisor)
  • -
  • (SIN number)
  • -
  • (COS number)
  • -
  • (TAN number)
  • -
  • (ASIN number)
  • -
  • (ACOS number)
  • -
  • (ATAN number1 &optional number2)
  • -
  • (SINH number)
  • -
  • (COSH number)
  • -
  • (TANH number)
  • -
  • (ASINH number)
  • -
  • (ACOSH number)
  • -
  • (ATANH number)
  • -
  • (1+ number)
  • -
  • (1- number)
  • -
  • (ABS number)
  • -
  • (EVENP number)
  • -
  • (ODDP number)
  • -
  • (EXP number)
  • -
  • (EXPT base power)
  • -
  • (LOG number &optional base)
  • -
  • (SQRT number)
  • -
  • (RANDOM &optional limit)
  • - -
  • PI
  • -
- -

- The mathematical functions listed above work mostly like their - Common Lisp counterparts when called directly, with the - exception that complex numbers are not supported. However, most - of them are implemented as macros, and as such cannot be treated - as first-class functions. -

- -

Blocks

-
    -
  • - (BLOCK name {expression | statement}*) -
  • -
  • - (PROGN {statement}*) in statement context -
  • -
  • - (PROGN {expression}*) in expression context -
  • -
  • - (PROG1 {expression | statement}*) -
  • -
  • - (PROG2 {expression | statement}*) -
  • -
  • - (EVAL-WHEN {expression | statement}*) -
  • -
- -
-
name
Name/tag of the block. A symbol or nil.
-
statement
a form that compiles to a statement
-
expression
a form that compiles to an expression
-
- -

- The translation of PROGN depends on whether it is - found in a statement or expression context: -

- -
-
(progn (blorg i) (blafoo i))
-
-
blorg(i);
-blafoo(i);
-
- -
(+ i (progn (blorg i) (blafoo i)))
-
i + (blorg(i), blafoo(i));
-
- -

- The Parenscript EVAL-WHEN special operator has a - slightly different meaning from the Common Lisp one. The code in - the EVAL-WHEN special form is assumed to be Common - Lisp code in :compile-toplevel - and :load-toplevel situations, and is executed by - the Parenscript compiler, and is assumed to be Parenscript code - in the :execute situation, when it is run as - JavaScript. -

- -

Functions and multiple values

-
    -
  • (DEFUN name lambda-list body)
  • -
  • (LAMBDA lambda-list body)
  • -
  • (FLET ({(name lambda-list body)}*) body)
  • -
  • (LABELS ({(name lambda-list body)}*) body)
  • -
  • (VALUES {expression}*)
  • -
  • (MULTIPLE-VALUE-BIND ({var}*) expression body)
  • -
  • (APPLY function {expression}*)
  • -
  • (FUNCALL function {expression}*)
  • -
  • THIS
  • -
- -
-
expression
a form that compiles to an expression
-
name
a symbol
-
lambda-list
a lambda list
-
body
implicit PROGN
-
var
a symbol naming a variable
-
function
an expression that yields a function
-
- -

- New function definitions can be introduced using all the regular - Lisp forms - - DEFUN, LAMBDA, FLET, - and LABELS. Function lambda lists - support &optional, &rest and - &key arguments. -

- -

- The Parenscript multiple value facility passes the first return - value using the regular JavaScript convention, therefore - functions returning multiple values can be called by regular - JavaScript code and MULTIPLE-VALUE-BIND works with - regular JavaScript functions. -

- -

- APPLY is a macro that expands into a call to the - JavaScript apply method. -

- -

Control transfer and exceptions

-
    -
  • - (RETURN {value}?) -
  • -
  • - (RETURN-FROM name {value}?) -
  • -
  • - (THROW {exp}?) -
  • -
  • - (TRY form - {(:CATCH (var) body)}? - {(:FINALLY body)}?) -
  • -
  • - (UNWIND-PROTECT protected-form cleanup-form) -
  • -
  • - (IGNORE-ERRORS body) -
  • -
- -
-
value
a statement or expression
-
name
name of block to return from
-
exp
an expression
-
var
variable to which the value of the caught THROW is bound
-
body
implicit PROGN
-
- -

- Parenscript support nested blocks and the RETURN - and RETURN-FROM special forms. -

- -
-
-
(defun foo (x)
-  (progn
-    (abc)
-    (return-from foo
-      (case x
-        (1 :a)
-        (2 :b)))
-    (xyz)))
-
- -
-
function foo(x) {
-    abc();
-    switch (x) {
-    case 1:
-        return 'a';
-    case 2:
-        return 'b';
-    };
-    return xyz();
-};
-
-
- -

- Currently, THROW translates directly into the - JavaScript throw, to be used with TRY, - which is translated to the JavaScript try. -

- -
-
-
(try (throw "i")
- (:catch (error)
-   (alert (+ "an error happened: " error)))
- (:finally
-   (alert "Leaving the try form")))
-
- -
-
try {
-       throw 'i';
-   } catch (error) {
-       alert('an error happened: ' + error);
-   } finally {
-       alert('Leaving the try form');
-   };
-
-
- -

Conditionals

-
    -
  • (IF condition then {else})
  • -
  • (WHEN condition then)
  • -
  • (UNLESS condition then)
  • -
  • (COND {clause}*)
  • -
  • (CASE case-value clause*)
  • -
  • (SWITCH case-value clause*)
  • -
  • BREAK
  • -
- -
-
condition
an expression
-
then
a statement in statement context, or an expression in expression context
-
else
a statement in statement context, or an expression in expression context
-
clause
(<value> body) | (default body)
-
- -

IF, WHEN, UNLESS and COND work like - their Lisp counterparts, and are compiled either into statements - or expressions, depending on the context:

- -
-
- (cond ((= x 1) (+ x (if (foo y) 2 3)))) -
- -
-
if (x == 1) {
-    x + (foo(y) ? 2 : 3);
-};
-
-
- -

- CASE works similar to its Common Lisp equivalent. -

- -

- An additional form, SWITCH, takes the same syntax - as CASE, but the individual branches must be - terminated with the - symbol BREAK. This allows - C-style case "fall-throughs" in switch statements: -

- -
-
-
(switch (aref blorg i)
-  (1 (alert "If I get here"))
-  (2 (alert "I also get here")
-     break)
-  (default (alert "I always get here")))
-
- -
-
switch (blorg[i]) {
-case 1:
-    alert('If I get here');
-case 2:
-    alert('I also get here');
-    break;
-default:
-    alert('I always get here');
-};
-
-
- -

Note that the default case in a SWITCH statement - must be named DEFAULT.

- -

Variable binding and declaration

-
    -
  • (LET ({var | (var value)}*) body)
  • -
  • (LET* ({var | (var value)}*) body)
  • -
  • (DEFVAR var {value}?)
  • -
  • (DEFPARAMETER var {value}?)
  • -
  • (VAR var {value}?)
  • -
- -
-
var
a symbol
-
value
an expression
-
body
implicit PROGN
-
object
an expression evaluating to an object
-
- -

Parenscript provides the LET and LET* - special forms for creating new variable bindings. Both special - forms implement lexical scope by renaming the provided variables - via GENSYM, and implement - dynamic binding - using TRY-FINALLY.

- -

Special variables can be declared using - DEFVAR. Note that the result is undefined - if DEFVAR does not occur as a top-level form.

- -

One Parenscript feature that is not part of Common Lisp is the - lexically-scoped global variable, which is declared using - the VAR special form. The result is undefined - if VAR does not occur as a top-level form.

- -

An example of variable declaration and binding:

- -
-
-
(defvar *a* 4)
-(var *b* 3)
-(lambda ()
-  (let ((x 1)
-        (*a* 2)
-        (*b* 6))
-    (let* ((y (+ x 1))
-           (x (+ x y)))
-      (+ *a* *b* x y))))
-
- -
-
var A = 4;
-var B = 3;
-function () {
-    var x = 1;
-    var B = 6;
-    var A_TMPSTACK1;
-    try {
-        A_TMPSTACK1 = A;
-        A = 2;
-        var y = x + 1;
-        var x2 = x + y;
-        return A + B + x2 + y;
-    } finally {
-        A = A_TMPSTACK1;
-    };
-};
-
-
- -

Assignment

- -

Parenscript assignment is done via the - standard SETF, SETQ, - PSETF, and PSETQ - Lisp special forms. Parenscript supports the Common Lisp - protocol of SETFable places.

- -

New places can be defined in one of two ways: using - DEFSETF or using DEFUN with a setf - function name; both are analogous to their Common Lisp - counterparts. DEFSETF supports both long and short - forms, while DEFUN of a setf place generates a - JavaScript function name with the __setf_ - prefix:

- -
-
-
(defun (setf color) (new-color el)
-  (setf (@ el style color) new-color))
-
- -
-
function __setf_color(newColor, el) {
-    return el.style.color = newColor;
-};
-
- -
- (setf (color some-div) (+ 23 "em")) -
- -
-
var _js2 = someDiv;
-var _js1 = 23 + 'em';
-__setf_color(_js1, _js2);
-
-
- -

The following example illustrates how setf places can be used - to provide a uniform protocol for positioning elements in HTML - pages:

- -
-
-
(defsetf left (el) (offset)
-  `(setf (@ ,el style left) ,offset))
-
-(defmacro left (el)
-  `(@ ,el offset-left))
-
-(setf (left some-div) (+ 123 "px"))
-(left some-div)
-
- -
-
var _js2 = someDiv;
-var _js1 = 123 + 'px';
-_js2.style.left = _js1;
-someDiv.offsetLeft;
-
-
- -

Iteration

-
    -
  • (DO ({var | (var {init}? {step}?)}*) (end-test {result}?) body)
  • -
  • (DO* ({var | (var {init}? {step}?)}*) (end-test {result}?) body)
  • -
  • (DOTIMES (var numeric-form {result}?) body)
  • -
  • (DOLIST (var list-form {result}?) body)
  • -
  • (FOR-IN (var object) body)
  • -
  • (LOOP {<loop clauses>}*)
  • -
- -
-
var
a symbol
-
numeric-form
a number yielding expression
-
list-form
an array yielding expression
-
object-form
an object yielding expression
-
init
an expression
-
step
an expression
-
end-test
an expression
-
result
an expression
-
body
implicit PROGN
-
- -

Parenscript comes with a wide array of Common Lisp iteration - constructs that compile to efficient JavaScript code, - including a partial implementation of LOOP.

- -

Macros

-

Defining macros

-
    -
  • (DEFMACRO name lambda-list macro-body)
  • -
  • (DEFPSMACRO name lambda-list macro-body)
  • -
  • (DEFMACRO+PS name lambda-list macro-body)
  • -
  • (IMPORT-MACROS-FROM-LISP {symbol}*)
  • -
  • (MACROLET ({name lambda-list macro-body}*) body)
  • -
- -
-
name
a symbol
-
lambda-list
a lambda list
-
macro-body
Lisp code evaluating to Parenscript code
-
body
implicit PROGN
-
symbol
symbol with a Lisp macro function definition
-
- -

Parenscript macros are like Lisp macros in that they have - access to the full Lisp language, but different in that they must - produce Parenscript code. Since Parenscript provides a large - subset of Common Lisp, many Lisp macros already produce valid - Parenscript code, and vice-versa. Parenscript provides several - different ways to define new macros, and to use already existing - Common Lisp macros.

- -

DEFMACRO and MACROLET can be used to - define new macros in Parenscript code. Note that macros defined - this way are defined in a null lexical environment (ex - - (let ((x 1)) (defmacro baz (y) `(+ ,y ,x))) will - not work), since the surrounding Parenscript code is just - translated to JavaScript and not actually evaluated.

- -

DEFPSMACRO is a Lisp form (not a Parenscript one!) - that can be used by Lisp code to define Parenscript macros without - calling the Parenscript compiler.

- -

The representation of Parenscript macro functions is the same - as that of Common Lisp, and in fact Parenscript can use already - defined macros this way. - -

DEFMACRO+PS defines two macros with the same name - and expansion, one in Parenscript and one in - Lisp. DEFMACRO+PS is used when the full - macro-expansion of the Lisp macro yields code that cannot be used - by Parenscript.

- -

Parenscript also supports the use of macros defined in the - underlying Lisp environment. Existing Lisp macros can be - imported into the Parenscript macro environment - by IMPORT-MACROS-FROM-LISP. This functionality - enables code sharing between Parenscript and Lisp, and is useful - in debugging since the full power of Lisp macro-expanders, - editors and other supporting facilities can be used. However, it - is important to note that the macro-expansion of Lisp macros and - Parenscript macros takes place in their own respective - environments, and many Lisp macros (especially those provided by - the Lisp implementation) expand into code that is not usable by - Parenscript. To make it easy for users to take advantage of - these features, two additional macro definition facilities are - provided by Parenscript:

- -

Symbol macros

- -
    -
  • (DEFINE-PS-SYMBOL-MACRO symbol expansion)
  • -
  • (SYMBOL-MACROLET ({name macro-body}*) body)
  • -
- -

Symbol macros can be introduced - using SYMBOL-MACROLET or defined in Lisp - with DEFINE-PS-SYMBOL-MACRO. For example, the - Parenscript - WITH-SLOTS is implemented using symbol macros:

- -
-
-
(defpsmacro with-slots (slots object &rest body)
-  `(symbol-macrolet ,(mapcar #'(lambda (slot)
-                                 `(,slot '(getprop ,object ',slot)))
-                             slots)
-    ,@body))
-
-
- -

Gensym

-
    -
  • (PS-GENSYM {string})
  • -
  • (WITH-PS-GENSYMS symbols &body body)
  • -
  • (PS-ONCE-ONLY (&rest vars) &body body)
  • -
  • (MAYBE-ONCE-ONLY (&rest vars) &body body)
  • - -
  • *PS-GENSYM-COUNTER*
  • -
- -

JavaScript identifier equality is based on string - representations, as opposed to Common Lisp, where two uninterned - symbols with the same name are different objects. Therefore - Parenscript GENSYM depends - on *PS-GENSYM-COUNTER* values only for generating - unique identifiers. *PS-GENSYM-COUNTER* does not - persist and is not guaranteed to be thread-safe, so care should be - taken to avoid writing var where gensymed identifiers may clash - (for example, this could happen if you concatenate JS var from PS - compilers running in two different Lisp images, where the values - of *PS-GENSYM-COUNTER* overlap). - -

Utilities

- -

DOM

-
    -
  • (INNER-HTML el)
  • -
  • (URI-ENCODE el)
  • -
  • (ATTRIBUTE el)
  • -
  • (OFFSET compass el)
  • -
  • (SCROLL compass el)
  • -
  • (INNER wh el)
  • -
  • (CLIENT wh el)
  • -
- -
-
el
an expression that yields a DOM element
-
compass
one of :TOP, :LEFT, :HEIGHT, :WIDTH, :BOTTOM, :RIGHT
-
wh
one of :WIDTH, :HEIGHT
-
- -

HTML generation

-
    -
  • (PS-HTML html-expression)
  • -
  • (WHO-PS-HTML html-expression)
  • -
  • *PS-HTML-EMPTY-TAG-AWARE-P*
  • -
  • *PS-HTML-MODE*
  • -
- -

Parenscript comes with two HTML markup generation facilities - that produce Parenscript code - PS-HTML - and WHO-PS-HTML. The former - accepts LHTML - style markup; the latter - accepts CL-WHO - style markup.

- -

*PS-HTML-EMPTY-TAG-AWARE-P* - and *PS-HTML-MODE* control how tags are closed when an - HTML element has no - content. When *PS-HTML-EMPTY-TAG-AWARE-P* is nil, all - tags are fully closed (ex - :BR is translated - as <BR></BR>). When *PS-HTML-EMPTY-TAG-AWARE-P* - has a non-nil value and *PS-HTML-MODE* - is :SGML, tags such as BR are output without - being closed. When *PS-HTML-MODE* is :XML, - XML-style closing tags are used (ex - :BR is - translated as <BR />).

- -
-
(ps-html ((:a :href "foobar") "blorg"))
-
'<A HREF=\"foobar\">blorg</A>';
- -
(who-ps-html (:a :href (generate-a-link) "blorg"))
-
'<A HREF=\"' + generateALink() + '\">blorg</A>';
-
- -

The Parenscript compiler can be recursively called in an HTML - expression:

- -
-
-
((@ document write)
-  (ps-html ((:a :href "#"
-                :onclick (ps-inline (transport))) "link")))
-
- -
document.write('<A HREF=\"#\" ONCLICK=\"' + ('javascript:' + 'transport()') + '\">link</A>');
-
- -

Forms may be used in attribute lists to conditionally generate - the next attribute. In this example the textarea is sometimes - disabled.

- -
-
-
(let ((disabled nil)
-      (authorized t))
-   (setf (@ element inner-h-t-m-l)
-         (ps-html ((:textarea (or disabled (not authorized)) :disabled "disabled")
-                "Edit me"))))
-
- -
-
var disabled = null;
-   var authorized = true;
-   element.innerHTML =
-   '<TEXTAREA'
-   + (disabled || !authorized ? ' DISABLED=\"' + 'disabled' + '\"' : '')
-   + '>Edit me</TEXTAREA>';
-
-
- -

Run-time library

-
    -
  • (MEMBER object array)
  • -
  • (MAP function array)
  • -
  • (MAPCAR function {array}*)
  • -
  • (REDUCE function array object)
  • -
  • (MAP-INTO function array)
  • -
  • (SET-DIFFERENCE array1 array2)
  • -
  • *PS-LISP-LIBRARY*
  • -
- -

All the Parenscript constructs presented so far have been free - of any run-time dependencies. Parenscript also comes with a library - of useful predefined functions that can be added to your - project. These functions are kept as Parenscript code in - the *PS-LISP-LIBRARY* special variable.

- -

MAP differs from its Common Lisp counterpart by - virtue of being a MAPCAR that only accepts a single - sequence to map over. MAP-UNTIL is - like MAP but replaces the contents of the given - array in-place.

- -

SLIME integration

- -

The extras folder in the Parenscript distribution - contains js-expander.el, which when loaded in Emacs - with SLIME adds the ability to quickly see the translation of - any Lisp form in JavaScript, and works much like the Slime 'C-c - M-m' macro-expansion feature.

- -

'C-c j' (PS) or - 'C-c d' (PS-DOC) - at a Parenscript expression in a slime-mode buffer - will bring up a buffer with the resulting JavaScript code. Note - that the extension does not work - in slime-repl-mode, which is intentional.

- -

extras/swank-parenscript.lisp shows how to add support - to SLIME for printing hints about Parenscript-defined macro and - function argument lists to the Emacs minibuffer, like SLIME - already does for Common Lisp functions and macros.

- -

Last updated: 2018-10-27

- - diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/docs/tutorial.html b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/docs/tutorial.html deleted file mode 100644 index b455062..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/docs/tutorial.html +++ /dev/null @@ -1,350 +0,0 @@ - - - - - - - - Parenscript Tutorial - - - - -

Parenscript Tutorial

- -

- Copyright 2009, 2018 Vladimir Sedach.
- - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.3 or any later version published by the Free Software - Foundation; with no Invariant Sections, no Front-Cover Texts, - and no Back-Cover Texts. A copy of the license can be - found on the - GNU website. -

- -

Introduction

- -

- This tutorial shows how to build a simple web application in - Common Lisp, specifically demonstrating - the Parenscript - Lisp to JavaScript compiler. -

- -

- The Parenscript - reference manual contains a description of Parenscript - functions and macros. -

- -

Getting Started

- -

- First, install a Common Lisp - implementation. SBCL is a good - one; CLiki has - a comprehensive - list of Common Lisp implementations. Next, get - the Quicklisp package - manager. -

- -

- This tutorial uses the following libraries: -

- -
-
CL-FAD
-
file utilities
- -
CL-WHO
-
HTML generator
- -
Hunchentoot
-
web server
- -
Parenscript
-
JavaScript generator
-
- -

- Load them using Quicklisp: -

- -
(mapc #'ql:quickload '(:cl-fad :cl-who :hunchentoot :parenscript))
- -

- Next, define a package to hold the example code: -

- -
(defpackage "PS-TUTORIAL"
-  (:use "COMMON-LISP" "HUNCHENTOOT" "CL-WHO" "PARENSCRIPT" "CL-FAD"))
-
-(in-package "PS-TUTORIAL")
- -

- CL-WHO leaves it up to you to escape HTML attributes. One way to - make sure that quoted strings in inline JavaScript work inside - HTML attributes is to use double quotes for HTML attributes and - single quotes for JavaScript strings. -

- -
(setq cl-who:*attribute-quote-char* #\")
- -

- Now start the web server: -

- -
(start (make-instance 'easy-acceptor :port 8080))
- -

Examples

- -

- The ps macro takes Parenscript code in the form of - s-expressions (Parenscript code and Common Lisp code share the - same representation), translates as much as it can into constant - strings at macro-expansion time, and expands into a form that - will evaluate to a string containing JavaScript code. -

- -
(define-easy-handler (example1 :uri "/example1") ()
-  (with-html-output-to-string (s)
-    (:html
-     (:head (:title "Parenscript tutorial: 1st example"))
-     (:body (:h2 "Parenscript tutorial: 1st example")
-            "Please click the link below." :br
-            (:a :href "#" :onclick (ps (alert "Hello World"))
-                "Hello World")))))
- -

- One way to include Parenscript code in web pages is to inline it - in HTML script tags: -

- -
(define-easy-handler (example2 :uri "/example2") ()
-  (with-html-output-to-string (s)
-    (:html
-     (:head
-      (:title "Parenscript tutorial: 2nd example")
-      (:script :type "text/javascript"
-               (str (ps
-                      (defun greeting-callback ()
-                        (alert "Hello World"))))))
-     (:body
-      (:h2 "Parenscript tutorial: 2nd example")
-      (:a :href "#" :onclick (ps (greeting-callback))
-          "Hello World")))))
- -

- Another way to integrate Parenscript into a web application is - to serve the generated JavaScript as a separate HTTP resource. - Requests to this resource can then be cached by the browser: -

- -
(define-easy-handler (example3 :uri "/example3.js") ()
-  (setf (content-type*) "text/javascript")
-  (ps
-    (defun greeting-callback ()
-      (alert "Hello World"))))
- -

Slideshow

- -

- Next let's try a more complicated example: an image slideshow - viewer. -

- -

- First we need a way to define slideshows. For this tutorial we - will assume that we have several different folders containing - image files, and we want to serve each of the folders as its own - slideshow under its own URL. We will use a custom Hunchentoot - handler to serve the slideshow - under /slideshows/{slideshow-name}, and the - built-in Hunchentoot - folder - dispatcher to serve the image files - from /slideshow-images/{slideshow-name}/{image-file}. -

- -
(defvar *slideshows* (make-hash-table :test 'equalp))
-
-(defun add-slideshow (slideshow-name image-folder)
-  (setf (gethash slideshow-name *slideshows*) image-folder)
-  (push (create-folder-dispatcher-and-handler
-         (format nil "/slideshow-images/~a/" slideshow-name)
-         image-folder)
-        *dispatch-table*))
- -

- Let's find some important pictures on our machine and get - Hunchentoot to start serving them: -

- -
(add-slideshow "lolcat" "/home/junk/lolcats/")
-(add-slideshow "lolrus" "/home/other-junk/lolruses/")
- -

- Next we need to create the slideshow web page. We can use - JavaScript to view the slideshow without refreshing the whole - page, and provide regular link navigation for client browsers - that do not have JavaScript enabled. Either way, we want viewers - of our slideshow to be able to bookmark their place in the - slideshow viewing sequence. -

- -

- We will need a way to generate URIs for slideshow images on both - the server and browser. We can eliminate code duplication with - the defmacro+ps macro, which shares macro - definitions between Common Lisp and Parenscript. -

- -
(defmacro+ps slideshow-image-uri (slideshow-name image-file)
-  `(concatenate 'string "/slideshow-images/" ,slideshow-name "/" ,image-file))
- -

- Next is the function to serve up the slideshow page. The pages - will be served under /slideshows/{slideshow-name}, - all of them handled by a single function that will dispatch on - {slideshow-name}. -

- -

- JavaScript-enabled web browsers will get information about the - slideshow in an inline script generated - by ps*, - a function used for translating code generated at run-time. - Slideshow navigation will be done with onclick - handlers, generated at compile-time by - the ps - macro. -

- -

- Regular HTML slideshow navigation will be done using query - parameters. -

- -
(defun slideshow-handler ()
-  (cl-ppcre:register-groups-bind (slideshow-name)
-      ("/slideshows/(.*)" (script-name*))
-    (let* ((images (mapcar
-                    (lambda (i) (url-encode (file-namestring i)))
-                    (list-directory
-                     (or (gethash slideshow-name *slideshows*)
-                         (progn (setf (return-code*) 404)
-                                (return-from slideshow-handler))))))
-           (current-image-index
-             (or (position (url-encode (or (get-parameter "image") ""))
-                           images
-                           :test #'equalp)
-                 0))
-           (previous-image-index (max 0
-                                      (1- current-image-index)))
-           (next-image-index (min (1- (length images))
-                                  (1+ current-image-index))))
-      (with-html-output-to-string (s)
-        (:html
-         (:head
-          (:title "Parenscript slideshow")
-          (:script
-           :type "text/javascript"
-           (str
-            (ps*
-             `(progn
-                (var *slideshow-name* ,slideshow-name)
-                (var *images* (array ,@images))
-                (var *current-image-index* ,current-image-index)))))
-          (:script :type "text/javascript" :src "/slideshow.js"))
-         (:body
-          (:div :id "slideshow-container"
-                :style "width:100%;text-align:center"
-                (:img :id "slideshow-img-object"
-                      :src (slideshow-image-uri
-                            slideshow-name
-                            (elt images current-image-index)))
-                :br
-                (:a :href (format nil "/slideshows/~a?image=~a"
-                                  slideshow-name
-                                  (elt images previous-image-index))
-                    :onclick (ps (previous-image) (return false))
-                    "Previous")
-                " "
-                (:a :href (format nil "/slideshows/~a?image=~a"
-                                  slideshow-name
-                                  (elt images next-image-index))
-                    :onclick (ps (next-image) (return false))
-                    "Next"))))))))
- -

- Since this function is a custom handler, we need to create a new - dispatcher for it. Note that we are passing the symbol naming - the handler instead of the function object, which lets us - redefine the handler without touching the dispatcher. -

- -
(push (create-prefix-dispatcher "/slideshows/" 'slideshow-handler)
-      *dispatch-table*)
- -

- Last, we need to define the /slideshow.js script. -

- -
(define-easy-handler (js-slideshow :uri "/slideshow.js") ()
-  (setf (content-type*) "text/javascript")
-  (ps
-    (define-symbol-macro fragment-identifier (@ window location hash))
-
-    (defun show-image-number (image-index)
-      (let ((image-name (aref *images* (setf *current-image-index* image-index))))
-        (setf (chain document (get-element-by-id "slideshow-img-object") src)
-              (slideshow-image-uri *slideshow-name* image-name)
-              fragment-identifier
-              image-name)))
-
-    (defun previous-image ()
-      (when (> *current-image-index* 0)
-        (show-image-number (1- *current-image-index*))))
-
-    (defun next-image ()
-      (when (< *current-image-index* (1- (getprop *images* 'length)))
-        (show-image-number (1+ *current-image-index*))))
-
-    ;; use fragment identifiers to allow bookmarking
-    (setf (getprop window 'onload)
-          (lambda ()
-            (when fragment-identifier
-              (let ((image-name (chain fragment-identifier (slice 1))))
-                (dotimes (i (length *images*))
-                  (when (string= image-name (aref *images* i))
-                    (show-image-number i)))))))))
- -

- Note - the @ - and chain - property access convenience macros. (@ object slotA - slotB) expands to - (getprop (getprop object 'slotA) - 'slotB). chain is similar and also provides - nested method calls. -

- -

Author: Vladimir Sedach <vas@oneofus.la> Last modified: 2018-03-29

- - diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/extras/firebug-tracing.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/extras/firebug-tracing.lisp deleted file mode 100644 index 3217e91..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/extras/firebug-tracing.lisp +++ /dev/null @@ -1,32 +0,0 @@ -;; SPDX-License-Identifier: BSD-3-Clause - -;; Tracing macro courtesy of William Halliburton -;; , logs to Firebug console - -;; On a happier note here is a macro I wrote to enable -;; tracing-ala-cl. Works with firebug. You'll need to (defvar -;; *trace-level*). I don't do indentation but that would be an easy -;; addition. - -(defpsmacro console (&rest rest) - `(console.log ,@rest)) - -(defpsmacro defun-trace (name args &rest body) - (let* ((sname (ps::symbol-to-js name)) - (tname (ps-gensym name)) - (arg-names (loop for arg in args - unless (eq arg '&optional) - collect (if (consp arg) (car arg) arg))) - (argpairs - (loop for arg in arg-names - nconc (list (ps::symbol-to-js arg) arg)))) - `(progn - (defun ,name ,arg-names - (console *trace-level* ,sname ":" ,@argpairs) - (incf *trace-level*) - (let* ((rtn (,tname ,@arg-names))) - (decf *trace-level*) - (console *trace-level* ,sname "returned" rtn) - (return rtn))) - (defun ,tname ,args - ,@body)))) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/extras/js-expander.el b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/extras/js-expander.el deleted file mode 100644 index 0d38282..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/extras/js-expander.el +++ /dev/null @@ -1,55 +0,0 @@ -;; SPDX-License-Identifier: BSD-3-Clause - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; This is an extension to SLIME that is inspired by (and works -;;;; like) the SLIME 'C-c M-m' macroexpansion feature. - -;;;; After loading, 'C-c j' (PS) or 'C-c d' (PS-DOC) at a ParenScript -;;;; expression in a slime-mode buffer will bring up a buffer with the -;;;; resulting Javascript code. Note that the extension does not work -;;;; in slime-repl-mode, which is intentional. - -;;;; Copyright 2007, Vladimir Sedach. See the COPYING file in the -;;;; Parenscript distribution for licensing information. - -;;; The code below is a generic facility for adding "macroexpand-like" buffer expansion to Slime -(defun slime-eval-custom-expand (expander exp-str package buffer-name buffer-mode printer) - (lexical-let ((package package) - (buffer-name buffer-name) - (buffer-mode buffer-mode) - (printer printer)) - (slime-eval-async - (list 'swank:eval-and-grab-output (format "(%s %s)" expander exp-str)) - (lambda (expansion) - (slime-with-popup-buffer (buffer-name) - (funcall buffer-mode) - (setq buffer-read-only nil) - (erase-buffer) - (insert (funcall printer (second expansion))) - (setq buffer-read-only t) - (font-lock-fontify-buffer))) - package))) - -(defun* slime-add-custom-expander (key expander buffer-name &optional (buffer-mode 'slime-mode) (printer #'identity)) - (define-key slime-parent-map (concat "\C-c" key) - (lexical-let ((expander expander) - (buffer-name buffer-name) - (buffer-mode buffer-mode) - (printer printer)) - (lambda (&rest _) - (interactive "P") - (slime-eval-custom-expand expander - (slime-sexp-at-point) - (slime-current-package) - buffer-name - buffer-mode - printer))))) - -;;; This actually defines the expander. If the code above belongs in slime.el, the code below would go into .emacs -(map nil (lambda (x) - (slime-add-custom-expander (car x) - (cdr x) - "*Parenscript generated Javascript*" - (if (featurep 'javascript-mode) 'javascript-mode 'c-mode) - #'read)) - '(("j" . ps:ps) ("d" . ps:ps-doc))) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/extras/swank-parenscript.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/extras/swank-parenscript.lisp deleted file mode 100644 index 63215b8..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/extras/swank-parenscript.lisp +++ /dev/null @@ -1,19 +0,0 @@ -;; SPDX-License-Identifier: BSD-3-Clause - -(in-package :parenscript) - -(defun parenscript-function-p (symbol) - (and (or (gethash symbol *ps-macro-toplevel* ) - (gethash symbol *ps-function-toplevel-cache*)) - t)) -#++ -(pushnew 'parenscript-function-p swank::*external-valid-function-name-p-hooks*) - -(defun parenscript-arglist (fname) - (acond - ((gethash fname *ps-macro-toplevel-lambda-list*) - (values it t)) - ((gethash fname *ps-function-toplevel-cache*) - (values it t)))) -#++ -(pushnew 'parenscript-arglist swank::*external-arglist-hooks*) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/parenscript.asd b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/parenscript.asd deleted file mode 100644 index e632d63..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/parenscript.asd +++ /dev/null @@ -1,35 +0,0 @@ -;;;; -*- lisp -*- - -(defsystem :parenscript - :name "parenscript" - :author "Manuel Odendahl " - :maintainer "Vladimir Sedach " - :licence "BSD-3-Clause" - :description "Lisp to JavaScript transpiler" - :components - ((:static-file "parenscript.asd") - (:module :src - :serial t - :components ((:file "package") - (:file "js-dom-symbol-exports") ;; has to be loaded here, ps-js-symbols externals are re-exported from #:parenscript package - (:file "js-ir-package") - (:file "utils") - (:file "namespace") - (:file "compiler") - (:file "printer") - (:file "compilation-interface") - (:file "non-cl") - (:file "special-operators") - (:file "parse-lambda-list") - (:file "function-definition") - (:file "macros") - (:file "deprecated-interface") - (:module :lib - :components ((:file "ps-html") - (:file "ps-loop") - (:file "ps-dom")) - :depends-on ("compilation-interface")))) - (:module :runtime - :components ((:file "ps-runtime-lib")) - :depends-on (:src))) - :depends-on (:cl-ppcre :anaphora :named-readtables)) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/parenscript.tests.asd b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/parenscript.tests.asd deleted file mode 100644 index 2ab323a..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/parenscript.tests.asd +++ /dev/null @@ -1,13 +0,0 @@ -;;;; -*- lisp -*- - -(defsystem :parenscript.tests - :license "BSD-3-Clause" - :description "Unit tests for Parenscript" - :components ((:module :tests - :serial t - :components ((:file "test-package") - (:file "test") - (:file "output-tests") - (:file "package-system-tests") - (:file "eval-tests")))) - :depends-on (:parenscript :fiveam :cl-js)) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/runtime/ps-runtime-lib.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/runtime/ps-runtime-lib.lisp deleted file mode 100644 index 8f549dd..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/runtime/ps-runtime-lib.lisp +++ /dev/null @@ -1,69 +0,0 @@ -;; SPDX-License-Identifier: BSD-3-Clause - -(in-package #:parenscript) - -;;; Script of library functions you can include with your own code to -;;; provide standard Lisp functionality. - -(defparameter *ps-lisp-library* - '(progn - (defun mapcar (fun &rest arrs) - (let ((result-array (make-array))) - (if (= 1 (length arrs)) - (dolist (element (aref arrs 0)) - ((@ result-array push) (fun element))) - (dotimes (i (length (aref arrs 0))) - (let ((args-array (mapcar (lambda (a) (aref a i)) arrs))) - ((@ result-array push) ((@ fun apply) fun args-array))))) - result-array)) - - (defun map-into (fn arr) - "Call FN on each element in ARR, replace element with the return value." - (let ((idx 0)) - (dolist (el arr) - (setf (aref arr idx) (fn el)) - (setf idx (1+ idx)))) - arr) - - (defun map (fn arr) - "Call FN on each element in ARR and return the returned values in a new array." - ;; In newer versions of ECMAScript, this may call Array.map, too - (let ((idx 0) - (result (array))) - (dolist (el arr) - (setf (aref result idx) (fn el)) - (setf idx (1+ idx))) - result)) - - (defun member (item arr) - "Check if ITEM is a member of ARR." - (dolist (el arr) - (if (= el item) - (return-from member true))) - false) - - (defun set-difference (arr arr-to-sub) - "Return a new array with only those elements in ARR that are not in ARR-TO-SUB." - (let ((idx 0) - (result (array))) - (dolist (el arr) - (unless (member el arr-to-sub) - (setf (aref result idx) el) - (setf idx (1+ idx)))) - result)) - - (defun reduce (func list &optional init) - (let* ((acc)) - (do* ((i (if (= (length arguments) 3) -1 0) - (1+ i)) - (acc (if (= (length arguments) 3) init (elt list 0)) - (func acc (elt list i)))) - ((>= i (1- (length list))))) - acc)) - - (defun nconc (arr &rest arrs) - (when (and arr (> (length arr) 0)) - (loop :for other :in arrs :when (and other (> (length other) 0)) :do - ((@ arr :splice :apply) arr - (append (list (length arr) (length other)) other)))) - arr))) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/compilation-interface.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/compilation-interface.lisp deleted file mode 100644 index 4cf702e..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/compilation-interface.lisp +++ /dev/null @@ -1,133 +0,0 @@ -;;; Copyright 2005 Manuel Odendahl -;;; Copyright 2005-2006 Edward Marco Baringer -;;; Copyright 2006 Luca Capello -;;; Copyright 2007-2009 Red Daly -;;; Copyright 2008 Travis Cross -;;; Copyright 2007-2011 Vladimir Sedach -;;; Copyright 2009-2010 Daniel Gackle - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript) - -(defparameter *js-target-version* "1.3") - -(defvar *parenscript-stream* nil) - -(defmacro ps (&body body) - "Given Parenscript forms (an implicit progn), compiles those forms -to a JavaScript string at macro-expansion time. Expands into a form -which evaluates to a string." - (let ((printed-forms (parenscript-print - (compile-statement `(progn ,@body)) - nil))) - (if (and (not (cdr printed-forms)) - (stringp (car printed-forms))) - (car printed-forms) - (let ((s (gensym))) - `(with-output-to-string (,s) - ,@(mapcar (lambda (x) `(write-string ,x ,s)) - printed-forms)))))) - -(defmacro ps-to-stream (stream &body body) - "Given Parenscript forms (an implicit progn), compiles those forms -to a JavaScript string at macro-expansion time. Expands into a form -which writes the resulting code to stream." - (let ((printed-forms (parenscript-print - (compile-statement `(progn ,@body)) - nil))) - `(let ((*parenscript-stream* ,stream)) - ,@(mapcar (lambda (x) `(write-string ,x *parenscript-stream*)) - printed-forms)))) - -(defun ps* (&rest body) - "Compiles body to a JavaScript string. If *parenscript-stream* is -bound, writes the output to *parenscript-stream*, otherwise returns a -string." - (let ((*psw-stream* (or *parenscript-stream* (make-string-output-stream)))) - (parenscript-print (compile-statement `(progn ,@body)) t) - (unless *parenscript-stream* - (get-output-stream-string *psw-stream*)))) - -(defmacro with-blank-compilation-environment (&body body) - `(let ((*ps-gensym-counter* 0) - (*special-variables* nil)) - ,@body)) - -(defmacro ps-doc (&body body) - "Expands Parenscript forms in a clean environment." - (with-blank-compilation-environment - (macroexpand-1 `(ps ,@body)))) - -(defun ps-doc* (&rest body) - (with-blank-compilation-environment - (apply #'ps* body))) - -(defvar *js-inline-string-delimiter* #\" - "Controls the string delimiter char used when compiling Parenscript in ps-inline.") - -(defun ps-inline* (form &optional - (*js-string-delimiter* *js-inline-string-delimiter*)) - (concatenate 'string "javascript:" (ps* form))) - -(defmacro+ps ps-inline (form &optional - (string-delimiter *js-inline-string-delimiter*)) - `(concatenate 'string "javascript:" - ,@(let ((*js-string-delimiter* string-delimiter)) - (parenscript-print (compile-statement form) nil)))) - -(defvar *ps-read-function* #'read) - -(defun ps-compile-stream (stream) - "Reads (using the value of *ps-read-function*, #'read by default, as -the read function) Parenscript forms from stream and compiles them as -if by ps*. If *parenscript-stream* is bound, writes the output to -*parenscript-stream*, otherwise and returns a string." - (let ((output-stream (or *parenscript-stream* (make-string-output-stream)))) - (let ((*compilation-level* :toplevel) - (*readtable* *readtable*) - (*package* *package*) - (*parenscript-stream* output-stream) - (eof '#:eof)) - (loop for form = (funcall *ps-read-function* stream nil eof) - until (eq form eof) do (ps* form) (fresh-line *parenscript-stream*))) - (unless *parenscript-stream* - (get-output-stream-string output-stream)))) - -(defun ps-compile-file (source-file &key (element-type 'character) (external-format :default)) - "Opens file as input stream and calls ps-compile-stream on it." - (with-open-file (stream source-file - :direction :input - :element-type element-type - :external-format external-format) - (ps-compile-stream stream))) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/compiler.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/compiler.lisp deleted file mode 100644 index 9f88c30..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/compiler.lisp +++ /dev/null @@ -1,405 +0,0 @@ -;;; Copyright 2005 Manuel Odendahl -;;; Copyright 2005-2006 Edward Marco Baringer -;;; Copyright 2006 Attila Lendvai -;;; Copyright 2006 Luca Capello -;;; Copyright 2007-2012, 2018 Vladimir Sedach -;;; Copyright 2008 Travis Cross -;;; Copyright 2009-2010 Red Daly -;;; Copyright 2009-2010 Daniel Gackle -;;; Copyright 2012, 2015 Boris Smilga - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript) -(in-readtable :parenscript) - -(defvar *version* 2.7 "Parenscript compiler version.") - -(defparameter %compiling-reserved-forms-p% t - "Used to issue warnings when replacing PS special operators or macros.") - -(defvar *defined-operators* () - "Special operators and macros defined by Parenscript. Replace at your own risk!") - -(defun defined-operator-override-check (name &rest body) - (when (and (not %compiling-reserved-forms-p%) (member name *defined-operators*)) - (warn 'simple-style-warning - :format-control "Redefining Parenscript operator/macro ~A" - :format-arguments (list name))) - `(progn ,(when %compiling-reserved-forms-p% `(pushnew ',name *defined-operators*)) - ,@body)) - -(defvar *reserved-symbol-names* - (list "break" "case" "catch" "continue" "default" "delete" "do" "else" - "finally" "for" "function" "if" "in" "instanceof" "new" "return" - "switch" "this" "throw" "try" "typeof" "var" "void" "while" "with" - "abstract" "boolean" "byte" "char" "class" "const" "debugger" - "double" "enum" "export" "extends" "final" "float" "goto" - "implements" "import" "int" "interface" "long" "native" "package" - "private" "protected" "public" "short" "static" "super" - "synchronized" "throws" "transient" "volatile" "{}" "true" "false" - "null" "undefined")) - -(defvar *lambda-wrappable-statements* - '(throw switch for for-in while try block) - "Statement special forms that can be wrapped in a lambda to make - them into expressions. Control transfer forms like BREAK, RETURN, - and CONTINUE need special treatment, and are not included.") - -(defun reserved-symbol-p (symbol) - (find (string-downcase (string symbol)) *reserved-symbol-names* :test #'string=)) - -;;; special forms - -(defvar *special-expression-operators* (make-hash-table :test 'eq)) -(defvar *special-statement-operators* (make-hash-table :test 'eq)) - -;; need to split special op definition into two parts - statement and expression -(defmacro %define-special-operator (type name lambda-list &body body) - (defined-operator-override-check name - `(setf (gethash ',name ,type) - (lambda (&rest whole) - (destructuring-bind ,lambda-list whole - ,@body))))) - -(defmacro define-expression-operator (name lambda-list &body body) - `(%define-special-operator *special-expression-operators* - ,name ,lambda-list ,@body)) - -(defmacro define-statement-operator (name lambda-list &body body) - `(%define-special-operator *special-statement-operators* - ,name ,lambda-list ,@body)) - -(defun special-form? (form) - (and (consp form) - (symbolp (car form)) - (or (gethash (car form) *special-expression-operators*) - (gethash (car form) *special-statement-operators*)))) - -;;; naming, scoping, and lexical environment - -(defvar *ps-gensym-counter* 0) - -(defvar *vars-needing-to-be-declared* () - "This special variable is expected to be bound to a fresh list by -special forms that introduce a new JavaScript lexical block (currently -function definitions and lambdas). Enclosed special forms are expected -to push variable declarations onto the list when the variables -declaration cannot be made by the enclosed form (for example, a x,y,z -expression progn). It is then the responsibility of the enclosing -special form to introduce the variable declarations in its lexical -block.") - -(defvar *used-up-names*) -(setf (documentation '*used-up-names* 'variable) - "Names that have been already used for lexical bindings in the current function scope.") - -(defvar in-case? nil - "Bind to T when compiling CASE branches.") - -(defvar in-loop-scope? nil - "Used for seeing when we're in loops, so that we can introduce - proper scoping for lambdas closing over loop-bound - variables (otherwise they all share the same binding).") -(defvar *loop-return-var* nil - "Variable which is used to return values from inside loop bodies.") -(defvar *loop-return-set-var* nil - "Variable which is set by RETURN-FROM when it returns a value from inside - a loop. The value is the name of a PS variable which dynamically - indicates if the return statement indeed has been invoked.") - -(defvar *loop-scope-lexicals*) -(setf (documentation '*loop-scope-lexicals* 'variable) - "Lexical variables introduced by a loop.") -(defvar *loop-scope-lexicals-captured*) -(setf (documentation '*loop-scope-lexicals-captured* 'variable) - "Lexical variables introduced by a loop that are also captured by lambdas inside a loop.") - -(defvar in-function-scope? nil - "Lets the compiler know when lambda wrapping is necessary.") - -(defvar *local-function-names* () - "Functions named by flet and label.") -;; is a subset of -(defvar *enclosing-lexicals* () - "All enclosing lexical variables (includes function names).") -(defvar *enclosing-function-arguments* () - "Lexical variables bound in all lexically enclosing function argument lists.") - -(defvar *function-block-names* () - "All block names that this function is responsible for catching.") -(defvar *dynamic-return-tags* () - "Tags that need to be thrown to to reach.") -(defvar *current-block-tag* nil - "Name of the lexically enclosing block, if any.") - -(defvar *special-variables* () - "Special variables declared during any Parenscript run. Re-bind this if you want to clear the list.") - -(defun special-variable? (sym) - (member sym *special-variables*)) - -;;; meta info - -(defvar *macro-toplevel-lambda-list* (make-hash-table) - "Table of lambda lists for toplevel macros.") - -(defvar *function-lambda-list* (make-hash-table) - "Table of lambda lists for defined functions.") - -;;; macros -(defun make-macro-dictionary () - (make-hash-table :test 'eq)) - -(defvar *macro-toplevel* (make-macro-dictionary) - "Toplevel macro environment dictionary.") - -(defvar *macro-env* (list *macro-toplevel*) - "Current macro environment.") - -(defvar *symbol-macro-toplevel* (make-macro-dictionary)) - -(defvar *symbol-macro-env* (list *symbol-macro-toplevel*)) - -(defvar *setf-expanders* (make-macro-dictionary) - "Setf expander dictionary. Key is the symbol of the access -function of the place, value is an expansion function that takes the -arguments of the access functions as a first value and the form to be -stored as the second value.") - -(defun lookup-macro-def (name env) - (loop for e in env thereis (gethash name e))) - -(defun make-ps-macro-function (args body) - "Given the arguments and body to a parenscript macro, returns a -function that may be called on the entire parenscript form and outputs -some parenscript code. Returns a second value that is the effective -lambda list from a Parenscript perspective." - (let* ((whole-var (when (eql '&whole (first args)) (second args))) - (effective-lambda-list (if whole-var (cddr args) args)) - (whole-arg (or whole-var (gensym "ps-macro-form-arg-")))) - (values - `(lambda (,whole-arg) - (destructuring-bind ,effective-lambda-list - (cdr ,whole-arg) - ,@body)) - effective-lambda-list))) - -(defmacro defpsmacro (name args &body body) - (defined-operator-override-check name - (multiple-value-bind (macro-fn-form effective-lambda-list) - (make-ps-macro-function args body) - `(eval-when (:compile-toplevel :load-toplevel :execute) - (setf (gethash ',name *macro-toplevel*) ,macro-fn-form) - (setf (gethash ',name *macro-toplevel-lambda-list*) ',effective-lambda-list) - ',name)))) - -(defmacro define-ps-symbol-macro (symbol expansion) - (defined-operator-override-check symbol - `(eval-when (:compile-toplevel :load-toplevel :execute) - (setf (gethash ',symbol *symbol-macro-toplevel*) - (lambda (form) - (declare (ignore form)) - ',expansion))))) - -(defun import-macros-from-lisp (&rest names) - "Import the named Lisp macros into the Parenscript macro -environment. When the imported macro is macroexpanded by Parenscript, -it is first fully macroexpanded in the Lisp macro environment, and -then that expansion is further expanded by Parenscript." - (dolist (name names) - (eval `(defpsmacro ,name (&rest args) - (macroexpand `(,',name ,@args)))))) - -(defmacro defmacro+ps (name args &body body) - "Define a Lisp macro and a Parenscript macro with the same macro -function (ie - the same result from macroexpand-1), for cases when the -two have different full macroexpansions (for example if the CL macro -contains implementation-specific code when macroexpanded fully in the -CL environment)." - `(progn (defmacro ,name ,args ,@body) - (defpsmacro ,name ,args ,@body))) - -(defun symbol-macro? (form) - "If FORM is a symbol macro, return its macro function. Otherwise, -return NIL." - (and (symbolp form) - (or (and (member form *enclosing-lexicals*) - (lookup-macro-def form *symbol-macro-env*)) - (gethash form *symbol-macro-toplevel*)))) - -(defun ps-macroexpand-1 (form) - (aif (or (symbol-macro? form) - (and (consp form) (lookup-macro-def (car form) *macro-env*))) - (values (ps-macroexpand (funcall it form)) t) - form)) - -(defun ps-macroexpand (form) - (multiple-value-bind (form1 expanded?) - (ps-macroexpand-1 form) - (if expanded? - (values (ps-macroexpand form1) t) - form1))) - -;;;; compiler interface - -(defparameter *compilation-level* :toplevel - "This value takes on the following values: -:toplevel indicates that we are traversing toplevel forms. -:inside-toplevel-form indicates that we are inside a call to ps-compile-* -nil indicates we are no longer toplevel-related.") - -(defun adjust-compilation-level (form level) - "Given the current *compilation-level*, LEVEL, and the fully macroexpanded -form, FORM, returns the new value for *compilation-level*." - (cond ((or (and (consp form) - (member (car form) '(progn locally macrolet symbol-macrolet))) - (and (symbolp form) (eq :toplevel level))) - level) - ((eq :toplevel level) :inside-toplevel-form))) - -(defvar compile-expression?) -(defvar clear-multiple-values? t) - -(define-condition compile-expression-error (error) - ((form :initarg :form :reader error-form)) - (:report - (lambda (condition stream) - (format - stream - "The Parenscript form ~A cannot be compiled into an expression." - (error-form condition))))) - -(defun compile-special-form (form) - (let* ((op (car form)) - (statement-impl (gethash op *special-statement-operators*)) - (expression-impl (gethash op *special-expression-operators*))) - (cond ((not compile-expression?) - (apply (or statement-impl expression-impl) (cdr form))) - (expression-impl - (apply expression-impl (cdr form))) - ((member op *lambda-wrappable-statements*) - (compile-expression (with-lambda-scope form))) - (t - (error 'compile-expression-error :form form))))) - -(defun ps-compile (form) - (macrolet - ((try-expanding (form &body body) - `(multiple-value-bind (expansion expanded?) - (ps-macroexpand ,form) - (if expanded? - (ps-compile expansion) - ,@body)))) - (typecase form - ((or null number string character) - form) - (vector - (ps-compile `(quote ,(coerce form 'list)))) - (symbol - (try-expanding form form)) - (cons - (try-expanding form - (let ((*compilation-level* - (adjust-compilation-level form *compilation-level*))) - (if (special-form? form) - (compile-special-form form) - (progn - (setq clear-multiple-values? t) - `(ps-js:funcall - ,(if (symbolp (car form)) - (maybe-rename-local-function (car form)) - (compile-expression (car form))) - ,@(mapcar #'compile-expression (cdr form))))))))))) - -(defun compile-statement (form) - (let ((compile-expression? nil)) - (ps-compile form))) - -(defun compile-expression (form) - (let ((compile-expression? t)) - (ps-compile form))) - -(defun ps-gensym (&optional (x '_js)) - (make-symbol - (if (integerp x) - (format nil "~A~A" '_js x) - (let ((prefix (string x))) - (format nil "~A~:[~;_~]~A" - prefix - (digit-char-p (char prefix (1- (length prefix)))) - (incf *ps-gensym-counter*)))))) - -(defmacro with-ps-gensyms (symbols &body body) - "Helper macro for writing Parenscript macros. Each element of -SYMBOLS is either a symbol or a list of (symbol -gensym-prefix-string)." - `(let* ,(mapcar (lambda (symbol) - (destructuring-bind (symbol &optional prefix) - (if (consp symbol) - symbol - (list symbol)) - (if prefix - `(,symbol (ps-gensym ,(string prefix))) - `(,symbol (ps-gensym ,(string symbol)))))) - symbols) - ,@body)) - -(defmacro ps-once-only ((&rest vars) &body body) - "Helper macro for writing Parenscript macros. Useful for preventing unwanted multiple evaluation." - (warn-deprecated 'ps-once-only 'maybe-once-only) - (let ((gensyms (mapcar #'ps-gensym vars))) - `(let* ,(mapcar (lambda (g v) `(,g (ps-gensym ',v))) - gensyms vars) - `(let* (,,@(mapcar (lambda (g v) `(list ,g ,v)) - gensyms vars)) - ,(let* ,(mapcar (lambda (g v) (list v g)) - gensyms vars) - ,@body))))) - -(defmacro maybe-once-only ((&rest vars) &body body) - "Helper macro for writing Parenscript macros. Like PS-ONCE-ONLY, -except that if the given VARS are variables or constants, no intermediate variables are created." - (let ((vars-bound (gensym))) - `(let* - ((,vars-bound ()) - ,@(loop for var in vars collect - `(,var - (let ((form (ps-macroexpand ,var))) - (if (atom form) - form - (let ((var¹ (ps-gensym ',var))) - (push (list var¹ form) ,vars-bound) - var¹)))))) - `(let* ,(nreverse ,vars-bound) - ,,@body)))) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/deprecated-interface.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/deprecated-interface.lisp deleted file mode 100644 index bd06aae..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/deprecated-interface.lisp +++ /dev/null @@ -1,162 +0,0 @@ -;;; Copyright 2005 Manuel Odendahl -;;; Copyright 2005-06 Edward Marco Baringer -;;; Copyright 2007 Red Daly -;;; Copyright 2007 Attila Lendvai -;;; Copyright 2007-2012 Vladimir Sedach -;;; Copyright 2008 Travis Cross -;;; Coypright 2010, 2013 Daniel Gackle - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript) -(in-readtable :parenscript) - -(defun warn-deprecated (old-name &optional new-name) - (warn 'simple-style-warning - :format-control "~:@(~a~) is deprecated~:[.~;, use ~:@(~a~) instead~]" - :format-arguments (list old-name new-name new-name))) - -(defmacro defun-js (old-name new-name args &body body) - `(defun ,old-name ,args - ,(when (and (stringp (car body)) (< 1 (length body))) ; docstring - (car body)) - (warn-deprecated ',old-name ',new-name) - ,@body)) - -;;; DEPRECATED INTERFACE - -(defmacro define-script-symbol-macro (name &body body) - (warn-deprecated 'define-script-symbol-macro 'define-ps-symbol-macro) - `(define-ps-symbol-macro ,name ,@body)) - -(defun js-equal (ps-form1 ps-form2) - (warn-deprecated 'js-equal) - (equalp ps-form1 ps-form2)) - -(defun-js js-compile compile-script (form) - (compile-script form)) - -(defun-js js-compile-list compile-script (form) - (compile-script form)) - -(defmacro defjsmacro (&rest args) - (warn-deprecated 'defjsmacro 'defpsmacro) - `(defpsmacro ,@args)) - -(defmacro js-inline (&rest body) - (warn-deprecated 'js-inline 'ps-inline) - `(js-inline* '(progn ,@body))) - -(defun-js js-inline* ps-inline* (&rest body) - (apply #'ps-inline* body)) - -(defmacro with-unique-js-names (&rest args) - (warn-deprecated 'with-unique-js-names 'with-ps-gensyms) - `(with-ps-gensyms ,@args)) - -(defun-js gen-js-name ps-gensym (&optional (prefix "_JS_")) - (ps-gensym prefix)) - -(defmacro js (&rest args) - (warn-deprecated 'js 'ps) - `(ps ,@args)) - -(defun-js js* ps* (&rest args) - (apply #'ps* args)) - -(defun-js compile-script ps* (ps-form &key (output-stream nil)) - "Compiles the Parenscript form PS-FORM into Javascript. -If OUTPUT-STREAM is NIL, then the result is a string; otherwise code -is output to the OUTPUT-STREAM stream." - (format output-stream "~A" (ps* ps-form))) - -(defun-js symbol-to-js symbol-to-js-string (symbol) - (symbol-to-js-string symbol)) - -(defmacro defmacro/ps (name args &body body) - (warn-deprecated 'defmacro/ps 'defmacro+ps) - `(progn (defmacro ,name ,args ,@body) - (import-macros-from-lisp ',name))) - -(defmacro defpsmacro-deprecated (old new) - `(defpsmacro ,old (&rest args) - (warn-deprecated ',old ',new) - (cons ',new args))) - -(defpsmacro-deprecated slot-value getprop) -(defpsmacro-deprecated === eql) -(defpsmacro-deprecated == equal) -(defpsmacro-deprecated % rem) -(defpsmacro-deprecated concat-string stringify) - -(defpsmacro !== (&rest args) - (warn-deprecated '!==) - `(not (eql ,@args))) - -(defpsmacro != (&rest args) - (warn-deprecated '!=) - `(not (equal ,@args))) - -(defpsmacro labeled-for (label init-forms cond-forms step-forms &rest body) - (warn-deprecated 'labeled-for 'label) - `(label ,label (for ,init-forms ,cond-forms ,step-forms ,@body))) - -(defpsmacro do-set-timeout ((timeout) &body body) - (warn-deprecated 'do-set-timeout 'set-timeout) - `(set-timeout (lambda () ,@body) ,timeout)) - -(defun concat-string (&rest things) - (warn-deprecated 'concat-string 'stringify) - (apply #'stringify things)) - -(define-statement-operator with (expression &rest body) - (warn-deprecated 'with '|LET or WITH-SLOTS|) - `(ps-js:with ,(compile-expression expression) - ,(compile-statement `(progn ,@body)))) - -(define-statement-operator while (test &rest body) - (warn-deprecated 'while '|LOOP WHILE|) - `(ps-js:while ,(compile-expression test) - ,(compile-loop-body () body))) - -(defmacro while (test &body body) - (warn-deprecated 'while '|LOOP WHILE|) - `(loop while ,test do (progn ,@body))) - -(defpsmacro label (&rest args) - (warn-deprecated 'label 'block) - `(block ,@args)) - -(define-ps-symbol-macro f ps-js:false) - -(setf %compiling-reserved-forms-p% nil) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/function-definition.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/function-definition.lisp deleted file mode 100644 index e1fa253..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/function-definition.lisp +++ /dev/null @@ -1,283 +0,0 @@ -;;; Copyright 2011 Vladimir Sedach -;;; Copyright 2014-2015 Boris Smilga -;;; Copyright 2014 Max Rottenkolber - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript) -(in-readtable :parenscript) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; lambda lists - -(defun parse-key-spec (key-spec) - "parses an &key parameter. Returns 5 values: -var, init-form, keyword-name, supplied-p-var, init-form-supplied-p. - -Syntax of key spec: -[&key {var | ({var | (keyword-name var)} [init-form [supplied-p-parameter]])}* -" - (let* ((var (cond ((symbolp key-spec) key-spec) - ((and (listp key-spec) (symbolp (first key-spec))) (first key-spec)) - ((and (listp key-spec) (listp (first key-spec))) (second (first key-spec))))) - (keyword-name (if (and (listp key-spec) (listp (first key-spec))) - (first (first key-spec)) - (intern (string var) :keyword))) - (init-form (if (listp key-spec) (second key-spec) nil)) - (init-form-supplied-p (if (listp key-spec) t nil)) - (supplied-p-var (if (listp key-spec) (third key-spec) nil))) - (values var init-form keyword-name supplied-p-var init-form-supplied-p))) - -(defun parse-optional-spec (spec) - "Parses an &optional parameter. Returns 3 values: var, init-form, supplied-p-var. -[&optional {var | (var [init-form [supplied-p-parameter]])}*] " - (let* ((var (cond ((symbolp spec) spec) - ((and (listp spec) (first spec))))) - (init-form (if (listp spec) (second spec))) - (supplied-p-var (if (listp spec) (third spec)))) - (values var init-form supplied-p-var))) - -(defun parse-body (body &key allow-docstring) - "Parses a function or block body, which may or may not include a -docstring. Returns 2 or 3 values: a docstring (if allowed for), a list -of (declare ...) forms, and the remaining body." - (let (docstring declarations) - (loop while - (cond ((and (consp (car body)) (eq (caar body) 'declare)) - (push (pop body) declarations)) - ((and allow-docstring (not docstring) - (stringp (car body)) (cdr body)) - (setf docstring (pop body))))) - (values body declarations docstring))) - -(defun parse-extended-function (lambda-list body) - "The lambda list is transformed as follows: - -* standard and optional variables are the mapped directly into - the js-lambda list - -* keyword variables are not included in the js-lambda list, but - instead are obtained from the magic js ARGUMENTS - pseudo-array. Code assigning values to keyword vars is - prepended to the body of the function." - (multiple-value-bind (requireds optionals rest? rest keys? keys allow? aux? - aux more? more-context more-count key-object) - (parse-lambda-list lambda-list) - (declare (ignore allow? aux? aux more? more-context more-count key-object)) - (let* ( ;; optionals are of form (var default-value) - (effective-args - (remove-if #'null - (append requireds - (mapcar #'parse-optional-spec optionals)))) - (opt-forms - (mapcar (lambda (opt-spec) - (multiple-value-bind (name value suppl) - (parse-optional-spec opt-spec) - (cond (suppl - `(progn - (var ,suppl (not (eql ,name undefined))) - ,@(when value - `((when (not ,suppl) (setf ,name ,value)))))) - (value - `(when (eql ,name undefined) - (setf ,name ,value)))))) - optionals)) - (key-forms - (when keys? - (with-ps-gensyms (n) - (let (defaults assigns) - (mapc - (lambda (k) - (multiple-value-bind (var init-form keyword-str suppl) - (parse-key-spec k) - (push `(var ,var ,@(when init-form `((if (undefined ,var) ,init-form ,var)))) defaults) - (when suppl (push `(var ,suppl) defaults)) - (push `(,keyword-str - (setf ,var (aref arguments (1+ ,n)) - ,@(when suppl `(,suppl t)))) - assigns))) - (reverse keys)) - `((loop for ,n from ,(length requireds) below (length arguments) by 2 do - (case (aref arguments ,n) - ,@assigns)) - ,@defaults))))) - (rest-form - (when rest? - `(var ,rest - ((@ Array prototype slice call) - arguments ,(length effective-args)))))) - (multiple-value-bind (fun-body declarations docstring) - (parse-body body :allow-docstring t) - (values effective-args - (append declarations - opt-forms key-forms (awhen rest-form (list it)) - fun-body) - docstring))))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; common - -(defun collapse-function-return-blocks (body) - (append (butlast body) - (let ((last (ps-macroexpand (car (last body))))) - (if (and (listp last) (eq 'block (car last))) - ;; no need for a block at the end of a function body - (progn (push (or (second last) 'nilBlock) - *function-block-names*) - (cddr last)) - (list last))))) - -(defun compile-function-body (args body) - (with-declaration-effects (body body) - (let* ((in-function-scope? t) - (*current-block-tag* nil) - (*vars-needing-to-be-declared* ()) - (*used-up-names* ()) - (returning-values? nil) - (clear-multiple-values? nil) - (*enclosing-function-arguments* - (append args *enclosing-function-arguments*)) - (*enclosing-lexicals* - (set-difference *enclosing-lexicals* args)) - (collapsed-body - (collapse-function-return-blocks body)) - (*dynamic-return-tags* - (append (mapcar (lambda (x) (cons x nil)) - *function-block-names*) - *dynamic-return-tags*)) - (body - (let ((in-loop-scope? nil) - (*loop-scope-lexicals* ()) - (*loop-scope-lexicals-captured* ())) - (cdr - (wrap-for-dynamic-return - *function-block-names* - (compile-statement - `(return-from %function (progn ,@collapsed-body))))))) - (var-decls - (compile-statement - `(progn - ,@(mapcar - (lambda (var) `(var ,var)) - (remove-duplicates *vars-needing-to-be-declared*)))))) - (when in-loop-scope? - (setf *loop-scope-lexicals-captured* - (append (intersection (flatten body) *loop-scope-lexicals*) - *loop-scope-lexicals-captured*))) - `(ps-js:block ,@(reverse (cdr var-decls)) - ,@body)))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; lambda - -(define-expression-operator lambda (lambda-list &rest body) - (multiple-value-bind (effective-args effective-body) - (parse-extended-function lambda-list body) - `(ps-js:lambda ,effective-args - ,(let ((*function-block-names* ())) - (compile-function-body effective-args effective-body))))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; named functions - -(defun compile-named-function-body (name lambda-list body) - (let ((*enclosing-lexicals* (cons name *enclosing-lexicals*)) - (*function-block-names* (list name))) - (multiple-value-bind (effective-args effective-body docstring) - (parse-extended-function lambda-list body) - (values effective-args - (compile-function-body effective-args effective-body) - docstring)))) - -(define-statement-operator defun% (name lambda-list &rest body) - (multiple-value-bind (effective-args body-block docstring) - (compile-named-function-body name lambda-list body) - (list 'ps-js:defun name effective-args docstring body-block))) - -(defun maybe-rename-local-function (fun-name) - (or (getf *local-function-names* fun-name) fun-name)) - -(defun collect-function-names (fn-defs) - (loop for (fn-name) in fn-defs - collect fn-name - collect (if (or (member fn-name *enclosing-lexicals*) - (lookup-macro-def fn-name *symbol-macro-env*)) - (ps-gensym (string fn-name)) - fn-name))) - -(defun compile-named-local-function (name args body) - (multiple-value-bind (args1 body-block) - (compile-named-function-body name args body) - `(ps-js:lambda ,args1 ,body-block))) - -(defmacro local-functions (special-op &body bindings) - `(if in-function-scope? - (let* ((fn-renames (collect-function-names fn-defs)) - ,@bindings) - `(,(if compile-expression? 'ps-js:|,| 'ps-js:block) - ,@definitions - ,@(compile-progn body))) - (ps-compile (with-lambda-scope `(,',special-op ,fn-defs ,@body))))) - -(defun compile-local-function-defs (fn-defs renames) - (loop for (fn-name . (args . body)) in fn-defs collect - (progn (when compile-expression? - (push (getf renames fn-name) - *vars-needing-to-be-declared*)) - (list (if compile-expression? 'ps-js:= 'ps-js:var) - (getf renames fn-name) - (compile-named-local-function fn-name args body))))) - -(define-expression-operator flet (fn-defs &rest body) - (local-functions flet - ;; the function definitions need to be compiled with previous - ;; lexical bindings - (definitions (compile-local-function-defs fn-defs fn-renames)) - ;; the flet body needs to be compiled with the extended - ;; lexical environment - (*enclosing-lexicals* (append fn-renames *enclosing-lexicals*)) - (*loop-scope-lexicals* (when in-loop-scope? - (append fn-renames *loop-scope-lexicals*))) - (*local-function-names* (append fn-renames *local-function-names*)))) - -(define-expression-operator labels (fn-defs &rest body) - (local-functions labels - (*enclosing-lexicals* (append fn-renames *enclosing-lexicals*)) - (*loop-scope-lexicals* (when in-loop-scope? - (append fn-renames *loop-scope-lexicals*))) - (*local-function-names* (append fn-renames *local-function-names*)) - (definitions (compile-local-function-defs fn-defs *local-function-names*)))) - -(define-expression-operator function (fn-name) - ;; one of the things responsible for function namespace - (ps-compile (maybe-rename-local-function fn-name))) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/js-dom-symbol-exports.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/js-dom-symbol-exports.lisp deleted file mode 100644 index 72e2694..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/js-dom-symbol-exports.lisp +++ /dev/null @@ -1,1115 +0,0 @@ -;;; Copyright 2009-2011 Vladimir Sedach - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript) -(in-readtable :parenscript) - -;; These are convenience packages that export JS and browser DOM -;; symbols. If you :use the packages in a package FOO and then -;; obfuscate FOO, it will prevent the JS symbols from getting -;; mangled. - -;; For most web development tasks, you want to import PS-JS-SYMBOLS, -;; PS-WINDOW-WD-SYMBOLS (which includes DOM level 2 and the w3c Window -;; working draft), and possibly the PS-DOM-NONSTANDARD-SYMBOLS. - -(defun re-export-symbols (from-package to-package) - (do-external-symbols (symbol from-package) - (multiple-value-bind (cl-symbol type) (find-symbol (symbol-name symbol) '#:cl) - (when (eq type :external) - (shadowing-import cl-symbol from-package))) - (shadowing-import symbol to-package) - (export (list symbol) to-package))) - -(defpackage #:ps-js-symbols - (:documentation "JavaScript standard function and property names.") - (:export - #:to-fixed #:toFixed - #:encode-u-r-i-component #:encodeURIComponent - #:size - #:*array #:Array - #:*date #:Date - #:get-time #:getTime - #:arguments - #:join - #:prototype - #:slice - #:call - )) - -(re-export-symbols '#:ps-js-symbols '#:parenscript) - -(defpackage #:ps-dom1-symbols - (:documentation "DOM Level 1 symbols.") - (:export - ;;; Core - ;; DOMImplementation - ; methods - #:has-feature #:hasFeature - - ;; document interface - ; attributes - #:doctype - #:implementation - #:document-element #:documentElement - ; methods - #:create-element #:createElement - #:create-document-fragment #:createDocumentElement - #:create-text-node #:createTextNode - #:create-comment #:createComment - #:create-c-d-a-t-a-section #:createCDATASection - #:create-processing-instruction #:createProcessingInstruction - #:create-attribute #:createAttribute - #:create-entity-reference #:createEntityReference - #:get-elements-by-tag-name #:getElementsByTagName - - ;; node interface - ; attributes - #:node-name #:nodeName - #:node-value #:nodeValue - #:node-type #:nodeType - #:parent-node #:parentNode - #:child-nodes #:childNodes - #:first-child #:firstChild - #:last-child #:lastChild - #:previous-sibling #:previousSibling - #:next-sibling #:nextSibling - #:attributes - #:owner-document #:ownerDocument - ; methods - #:insert-before #:insertBefore - #:replace-child #:replaceChild - #:remove-child #:removeChild - #:append-child #:appendChild - #:has-child-nodes #:hasChildNodes - #:clone-node #:cloneNode - - ;; nodelist interface - ; methods - #:item - ; attributes - #:length - - ;; namednodemap - ; methods - #:get-named-item #:getNamedItem - #:set-named-item #:setNamedItem - #:remove-named-item #:removeNamedItem - #:item - ; attributes - #:length - - ;; characterdata - ; attributes - #:data - #:length - ; methods - #:substring-data #:substringData - #:append-data #:appendData - #:insert-data #:insertData - #:delete-data #:deleteData - #:replace-data #:replaceData - - ;; attr - ; attributes - #:name - #:specified - #:value - - ;; element - ; attributes - #:tag-name #:tagName - ; methods - #:get-attribute #:getAttribute - #:set-attribute #:setAttribute - #:remove-attribute #:removeAttribute - #:get-attribute-node #:getAttributeNode - #:set-attribute-node #:setAttributeNode - #:remove-attribute-node #:removeAttributeNode - #:get-elements-by-tag-name #:getElementsByTagName - #:normalize - - ;; text - ; methods - #:split-text #:splitText - - ;;; Level 1 extended interfaces (XML) - ;; DocumentType - ; attributes - #:name - #:entities - #:notations - - ;; notation - ; attributes - #:public-id #:publicId - #:system-id #:systemId - - ;; entity - ; attrs - #:public-id #:publicId - #:system-id #:systemId - #:notation-name #:notationName - - ;; processing instruction - ; attrs - #:target - #:data - - ;;; HTML - ;; HTMLcollection/live NodeList - ; attributes - #:length - ; methods - #:item - #:named-item #:namedItem - - ;; document - #:document - ; attributes - #:title - #:referrer - #:domain - #:*url* #:URL - #:body - #:images - #:applets - #:links - #:forms - #:anchors - #:cookie - ; methods - #:open - #:close - #:write - #:writeln - #:get-element-by-id #:getElementById - #:get-elements-by-name #:getElementsByName - - ;; generic HTML element - ; attributes - #:id - #:title - #:lang - #:dir - #:class-name #:className - - ;; HTML document root - ; attributes - #:version - - ;; head - ; attributes - #:profile - - ;; link - ; attributes - #:disabled - #:charset - #:href - #:hreflang - #:media - #:rel - #:rev - #:target - #:type - - ;; title - ; attrs - #:text - - ;; meta - ; attrs - #:content - #:http-equiv #:httpEquiv - #:name - #:scheme - - ;; base - ; attrs - #:href - #:target - - ;; isindex - ; attrs - #:form - #:prompt - - ;; style - ; attrs - #:disabled - #:media - #:type - - ;; body - ; attrs - #:a-link #:aLink - #:background - #:bg-color #:bgColor - #:link - #:text - #:v-link #:vLink - - ;; form - ; attrs - #:elements - #:length - #:name - #:accept-charset #:acceptCharset - #:action - #:enctype - #:method - #:target - ; methods - #:submit - #:reset - - ;; select - ; attrs - #:type - #:selected-index #:selectedIndex - #:value - #:length - #:form - #:options - #:disabled - #:multiple - #:name - #:size - #:tab-index #:tabIndex - ; methods - #:add - #:remove - #:blur - #:focus - - ;; optgroup - ; attrs - #:disabled - #:label - - ;; option - ; attrs - #:form - #:default-selected #:defaultSelected - #:text - #:index - #:disabled - #:label - #:selected - #:value - - ;; input - ; attrs - #:default-value #:defaultValue - #:default-checked #:defaultChecked - #:form - #:accept - #:access-key #:accessKey - #:align - #:alt - #:checked - #:disabled - #:max-length #:maxLength - #:name - #:read-only #:readOnly - #:size - #:src - #:tab-index #:tabIndex - #:type - #:use-map #:useMap - #:value - ; methods - #:blur - #:focus - #:select - #:click - - ;; textarea - ; attrs - #:default-value #:defaultValue - #:form - #:access-key #:accessKey - #:cols - #:disabled - #:name - #:read-only #:readOnly - #:rows - #:tab-index #:tabIndex - #:type - #:value - ; methods - #:blur - #:focus - #:select - - ;; button - ; attrs - #:form - #:access-key #:accessKey - #:disabled - #:name - #:tab-index #:tabIndex - #:type - #:value - - ;; label - ; attrs - #:form - #:access-key #:accessKey - #:html-for #:htmlFor - - ;; fieldset - ; attrs - #:form - - ;; legend - ; attrs - #:form - #:access-key #:accessKey - #:align - - ;; ul - ; attrs - #:compact - #:type - - ;; ol - ; attrs - #:compact - #:start - #:type - - ;; dl, dir and menu - ; attrs - #:compact - - ;; li - ; attrs - #:type - #:value - - ;; blockquote and q - ; attrs - #:cite - - ;; div, p, and h1/h2/hn - ; attrs - #:align - - ;; pre - ; attrs - #:width - - ;; br - ; attrs - #:clear - - ;; basefont, font - ; attrs - #:color - #:face - #:size - - ;; hr - ; attrs - #:align - #:no-shade #:noShade - #:size - #:width - - ;; ins and del - ; attrs - #:cite - #:date-time #:dateTime - - ;; a - ; attrs - #:access-key #:accessKey - #:charset - #:coords - #:href - #:hreflang - #:name - #:rel - #:rev - #:shape - #:tab-index #:tabIndex - #:target - #:type - ; methods - #:blur - #:focus - - ;; img - ; attrs - #:low-src #:lowSrc - #:name - #:align - #:alt - #:border - #:height - #:hspace - #:is-map #:isMap - #:long-desc #:longDesc - #:src - #:use-map #:useMap - #:vspace - #:width - - ;; object - ; attrs - #:form - #:code - #:align - #:archive - #:border - #:code-base #:codeBase - #:code-type #:codeType - #:data - #:declare - #:height - #:hspace - #:name - #:standby - #:tab-index #:tabIndex - #:type - #:use-map #:useMap - #:vspace - #:width - - ;; param - ; attrs - #:name - #:type - #:value - #:value-type #:valueType - - ;; applet - ; attrs - #:align - #:alt - #:archive - #:code - #:code-base #:codeBase - #:height - #:hspace - #:name - #:object - #:vspace - #:width - - ;; map - ; attrs - #:areas - #:name - - ;; area - ; attrs - #:access-key #:accessKey - #:alt - #:coords - #:href - #:no-href #:noHref - #:shape - #:tab-index #:tabIndex - #:target - - ;; script - ; attrs - #:text - #:html-for #:htmlFor - #:event - #:charset - #:defer - #:src - #:type - - ;; table - ; attrs - #:caption - #:t-head #:tHead - #:t-foot #:tFoot - #:rows - #:t-bodies #:tBodies - #:align - #:bg-color #:bgColor - #:border - #:cell-padding #:cellPadding - #:cell-spacing #:cellSpacing - #:frame - #:rules - #:summary - #:width - ; methods - #:create-t-head #:createTHead - #:delete-t-head #:deleteTHead - #:create-t-foot #:createTFoot - #:delete-t-foot #:deleteTFoot - #:create-caption #:createCaption - #:delete-caption #:deleteCaption - #:insert-row #:insertRow - #:delete-row #:deleteRow - - ;; caption - ; attrs - #:align - - ;; col - ; attrs - #:align - #:ch - #:ch-off #:chOff - #:span - #:v-align #:vAlign - #:width - - ;; thead, tfoot, tbody - ; attrs - #:align - #:ch - #:ch-off #:chOff - #:v-align #:vAlign - #:rows - ; methods - #:insert-row #:insertRow - #:delete-row #:deleteRow - - ;; tr - ; attrs - #:row-index #:rowIndex - #:section-row-index #:sectionRowIndex - #:cells - #:align - #:bg-color #:bgColor - #:ch - #:ch-off #:chOff - #:v-align #:vAlign - ; methods - #:insert-cell #:insertCell - #:delete-cell #:deleteCell - - ;; th and td - ; attrs - #:cell-index #:cellIndex - #:abbr - #:align - #:axis - #:bg-color #:bgColor - #:ch - #:ch-off #:chOff - #:col-span #:colSpan - #:headers - #:height - #:no-wrap #:noWrap - #:row-span #:rowSpan - #:scope - #:v-align #:vAlign - #:width - - ;; frameset - ; attrs - #:cols - #:rows - - ;; frame - ; attrs - #:frame-border #:frameBorder - #:long-desc #:longDesc - #:margin-height #:marginHeight - #:margin-width #:marginWidth - #:name - #:no-resize #:noResize - #:scrolling - #:src - - ;; iframe - ; attrs - #:align - #:frame-border #:frameBorder - #:height - #:long-desc #:longDesc - #:margin-height #:marginHeight - #:margin-width #:marginWidth - #:name - #:scrolling - #:src - #:width - )) - -(defpackage #:ps-dom2-symbols - (:documentation "DOM Level 2 symbols. Includes DOM Level 1 symbols.") - (:export - ;;; Core - ;; DOMImplementation - ; methods - #:create-document #:createDocument - #:create-document-type #:createDocumentType - - ;; document interface - ; methods - #:create-attribute-n-s #:createAttributeNS - #:create-element-n-s #:createElementNS - #:get-element-by-id #:getElementById - #:get-elements-by-tag-name-n-s #:getElementsByTagNameNS - #:import-node #:importNode - - ;; node interface - ; attributes - #:local-name #:localName - #:namespace-u-r-i #:namespaceURI - #:prefix - ; methods - #:is-supported #:isSupported - - ;; named node map - ; methods - #:get-named-item-n-s #:getNamedItemNS - #:remove-named-item-n-s #:removeNamedItermNS - #:set-named-item-n-s #:setNamedItemNS - - ;; element interface - ; methods - #:get-attribute-n-s #:getAttributeNS - #:get-attribute-node-n-s #:getAttributeNodeNS - #:get-elements-by-tag-name-n-s #:getElementsByTagNameNS - #:has-attribute-n-s #:hasAttributeNS - #:remove-attribute-n-s #:removeAttributeNS - #:set-attribute-n-s #:setAttributeNS - #:set-attribute-node-n-s #:setAttributeNodeNS - - ;;; Level 2 extended interfaces - ;; document type - ; attrs - #:internal-subset #:internalSubset - #:public-id #:publicId - #:system-id #:systemId - - ;;; Level 2 HTML - ;; object, frame, iframe - ; attr - #:content-document #:contentDocument - - ;;; Stylesheets - ;; stylesheet - ; attrs - #:disabled - #:href - #:media - #:owner-node #:ownerNode - #:parent-style-sheet #:parenStyleSheet - #:title - #:type - - ;; media list - ; attrs - #:length - #:media-text #:mediaText - ; methods - #:append-medium #:appendMedium - #:delete-medium #:deleteMedium - #:item - - ;; linkstyle - ; attrs - #:sheet - - ;; documentstyle - ; attrs - #:style-sheets #:styleSheets - - ;;; CSS - ;; css style sheet - ; attrs - #:css-rules #:cssRules - #:owner-rule #:ownerRule - ; methods - #:delete-rule #:deleteRule - #:insert-rule #:insertRule - - ;; css rule - ; attrs - #:css-text #:cssText - #:parent-rule #:parentRule - #:parent-style-sheet #:parentStyleSheet - #:type - - ;; css style rule - ; attrs - #:selector-text #:selectorText - #:style - - ;; css media rule - ; attrs - #:css-rules #:cssRules - #:media - ; methods - #:delete-rule #:deleteRule - #:insert-rule #:insertRule - - ;; css import rule - ; attrs - #:href - #:media - #:style-sheet #:styleSheet - - ;; css charset rule - ; attrs - #:encoding - - ;; css style declaration - ; attrs - #:css-text #:cssText - #:length - #:parent-rule #:parentRule - ; methods - #:get-property-c-s-s-value #:getPropertyCSSValue - #:get-property-priority #:getPropertyPriority - #:get-property-value #:getPropertyValue - #:item - #:remove-property #:removeProperty - #:set-property #:setProperty - - ;; css value - ; attrs - #:css-text #:cssText - #:css-value-type #:cssValueType - - ;; css primitive value - ; attrs - #:primitive-type #:primitiveType - ; methods - #:get-counter-value #:getCounterValue - #:get-float-value #:getFloatValue - #:get-r-g-b-color-value #:getRGBColorValue - #:get-rect-value #:getRectValue - #:get-string-value #:getStringValue - #:set-float-value #:setFloatValue - #:set-string-value #:setStringValue - - ;; rgb color - ; attrs - #:blue - #:green - #:red - - ;; rectangle - ; attrs - #:bottom - #:left - #:right - #:top - - ;; counter - ; attrs - #:identifier - #:list-style #:listStyle - #:separator - - ;; css views - ; methods - #:get-computed-style #:getComputedStyle - - ;; document css - ; methods - #:get-override-style #:getOverrideStyle - - ;; css stylesheets - ; methods - #:create-c-s-s-style-sheet #:createCSSStyleSheet - - ;;; CSS 2.0 extended interface - ; attributes - #:azimuth - #:background - #:background-attachment #:backgroundAttachment - #:background-color #:backgroundColor - #:background-image #:backgroundImage - #:background-position #:backgroundPosition - #:background-repeat #:backgroundRepeat - #:border - #:border-bottom #:borderBottom - #:border-bottom-color #:borderBottomColor - #:border-bottom-style #:borderBottomStyle - #:border-bottom-width #:borderBottomWidth - #:border-collapse #:borderCollapse - #:border-color #:borderColor - #:border-left #:borderLeft - #:border-left-color #:borderLeftColor - #:border-left-style #:borderLeftStyle - #:border-left-width #:borderLeftWidth - #:border-right #:borderRight - #:border-right-color #:borderRightColor - #:border-right-style #:borderRightStyle - #:border-right-width #:borderRightWidth - #:border-spacing #:borderSpacing - #:border-style #:borderStyle - #:border-top #:borderTop - #:border-top-color #:borderTopColor - #:border-top-style #:borderTopStyle - #:border-top-width #:borderTopWidth - #:border-width #:borderWidth - #:bottom - #:caption-side #:captionSide - #:clear - #:clip - #:color - #:content - #:counter-increment #:counterIncrement - #:counter-reset #:counterReset - #:css-float #:cssFloat - #:cue - #:cue-after #:cueAfter - #:cue-before #:cueBefore - #:cursor - #:direction - #:display - #:elevation - #:empty-cells #:emptyCells - #:font - #:font-family #:fontFamily - #:font-size #:fontSize - #:font-size-adjust #:fontSizeAdjust - #:font-stretch #:fontStretch - #:font-style #:fontStyle - #:font-variant #:fontVariant - #:font-weight #:fontWeight - #:height - #:left - #:letter-spacing #:letterSpacing - #:line-height #:lineHeight - #:list-style #:listStyle - #:list-style-image #:listStyleImage - #:list-style-position #:listStylePosition - #:list-style-type #:listStyleType - #:margin - #:margin-bottom #:marginBottom - #:margin-left #:marginLeft - #:margin-right #:marginRight - #:margin-top #:marginTop - #:marker-offset #:markerOffset - #:marks - #:max-height #:maxHeight - #:max-width #:maxWidth - #:min-height #:minHeight - #:min-width #:minWidth - #:orphans - #:outline - #:outline-color #:outlineColor - #:outline-style #:outlineStyle - #:outline-width #:outlineWidth - #:overflow - #:padding - #:padding-bottom #:paddingBottom - #:padding-left #:paddingLeft - #:padding-right #:paddingRight - #:padding-top #:paddingTop - #:page - #:page-break-after #:pageBreakAfter - #:page-break-before #:pageBreakBefore - #:page-break-inside #:pageBreakInside - #:pause - #:pause-after #:pauseAfter - #:pause-before #:pauseBefore - #:pitch - #:pitch-range #:pitchRange - #:play-during #:playDuring - ;; #:position in CL - #:quotes - #:richness - #:right - #:size - #:speak - #:speak-header #:speakHeader - #:speak-numeral #:speakNumeral - #:speak-punctuation #:speakPunctuation - #:speech-rate #:speechRate - #:stress - #:table-layout #:tableLayout - #:text-align #:textAlign - #:text-decoration #:textDecoration - #:text-indent #:textIndent - #:text-shadow #:textShadow - #:text-transform #:textTransform - #:top - #:unicode-bidi #:unicodeBidi - #:vertical-align #:verticalAlign - #:visibility - #:voice-family #:voiceFamily - #:volume - #:white-space #:whiteSpace - #:widows - #:width - #:word-spacing #:wordSpacing - #:z-index #:zIndex - - ;;; Events - ;; event target interface - ; methods - #:add-event-listener #:addEventListener - #:dispatch-event #:dispatchEvent - #:remove-event-listener #:removeEventListener - - ;; event listener interface - ; methods - #:handle-event #:handleEvent - - ;; Event - ; attributes - #:bubbles - #:cancelable - #:current-target #:currentTarget - #:event-phase #:eventPhase - #:target - #:time-stamp #:timeStamp - #:type - ; methods - #:init-event #:initEvent - #:prevent-default #:preventDefault - #:stop-propagation #:stopPropagation - - ;; document event interface - ; methods - #:create-event #:createEvent - - ;; UIEvent - ; attributes - #:detail - #:view - ; methods - #:init-u-i-event #:initUIEvent - - ;; MouseEvent - ; attributes - #:alt-key #:altKey - #:button - #:client-x #:clientX - #:client-y #:clientY - #:ctrl-key #:ctrlKey - #:meta-key #:metaKey - #:related-target #:relatedTarget - #:screen-x #:screenX - #:screen-y #:screenY - #:shift-key #:shiftKey - ; methods - #:init-mouse-event #:initMouseEvent - - ;; mutation event interface - ; attributes - #:attr-change #:attrChange - #:attr-name #:attrName - #:new-value #:newValue - #:prev-value #:prevValue - #:related-node #:relatedNode - ; methods - #:init-mutation-event #:initMutationEvent - )) - -(re-export-symbols '#:ps-dom1-symbols '#:ps-dom2-symbols) - -(defpackage #:ps-window-wd-symbols - (:documentation "Funtions and properties of the W3C Working Draft Window object. Includes DOM level 2 symbols.") - (:export - ; attributes - #:window - #:self - #:location - - ;; location interface - ; attrs - #:href - #:hash - #:host - #:hostname - ;; #:pathname in CL - #:port - #:protocol - ;; #:search in CL - ; methods - ;; #:replace in CL - #:reload - - ;; window interface - ; attrs - #:parent - #:top - #:name - #:frame-element #:frameElement - - ;; timers - ; methods - #:set-timeout #:setTimeout - #:set-interval #:setInterval - #:clear-timeout #:clearTimeout - #:clear-interval #:clearInterval - )) - -(re-export-symbols '#:ps-dom2-symbols '#:ps-window-wd-symbols) - -(defpackage #:ps-dom-nonstandard-symbols - (:documentation "Non-W3C-standard (incl. DOM level 0) but widely implemented functions and properties.") - (:export - #:inner-h-t-m-l #:innerHTML - #:onload - - #:offset-left #:offsetLeft - #:offset-top #:offsetTop - #:offset-height #:offsetHeight - #:offset-width #:offsetWidth - - #:offset-parent #:offsetParent - - #:scroll-left #:scrollLeft - #:scroll-top #:scrollTop - #:scroll-width #:scrollWidth - #:scroll-height #:scrollHeight - - #:page-x-offset #:pageXOffset - #:page-y-offset #:pageYOffset - - #:client-height #:clientHeight - #:client-width #:clientWidth - )) - -(defpackage #:ps-dhtml-symbols - (:documentation "Meta-package containing function/property symbols - of typical HTML4/DHTML browsers. Includes DOM Levels 0 to 2, Window - working draft, and de-facto standard symbols. - -This is probably the package you want to :USE if you're doing -obfuscation in Parenscript and want to target the pre-HTML5 generation -of browsers.")) - -(re-export-symbols '#:ps-window-wd-symbols '#:ps-dhtml-symbols) -(re-export-symbols '#:ps-dom-nonstandard-symbols '#:ps-dhtml-symbols) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/js-ir-package.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/js-ir-package.lisp deleted file mode 100644 index 0047412..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/js-ir-package.lisp +++ /dev/null @@ -1,145 +0,0 @@ -;;; Copyright 2010, 2012 Vladimir Sedach - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - - -(in-package #:parenscript) -(in-readtable :parenscript) - -(defpackage #:ps-js - (:use) - (:export - ;; operators - ;; arithmetic - #:+ - #:unary-plus - #:- - #:negate - #:* - #:/ - #:% - - ;; bitwise - #:& - #:\| - #:^ - #:~ - #:>> - #:<< - #:>>> - - ;; assignment - #:= - #:+= - #:-= - #:*= - #:/= - #:%= - #:&= - #:\|= - #:^= - #:~= - #:>>= - #:<<= - #:>>>= - - ;; increment/decrement - #:++ - #:-- - #:post++ - #:post-- - - ;; comparison - #:== - #:=== - #:!= - #:!== - #:> - #:>= - #:< - #:<= - - ;; logical - #:&& - #:\|\| - #:! - - ;; misc - #:? ;; ternary - #:|,| - #:delete - #:function - #:get - #:set - #:in - #:instanceof - #:new - #:typeof - #:void - - ;; literals - #:nil - #:t - #:false - #:undefined - #:this - - ;; statements - #:block - #:break - #:continue - #:do-while ; currently unused - #:for - #:for-in - #:if - #:label - #:return - #:switch - #:default - #:throw - #:try - #:var - #:while - #:with - - #:array - #:aref - #:cond - #:lambda - #:defun - #:object - #:getprop - #:funcall - #:escape - #:regex - )) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/lib/ps-dom.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/lib/ps-dom.lisp deleted file mode 100644 index 72db033..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/lib/ps-dom.lisp +++ /dev/null @@ -1,78 +0,0 @@ -;;; Copyright 2009-2010 Daniel Gackle - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript) - -;; Utilities for accessing standard DOM functionality in a Lispier, PSier way. - -(defpsmacro inner-html (el) - `(@ ,el 'inner-h-t-m-l)) - -(defpsmacro uri-encode (str) - `(if (null ,str) "" (encode-u-r-i-component ,str))) - -(defpsmacro attribute (el attr) - `((@ ,el 'get-attribute) ,attr)) - -(defun assert-is-one-of (val options) - (unless (member val options) - (error "~s is not one of ~s" val options))) - -(defpsmacro offset (what el) - (if (consp what) - `(offset ,(eval what) ,el) - (case what - ((:top :left :height :width) `(@ ,el ,(intern (format nil "OFFSET-~a" what)))) - (:right `(+ (offset :left ,el) (offset :width ,el))) - (:bottom `(+ (offset :top ,el) (offset :height ,el))) - (:hcenter `(+ (offset :left ,el) (/ (offset :width ,el) 2))) - (:vcenter `(+ (offset :top ,el) (/ (offset :height ,el) 2))) - (t (error "The OFFSET macro doesn't accept ~s as a key." what))))) - -(defpsmacro scroll (what el) - (assert-is-one-of what '(:top :left :right :bottom :width :height)) - (cond ((member what '(:top :left :width :height)) - `(@ ,el ,(intern (format nil "SCROLL-~a" what)))) - ((eq what :right) - `(+ (scroll :left ,el) (offset :width ,el))) - ((eq what :bottom) - `(+ (scroll :top ,el) (offset :height ,el))))) - -(defpsmacro inner (what el) - (assert-is-one-of what '(:width :height)) - `(@ ,el ,(intern (format nil "INNER-~a" what)))) - -(defpsmacro client (what el) - (assert-is-one-of what '(:width :height)) - `(@ ,el ,(intern (format nil "CLIENT-~a" what)))) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/lib/ps-html.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/lib/ps-html.lisp deleted file mode 100644 index 51656b0..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/lib/ps-html.lisp +++ /dev/null @@ -1,141 +0,0 @@ -;;; Copyright 2005 Manuel Odendahl -;;; Copyright 2005 Edward Marco Baringer -;;; Copyright 2007-2011 Vladimir Sedach - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript) -(named-readtables:in-readtable :parenscript) - -(defvar *ps-html-empty-tag-aware-p* t) -(defvar *ps-html-mode* :sgml "One of :sgml or :xml") - -(defvar *html-empty-tags* '(:area :atop :audioscope :base :basefont :br :choose :col :frame - :hr :img :input :isindex :keygen :left :limittext :link :meta - :nextid :of :over :param :range :right :spacer :spot :tab :wbr)) - -(defun empty-tag-p (tag) - (and *ps-html-empty-tag-aware-p* - (member tag *html-empty-tags*))) - -(defun concat-constant-strings (str-list) - (flet ((expand (expr) - (setf expr (ps-macroexpand expr)) - (cond ((and (consp expr) (eq (car expr) 'quote) (symbolp (second expr))) - (symbol-to-js-string (second expr))) - ((keywordp expr) (string-downcase expr)) - ((characterp expr) (string expr)) - (t expr)))) - (reverse (reduce (lambda (optimized-list next-expr) - (let ((next-obj (expand next-expr))) - (if (and (or (numberp next-obj) (stringp next-obj)) - (stringp (car optimized-list))) - (cons (format nil "~a~a" (car optimized-list) next-obj) (cdr optimized-list)) - (cons next-obj optimized-list)))) - (cons () str-list))))) - -(defun process-html-forms-lhtml (forms) - (let ((r ())) - (labels ((process-attrs (attrs) - (do (attr-test attr-name attr-val) - ((not attrs)) - (setf attr-name (pop attrs) - attr-test (when (not (keywordp attr-name)) - (let ((test attr-name)) - (setf attr-name (pop attrs)) - test)) - attr-val (pop attrs)) - (if attr-test - (push `(if ,attr-test - (stringify ,(format nil " ~(~A~)=\"" attr-name) ,attr-val "\"") - "") - r) - (progn - (push (format nil " ~(~A~)=\"" attr-name) r) - (push attr-val r) - (push "\"" r))))) - (process-form% (tag attrs content) - (push (format nil "<~(~A~)" tag) r) - (process-attrs attrs) - (if (or content (not (empty-tag-p tag))) - (progn (push ">" r) - (map nil #'process-form content) - (push (format nil "" tag) r)) - (progn (when (eql *ps-html-mode* :xml) - (push "/" r)) - (push ">" r)))) - (process-form (form) - (cond ((keywordp form) (process-form (list form))) - ((atom form) (push form r)) - ((and (consp form) (keywordp (car form))) - (process-form% (car form) () (cdr form))) - ((and (consp form) (consp (first form)) (keywordp (caar form))) - (process-form% (caar form) (cdar form) (cdr form))) - (t (push form r))))) - (map nil #'process-form forms) - (concat-constant-strings (reverse r))))) - -(defun process-html-forms-cl-who (forms) - (let ((r ())) - (labels ((process-form (form) - (cond ((keywordp form) (process-form (list form))) - ((atom form) (push form r)) - ((and (consp form) (keywordp (car form))) - (push (format nil "<~(~A~)" (car form)) r) - (labels ((process-attributes (el-body) - (when el-body - (if (keywordp (car el-body)) - (progn - (push (format nil " ~(~A~)=\"" - (car el-body)) r) - (push (cadr el-body) r) - (push "\"" r) - (process-attributes (cddr el-body))) - el-body)))) - (let ((content (process-attributes (cdr form)))) - (if (or content (not (empty-tag-p (car form)))) - (progn (push ">" r) - (when content (map nil #'process-form content)) - (push (format nil "" (car form)) r)) - (progn (when (eql *ps-html-mode* :xml) - (push "/" r)) - (push ">" r)))))) - (t (push form r))))) - (map nil #'process-form forms) - (concat-constant-strings (reverse r))))) - -(defmacro+ps ps-html (&rest html-forms) - `(stringify ,@(with-standard-io-syntax (process-html-forms-lhtml html-forms)))) - -(defmacro+ps who-ps-html (&rest html-forms) - `(stringify ,@(with-standard-io-syntax (process-html-forms-cl-who html-forms)))) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/lib/ps-loop.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/lib/ps-loop.lisp deleted file mode 100644 index 3953a6a..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/lib/ps-loop.lisp +++ /dev/null @@ -1,457 +0,0 @@ -;;; Copyright 2009-2013 Daniel Gackle -;;; Copyright 2009-2012 Vladimir Sedach -;;; Copyright 2012, 2015 Boris Smilga -;;; Copyright 2018 Neil Lindquist - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript) -(named-readtables:in-readtable :parenscript) - -;;; bind and bind* - macros used for destructuring bindings in PS LOOP - -(defun dot->rest (x) - (cond ((atom x) x) - ((not (listp (cdr x))) ; dotted list - (list (dot->rest (car x)) '&rest (dot->rest (cdr x)))) - (t (cons (dot->rest (car x)) (dot->rest (cdr x)))))) - -(defun property-bindings-p (x) - (when (consp x) - (every (lambda (y) - (or (keywordp y) ; standalone property name - (and (consp y) ; var name paired with property name - (= (length y) 2) - (symbolp (car y)) - (not (keywordp (car y))) - (keywordp (cadr y))))) - x))) - -(defun extract-bindings (x) - ;; returns a pair of destructuring bindings and property bindings - (cond ((atom x) (list x nil)) - ((property-bindings-p x) - (let ((var (ps-gensym))) - (list var (list x var)))) - (t (loop :for y :on x - :for (d p) = (extract-bindings (car y)) - :collect d :into ds - :when p :append p :into ps - :finally (return (list ds ps)))))) - -(defun property-bindings (bindings expr body) - `(let ,(loop :for b :in bindings - :for (var p) = (cond ((consp b) b) ; var name paired with property name - (t (list (intern (string b)) b))) ; make var from prop - :collect `(,var (@ ,expr ,p))) - ,@body)) - -(defpsmacro bind (bindings expr &body body) - (let ((bindings (dot->rest bindings))) - (destructuring-bind (d p) - (extract-bindings bindings) - (cond ((and (atom d) - (or (= (length bindings) 1) - (atom (ps-macroexpand expr)))) - (property-bindings bindings expr body)) - ((atom d) - (with-ps-gensyms (var) - `(let ((,var ,expr)) - (bind ,bindings ,var ,@body)))) - ((null p) - `(destructuring-bind ,bindings ,expr ,@body)) - (t `(destructuring-bind ,d ,expr - (bind* ,p ,@body))))))) - -(defpsmacro bind* (bindings &body body) - (cond ((= (length bindings) 2) - `(bind ,(car bindings) ,(cadr bindings) ,@body)) - (t `(bind ,(car bindings) ,(cadr bindings) - (bind* ,(cddr bindings) ,@body))))) - -(eval-when (:compile-toplevel :load-toplevel :execute) - (defvar *loop-keywords* - '(:named :for :repeat :with :while :until :initially :finally - :from :downfrom :to :below :downto :above :by :in :across :on := :then - :when :unless :if :else :end :do :doing :return - :sum :summing :collect :collecting :append :appending :count :counting - :minimize :minimizing :maximize :maximizing :map :mapping - :of :into)) - - (defun as-keyword (key) - (cond ((not (symbolp key)) key) - ((keywordp key) key) - (t (intern (symbol-name key) :keyword))))) - -(defmacro loop-case (key &body forms) - (loop :for (match . nil) :in forms - :for keys = (if (listp match) match (list match)) :do - (loop :for k :in keys :do - (assert (member k (append *loop-keywords* '(t otherwise))) - nil "~a isn't a recognized loop keyword." k))) - `(case (as-keyword ,key) ,@forms)) - -(defun err (expected got) - (error "PS-LOOP expected ~a, got ~a." expected got)) - -(defclass loop-state () - ((tokens :initarg :tokens :accessor tokens) - (name :initform nil :accessor name) - ;; A clause is either (:BODY FORM) or (:ITER PLACE INIT STEP TEST &OPTIONAL JS-OBJ) - (clauses :initform nil :accessor clauses) - (prologue :initform nil :accessor prologue) - (finally :initform nil :accessor finally) - (accum-var :initform nil :accessor accum-var) - (accum-kind :initform nil :accessor accum-kind))) - -(defun push-body-clause (clause state) - (push (list :body clause) (clauses state))) - -(defun push-iter-clause (clause state) - (push (cons :iter clause) (clauses state))) - -(defun push-tokens (state toks) - (setf (tokens state) (append toks (tokens state)))) - -(defun peek (state) - (car (tokens state))) - -(defun eat (state &optional what tag) - "Consumes the next meaningful chunk of loop for processing." - (case what - (:if (when (eq (as-keyword (peek state)) tag) - (eat state) - (values (eat state) t))) - (:progn (cons 'progn (loop :collect (if (consp (peek state)) - (eat state) - (err "a compound form" (peek state))) - :until (atom (peek state))))) - (otherwise (let ((tok (pop (tokens state)))) - (when (and (eq what :atom) (not (atom tok))) - (err "an atom" tok)) - (when (and (eq what :symbol) (not (symbolp tok))) - (err "a symbol" tok)) - tok)))) - -(defun maybe-hoist (expr state) - (cond ((complex-js-expr? expr) - (let ((var (ps-gensym))) - (push (list 'setf var expr) (prologue state)) - var)) - (t expr))) - -(defun for-from (from-key var state) - (unless (atom var) - (err "an atom after FROM" var)) - (let ((start (eat state)) - (op (loop-case from-key (:downfrom '-) (otherwise '+))) - (test-op (loop-case from-key (:downfrom '>=) (otherwise '<=))) - (by nil) - (end nil)) - (loop while (member (as-keyword (peek state)) '(:to :below :downto :above :by)) do - (let ((term (eat state))) - (if (eq (as-keyword term) :by) - (setf by (eat state)) - (setf op (loop-case term ((:downto :above) '-) (otherwise op)) - test-op (loop-case term (:to test-op) (:below '<) (:downto '>=) (:above '>)) - end (eat state))))) - (let ((test (when test-op - (list test-op var (maybe-hoist end state))))) - (push-iter-clause `(,var ,start (,op ,var ,(or by 1)) ,test) state)))) - -(defun for-= (place state) - (let ((start (eat state))) - (multiple-value-bind (then thenp) - (eat state :if :then) - (push-iter-clause (list place start (if thenp then start) nil) state)))) - -(defun for-in (place state) - (let ((arr (maybe-hoist (eat state) state)) - (index (ps-gensym))) - (push-tokens state `(,index :from 0 :below (length ,arr) - ,place := (aref ,arr ,index))) - (for-clause state) - (for-clause state))) - -(defun for-on (place state) - (let* ((arr (eat state)) - (by (or (eat state :if :by) 1)) - (var (if (atom place) place (ps-gensym))) - (then (if (numberp by) `((@ ,var :slice) ,by) `(,by ,var)))) - (push-tokens state `(,var := ,arr :then ,then)) - (for-clause state) - ;; set the end-test by snooping into the iteration clause we just added - (setf (fifth (car (clauses state))) `(> (length ,var) 0)) - (unless (eq place var) - (push-tokens state `(,place := ,var)) - (for-clause state)))) - -(defun for-keys-of (place state) - (when (clauses state) - (error "FOR..OF is only allowed as the first clause in a loop.")) - (when (consp place) - (unless (<= (length place) 2) ; length 1 is ok, treat (k) as (k nil) - (error "FOR..OF must be followed by a key variable or key-value pair.")) - (unless (atom (first place)) - (error "The key in a FOR..OF clause must be a variable."))) - (let ((k (or (if (atom place) place (first place)) (ps-gensym))) - (v (when (consp place) (second place)))) - (let ((js-obj (eat state))) - (when v ; assign JS-OBJ to a local var if we need to for value binding (otherwise inline it) - (setf js-obj (maybe-hoist js-obj state))) - (push-iter-clause (list k nil nil nil js-obj) state) - (when v - (let ((val `(getprop ,js-obj ,k))) - (push-iter-clause (list v val val nil) state)))))) - -(defun for-clause (state) - (let ((place (eat state)) - (term (eat state :atom))) - (loop-case term - ((:from :downfrom) (for-from term place state)) - (:= (for-= place state)) - ((:in :across) (for-in place state)) - (:on (for-on place state)) - (:of (for-keys-of place state)) - (otherwise (error "FOR ~s ~s is not valid in PS-LOOP." place term))))) - -(defun a-with-clause (state) ;; so named to avoid with-xxx macro convention - (let ((place (eat state))) - (push (list 'setf place (eat state :if :=)) (prologue state)))) - -(defun accumulate (kind item var state) - (when (null var) - (when (and (accum-kind state) (not (eq kind (accum-kind state)))) - (error "PS-LOOP encountered illegal ~a: ~a was already declared, and there can only be one kind of implicit accumulation per loop." kind (accum-kind state))) - (unless (accum-var state) - (setf (accum-var state) - (ps-gensym (string (loop-case kind - ((:minimize :minimizing) 'min) - ((:maximize :maximizing) 'max) - (t kind))))) - (setf (accum-kind state) kind)) - (setf var (accum-var state))) - (let ((initial (loop-case kind - ((:sum :summing :count :counting) 0) - ((:maximize :maximizing :minimize :minimizing) nil) - ((:collect :collecting :append :appending) '[]) - ((:map :mapping) '{})))) - (push (list 'setf var initial) (prologue state))) - (loop-case kind - ((:sum :summing)`(incf ,var ,item)) - ((:count :counting)`(when ,item (incf ,var))) ;; note the JS semantics - neither 0 nor "" will count - ((:minimize :minimizing) `(setf ,var (if (null ,var) ,item (min ,var ,item)))) - ((:maximize :maximizing) `(setf ,var (if (null ,var) ,item (max ,var ,item)))) - ((:collect :collecting) `((@ ,var 'push) ,item)) - ((:append :appending) `(setf ,var (append ,var ,item))) - ((:map :mapping) (destructuring-bind (key val) item - `(setf (getprop ,var ,key) ,val))))) - -(defun repeat-clause (state) - (let ((index (ps-gensym))) - (setf (tokens state) (append `(,index :from 0 :below ,(eat state)) (tokens state))) - (for-clause state))) - -(defun while-clause (state) - (push-iter-clause (list nil nil nil (eat state)) state)) - -(defun until-clause (state) - (push-iter-clause (list nil nil nil `(not ,(eat state))) state)) - -(defun body-clause (term state) - (loop-case term - ((:if :when :unless) - (let* ((test-form (eat state)) - (seqs (list (body-clause (eat state :atom) state))) - (alts (list))) - (loop while (eq (as-keyword (peek state)) :and) - do (eat state) - (push (body-clause (eat state :atom) state) seqs)) - (when (eq (as-keyword (peek state)) :else) - (eat state) - (push (body-clause (eat state :atom) state) alts) - (loop while (eq (as-keyword (peek state)) :and) - do (eat state) - (push (body-clause (eat state :atom) state) alts))) - (when (eq (as-keyword (peek state)) :end) - (eat state)) - (if (null alts) - `(,(loop-case term ((:unless) 'unless) (otherwise 'when)) - ,test-form - ,@(reverse seqs)) - `(if ,(loop-case term - ((:unless) `(not ,test-form)) - (otherwise test-form)) - (progn ,@(reverse seqs)) - (progn ,@(reverse alts)))))) - ((:sum :summing :collect :collecting :append :appending :count :counting - :minimize :minimizing :maximize :maximizing) - (accumulate term (eat state) (eat state :if :into) state)) - ((:map :mapping) (let ((key (eat state))) - (multiple-value-bind (val valp) - (eat state :if :to) - (unless valp - (error "MAP must be followed by a TO to specify value.")) - (accumulate :map (list key val) (eat state :if :into) state)))) - ((:do :doing) (eat state :progn)) - (:return `(return-from ,(name state) ,(eat state))) - (otherwise (err "a PS-LOOP keyword" term)))) - -(defun clause (state) - (let ((term (eat state :atom))) - (loop-case term - (:named (setf (name state) (eat state :symbol))) - (:with (a-with-clause state)) - (:initially (push (eat state :progn) (prologue state))) - (:for (for-clause state)) - (:repeat (repeat-clause state)) - (:while (while-clause state)) - (:until (until-clause state)) - (:finally (push (eat state :progn) (finally state))) - (otherwise (push-body-clause (body-clause term state) state))))) - -(defun parse-ps-loop (terms) - (cond ((null terms) (err "loop definition" nil)) - (t (let ((state (make-instance 'loop-state :tokens terms))) - (loop :while (tokens state) :do (clause state)) - state)))) - -(defun fold-iterations-where-possible (clauses) - (let ((folded '())) - (loop :for clause :in clauses :do - (assert (member (car clause) '(:iter :body))) - (let ((folded? nil)) - (when (and (eq (car clause) :iter) (eq (caar folded) :iter)) - (destructuring-bind (tag place init step test &optional js-obj) clause - (declare (ignore tag)) - (when (null place) ;; can't combine two iterations that both have state - (assert (not (or init step js-obj)) nil "Invalid iteration ~a: PLACE should not be null." clause) - (assert test nil "Iteration ~a has neither PLACE nor TEST." clause) - (unless (sixth (car folded)) ;; js-obj means a for..in loop and those can't have tests - (let ((prev-test (fifth (car folded)))) - (setf (fifth (car folded)) (if prev-test `(and ,prev-test ,test) test)) - (setf folded? t)))))) - (unless folded? - (push clause folded)))) - (nreverse folded))) - -(defun organize-iterations (clauses) - ;; we want clauses to start with a master loop to provide the - ;; skeleton for everything else. secondary iterations are ok but - ;; will be generated inside the body of this master loop - (unless (eq (caar clauses) :iter) - (push (list :iter nil nil nil t) clauses)) - ;; unify adjacent test expressions by ANDing them together where possible - (setf clauses (fold-iterations-where-possible clauses)) - ;; if leading iteration has a binding expression, replace it with a var - (destructuring-bind (tag place init step test &optional js-obj) (car clauses) - (assert (eq tag :iter)) - (when (complex-js-expr? place) - (assert (null js-obj) nil "Invalid iteration ~a: FOR..IN can't have a binding expression." (car clauses)) - (let ((var (ps-gensym))) - (pop clauses) - (push (list :iter place var var nil) clauses) - (push (list :iter var init step test) clauses)))) - clauses) - -(defun build-body (clauses firstvar) - (cond ((null clauses) nil) - ((eq (caar clauses) :body) - (cons (second (car clauses)) (build-body (cdr clauses) firstvar))) - (t (destructuring-bind (tag place init step test) (car clauses) - (assert (eq tag :iter)) - (let ((body (build-body (cdr clauses) firstvar))) - (when test - (push `(unless ,test (break)) body)) - (when place - (let ((expr (if (tree-equal init step) init `(if ,firstvar ,init ,step)))) - (setf body - (cond ((and (atom place) (eq expr init)) - `((let ((,place ,expr)) ,@body))) - ;; can't use LET because EXPR may reference PLACE - ((atom place) `((var ,place ,expr) ,@body)) - ;; BIND has scoping problems. For example, - ;; (loop :for (a b) = x :then b) doesn't work - ;; since EXPR is referencing part of PLACE. - ;; But the following is ok for known uses so far. - (t `((bind ,place ,expr ,@body))))))) - body))))) - -(define-statement-operator loop-while (test &rest body) - `(ps-js:while ,(compile-expression test) - ,(compile-loop-body () body))) - -(defun master-loop (master-iter body) - (destructuring-bind (tag place init step test &optional js-obj) master-iter - (assert (eq tag :iter)) - (cond ((null place) `(loop-while ,test ,@body)) - (js-obj - (assert (not (or init step test)) nil "Unexpected iteration state in for..in loop: ~a" master-iter) - `(for-in (,place ,js-obj) ,@body)) - (t (assert (atom place) nil "Unexpected destructuring list ~a in master loop" place) - `(for ((,place ,init)) (,(or test t)) ((setf ,place ,step)) ,@body))))) - -(defun build-loop (clauses) - (destructuring-bind (master . rest) clauses - (assert (eq (car master) :iter) nil "First clause is not master loop: ~a" master) - (let* ((firstvar (loop :for (tag nil init step) :in rest - :when (and (eq tag :iter) (not (tree-equal init step))) - :do (return (ps-gensym 'FIRST)))) - (body (build-body rest firstvar))) - (when firstvar - (setf body (append body `((setf ,firstvar nil))))) - (let ((form (master-loop master body))) - (if firstvar `(let ((,firstvar t)) ,form) form))))) - -(defun prologue-wrap (prologue body) - (cond ((null prologue) body) - ((equal 'setf (caar prologue)) - (destructuring-bind (place expr) (cdr (car prologue)) - (prologue-wrap - (cdr prologue) - (cond ((atom place) (cons `(var ,place ,expr) body)) - (t `((bind ,place ,expr ,@body))))))) - (t (prologue-wrap - (cdr prologue) - (cons (car prologue) body))))) - -(defpsmacro loop (&rest keywords-and-forms) - (let ((state (parse-ps-loop keywords-and-forms))) - (let* ((clauses (organize-iterations (reverse (clauses state)))) - (main `(,(build-loop (organize-iterations clauses)) - ,@(reverse (finally state)) - ,@(awhen (accum-var state) (list it)))) - (full `(block ,(name state) ,@(prologue-wrap (prologue state) main)))) - (if (accum-var state) - (with-lambda-scope full) - full)))) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/macros.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/macros.lisp deleted file mode 100644 index 64e9593..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/macros.lisp +++ /dev/null @@ -1,548 +0,0 @@ -;;; Copyright 2005 Manuel Odendahl -;;; Copyright 2005-2006 Edward Marco Baringer -;;; Copyright 2006 Luca Capello -;;; Copyright 2010-2012 Vladimir Sedach -;;; Copyright 2010-2013 Daniel Gackle -;;; Copyright 2012, 2014 Boris Smilga - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript) -(in-readtable :parenscript) - -(macrolet ((define-trivial-mappings (&rest mappings) - `(progn - ,@(loop for (macro-name ps-op) on mappings by #'cddr collect - `(defpsmacro ,macro-name (&rest args) - (cons ',ps-op args)))))) - (define-trivial-mappings - string= eql - eq eql - = eql - list array - elt aref)) - -(defpsmacro null (x) - `(equal ,x nil)) - -;;; Math - -(defmacro def-js-maths (&rest mathdefs) - `(progn ,@(mapcar (lambda (def) (cons 'defpsmacro def)) mathdefs))) - -(def-js-maths - (max (&rest nums) `((@ *math max) ,@nums)) - (min (&rest nums) `((@ *math min) ,@nums)) - (floor (n &optional divisor) - `((@ *math floor) ,(if divisor `(/ ,n ,divisor) n))) - (ceiling (n &optional divisor) - `((@ *math ceil) ,(if divisor `(/ ,n ,divisor) n))) - (round (n &optional divisor) - `((@ *math round) ,(if divisor `(/ ,n ,divisor) n))) - (sin (n) `((@ *math sin) ,n)) - (cos (n) `((@ *math cos) ,n)) - (tan (n) `((@ *math tan) ,n)) - (asin (n) `((@ *math asin) ,n)) - (acos (n) `((@ *math acos) ,n)) - (atan (y &optional x) (if x `((@ *math atan2) ,y ,x) `((@ *math atan) ,y))) - (sinh (x) - (maybe-once-only (x) - `(/ (- (exp ,x) (exp (- ,x))) 2))) - (cosh (x) - (maybe-once-only (x) - `(/ (+ (exp ,x) (exp (- ,x))) 2))) - (tanh (x) - (maybe-once-only (x) - `(/ (- (exp ,x) (exp (- ,x))) (+ (exp ,x) (exp (- ,x)))))) - (asinh (x) - (maybe-once-only (x) - `(log (+ ,x (sqrt (1+ (* ,x ,x))))))) - (acosh (x) - (maybe-once-only (x) - `(* 2 (log (+ (sqrt (/ (1+ ,x) 2)) (sqrt (/ (1- ,x) 2))))))) - (atanh (x) ;; real only for -1 < x < 1, otherwise complex - (maybe-once-only (x) - `(/ (- (log (+ 1 ,x)) (log (- 1 ,x))) 2))) - (mod (x n) - (maybe-once-only (n) - `(rem (+ (rem ,x ,n) ,n) ,n))) - (1+ (n) `(+ ,n 1)) - (1- (n) `(- ,n 1)) - (abs (n) `((@ *math abs) ,n)) - (evenp (n) `(not (oddp ,n))) - (oddp (n) `(rem ,n 2)) - (exp (n) `((@ *math exp) ,n)) - (expt (base power) `((@ *math pow) ,base ,power)) - (log (n &optional base) - (or (and (null base) `((@ *math log) ,n)) - (and (numberp base) (= base 10) `(* (log ,n) (@ *math *log10e*))) - `(/ (log ,n) (log ,base)))) - (sqrt (n) `((@ *math sqrt) ,n)) - (random (&optional upto) (if upto - (maybe-once-only (upto) - `(if (rem ,upto 1) - (* ,upto (random)) - (floor (* ,upto (random))))) - '(funcall (@ *math random))))) - -(defpsmacro ash (integer count) - (let ((count (ps-macroexpand count))) - (cond ((and (numberp count) (> count 0)) `(<< ,integer ,count)) - ((numberp count) `(>> ,integer ,(- count))) - ((complex-js-expr? count) - (let ((count-var (ps-gensym))) - `(let ((,count-var ,count)) - (if (> ,count-var 0) - (<< ,integer ,count-var) - (>> ,integer (- ,count-var)))))) - (t `(if (> ,count 0) - (<< ,integer ,count) - (>> ,integer (- ,count))))))) - -(define-ps-symbol-macro pi (getprop *math '*pi*)) - -;;; Types - -(defpsmacro stringp (x) - `(string= (typeof ,x) "string")) - -(defpsmacro numberp (x) - `(string= (typeof ,x) "number")) - -(defpsmacro functionp (x) - `(string= (typeof ,x) "function")) - -(defpsmacro booleanp (x) - `(string= (typeof ,x) "boolean")) - -(defpsmacro listp (x) - (if (js-target-at-least "1.8.5") - `(funcall (getprop Array 'is-array) ,x) - `(string= (funcall (getprop Object 'prototype 'to-string 'call) ,x) - "[object Array]"))) - -(defpsmacro arrayp (x) - `(listp ,x)) - -;;; Data structures - -(defpsmacro make-array (&rest args) - (or (ignore-errors - (destructuring-bind (dim &key (initial-element nil initial-element-p) - initial-contents element-type) - args - (declare (ignore element-type)) - (and (or initial-element-p initial-contents) - (not (and initial-element-p initial-contents)) - (with-ps-gensyms (arr init elt i) - `(let ((,arr (new (*array ,dim)))) - ,@(when initial-element-p - `((let ((,elt ,initial-element)) - (dotimes (,i (length ,arr)) - (setf (aref ,arr ,i) ,elt))))) - ,@(when initial-contents - `((let ((,init ,initial-contents)) - (dotimes (,i (min (length ,arr) (length ,init))) - (setf (aref ,arr ,i) (aref ,init ,i)))))) - ,arr))))) - `(new (*array ,@args)))) - -(defpsmacro length (a) - `(getprop ,a 'length)) - -;;; Getters - -(defpsmacro with-slots (slots object &rest body) - (flet ((slot-var (slot) - (if (listp slot) - (first slot) - slot)) - (slot-symbol (slot) - (if (listp slot) - (second slot) - slot))) - (maybe-once-only (object) - `(symbol-macrolet ,(mapcar (lambda (slot) - `(,(slot-var slot) (getprop ,object ',(slot-symbol slot)))) - slots) - ,@body)))) - -;;; multiple values - -(defpsmacro multiple-value-bind (vars form &body body) - (let* ((form (ps-macroexpand form)) - (progn-form (when (and (consp form) - (member (car form) - '(with label let flet labels - macrolet symbol-macrolet progn))) - (pop form)))) - (if progn-form - `(,progn-form - ,@(butlast form) - (multiple-value-bind ,vars - ,@(last form) - ,@body)) - ;; assume function call - `(progn - (setf __PS_MV_REG '()) - (let ((,(car vars) ,form)) - (destructuring-bind (&optional ,@(cdr vars)) - __PS_MV_REG - ,@body)))))) - -(defpsmacro multiple-value-list (form) - (with-ps-gensyms (first-value values-list) - `(let* ((,first-value (progn - (setf __PS_MV_REG '()) - ,form)) - (,values-list (funcall (getprop __PS_MV_REG 'slice)))) - (funcall (getprop ,values-list 'unshift) ,first-value) - ,values-list))) - -;;; conditionals - -(defpsmacro case (value &rest clauses) - (labels - ((make-switch-clause (val body more) - (if (consp val) - (append (mapcar #'list (butlast val)) - (make-switch-clause - (if (eq t (car (last val))) ;; literal 'true' - '%true - (car (last val))) - body - more)) - `((,(cond ((member val '(t otherwise)) 'default) - ((eql val '%true) t) - ((eql val 'false) 'false) - ((null val) 'false) - ((symbolp val) (list 'quote val)) - (t val)) - ,@body - ,@(when more '(break))))))) - `(switch ,value - ,@(mapcon (lambda (clause) - (make-switch-clause (car (first clause)) - (cdr (first clause)) - (rest clause))) - clauses)))) - -(defpsmacro when (test &rest body) - `(if ,test (progn ,@body))) - -(defpsmacro unless (test &rest body) - `(when (not ,test) ,@body)) - -;;; function definition - -(defpsmacro defun (name lambda-list &body body) - "An extended defun macro that allows cool things like keyword arguments. -lambda-list::= - (var* - [&optional {var | (var [init-form [supplied-p-parameter]])}*] - [&rest var] - [&key {var | ({var | (keyword-name var)} [init-form [supplied-p-parameter]])}* [&allow-other-keys]] - [&aux {var | (var [init-form])}*])" - (if (symbolp name) - (progn (setf (gethash name *function-lambda-list*) lambda-list) - `(defun% ,name ,lambda-list ,@body)) - (progn (assert (and (listp name) (= (length name) 2) (eq 'setf (car name))) () - "(defun ~s ~s ...) needs to have a symbol or (setf symbol) for a name." name lambda-list) - `(defun-setf ,(second name) ,lambda-list ,@body)))) - -;;; defining setf expanders - -(defvar *defun-setf-name-prefix* '__setf_) - -(defpsmacro defun-setf (name lambda-list &body body) - (let ((mangled-function-name - (intern (format nil "~A~A" (string *defun-setf-name-prefix*) (string name)) - (symbol-package name)))) - (setf (gethash name *setf-expanders*) - (lambda (access-args store-form) - `(,mangled-function-name ,store-form ,@access-args))) - `(defun ,mangled-function-name ,lambda-list ,@body))) - -;;; slightly broken WRT lambda lists -(defpsmacro defsetf-long (access-fn lambda-list (store-var) form) - (setf (gethash access-fn *setf-expanders*) - (compile - nil - (let ((var-bindings (ordered-set-difference lambda-list - lambda-list-keywords))) - `(lambda (access-fn-args store-form) - (destructuring-bind ,lambda-list - access-fn-args - (let* ((,store-var (ps-gensym)) - (gensymed-names (loop repeat ,(length var-bindings) - collecting (ps-gensym))) - (gensymed-arg-bindings (mapcar #'list - gensymed-names - (list ,@var-bindings)))) - (destructuring-bind ,var-bindings - gensymed-names - `(let* (,@gensymed-arg-bindings - (,,store-var ,store-form)) - ,,form)))))))) - nil) - -(defpsmacro defsetf-short (access-fn update-fn &optional docstring) - (declare (ignore docstring)) - (setf (gethash access-fn *setf-expanders*) - (lambda (access-fn-args store-form) - `(,update-fn ,@access-fn-args ,store-form))) - nil) - -(defpsmacro defsetf (access-fn &rest args) - `(,(if (= (length args) 3) 'defsetf-long 'defsetf-short) ,access-fn ,@args)) - -;;; setf - -(defpsmacro setf (&rest args) - (assert (evenp (length args)) () - "~s does not have an even number of arguments." `(setf ,args)) - `(progn ,@(loop for (place value) on args by #'cddr collect - (aif (and (listp place) (gethash (car place) *setf-expanders*)) - (funcall it (cdr place) value) - `(ps-assign ,place ,value))))) - -(defpsmacro psetf (&rest args) - (let ((places (loop for x in args by #'cddr collect x)) - (vals (loop for x in (cdr args) by #'cddr collect x))) - (let ((gensyms (loop repeat (length places) collect (ps-gensym)))) - `(let ,(mapcar #'list gensyms vals) - (setf ,@(mapcan #'list places gensyms)))))) - -(defun check-setq-args (args) - (let ((vars (loop for x in args by #'cddr collect x))) - (let ((non-var (find-if (complement #'symbolp) vars))) - (when non-var - (error 'type-error :datum non-var :expected-type 'symbol))))) - -(defpsmacro setq (&rest args) - (check-setq-args args) - `(setf ,@args)) - -(defpsmacro psetq (&rest args) - (check-setq-args args) - `(psetf ,@args)) - -;;; iteration - -(defun do-make-iteration-bindings (decls) - (mapcar (lambda (x) - (cond ((atom x) x) - ((endp (cdr x)) (list (car x))) - (t (subseq x 0 2)))) - decls)) - -(defun do-make-for-steps (decls) - (mapcar (lambda (x) - `(setf ,(first x) ,(third x))) - (remove-if (lambda (x) - (or (atom x) (< (length x) 3))) - decls))) - -(defun do-make-iter-psteps (decls) - `(psetq - ,@(mapcan (lambda (x) - (list (first x) (third x))) - (remove-if (lambda (x) - (or (atom x) (< (length x) 3))) - decls)))) - -(defpsmacro do* (decls (end-test &optional (result nil result?)) &body body) - `(block nil - (for ,(do-make-iteration-bindings decls) - ((not ,end-test)) - ,(do-make-for-steps decls) - (locally ,@body)) - ,@(when result? (list result)))) - -(defpsmacro do (decls (end-test &optional (result nil result?)) &body body) - (multiple-value-bind (do-body declarations) - (parse-body body) - `(block nil - (let ,(do-make-iteration-bindings decls) - ,@declarations - (for () ((not ,end-test)) () - ,@do-body - ,(do-make-iter-psteps decls)) - ,@(when result? (list result)))))) - -(defpsmacro dotimes ((var count &optional (result nil result?)) &rest body) - `(do* ((,var 0 (1+ ,var))) - ((>= ,var ,count) - ,@(when result? `((let ((,var nil)) ,result)))) - ,@body)) - -(defpsmacro dolist ((var array &optional (result nil result?)) &body body) - (let* ((idx (ps-gensym '_js_idx)) - (introduce-array-var? (not (symbolp array))) - (arrvar (if introduce-array-var? - (ps-gensym '_js_arrvar) - array))) - `(do* (,var - ,@(when introduce-array-var? - (list (list arrvar array))) - (,idx 0 (1+ ,idx))) - ((>= ,idx (getprop ,arrvar 'length)) - ,@(when result? `((let ((,var nil)) ,result)))) - (setq ,var (aref ,arrvar ,idx)) - ,@body))) - -;;; Concatenation - -(defpsmacro concatenate (result-type &rest sequences) - (assert (equal result-type ''string) () "Right now Parenscript 'concatenate' only support strings.") - (cons '+ sequences)) - -(defpsmacro append (arr1 &rest arrs) - (if arrs - `((@ ,arr1 concat) ,@arrs) - arr1)) - -;;; Destructuring bind - -(defun complex-js-expr? (expr) - (consp (if (symbolp expr) (ps-macroexpand expr) expr))) - -(defun hoist-expr? (bindings expr) - (and (> (length bindings) 1) (complex-js-expr? expr))) - -(defun pop-declarations-for-var (var declarations) - (loop for declarations* on declarations - with var-declarations = nil - do (setf (first declarations*) - (loop for spec in (first declarations*) - ;; We only care for SPECIAL declarations for now - ;; (cf. WITH-DECLARATION-EFFECTS) - if (and (consp spec) (eq 'special (first spec))) - collect - (let ((vars* (remove var (rest spec)))) - (if (eq vars* (cdr spec)) - spec - (progn - (pushnew var (getf var-declarations 'special)) - (cons 'special vars*)))) - else - collect spec)) - finally (return - (loop for (sym decls) on var-declarations by #'cddr - collect (cons sym decls))))) - -(defun destructuring-wrap (arr n bindings declarations body) - (cond ((null bindings) body) - ((eq (car bindings) '&rest) - (cond ((and (= (length bindings) 2) (atom (second bindings))) - `(let ((,(second bindings) (if (> (length ,arr) ,n) ((@ ,arr slice) ,n) '()))) - (declare ,@(pop-declarations-for-var (second bindings) declarations)) - ,body)) - (t (error "~a is invalid in destructuring list." bindings)))) - ((eq (car bindings) '&optional) - (destructuring-wrap arr n (cdr bindings) declarations body)) - (t (let ((var (car bindings)) - (inner-body (destructuring-wrap arr (1+ n) (cdr bindings) declarations body))) - (cond ((null var) inner-body) - ((atom var) `(let ((,var (aref ,arr ,n))) - (declare ,@(pop-declarations-for-var var declarations)) - ,inner-body)) - (t `(,'destructuring-bind ,var (aref ,arr ,n) - ,@declarations - ,inner-body))))))) - -(defpsmacro destructuring-bind (bindings expr &body body) - (setf bindings (dot->rest bindings)) - (multiple-value-bind (body1 declarations) (parse-body body) - (let* ((arr (if (hoist-expr? bindings expr) (ps-gensym '_db) expr)) - (bound (destructuring-wrap arr 0 bindings declarations - (cons 'progn body1)))) - (cond ((eq arr expr) bound) - (t `(let ((,arr ,expr)) ,bound)))))) - -;;; Control structures - -(defpsmacro return (&optional result) - `(return-from nil ,result)) - -(defpsmacro ignore-errors (&body forms) - (with-ps-gensyms (e) - `(try (progn ,@forms) - (:catch (,e) nil)))) - -(defpsmacro unwind-protect (protected-form cleanup-form) - `(try ,protected-form - (:finally ,cleanup-form))) - -(defpsmacro prog1 (first &rest others) - (with-ps-gensyms (val) - `(let ((,val (multiple-value-list ,first))) - ,@others - (values-list ,val)))) - -(defpsmacro prog2 (first second &rest others) - `(progn ,first (prog1 ,second ,@others))) - -(defpsmacro apply (fn &rest args) - (let ((arglist (if (> (length args) 1) - `(append (list ,@(butlast args)) ,(car (last args))) - (first args)))) - (if (and (listp fn) - (find (car fn) #(getprop chain @))) - (if (and (= (length fn) 3) (symbolp (second fn))) - `(funcall (getprop ,fn 'apply) ,(second fn) ,arglist) - (let ((obj (ps-gensym)) (method (ps-gensym))) - `(let* ((,obj ,(butlast fn)) - (,method (,(car fn) ,obj ,(car (last fn))))) - (funcall (getprop ,method 'apply) ,obj ,arglist)))) - `(funcall (getprop ,fn 'apply) this ,arglist)))) - -;;; misc - -(defpsmacro let* (bindings &body body) - (multiple-value-bind (let-body declarations) (parse-body body) - (loop for binding in (cons nil (reverse bindings)) - for var = (if (symbolp binding) binding (car binding)) - for body = let-body - then `((let (,binding) - (declare ,@(pop-declarations-for-var var declarations)) - ,@body)) - finally (return `(progn ,@body))))) - -(defpsmacro in-package (package-designator) - `(eval-when (:compile-toplevel) - (in-package ,package-designator))) - -(defpsmacro use-package (package-designator &optional package) - `(eval-when (:compile-toplevel) - (use-package ,package-designator ,@(when package (list package))))) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/namespace.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/namespace.lisp deleted file mode 100644 index 2a9bc6d..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/namespace.lisp +++ /dev/null @@ -1,73 +0,0 @@ -;;; Copyright 2007-2010 Vladimir Sedach -;;; Copyright 2008 Travis Cross - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript) -(in-readtable :parenscript) - -(defvar *obfuscated-packages* (make-hash-table)) - -(defun obfuscate-package (package-designator &optional symbol-map) - (setf (gethash (find-package package-designator) - *obfuscated-packages*) - (or symbol-map - (let ((symbol-table (make-hash-table))) - (lambda (symbol) - (or (gethash symbol symbol-table) - (setf (gethash symbol symbol-table) - (ps-gensym 'g)))))))) - -(defun unobfuscate-package (package-designator) - (remhash (find-package package-designator) *obfuscated-packages*)) - -(defun maybe-obfuscate-symbol (symbol) - (if (aand (symbol-package symbol) (eq :external (nth-value 1 (find-symbol (symbol-name symbol) it)))) - symbol - (aif (gethash (symbol-package symbol) *obfuscated-packages*) - (funcall it symbol) - symbol))) - -(defvar *package-prefix-table* (make-hash-table)) - -(defmacro ps-package-prefix (package) - `(gethash (find-package ,package) *package-prefix-table*)) - -(defun symbol-to-js-string (symbol &optional (mangle-symbol-name? t)) - (let* ((symbol-name (symbol-name (maybe-obfuscate-symbol symbol))) - (identifier (if mangle-symbol-name? - (encode-js-identifier symbol-name) - symbol-name))) - (aif (ps-package-prefix (symbol-package symbol)) - (concatenate 'string it identifier) - identifier))) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/non-cl.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/non-cl.lisp deleted file mode 100644 index 421ff5a..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/non-cl.lisp +++ /dev/null @@ -1,247 +0,0 @@ -;;; Copyright 2005 Manuel Odendahl -;;; Copyright 2005-2006 Edward Marco Baringer -;;; Copyright 2006 Luca Capello -;;; Copyright 2010-2012 Vladimir Sedach -;;; Copyright 2012, 2014, 2015 Boris Smilga - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript) -(in-readtable :parenscript) - -;;; PS operators and macros that aren't present in the Common Lisp -;;; standard but exported by Parenscript, and their Common Lisp -;;; equivalent definitions - -(defmacro define-trivial-special-ops (&rest mappings) - `(progn ,@(loop for (form-name js-primitive) on mappings by #'cddr collect - `(define-expression-operator ,form-name (&rest args) - (cons ',js-primitive (mapcar #'compile-expression args)))))) - -(define-trivial-special-ops - array ps-js:array - instanceof ps-js:instanceof - typeof ps-js:typeof - new ps-js:new - delete ps-js:delete - in ps-js:in ;; maybe rename to slot-boundp? - break ps-js:break - << ps-js:<< - >> ps-js:>> - ) - -(define-statement-operator continue (&optional label) - `(ps-js:continue ,label)) - -(define-statement-operator switch (test-expr &rest clauses) - `(ps-js:switch ,(compile-expression test-expr) - ,@(let ((in-case? t)) - (loop for (val . body) in clauses collect - (cons (if (eq val 'default) - 'ps-js:default - (compile-expression val)) - (flatten-blocks - (mapcar #'compile-statement body))))))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; objects - -(define-expression-operator create (&rest arrows) - (let ((allow-accessors (js-target-at-least "1.8.5"))) - (cons - 'ps-js:object - (loop for (key val-expr) on arrows by #'cddr - for (accessor . accessor-args) = - (when (and allow-accessors - (consp key) - (symbolp (first key)) - (symbolp (second key))) - (case (first key) - (get (and (null (third key)) - `((ps-js:get ,(second key))))) - (set (and (symbolp (third key)) (null (fourth key)) - `((ps-js:set ,(second key)) ,(third key)))))) - collecting - (if accessor - (list accessor accessor-args - (let ((*function-block-names* ())) - (compile-function-body (third accessor) - (list val-expr)))) - (cons (cond ((and (symbolp key) (reserved-symbol-p key)) - (reserved-symbol-p key)) - ((or (stringp key) (numberp key) (symbolp key)) - key) - ((and (consp key) - (eq 'quote (first key)) - (symbolp (second key)) - (null (third key))) - (symbol-to-js-string (second key))) - (t - (error "Slot key ~s is not one of ~ - ~{~a~#[~;, or ~:;, ~]~}." - key - (list* "symbol" "string" "number" - (when allow-accessors - '("accessor spec")))))) - (compile-expression val-expr))))))) - -(define-expression-operator %js-getprop (obj slot) - (let ((expanded-slot (ps-macroexpand slot)) - (obj (compile-expression obj))) - (if (and (listp expanded-slot) - (eq 'quote (car expanded-slot))) - (aif (or (reserved-symbol-p (second expanded-slot)) - (and (keywordp (second expanded-slot)) (second expanded-slot))) - `(ps-js:aref ,obj ,it) - `(ps-js:getprop ,obj ,(second expanded-slot))) - `(ps-js:aref ,obj ,(compile-expression slot))))) - -(defpsmacro getprop (obj &rest slots) - (if (null (rest slots)) - `(%js-getprop ,obj ,(first slots)) - `(getprop (getprop ,obj ,(first slots)) ,@(rest slots)))) - -(defpsmacro @ (obj &rest props) - "Handy getprop/aref composition macro." - (if props - `(@ (getprop ,obj ,(if (symbolp (car props)) - `',(car props) - (car props))) - ,@(cdr props)) - obj)) - -(defun chain (method-calls) - (let ((chain (car method-calls))) - (dolist (next (cdr method-calls)) - (setf chain (if (consp next) - `(funcall (@ ,chain ,(car next)) ,@(cdr next)) - `(@ ,chain ,next)))) - chain)) - -(defpsmacro chain (&rest method-calls) - (chain method-calls)) - -;;; var - -(define-expression-operator var (name &optional (value (values) value?) docstr) - (declare (ignore docstr)) - (push name *vars-needing-to-be-declared*) - (when value? (compile-expression `(setf ,name ,value)))) - -(define-statement-operator var (name &optional (value (values) value?) docstr) - (let ((value (ps-macroexpand value))) - (if (and (listp value) (eq 'progn (car value))) - (ps-compile `(progn ,@(butlast (cdr value)) - (var ,name ,(car (last value))))) - `(ps-js:var ,(ps-macroexpand name) - ,@(when value? (list (compile-expression value) docstr)))))) - -(defmacro var (name &optional value docstr) - `(defparameter ,name ,value ,@(when docstr (list docstr)))) - -;;; iteration - -(define-statement-operator for (init-forms cond-forms step-forms &body body) - (let ((init-forms (make-for-vars/inits init-forms))) - `(ps-js:for ,init-forms - ,(mapcar #'compile-expression cond-forms) - ,(mapcar #'compile-expression step-forms) - ,(compile-loop-body (mapcar #'car init-forms) body)))) - -(define-statement-operator for-in ((var object) &rest body) - `(ps-js:for-in ,(compile-expression var) - ,(compile-expression object) - ,(compile-loop-body (list var) body))) - -;;; misc - -(define-statement-operator try (form &rest clauses) - (let ((catch (cdr (assoc :catch clauses))) - (finally (cdr (assoc :finally clauses)))) - (assert (not (cdar catch)) () - "Sorry, currently only simple catch forms are supported.") - (assert (or catch finally) () - "Try form should have either a catch or a finally clause or both.") - `(ps-js:try - ,(compile-statement `(progn ,form)) - :catch ,(when catch - (list (caar catch) - (compile-statement `(progn ,@(cdr catch))))) - :finally ,(when finally - (compile-statement `(progn ,@finally)))))) - -(define-expression-operator regex (regex) - `(ps-js:regex ,(string regex))) - -(define-expression-operator lisp (lisp-form) - ;; (ps (foo (lisp bar))) is like (ps* `(foo ,bar)) - ;; When called from inside of ps*, lisp-form has access to the - ;; dynamic environment only, analogous to eval. - `(ps-js:escape - (with-output-to-string (*psw-stream*) - (let ((compile-expression? ,compile-expression?) - (*js-string-delimiter* ,*js-string-delimiter*) - (eval-results (multiple-value-list ,lisp-form))) - (when eval-results - (parenscript-print (ps-compile (car eval-results)) t)))))) - -(defun lisp (x) x) - -(defpsmacro undefined (x) - `(eql "undefined" (typeof ,x))) - -(defpsmacro defined (x) - `(not (undefined ,x))) - -(defpsmacro objectp (x) - `(string= (typeof ,x) "object")) - -(define-ps-symbol-macro {} (create)) - -(defpsmacro [] (&rest args) - `(array ,@(mapcar (lambda (arg) - (if (and (consp arg) (not (equal '[] (car arg)))) - (cons '[] arg) - arg)) - args))) - -(defpsmacro stringify (&rest things) - (if (and (= (length things) 1) (stringp (car things))) - (car things) - `(funcall (getprop (list ,@things) 'join) ""))) -(defun stringify (&rest things) - "Like concatenate but prints all of its arguments." - (format nil "~{~A~}" things)) - -(define-ps-symbol-macro false ps-js:false) -(defvar false nil) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/package.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/package.lisp deleted file mode 100644 index fbfb2b5..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/package.lisp +++ /dev/null @@ -1,349 +0,0 @@ -;;; Copyright 2005 Manuel Odendahl -;;; Copyright 2005-2006 Edward Marco Baringer -;;; Copyright 2006 Luca Capello -;;; Copyright 2006 Atilla Lendvai -;;; Copyright 2007-2012 Vladimir Sedach -;;; Copyright 2007 Red Daly -;;; Copyright 2008 Travis Cross - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:cl) - -(pushnew :parenscript *features*) - -(eval-when (:compile-toplevel :load-toplevel :execute) - (unless (named-readtables:find-readtable :parenscript) - (named-readtables:defreadtable :parenscript - (:merge :standard) - (:case #.(if (eql :upcase (readtable-case *readtable*)) - :invert - (readtable-case *readtable*)))))) - -(named-readtables:in-readtable :parenscript) - -(defpackage #:parenscript - (:use #:cl #:anaphora #:named-readtables) - (:nicknames #:ps) - (:export -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Compiler interface - - ;; compiler - #:*js-target-version* - #:ps - #:*parenscript-stream* - #:ps-to-stream - #:ps-doc - #:ps-doc* - #:ps* - #:ps-inline - #:ps-inline* - #:*ps-read-function* - #:ps-compile-file - #:ps-compile-stream - ;; for parenscript macro definition within lisp - #:defpsmacro - #:defmacro+ps - #:import-macros-from-lisp - #:*defined-operators* - #:*version* - - ;; gensym - #:ps-gensym - #:with-ps-gensyms - #:ps-once-only - #:maybe-once-only - #:*ps-gensym-counter* - - ;; naming and namespaces - #:in-package - #:use-package - #:ps-package-prefix - #:obfuscate-package - #:unobfuscate-package - - ;; printer - #:symbol-to-js-string - #:*js-string-delimiter* - #:*js-inline-string-delimiter* - #:*ps-print-pretty* - #:*indent-num-spaces* - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Language - - ;; literals - #:t - #:nil - - ;; array literals - #:array - #:list - #:aref - #:elt - #:make-array - #:[] - - ;; operators - ;; logical boolean - #:not - #:and - #:or - - ;; bitwise boolean - #:logand - #:logior - #:logxor - #:lognot - #:ash - - #:* - #:/ - #:rem - #:mod - #:+ - #:- - #:< - #:> - #:<= - #:>= - #:incf - #:decf - #:equal - #:eql - #:eq - #:= - - ;; compile-time stuff - #:eval-when - - ;; body forms - #:progn - - ;; if - #:if - #:when - #:unless - - ;; control flow - #:return - #:return-from - #:throw - - ;; assignment and binding - #:setf - #:defsetf - #:psetf - #:setq - #:psetq - #:let* - #:let - - ;; variables - #:defvar - - ;; iteration - #:do - #:do* - #:dotimes - #:dolist - #:loop - - ;; case - #:switch - #:case - #:default - - ;; function definition - #:defun - #:lambda - #:flet - #:labels - - ;; lambda lists - #:&key - #:&rest - #:&body - #:&optional - #:&aux - #:&environment - #:&key-object - - ;; macros - #:macrolet - #:symbol-macrolet - #:define-symbol-macro - #:define-ps-symbol-macro - #:defmacro - - ;; utils - #:max - #:min - #:floor - #:ceiling - #:round - #:sin - #:cos - #:tan - #:asin - #:acos - #:atan - #:pi - #:sinh - #:cosh - #:tanh - #:asinh - #:acosh - #:atanh - #:1+ - #:1- - #:abs - #:evenp - #:oddp - #:exp - #:expt - #:log - #:sqrt - #:random - #:ignore-errors - #:concatenate - #:length - #:stringp - #:numberp - #:functionp - #:append - #:apply - #:destructuring-bind - - ;; js runtime utils - #:*ps-lisp-library* - #:mapcar - #:map-into - #:map - #:member - #:append - #:set-difference - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Non-Common Lisp functionality - - ;; DOM accessing utils - #:inner-html - #:uri-encode - #:attribute - #:offset - #:scroll - #:inner - #:client - - ;; utils - #:@ - #:chain - #:defined - #:undefined - #:booleanp - #:objectp - #:stringify - - ;; html generator for javascript - #:*ps-html-empty-tag-aware-p* - #:*ps-html-mode* - #:ps-html - #:who-ps-html - - ;; lisp eval - #:lisp - - ;; js object stuff - #:delete - #:typeof - #:instanceof - #:new - #:create - - ;; slot access - #:with-slots - #:getprop - #:in - - ;; literals - #:regex - #:this - #:undefined - #:{} - #:false - - ;; iteration - #:for - #:for-in - #:while - - ;; global var - #:var - - ;; control flow - #:try - #:break - #:continue - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Deprecated functionality - - #:define-script-symbol-macro - #:gen-js-name - #:with-unique-js-names - #:defjsmacro - #:js-compile - #:js-inline - #:js-inline* - #:js - #:js* - #:symbol-to-js - #:slot-value - #:compile-script - #:defmacro/ps - #:% - #:== - #:=== - #:!= - #:!== - #:labeled-for - #:do-set-timeout - #:concat-string - #:with - #:label - #:f - #:bind - #:bind* - )) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/parse-lambda-list.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/parse-lambda-list.lisp deleted file mode 100644 index 8b7b902..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/parse-lambda-list.lisp +++ /dev/null @@ -1,259 +0,0 @@ -;;; Copyright 2007 Red Daly - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript) - -;;;; This software was taken from the SBCL system, mostly verbatim. - -;;; if you have found this on google, THIS IS NOT AN SBCL SOURCE FILE - -;;; Break something like a lambda list (but not necessarily actually a -;;; lambda list, e.g. the representation of argument types which is -;;; used within an FTYPE specification) into its component parts. We -;;; return twelve values: -;;; 1. a list of the required args; -;;; 2. a list of the &OPTIONAL arg specs; -;;; 3. true if a &REST arg was specified; -;;; 4. the &REST arg; -;;; 5. true if &KEY args are present; -;;; 6. a list of the &KEY arg specs; -;;; 7. true if &ALLOW-OTHER-KEYS was specified.; -;;; 8. true if any &AUX is present (new in SBCL vs. CMU CL); -;;; 9. a list of the &AUX specifiers; -;;; 10. true if a &MORE arg was specified; -;;; 11. the &MORE context var; -;;; 12. the &MORE count var; -;;; 13. true if any lambda list keyword is present (only for -;;; PARSE-LAMBDA-LIST-LIKE-THING). -;;; 14. the &KEY-OBJECT var -;;; -;;; The top level lambda list syntax is checked for validity, but the -;;; arg specifiers are just passed through untouched. - -(eval-when (:compile-toplevel :load-toplevel :execute) - (defun collect-list-expander (n-value n-tail forms) - (let ((n-res (gensym))) - `(progn - ,@(mapcar (lambda (form) - `(let ((,n-res (cons ,form nil))) - (cond (,n-tail - (setf (cdr ,n-tail) ,n-res) - (setq ,n-tail ,n-res)) - (t - (setq ,n-tail ,n-res ,n-value ,n-res))))) - forms) - ,n-value)))) - -(defmacro collect (collections &body body) - (let ((macros ()) - (binds ())) - (dolist (spec collections) - ;;(unless (proper-list-of-length-p spec 1 3) - ;; (error "malformed collection specifier: ~S" spec)) - (let* ((name (first spec)) - (default (second spec)) - (kind (or (third spec) 'collect)) - (n-value (gensym (concatenate 'string - (symbol-name name) - "-N-VALUE-")))) - (push `(,n-value ,default) binds) - (if (eq kind 'collect) - (let ((n-tail (gensym (concatenate 'string - (symbol-name name) - "-N-TAIL-")))) - (if default - (push `(,n-tail (last ,n-value)) binds) - (push n-tail binds)) - (push `(,name (&rest args) - (collect-list-expander ',n-value ',n-tail args)) - macros)) - (push `(,name (&rest args) - (collect-normal-expander ',n-value ',kind args)) - macros)))) - `(macrolet ,macros (let* ,(nreverse binds) ,@body)))) - -(defparameter *lambda-list-keywords* - '(&allow-other-keys &aux &body &environment &key &key-object &optional &rest &whole)) - -(defun style-warn (&rest args) (apply #'format t args)) - -(defun parse-lambda-list-like-thing (list) - (collect ((required) - (optional) - (keys) - (aux)) - (let ((restp nil) - (rest nil) - (morep nil) - (more-context nil) - (more-count nil) - (keyp nil) - (auxp nil) - (allowp nil) - (key-object nil) - (state :required)) - (declare (type (member :allow-other-keys :aux - :key - :more-context :more-count - :optional - :post-more :post-rest - :required :rest - :key-object :post-key) - state)) - (dolist (arg list) - (if (member arg *lambda-list-keywords*) - (case arg - (&optional - (unless (eq state :required) - (format t "misplaced &OPTIONAL in lambda list: ~S" - list)) - (setq state :optional)) - (&rest - (unless (member state '(:required :optional)) - (format t "misplaced &REST in lambda list: ~S" list)) - (setq state :rest)) - (&more - (unless (member state '(:required :optional)) - (format t "misplaced &MORE in lambda list: ~S" list)) - (setq morep t - state :more-context)) - (&key - (unless (member state - '(:required :optional :post-rest :post-more)) - (format t "misplaced &KEY in lambda list: ~S" list)) - (when (optional) - (format t "&OPTIONAL and &KEY found in the same lambda list: ~S" list)) - (setq keyp t - state :key)) - (&allow-other-keys - (unless (member state '(:key :post-key)) - (format t "misplaced &ALLOW-OTHER-KEYS in ~ - lambda list: ~S" - list)) - (setq allowp t - state :allow-other-keys)) - (&aux - (when (member state '(:rest :more-context :more-count)) - (format t "misplaced &AUX in lambda list: ~S" list)) - (when auxp - (format t "multiple &AUX in lambda list: ~S" list)) - (setq auxp t - state :aux)) - (&key-object - (unless (member state '(:key :allow-other-keys)) - (format t "&key-object misplaced in lmabda list: ~S. Belongs after &key" list)) - (setf state :key-object)) - (t (format t "unknown LAMBDA-LIST-KEYWORD in lambda list: ~S." arg))) - (progn - (when (symbolp arg) - (let ((name (symbol-name arg))) - (when (and (plusp (length name)) - (char= (char name 0) #\&)) - (style-warn - "suspicious variable in lambda list: ~S." arg)))) - (case state - (:required (required arg)) - (:optional (optional arg)) - (:rest - (setq restp t - rest arg - state :post-rest)) - (:more-context - (setq more-context arg - state :more-count)) - (:more-count - (setq more-count arg - state :post-more)) - (:key (keys arg)) - (:key-object (setf key-object arg) (setf state :post-key)) - (:aux (aux arg)) - (t - (format t "found garbage in lambda list when expecting ~ - a keyword: ~S" - arg)))))) - (when (eq state :rest) - (format t "&REST without rest variable")) - - (values (required) (optional) restp rest keyp (keys) allowp auxp (aux) - morep more-context more-count - (not (eq state :required)) - key-object)))) - -;;; like PARSE-LAMBDA-LIST-LIKE-THING, except our LAMBDA-LIST argument -;;; really *is* a lambda list, not just a "lambda-list-like thing", so -;;; can barf on things which're illegal as arguments in lambda lists -;;; even if they could conceivably be legal in not-quite-a-lambda-list -;;; weirdosities -(defun parse-lambda-list (lambda-list) - ;; Classify parameters without checking their validity individually. - (multiple-value-bind (required optional restp rest keyp keys allowp auxp aux - morep more-context more-count beyond-requireds? key-object) - (parse-lambda-list-like-thing lambda-list) - (declare (ignore beyond-requireds?)) - ;; Check validity of parameters. - (flet ((need-symbol (x why) - (unless (symbolp x) - (format t "~A is not a symbol: ~S" why x)))) - (dolist (i required) - (need-symbol i "Required argument")) - (dolist (i optional) - (typecase i - (symbol) - (cons - (destructuring-bind (var &optional init-form supplied-p) i - (declare (ignore init-form supplied-p)) - (need-symbol var "&OPTIONAL parameter name"))) - (t - (format t "&OPTIONAL parameter is not a symbol or cons: ~S" - i)))) - (when restp - (need-symbol rest "&REST argument")) - (when keyp - (dolist (i keys) - (typecase i - (symbol) - (cons - (destructuring-bind (var-or-kv &optional init-form supplied-p) i - (declare (ignore init-form supplied-p)) - (if (consp var-or-kv) - (destructuring-bind (keyword-name var) var-or-kv - (declare (ignore keyword-name)) - (need-symbol var "&KEY parameter name")) - (need-symbol var-or-kv "&KEY parameter name")))) - (t - (format t "&KEY parameter is not a symbol or cons: ~S" - i)))))) - ;; Voila. - (values required optional restp rest keyp keys allowp auxp aux - morep more-context more-count key-object))) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/printer.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/printer.lisp deleted file mode 100644 index 420455c..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/printer.lisp +++ /dev/null @@ -1,415 +0,0 @@ -;;; Copyright 2005 Manuel Odendahl -;;; Copyright 2005-2006 Edward Marco Baringer -;;; Copyright 2007-2012 Vladimir Sedach -;;; Copyright 2008 Travis Cross -;;; Copyright 2009-2013 Daniel Gackle -;;; Copyright 2010 Scott Bell -;;; Copyright 2014 Boris Smilga - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript) -(in-readtable :parenscript) - -(defvar *ps-print-pretty* t) -(defvar *indent-num-spaces* 4) -(defvar *js-string-delimiter* #\' - "Specifies which character should be used for delimiting strings. - -This variable is used when you want to embed the resulting JavaScript -in an html attribute delimited by #\\\" as opposed to #\\', or -vice-versa.") - -(defvar *indent-level*) -(defvar *column*) - -(defvar *psw-stream*) - -(defun parenscript-print (form immediate?) - (declare (special immediate?)) - (let ((*indent-level* 0) - (*column* 0) - (*psw-stream* (if immediate? - *psw-stream* - (make-string-output-stream))) - (%psw-accumulator ())) - (declare (special %psw-accumulator)) - (with-standard-io-syntax - (if (and (listp form) (eq 'ps-js:block (car form))) ; ignore top-level block - (loop for (statement . remaining) on (cdr form) do - (ps-print statement) (psw #\;) (when remaining (psw #\Newline))) - (ps-print form))) - (unless immediate? - (reverse (cons (get-output-stream-string *psw-stream*) - %psw-accumulator))))) - -(defun psw (&rest objs) - (dolist (obj objs) - (declare (special %psw-accumulator immediate?)) - (typecase obj - (string - (incf *column* (length obj)) - (write-string obj *psw-stream*)) - (character - (if (eql obj #\Newline) - (setf *column* 0) - (incf *column*)) - (write-char obj *psw-stream*)) - (otherwise - (if immediate? - (let ((str (eval obj))) - (incf *column* (length str)) - (write-string str *psw-stream*)) - (setf %psw-accumulator - (list* obj - (get-output-stream-string *psw-stream*) - %psw-accumulator))))))) - -(defgeneric ps-print (form)) -(defgeneric ps-print% (js-primitive args)) - -(defmacro defprinter (js-primitive args &body body) - (if (listp js-primitive) - (cons 'progn (mapcar (lambda (p) - `(defprinter ,p ,args ,@body)) - js-primitive)) - (let ((pargs (gensym))) - `(defmethod ps-print% ((op (eql ',js-primitive)) ,pargs) - (declare (ignorable op)) - (destructuring-bind ,args - ,pargs - ,@(loop for x in body collect - (if (or (characterp x) - (stringp x)) - (list 'psw x) - x))))))) - -(defmethod ps-print ((x null)) - (psw "null")) - -(defmethod ps-print ((x (eql t))) - (psw "true")) - -(defmethod ps-print ((x (eql 'ps-js:false))) - (psw "false")) - -(defmethod ps-print ((s symbol)) - (if (keywordp s) - (ps-print (string-downcase s)) - (psw (symbol-to-js-string s)))) - -(defmethod ps-print ((compiled-form cons)) - (ps-print% (car compiled-form) (cdr compiled-form))) - -(defun newline-and-indent (&optional indent-spaces) - (if *ps-print-pretty* - (progn (psw #\Newline) - (loop repeat (if indent-spaces - indent-spaces - (* *indent-level* *indent-num-spaces*)) - do (psw #\Space))) - (psw #\Space))) - -(defun print-comment (comment-str) - (when *ps-print-pretty* - (let ((lines (cl-ppcre:split #\Newline comment-str))) - (if (cdr lines) - (progn (psw "/**") (newline-and-indent) - (dolist (x lines) (psw " * " x) (newline-and-indent)) - (psw " */")) - (psw "/** " comment-str " */")) - (newline-and-indent)))) - -(defparameter *js-lisp-escaped-chars* - (list #\' #\' - #\" #\" - #\\ #\\ - #\Backspace #\b - (code-char 12) #\f - #\Newline #\n - #\Return #\r - #\Tab #\t)) - -(defmethod ps-print ((char character)) - (ps-print (string char))) - -(defmethod ps-print ((string string)) - (psw *js-string-delimiter*) - (loop for char across string do - (acond ((getf *js-lisp-escaped-chars* char) - (psw #\\ it)) - ((or (<= (char-code char) #x1F) - (<= #x80 (char-code char) #x9F) - (member (char-code char) '(#xA0 #xAD #x200B #x200C))) - (format *psw-stream* "\\u~:@(~4,'0x~)" (char-code char))) - (t - (psw char)))) - (psw *js-string-delimiter*)) - -(defmethod ps-print ((number number)) - (format *psw-stream* (if (integerp number) "~D" "~F") number)) - -(let ((precedence-table (make-hash-table :test 'eq))) - (loop for level in '((ps-js:getprop ps-js:aref ps-js:funcall) - (ps-js:new) - (ps-js:lambda) ;; you won't find this in JS books - (ps-js:++ ps-js:-- ps-js:post++ ps-js:post--) - (ps-js:! ps-js:~ ps-js:negate ps-js:unary-plus ps-js:typeof ps-js:delete) - (ps-js:* ps-js:/ ps-js:%) - (ps-js:- ps-js:+) - (ps-js:<< ps-js:>> ps-js:>>>) - (ps-js:< ps-js:> ps-js:<= ps-js:>= ps-js:instanceof ps-js:in) - (ps-js:== ps-js:!= ps-js:=== ps-js:!==) - (ps-js:&) - (ps-js:^) - (ps-js:\|) - (ps-js:&&) - (ps-js:\|\|) - (ps-js:?) - (ps-js:= ps-js:*= ps-js:/= ps-js:%= ps-js:+= ps-js:-= ps-js:<<= ps-js:>>= ps-js:>>>= ps-js:&= ps-js:^= ps-js:\|=) - (ps-js:return ps-js:throw) - (ps-js:|,|)) - for i from 0 - do (mapc (lambda (symbol) - (setf (gethash symbol precedence-table) i)) - level)) - (defun precedence (op) - (gethash op precedence-table -1))) - -(defun associative? (op) - (member op '(ps-js:* ps-js:& ps-js:&& ps-js:\| ps-js:\|\| - ps-js:funcall ps-js:aref ps-js:getprop))) ;; these aren't really associative, but RPN - -(defun parenthesize-print (x) - (psw #\() (ps-print x) (psw #\))) - -(defun print-op-argument (op argument) - (let ((arg-op (when (listp argument) (car argument)))) - (if (or (< (precedence op) (precedence arg-op)) - (and (= (precedence op) (precedence arg-op)) - (or (not (associative? op)) (not (associative? arg-op))))) - (parenthesize-print argument) - (ps-print argument)))) - -(defun print-op (op) - (psw (string-downcase op))) - -(defprinter (ps-js:! ps-js:~ ps-js:++ ps-js:--) (x) - (print-op op) (print-op-argument op x)) - -(defprinter ps-js:negate (x) - "-"(print-op-argument op x)) - -(defprinter ps-js:unary-plus (x) - "+"(print-op-argument op x)) - -(defprinter (ps-js:delete ps-js:typeof ps-js:new ps-js:throw) (x) - (print-op op)" "(print-op-argument op x)) - -(defprinter (ps-js:return) (&optional (x nil x?)) - (print-op op) - (when x? - (psw " ") (print-op-argument op x))) - -(defprinter ps-js:post++ (x) - (ps-print x)"++") - -(defprinter ps-js:post-- (x) - (ps-print x)"--") - -(defprinter (ps-js:+ ps-js:- ps-js:* ps-js:/ ps-js:% ps-js:&& ps-js:\|\| ps-js:& ps-js:\| ps-js:-= ps-js:+= ps-js:*= ps-js:/= ps-js:%= ps-js:^ ps-js:<< ps-js:>> ps-js:&= ps-js:^= ps-js:\|= ps-js:= ps-js:in ps-js:> ps-js:>= ps-js:< ps-js:<= ps-js:== ps-js:!= ps-js:=== ps-js:!==) - (&rest args) - (loop for (arg . remaining) on args do - (print-op-argument op arg) - (when remaining (format *psw-stream* " ~(~A~) " op)))) - -(defprinter ps-js:aref (array &rest indices) - (print-op-argument 'ps-js:aref array) - (dolist (idx indices) - (psw #\[) (ps-print idx) (psw #\]))) - -(defun print-comma-delimited-list (ps-forms) - (loop for (form . remaining) on ps-forms do - (print-op-argument 'ps-js:|,| form) - (when remaining (psw ", ")))) - -(defprinter ps-js:array (&rest initial-contents) - "["(print-comma-delimited-list initial-contents)"]") - -(defprinter (ps-js:|,|) (&rest expressions) - (print-comma-delimited-list expressions)) - -(defprinter ps-js:funcall (fun-designator &rest args) - (print-op-argument op fun-designator)"("(print-comma-delimited-list args)")") - -(defprinter ps-js:block (&rest statements) - "{" (incf *indent-level*) - (dolist (statement statements) - (newline-and-indent) (ps-print statement) (psw #\;)) - (decf *indent-level*) (newline-and-indent) - "}") - -(defprinter ps-js:lambda (args body-block) - (print-fun-def nil args body-block)) - -(defprinter ps-js:defun (name args docstring body-block) - (when docstring (print-comment docstring)) - (print-fun-def name args body-block)) - -(defun print-fun-def (name args body) - (destructuring-bind (keyword name) (if (consp name) name `(function ,name)) - (format *psw-stream* "~(~A~) ~:[~;~A~](" - keyword name (symbol-to-js-string name)) - (loop for (arg . remaining) on args do - (psw (symbol-to-js-string arg)) (when remaining (psw ", "))) - (psw ") ") - (ps-print body))) - -(defprinter ps-js:object (&rest slot-defs) - (psw "{ ") - (let ((indent? (< 2 (length slot-defs))) - (indent *column*)) - (loop for ((slot-name . slot-value) . remaining) on slot-defs do - (if (consp slot-name) - (apply #'print-fun-def slot-name slot-value) - (progn - (ps-print slot-name) (psw " : ") - (if (and (consp slot-value) - (eq 'ps-js:|,| (car slot-value))) - (parenthesize-print slot-value) - (ps-print slot-value)))) - (when remaining - (psw ",") - (if indent? - (newline-and-indent indent) - (psw #\Space)))) - (if indent? - (newline-and-indent (- indent 2)) - (psw #\Space))) - (psw "}")) - -(defprinter ps-js:getprop (obj slot) - (print-op-argument op obj)"."(psw (symbol-to-js-string slot))) - -(defprinter ps-js:if (test consequent &rest clauses) - "if (" (ps-print test) ") " - (ps-print consequent) - (loop while clauses do - (ecase (car clauses) - (:else-if (psw " else if (") (ps-print (cadr clauses)) (psw ") ") - (ps-print (caddr clauses)) - (setf clauses (cdddr clauses))) - (:else (psw " else ") - (ps-print (cadr clauses)) - (return))))) - -(defprinter ps-js:? (test then else) - (print-op-argument op test) " ? " - (print-op-argument op then) " : " - (print-op-argument op else)) - -(defprinter ps-js:var (var-name &optional (value (values) value?) docstring) - (when docstring (print-comment docstring)) - "var "(psw (symbol-to-js-string var-name)) - (when value? (psw " = ") (print-op-argument 'ps-js:= value))) - -(defprinter ps-js:label (label statement) - (psw (symbol-to-js-string label))": "(ps-print statement)) - -(defprinter (ps-js:continue ps-js:break) (&optional label) - (print-op op) (when label - (psw " " (symbol-to-js-string label)))) - -;;; iteration -(defprinter ps-js:for (vars tests steps body-block) - "for (" - (loop for ((var-name . var-init) . remaining) on vars - for decl = "var " then "" do - (psw decl (symbol-to-js-string var-name) " = ") - (print-op-argument 'ps-js:= var-init) - (when remaining (psw ", "))) - "; " - (loop for (test . remaining) on tests do - (ps-print test) (when remaining (psw ", "))) - "; " - (loop for (step . remaining) on steps do - (ps-print step) (when remaining (psw ", "))) - ") " - (ps-print body-block)) - -(defprinter ps-js:for-in (var object body-block) - "for (var "(ps-print var)" in "(ps-print object)") " - (ps-print body-block)) - -(defprinter (ps-js:with ps-js:while) (expression body-block) - (print-op op)" ("(ps-print expression)") " - (ps-print body-block)) - -(defprinter ps-js:switch (test &rest clauses) - "switch ("(ps-print test)") {" - (flet ((print-body (body) - (incf *indent-level*) - (loop for statement in body do - (newline-and-indent) - (ps-print statement) - (psw #\;)) - (decf *indent-level*))) - (loop for (val . statements) in clauses do - (newline-and-indent) - (if (eq val 'ps-js:default) - (progn (psw "default:") - (print-body statements)) - (progn (psw "case ") (ps-print val) (psw #\:) - (print-body statements))))) - (newline-and-indent) - "}") - -(defprinter ps-js:try (body-block &key catch finally) - "try "(ps-print body-block) - (when catch - (psw " catch ("(symbol-to-js-string (first catch))") ") - (ps-print (second catch))) - (when finally - (psw " finally ") (ps-print finally))) - -(defprinter ps-js:regex (regex) - (let ((slash (unless (and (> (length regex) 0) (char= (char regex 0) #\/)) "/"))) - (psw (concatenate 'string slash regex slash)))) - -(defprinter ps-js:instanceof (value type) - "("(print-op-argument op value)" instanceof "(print-op-argument op type)")") - -(defprinter ps-js:escape (literal-js) - ;; literal-js should be a form that evaluates to a string containing - ;; valid JavaScript - (psw literal-js)) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/special-operators.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/special-operators.lisp deleted file mode 100644 index 3644eb8..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/special-operators.lisp +++ /dev/null @@ -1,702 +0,0 @@ -;;; Copyright 2005 Manuel Odendahl -;;; Copyright 2005-2006 Edward Marco Baringer -;;; Copyright 2007-2012 Vladimir Sedach -;;; Copyright 2011-2013 Daniel Gackle -;;; Copyright 2014 Boris Smilga - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript) -(in-readtable :parenscript) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; arithmetic and logic - -(define-trivial-special-ops - + ps-js:+ - - ps-js:- - * ps-js:* - rem ps-js:% - and ps-js:&& - or ps-js:\|\| - - logand ps-js:& - logior ps-js:\| - logxor ps-js:^ - lognot ps-js:~ - - aref ps-js:aref - - funcall ps-js:funcall - ) - -(define-expression-operator / (&rest args) - `(ps-js:/ ,@(unless (cdr args) (list 1)) ,@(mapcar #'compile-expression args))) - -(define-expression-operator + (&rest args) - (let ((args (mapcar #'compile-expression args))) - (cons (if (cdr args) 'ps-js:+ 'ps-js:unary-plus) args))) - -(define-expression-operator - (&rest args) - (let ((args (mapcar #'compile-expression args))) - (cons (if (cdr args) 'ps-js:- 'ps-js:negate) args))) - -(defun fix-nary-comparison (operator objects) - (let* ((tmp-var-forms (butlast (cdr objects))) - (tmp-vars (loop repeat (length tmp-var-forms) - collect (ps-gensym '_cmp))) - (all-comparisons (append (list (car objects)) - tmp-vars - (last objects)))) - `(let ,(mapcar #'list tmp-vars tmp-var-forms) - (and ,@(loop for x1 in all-comparisons - for x2 in (cdr all-comparisons) - collect (list operator x1 x2)))))) - -(macrolet ((define-nary-comparison-forms (&rest mappings) - `(progn - ,@(loop for (form js-primitive) on mappings by #'cddr collect - `(define-expression-operator ,form (&rest objects) - (if (cddr objects) - (ps-compile - (fix-nary-comparison ',form objects)) - (cons ',js-primitive - (mapcar #'compile-expression objects)))))))) - (define-nary-comparison-forms - < ps-js:< - > ps-js:> - <= ps-js:<= - >= ps-js:>= - eql ps-js:=== - equal ps-js:==)) - -(define-expression-operator /= (a b) - ;; for n>2, /= is finding duplicates in an array of numbers (ie - - ;; nontrivial runtime algorithm), so we restrict it to binary in PS - `(ps-js:!== ,(compile-expression a) ,(compile-expression b))) - -(defun references? (exp place) - (cond ((not exp) nil) - ((atom exp) (equal exp place)) - (t (or (equal exp place) - (references? (car exp) place) - (references? (cdr exp) place))))) - -(defmacro inc-dec (op op1 op2) - `(let ((delta (ps-macroexpand delta))) - (cond ((eql delta 1) - (list ',op1 (compile-expression x))) - ((references? delta x) - (ps-compile - (let ((var (ps-gensym '_ps_incr_place))) - `(let ((,var ,delta)) - (,',op ,x ,var))))) - (t - (list ',op2 (compile-expression x) - (compile-expression delta)))))) - -(define-expression-operator incf (x &optional (delta 1)) - (inc-dec incf ps-js:++ ps-js:+=)) - -(define-expression-operator decf (x &optional (delta 1)) - (inc-dec decf ps-js:-- ps-js:-=)) - -(let ((inverses (mapcan (lambda (x) - (list x (reverse x))) - '((ps-js:=== ps-js:!==) - (ps-js:== ps-js:!=) - (ps-js:< ps-js:>=) - (ps-js:> ps-js:<=))))) - (define-expression-operator not (x) - (let ((form (compile-expression x))) - (acond ((and (listp form) (eq (car form) 'ps-js:!)) ;; not not → identity - (second form)) - ((and (listp form) (cadr (assoc (car form) inverses))) ;; not equal → != - `(,it ,@(cdr form))) - (t `(ps-js:! ,form)))))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; blocks and control flow - -(defun compile-progn (body) - (let ((block (flatten-blocks (mapcar #'ps-compile body)))) - (append (remove-if #'constantp (butlast block)) - (unless (and (or (eq *compilation-level* :toplevel) - (not compile-expression?)) - (not (car (last block)))) - (last block))))) - -(define-expression-operator progn (&rest body) - (if (cdr body) - `(ps-js:|,| ,@(compile-progn body)) - (compile-expression (car body)))) - -(define-statement-operator progn (&rest body) - `(ps-js:block ,@(compile-progn body))) - -(defvar returning-values? nil) - -(defun wrap-for-dynamic-return (handled-tags body) - (aif (loop for (tag . thrown?) in *dynamic-return-tags* - when (and thrown? (member tag handled-tags)) - collect tag) - (with-ps-gensyms (_ps_err) - (flet ((make-catch-clause (tag) - `((and ,_ps_err (eql ',tag - (getprop ,_ps_err :__ps_block_tag))) - (return-from ,tag - (getprop ,_ps_err :__ps_value) - t)))) - `(ps-js:block - (ps-js:try - ,body - :catch (,_ps_err - ,(compile-statement - `(progn (cond - ,@(mapcar #'make-catch-clause it) - (t (throw ,_ps_err)))))) - :finally nil)))) - body)) - -(define-statement-operator block (name &rest body) - (if in-function-scope? - (let* ((name (or name 'nilBlock)) - (in-loop-scope? (if name in-loop-scope? nil)) - (*dynamic-return-tags* (cons (cons name nil) - *dynamic-return-tags*)) - (*current-block-tag* name) - (compiled-body (wrap-for-dynamic-return - (list name) - (ps-compile `(progn ,@body))))) - ;; this probably does not nest correctly - (if (tree-find `(ps-js:break ,name) compiled-body) - `(ps-js:label ,name ,compiled-body) - compiled-body)) - (ps-compile (with-lambda-scope `(block ,name ,@body))))) - -(define-expression-operator values (&rest forms) - (ps-compile - (with-ps-gensyms (val) - `(let ((,val ,(car forms))) - (setf __PS_MV_REG (list ,@(cdr forms))) - ,val)))) - -(define-expression-operator values-list (list) - (ps-compile - (with-ps-gensyms (values-list firstval) - `(let ((,values-list (funcall (getprop ,list 'slice)))) - (setf ,firstval (funcall (getprop ,values-list 'shift)) - __PS_MV_REG ,values-list) - ,firstval)))) - -(define-statement-operator %simple-lexical-return (&rest value) - `(ps-js:return ,@value)) - -(defun return-exp (tag &optional (value nil value?)) - (flet ((lexical-return () - (let ((X (when value? (list (compile-expression value))))) - (ps-compile - (if (and (not returning-values?) clear-multiple-values?) - `(progn - (setf __PS_MV_REG '()) - (%simple-lexical-return ,@X)) - `(%simple-lexical-return ,@X)))))) - (acond - ((eql tag *current-block-tag*) - (compile-statement - `(progn - ,@(when (and (not returning-values?) clear-multiple-values?) - '((setf __PS_MV_REG '()))) - ,@(when value? (list value)) - (break ,tag)))) - - ((or (eql '%function tag) - (member tag *function-block-names*)) - (lexical-return)) - - ((assoc tag *dynamic-return-tags*) - (setf (cdr it) t) - (ps-compile - `(progn - ,@(unless returning-values? - '((setf __PS_MV_REG '()))) - (throw (create - :__ps_block_tag ',tag - :__ps_value ,value))))) - - (t - (warn "Returning from unknown block ~A" tag) - (lexical-return))))) - -(defun try-expressionizing-if? (exp &optional (score 0)) ;; poor man's codewalker - "Heuristic that tries not to expressionize deeply nested if expressions." - (cond ((< 1 score) nil) - ((and (listp exp) (eq (car exp) 'quote)) - t) - ((listp exp) - (loop for x in (cdr exp) always - (try-expressionizing-if? - (or (ignore-errors (ps-macroexpand x)) - x) ;; fail - (+ score (case (car exp) - ((if cond) 1) - (let (if (second exp) 1 0)) ;; ignore empty binding list - ((progn) (1- (length (cdr exp)))) - (otherwise 0)))))) - (t t))) - -(defun return-result-of (tag form) - (ps-compile - (case (car form) - ((continue break throw) ;; non-local exit - form) - ;; implicit progn forms - ((with) ;; deprecated and will be removed - `(,(first form) ,(second form) - ,@(butlast (cddr form)) - (return-from ,tag ,(car (last (cddr form)))))) - ;; implicit body (declaration + progn) forms - ((let flet labels macrolet symbol-macrolet) - (multiple-value-bind (body declarations) - (parse-body (cddr form)) - `(,(first form) ,(second form) - ,@declarations - ,@(butlast body) - (return-from ,tag ,(car (last body)))))) - ((progn locally) - `(progn ,@(butlast (cdr form)) - (return-from ,tag ,(car (last (cdr form)))))) - (switch - `(switch - ,(second form) - ,@(loop for (cvalue . cbody) in (cddr form) - for remaining on (cddr form) collect - (aif (cond ((or (eq 'default cvalue) (not (cdr remaining))) - 1) - ((eq 'break (car (last cbody))) - 2)) - (let ((result-form (ps-macroexpand - (car (last cbody it))))) - `(,cvalue - ,@(butlast cbody it) - (return-from ,tag - ,(if (eq result-form 'break) nil result-form)))) - (cons cvalue cbody))))) - (try - `(try (return-from ,tag ,(second form)) - ,@(let ((catch (cdr (assoc :catch (cdr form)))) - (finally (assoc :finally (cdr form)))) - (list (when catch - `(:catch ,(car catch) - ,@(butlast (cdr catch)) - (return-from ,tag - ,(car (last (cdr catch)))))) - finally)))) - (cond - `(cond - ,@(loop for clause in (cdr form) collect - `(,@(butlast clause) (return-from ,tag ,(car (last clause))))) - ,@(when in-case? `((t (return-from ,tag nil)))))) - (if - (if (and (try-expressionizing-if? form) - (not (tree-find 'values form)) - (let ((used-up-names *used-up-names*) - (*lambda-wrappable-statements* ())) - (handler-case (compile-expression form) - (compile-expression-error () - (setf *used-up-names* used-up-names) - nil)))) - (return-from return-result-of (return-exp tag form)) - `(if ,(second form) - (return-from ,tag ,(third form)) - ,@(when (or in-case? (fourth form)) - `((return-from ,tag ,(fourth form))))))) - (block - (let* ((tagâ‚ (or (cadr form) 'nilBlock)) - (*function-block-names* (cons tagâ‚ *function-block-names*)) - (*dynamic-return-tags* (cons (cons tagâ‚ nil) - *dynamic-return-tags*))) - (return-from return-result-of - (wrap-for-dynamic-return - (list tagâ‚) - (ps-compile `(return-from ,tag (progn ,@(cddr form)))))))) - (values - (if (cddr form) - (with-ps-gensyms (val) - `(let ((,val ,(cadr form))) - (setf __PS_MV_REG (list ,@(cddr form))) - (return-from ,tag ,val t))) - `(return-from ,tag ,@(cdr form)))) - (values-list - (with-ps-gensyms (values-list firstval) - `(let ((,values-list (funcall (getprop ,(cadr form) 'slice)))) - (setf ,firstval (funcall (getprop ,values-list 'shift)) - __PS_MV_REG ,values-list) - (return-from ,tag ,firstval t)))) - (return-from ;; this will go away someday - (unless tag - (warn 'simple-style-warning - :format-control "Trying to RETURN a RETURN without a block tag specified. Perhaps you're still returning values from functions by hand? -Parenscript now implements implicit return, update your code! Things like (lambda () (return x)) are not valid Common Lisp and may not be supported in future versions of Parenscript.")) - form) - (otherwise - (return-from return-result-of - (cond ((not (gethash (car form) *special-statement-operators*)) - (return-exp tag form)) - (in-case? - `(ps-js:block ,(compile-statement form) ,(return-exp tag))) - (t (compile-statement form)))))))) - -(define-statement-operator return-from (tag &optional - (result nil result?) - returning-values?) - (setq tag (or tag 'nilBlock)) - (if result? - (let ((form (ps-macroexpand result))) - (if (atom form) - (return-exp tag form) - (return-result-of tag form))) - (return-exp tag))) - -(define-statement-operator throw (&rest args) - `(ps-js:throw ,@(mapcar #'compile-expression args))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; conditionals - -(define-expression-operator if (test then &optional else) - `(ps-js:? ,(compile-expression test) - ,(compile-expression then) - ,(compile-expression else))) - -(define-statement-operator if (test then &optional else) - `(ps-js:if ,(compile-expression test) - ,(compile-statement `(progn ,then)) - ,@(when else - `(:else ,(compile-statement `(progn ,else)))))) - -(define-expression-operator cond (&rest clauses) - (compile-expression - (when clauses - (destructuring-bind (test &rest body) (car clauses) - (if (eq t test) - (if (null body) t `(progn ,@body)) - (flet ((conditional (test body) - `(if ,test - (progn ,@body) - (cond ,@(cdr clauses))))) - (if (null body) - (with-ps-gensyms (test-result) - `(let ((,test-result ,test)) - ,(conditional test-result (list test-result)))) - (conditional test body)))))))) - -(define-statement-operator cond (&rest clauses) - (let* ((test-result nil) - (clauses* - (loop for clause in clauses for (test . body) = clause - if body - collect clause - else - do (unless test-result (setq test-result (ps-gensym))) - and collect - (if (and (consp test) (eq (first test) 'return-from)) - (cons `(setq ,test-result ,(third test)) - `((return-from ,(second test) ,test-result))) - (cons `(setq ,test-result ,test) - `(,test-result))))) - (if-form - `(ps-js:if - ,(compile-expression (caar clauses*)) - ,(compile-statement `(progn ,@(cdar clauses*))) - ,@(loop for (test . body) in (cdr clauses*) appending - (if (eq t test) - `(:else ,(compile-statement `(progn ,@body))) - `(:else-if ,(compile-expression test) - ,(compile-statement `(progn ,@body)))))))) - (if test-result - `(ps-js:block (ps-js:var ,test-result) ,if-form) - if-form))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; binding - -(defmacro with-declaration-effects ((var block) &body body) - (with-ps-gensyms (decls) - `(multiple-value-bind (,var ,decls) (parse-body ,block) - (let ((*special-variables* - (nconc - (loop for decl in ,decls nconc - (loop for (decl-type . decl-args) in (cdr decl) - if (eq decl-type 'special) - append decl-args)) - *special-variables*))) - ,@body)))) - -(defun maybe-rename-lexical-var (x symbols-in-bindings) - (when (or (member x *enclosing-lexicals*) - (member x *enclosing-function-arguments*) - (when (boundp '*used-up-names*) - (member x *used-up-names*)) - (lookup-macro-def x *symbol-macro-env*) - (member x symbols-in-bindings)) - (ps-gensym (symbol-name x)))) - -(defun with-lambda-scope (form) - (prog1 (if (tree-find 'this - (let ((*ps-gensym-counter* *ps-gensym-counter*)) - (ps-compile `(lambda () ,form)))) - `(funcall (getprop (lambda () ,form) 'call) this) - `((lambda () ,form))) - (setf *vars-needing-to-be-declared* ()))) - -(define-expression-operator let (bindings &body body) - (with-declaration-effects (body body) - (flet ((rename (x) (first x)) - (var (x) (second x)) - (val (x) (third x))) - (let* ((new-lexicals ()) - (loop-scoped-lexicals ()) - (normalized-bindings - (mapcar (lambda (x) - (if (symbolp x) - (list x nil) - (list (car x) (ps-macroexpand (cadr x))))) - bindings)) - (symbols-in-bindings - (mapcan (lambda (x) (flatten (cadr x))) - normalized-bindings)) - (lexical-bindings - (mapcan - (lambda (x) - (unless (special-variable? (car x)) - (let ((renamed (maybe-rename-lexical-var - (car x) symbols-in-bindings))) - (if renamed - (when in-loop-scope? - (push renamed loop-scoped-lexicals)) - (progn - (push (car x) new-lexicals) - (when (boundp '*used-up-names*) - (push (car x) *used-up-names*)))) - (list (cons renamed x))))) - normalized-bindings)) - (dynamic-bindings - (loop for x in normalized-bindings - when (special-variable? (car x)) collect - (cons (ps-gensym (format nil "~A_~A" (car x) 'tmp-stack)) - x))) - (renamed-body - `(symbol-macrolet ,(loop for x in lexical-bindings - when (rename x) collect - `(,(var x) ,(rename x))) - ,@body)) - (*enclosing-lexicals* - (append new-lexicals *enclosing-lexicals*)) - (*loop-scope-lexicals* - (when in-loop-scope? - (append new-lexicals loop-scoped-lexicals - *loop-scope-lexicals*))) - (let-body - `(progn - ,@(mapcar (lambda (x) - `(var ,(or (rename x) (var x)) ,(val x))) - lexical-bindings) - ,(if dynamic-bindings - `(progn - ,@(mapcar (lambda (x) `(var ,(rename x))) - dynamic-bindings) - (try - (progn - (setf ,@(loop for x in dynamic-bindings append - `(,(rename x) ,(var x) - ,(var x) ,(val x)))) - ,renamed-body) - (:finally - (setf ,@(mapcan (lambda (x) `(,(var x) ,(rename x))) - dynamic-bindings))))) - renamed-body)))) - (ps-compile - (cond ((or in-function-scope? (null bindings)) - let-body) - ;; HACK - ((find-if - (lambda (x) (member x '(defun% defvar))) - (flatten - (loop for x in body collecting - (or (ignore-errors (ps-macroexpand x)) x)))) - let-body) - (t - (with-lambda-scope let-body)))))))) - -(define-expression-operator locally (&rest body) - (with-declaration-effects (body body) - (ps-compile `(progn ,@body)))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; macros - -(defmacro with-local-macro-environment ((var env) &body body) - `(let* ((,var (make-macro-dictionary)) - (,env (cons ,var ,env))) - ,@body)) - -(define-expression-operator macrolet (macros &body body) - (with-local-macro-environment (local-macro-dict *macro-env*) - (dolist (macro macros) - (destructuring-bind (name arglist &body body) - macro - (setf (gethash name local-macro-dict) - (eval (make-ps-macro-function arglist body))))) - (ps-compile `(locally ,@body)))) - -(define-expression-operator symbol-macrolet (symbol-macros &body body) - (with-local-macro-environment (local-macro-dict *symbol-macro-env*) - (with-declaration-effects (body body) - (let (local-var-bindings) - (dolist (macro symbol-macros) - (destructuring-bind (name expansion) macro - (setf (gethash name local-macro-dict) (lambda (x) (declare (ignore x)) expansion)) - (push name local-var-bindings))) - (let ((*enclosing-lexicals* (append local-var-bindings *enclosing-lexicals*))) - (ps-compile `(progn ,@body))))))) - -(define-expression-operator defmacro (name args &body body) - (eval `(defpsmacro ,name ,args ,@body)) - nil) - -(define-expression-operator define-symbol-macro (name expansion) - (eval `(define-ps-symbol-macro ,name ,expansion)) - nil) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; assignment - -(defun assignment-op (op) - (getf '(ps-js:+ ps-js:+= - ps-js:~ ps-js:~= - ps-js:& ps-js:&= - ps-js:- ps-js:-= - ps-js:* ps-js:*= - ps-js:% ps-js:%= - ps-js:>> ps-js:>>= - ps-js:^ ps-js:^= - ps-js:<< ps-js:<<= - ps-js:>>> ps-js:>>>= - ps-js:/ ps-js:/=) - op)) - -(define-expression-operator ps-assign (lhs rhs) - (let ((rhs (ps-macroexpand rhs))) - (if (and (listp rhs) (eq (car rhs) 'progn)) - (ps-compile `(progn ,@(butlast (cdr rhs)) - (ps-assign ,lhs ,(car (last (cdr rhs)))))) - (let ((lhs (compile-expression lhs)) - (rhs (compile-expression rhs))) - (aif (and (listp rhs) - (= 3 (length rhs)) - (equal lhs (second rhs)) - (assignment-op (first rhs))) - (list it lhs (if (fourth rhs) - (cons (first rhs) (cddr rhs)) - (third rhs))) - (list 'ps-js:= lhs rhs)))))) - -(define-statement-operator defvar (name &optional - (value (values) value-provided?) - documentation) - ;; this must be used as a top-level form, otherwise the resulting - ;; behavior will be undefined. - (declare (ignore documentation)) ; TODO: print docstring - (pushnew name *special-variables*) - - (ps-compile (if value-provided? - `(when (undefined ,name) (var ,name ,value)) - (list 'var name)))) - -(define-statement-operator defparameter - (name &optional (value (values) value-provided?) documentation) - ;; this must be used as a top-level form, otherwise the resulting - ;; behavior will be undefined. - (declare (ignore documentation)) ; TODO: print docstring - (pushnew name *special-variables*) - (ps-compile `(var ,name ,@(when value-provided? (list value))))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; iteration - -(defun make-for-vars/inits (init-forms) - (mapcar (lambda (x) - (cons (ps-macroexpand (if (atom x) x (first x))) - (compile-expression (if (atom x) nil (second x))))) - init-forms)) - -(defun compile-loop-body (loop-vars body) - (let (compiled-body loop-closures?) - (let* ((in-loop-scope? t) - (*loop-scope-lexicals* ()) - (*loop-scope-lexicals-captured* ()) - (*ps-gensym-counter* *ps-gensym-counter*)) - (setf compiled-body (compile-statement `(progn ,@body)) - loop-closures? *loop-scope-lexicals-captured*)) - (if loop-closures? - (compile-statement `(progn ((lambda () ,@body)))) - compiled-body))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; evaluation - -(define-expression-operator quote (x) - (flet ((quote% (expr) (when expr `',expr))) - (compile-expression - (typecase x - (cons `(array ,@(mapcar #'quote% x))) - ((or null (eql [])) '(array)) - (keyword x) - (symbol (symbol-to-js-string x)) - (number x) - (string x) - (vector `(array ,@(loop for el across x collect (quote% el)))))))) - -(define-expression-operator eval-when (situation-list &body body) - "The body is evaluated only during the given situations. The -accepted situations are :load-toplevel, :compile-toplevel, -and :execute. The code in BODY is assumed to be Common Lisp code -in :compile-toplevel and :load-toplevel sitations, and Parenscript -code in :execute." - (when (and (member :compile-toplevel situation-list) - (member *compilation-level* '(:toplevel :inside-toplevel-form))) - (eval `(progn ,@body))) - (if (member :execute situation-list) - (ps-compile `(progn ,@body)) - (ps-compile `(progn)))) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/utils.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/utils.lisp deleted file mode 100644 index e7ede3f..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/src/utils.lisp +++ /dev/null @@ -1,153 +0,0 @@ -;;; Copyright 2005 Manuel Odendahl -;;; Copyright 2005-2006 Edward Marco Baringer -;;; Copyright 2007 Attila Lendvai -;;; Copyright 2007 Red Daly -;;; Copyright 2007-2012 Vladimir Sedach -;;; Copyright 2008 Travis Cross - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript) - -(define-condition simple-style-warning (simple-warning style-warning) - ()) - -(let ((cache (make-hash-table :test 'equal))) - (defun encode-js-identifier (identifier) - "Given a string, produces to a valid JavaScript identifier by -following transformation heuristics case conversion. For example, -paren-script becomes parenScript, *some-global* becomes SOMEGLOBAL." - (when (and (not (string= identifier "[]")) - (find #\[ identifier)) - (warn 'simple-style-warning - :format-control - "Parenscript symbol ~A contains a literal array accessor. -This compound naming convention is deprecated and will be removed! -Use AREF, ELT, GETPROP, @, or CHAIN instead." - :format-arguments (list identifier))) - (when (find #\. identifier) - (warn 'simple-style-warning - :format-control - "Parenscript symbol ~A contains one or more dot operators. -This compound naming convention is deprecated and will be removed! -Use GETPROP, @, or CHAIN instead." - :format-arguments (list identifier))) - (or - (gethash identifier cache) - (setf - (gethash identifier cache) - (cond - ((some (lambda (c) (find c "-*+!?#@%/=:<>^")) identifier) - (let ((lowercase t) - (all-uppercase nil)) - (acond - ((nth-value 1 - (cl-ppcre:scan-to-strings - "[\\*|\\+](.+)[\\*|\\+](.*)" - identifier :sharedp t)) - (setf all-uppercase t - identifier (concatenate - 'string (aref it 0) (aref it 1)))) - ((and (> (length identifier) 1) - (or (eql (char identifier 0) #\+) - (eql (char identifier 0) #\*))) - (setf lowercase nil - identifier (subseq identifier 1)))) - (with-output-to-string (acc) - (loop - for c across identifier - do (acond - ((eql c #\-) - (setf lowercase (not lowercase))) - ((position c "!?#@%+*/=:<>^") - (write-sequence - (aref #("bang" "what" "hash" "at" "percent" - "plus" "star" "slash" "equals" "colon" - "lessthan" "greaterthan" "caret") - it) - acc)) - (t - (write-char - (if (and lowercase (not all-uppercase)) - (char-downcase c) - (char-upcase c)) - acc) - (setf lowercase t))))))) - (#.(eql :invert (readtable-case - (named-readtables:find-readtable :parenscript))) - (cond - ((every #'upper-case-p - (remove-if-not #'alpha-char-p identifier)) - (string-downcase identifier)) - ((every #'lower-case-p - (remove-if-not #'alpha-char-p identifier)) - (string-upcase identifier)) - (t identifier))) - (t identifier)))))) - -(defun ordered-set-difference (list1 list2 &key (test #'eql)) - "CL set-difference may not preserve order." - (reduce (lambda (list el) (remove el list :test test)) - (cons list1 list2))) - -(defun flatten (x &optional acc) - (cond ((null x) acc) - ((atom x) (cons x acc)) - (t (flatten (car x) (flatten (cdr x) acc))))) - -(defun flatten-blocks (body) - (when body - (if (and (listp (car body)) (eq 'ps-js:block (caar body))) - (append (flatten-blocks (cdr (car body))) - (flatten-blocks (cdr body))) - (cons (car body) (flatten-blocks (cdr body)))))) - -(defun tree-find (A tree) - (or (equal A tree) - (when (consp tree) - (loop for x on tree thereis - (or (tree-find A (car x)) - (unless (listp (cdr x)) - (equal A (cdr x)))))))) - -(defun parse-semver (semver-string) - (let ((semver-list (cl-ppcre:split "\\." semver-string)) - (semver-scaled 0)) - (dotimes (i 3) - (incf semver-scaled - (* (expt 1000 (- 2 i)) - (parse-integer (or (nth i semver-list) "0"))))) - semver-scaled)) - -(defun js-target-at-least (version) - (>= (parse-semver *js-target-version*) (parse-semver version))) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/tests/eval-tests.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/tests/eval-tests.lisp deleted file mode 100644 index 3495a2d..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/tests/eval-tests.lisp +++ /dev/null @@ -1,1092 +0,0 @@ -;;; Copyright 2011-2012 Vladimir Sedach - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript.eval-tests) -(named-readtables:in-readtable :parenscript) - -#+sbcl (declaim (sb-ext:muffle-conditions sb-ext:compiler-note)) - -(fiveam:in-suite parenscript.tests::eval-tests) - -(test-js-eval number - 3 - 3) - -(test-js-eval float - (< 123.12 123.123 123.124) - t) - -(test-js-eval string - "foobar" - "foobar") - -(test-js-eval statements-and-expressions-2 - ((lambda () (if 1 2 3))) - 2) - -(test-js-eval statements-and-expressions-1 - ((lambda () (+ 2 (if 1 2 3)))) - 4) - -(test-js-eval empty-array - (array) - #()) - -(test-js-eval funargs-let1 - ((lambda (x) - (let ((x 10)) - (incf x)) - (incf x)) - 0) - 1) - -(test-js-eval times-rem - (* 12 (rem 10 3)) - 12) - -(test-js-eval divide-rem - (rem 10 (/ 12 4)) - 1) - -(test-js-eval rem-divide - (/ 9 (rem 11 4)) - 3) - -(test-js-eval rem-multiply - (* 5 (rem 4 3)) - 5) - -(test-js-eval case-return-break-null - ((lambda (x) (case x - (1) - (2 3))) - 1) - :null) - -(test-js-eval defun-return1 - (progn (defun bar (x) (1+ x)) - (bar 1)) - 2) - -(test-js-eval defun-return2 - (progn (defun bar (fn) - (funcall fn)) - - (defun foo () - (bar (lambda () (return-from foo 123)))) - - (foo)) - 123) - -(test-js-eval defvar - (progn (defvar foo 1) - foo) - 1) - -(test-js-eval block-dynamic-lambda - ((lambda () (block nil (return 4) (+ 1 2)))) - 4) - -(test-js-eval block-dynamic-lambda1 - ((lambda () (block nil (return 4) (+ 1 2)) 5)) - 5) - -(test-js-eval loop-sum - (+ 1 (loop for i from 0 to 10 sum i)) - 56) - -(test-js-eval loop-funcall-sum - ((lambda (x) (1+ x)) (loop for i from 0 to 10 sum i)) - 56) - -(test-js-eval loop-funcall-if-sum - (progn (defun one-plus (x) - (1+ x)) - - (one-plus (if false 1 (loop for i from 0 to 10 sum i)))) - 56) - -(test-js-eval case-return-break1-broken-return - (progn (defun foo (x y) - (case x - ("bar" (if y (return-from foo 1))) - ("baz" 2))) - (list (foo "bar" t) (foo "bar" nil) (foo "baz" nil))) - '(1 :null 2)) - -(test-js-eval funcall-loop-doing - ((lambda (x) x) - (loop for i from 0 to 10 do (1+ i))) - :undefined) - -(test-js-eval block-dynamic-lambda2 - ((lambda () (1+ (block nil (return 4) (+ 1 2))))) - 5) - -(test-js-eval block-dynamic-setf - (progn (defvar foo (block nil (return 4) (+ 1 2))) - foo) - 4) - -(test-js-eval block-dynamic-return1 - (progn (defvar foo ((lambda () - (block nil - ((lambda () (return 6))) - (+ 1 2))))) - foo) - 6) - -(test-js-eval block-lambda-dynamic-setf - (progn (defvar foo (block nil ((lambda () (return 4))) (+ 1 2))) - foo) - 4) - -(test-js-eval block-lambda-dynamic-lambda - ((lambda () (block nil ((lambda () (return 4))) (+ 1 2)))) - 4) - -(test-js-eval return-from-flet - (progn (defun foo () - (flet ((bar () (return-from foo 42))) - (bar))) - (foo)) - 42) - -(test-js-eval plus-block - (1+ (block nil (return 4) (+ 1 2))) - 5) - -(test-js-eval let-closures-rename - (progn (defun make-closures () - (list - (let ((x 1)) (lambda () (1+ x))) - (let ((x 2)) (lambda () (1+ x))))) - - (defvar foo (make-closures)) - - (list (funcall (aref foo 0)) - (funcall (aref foo 1)))) - '(2 3)) - -(test-js-eval labels-return - ((lambda () - (labels ((bar (x) - (when (evenp x) - (return-from bar "even")) - 1)) - (bar 9)))) - 1) - -(test-js-eval labels-return1 - (progn (defun foo () - (labels ((bar (x) - (when (evenp x) - (return-from foo "even")) - 1)) - (bar 8) - 2)) - (foo)) - "even") - -(test-js-eval labels-return2 - (progn (defun foo () - (labels ((bar (x) - (flet ((foo (y) - (when (evenp (+ x y)) - (return-from bar "even")))) - (foo 4) - 5) - 1)) - (bar 8))) - (foo)) - "even") - -(test-js-eval labels-return3 - (progn (defun foo () - (labels ((bar (x) - (flet ((baz (y) - (when (evenp (+ x y)) - (return-from foo "even")))) - (baz 4) - 5) - 1)) - (bar 8) - 2)) - (foo)) - "even") - -(test-js-eval toplevel-local-scope - (progn (defvar foo (create "fn" (let ((x 5)) (lambda () x)))) - (funcall (getprop foo "fn"))) - 5) - -(test-js-eval special-var2 - (progn (defvar *foo*) - (let* ((*baz* 3) - (*foo* 2)) - (* *foo* 2 *baz*))) - 12) - -(test-js-eval special-var3 - (progn (defvar *foo* 1) - (+ *foo* (let* ((*baz* 3) - (*foo* 2)) - (* *foo* 2 *baz*)))) - 13) - -(test-js-eval let3 - (let ((x 3) - (y 2)) - (+ x x)) - 6) - -(test-js-eval operator-expressions-array-nested-let - (list (let ((y 1)) y) 2) - '(1 2)) - -(test-js-eval block-return-plus - (+ 1 (block foobar (return-from foobar 2) 1)) - 3) - -(test-js-eval block-return-plus1 - (+ 1 (block foobar (+ 4 ((lambda (x) (return-from foobar x)) 2)) 1)) - 3) - -(test-js-eval block-let - (block foobar - (let ((x 1)) - (return-from foobar x) - 2)) - 1) - -(test-js-eval block-dynamic-return - (block nil (return 4) (+ 1 2)) - 4) - -(test-js-eval block-lambda-dynamic-return - (block nil ((lambda () (return 4))) (+ 1 2)) - 4) - -(test-js-eval nil-block-return-1 - (block nil (return 1) 2) - 1) - -(test-js-eval dolist-return - (dolist (x '(5 2 3)) - (return (1+ x))) - 6) - -(test-js-eval let-defun-toplevel - (progn (let ((foo 0)) - (defun bar () foo)) - (bar)) - 0) - -(test-js-eval let-defvar-toplevel - (progn (let ((foo 0)) - (defvar bar (1+ foo))) - bar) - 1) - -(test-js-eval values-not-returned - (let ((x 1)) - (setf x (+ x (values 2 (incf x)))) - x) - 3) - -(test-js-eval equality-nary1 - (let ((x 10) (y 10) (z 10)) - (= x y z)) - t) - -(test-js-eval values-not-returned1 - (let ((x 1)) - (incf x (+ x (values 1 (incf x)))) - x) - 4) - -(test-js-eval incf-incf - (let ((x 1)) - (incf x (incf x)) - x) - 4) - -(test-js-eval incf-setf - (let ((x 1)) - (incf x (setf x 4)) - x) - 8) - -(test-js-eval values0 - ((lambda () (values))) - :undefined) - -(test-js-eval mv-return1 - (progn (defun foo () - (values 1 2 3)) - (multiple-value-bind (a b c) (foo) - (list a b c))) - '(1 2 3)) - -(test-js-eval dynamic-extent-function-return-values - (progn (defun foo () - ((lambda () - (return-from foo (values 1 2 3))))) - (multiple-value-bind (a b c) (foo) - (list a b c))) - '(1 2 3)) - -(test-js-eval plus-not-associative - (let ((str "a") - (n 1)) - (+ str (+ n 1))) - "a2") - -(test-js-eval loop-return - (progn (defun foo () - (* 10 (loop for i from 0 below 10 do - (when (> i 3) - (return i))))) - (foo)) - 40) - -(test-js-eval for-arr-place-in - (loop :for (a b) :in '((2 3) (4 5)) :sum (+ a b)) - 14) - -(test-js-eval for-obj-place-in - (loop :for (:a :b) :in (list (create :a 2 :b 3) - (create :a 4 :b 5)) - :summing (+ a b)) - 14) - -(test-js-eval for-arr-place-= - (flet ((foo () '(2 3))) - (loop :repeat 3 :for (a b) = (foo) :sum (+ a b))) - 15) - -(test-js-eval for-obj-place-= - (flet ((foo () (create :a 2 :b 3))) - (loop :repeat 3 :for (:a :b) = (foo) :sum (+ a b))) - 15) - -(test-js-eval loop-until1 - (let ((x 0)) - (loop :doing (incf x) :until t) - x) - 1) - -(test-js-eval loop-until2 - (let ((b nil) (c nil)) - (loop :for a :in '(4 9 10) :do (setf b a) :until (> a 5)) - (loop :for a :in '(4 9 10) :until (> a 5) :do (setf c a)) - (list b c)) - '(9 4)) - -(test-js-eval loop-until3 - (let ((x 0) (y 0)) - (loop :do (incf x) :until (= x 5) - :do (incf y) :until (= y 3)) - (list x y)) - '(3 3)) - -(test-js-eval loop-with-clause - (loop for i :from 0 :to 5 - with x - unless (< i 3) - do (return (setf x i))) - 3) - -(test-js-eval loop-append - (loop :for i :from 0 :below 10 :by 3 :append (list i (* i 100))) - '(0 0 3 300 6 600 9 900)) - -(test-js-eval loop-appending - (loop :for i :from 0 :below 10 :by 3 :appending (list i (* i 100))) - '(0 0 3 300 6 600 9 900)) - -(test-js-eval loop-maximize - (loop :for i :in (list 1 5 3 2) :maximize i) - 5) - -(test-js-eval loop-maximizing - (loop :for i :in (list 1 5 3 7) :maximizing i) - 7) - -(test-js-eval loop-minimize - (loop :for i :in (list 1 5 3 2) :minimize i) - 1) - -(test-js-eval loop-minimizing - (loop :for i :in (list 3 5 3 2) :minimizing i) - 2) - -(test-js-eval loop-for-on - (loop :for (a b) :on '(10 20 30 40 50 60) :by 2 :collect (list b a)) - '((20 10) (40 30) (60 50))) - -(test-js-eval loop-parallel-clauses-with-return - (loop :for i :from 0 :below 10 :for x = (* i 10) - :when (> i 5) :do (return x) - :collecting i) - 60) - -(test-js-eval loop-extended-conditional-clauses - (loop for i :from 0 :to 5 - for x := (1+ i) - when x - collect x - and if (oddp x) - collect (1+ x) - else - collect (/ x 2) - end) - '(1 2 2 1 3 4 4 2 5 6 6 3)) - -(test-js-eval loop-extended-conditional-clauses1 - (let* ((foo 0) - (bar (loop for i :from 0 :to 5 - for x := (1+ i) - when x - collect x - and if (oddp x) - collect (1+ x) - else - collect (/ x 2) - end - and do (incf foo x)))) - (funcall (@ bar push) foo) - bar) - '(1 2 2 1 3 4 4 2 5 6 6 3 21)) - -(test-js-eval for-loop-downfrom-to - (loop for i :downfrom 5 :to 0 - collect i) - '(5 4 3 2 1 0)) - -(test-js-eval for-loop-downfrom-above - (loop for i :downfrom 5 :above 0 - collect i) - '(5 4 3 2 1)) - -(test-js-eval loop-conditional-return-works - (block nil - (dotimes (i 10) - (if (< 10 i) (return i))) - (return -1)) - -1) - -(test-js-eval return-from-loop - (let ((a 0)) - (dolist (x '(2 1 3)) - (when (= x 1) - (return)) - (incf a)) - a) - 1) - -(test-js-eval for-loop-var-init-exp - ((lambda (x) - (do* ((y (if x 0 1) (1+ y)) - (z 0 (1+ z))) - ((= y 3) z))) - true) - 3) - -(test-js-eval dolist-return1 - (dolist (x '(5 2 3)) - (return (1+ x))) - 6) - -(test-js-eval lambda-nil-return-implicit-nested - (progn (defun foo (x) - (block nil - (if x - (return 1) - (dotimes (i 4) - (return 1))) - 2)) - - (list (foo t) (foo nil))) - '(1 2)) - -(test-js-eval case-clauses0 - (let* ((foo :bar) - (bar :baz) - (x bar)) - (case x - ((:foo) 1) - ((:bar :baz) 2))) - 2) - -(test-js-eval case-clauses-false - (* 2 (case (= 1 2) - (1 1) - (false 3) - (2 5) - (otherwise 7))) - 6) - -(test-js-eval case-clauses-false-nil - (* 2 (case (= 1 2) - (1 1) - ((nil) 3) - (2 5) - (otherwise 7))) - 6) - -(test-js-eval case-clauses-true - (* 2 (case (= 2 2) - (1 1) - ((t) 3) - (otherwise 7))) - 6) - -(test-js-eval recursive-values - (progn - (defun foo (x) - (if (= 0 x) - (values 1 2 3 4) - (progn - (foo 0) - 23))) - - (defun bar () - (foo 1)) - - (multiple-value-bind (a b c d) (bar) - (list a b c d))) - '(23 :undefined :undefined :undefined)) - -(test-js-eval recursive-values1 - (progn - (defun foo (x) - (if (= 0 x) - (values 1 2 3) - (baz))) - - (defun baz (x) - (foo 0) - 23) - - (defun bar () - (foo 1)) - - (multiple-value-bind (a b c d) (bar) - (list a b c d))) - '(23 :undefined :undefined :undefined)) - -(test-js-eval values-nonlocal-return - (progn - (defun foo (x) - (if (= 0 x) - (values 1 2 3) - (progn - (foo 0) - (throw 23)))) - - (defun bar () - (try (foo 1) - (:catch (e) - 27))) - - (multiple-value-bind (a b c) (bar) - (list a b c))) - '(27 :undefined :undefined)) - -(test-js-eval values-nonlocal-return1 - (progn - (defun foo (x) - (if (= 0 x) - (values 1 2 3) - (bar 0))) - - (defun bar (x) - (try - (if (= x 0) - (progn - (foo 0) - (throw 11)) - (foo x)) - (:catch (e) - 27))) - - (multiple-value-bind (a b c) (bar 1) - (list a b c))) - '(27 :undefined :undefined)) - -(test-js-eval values-nonlocal-return2 - (progn - (defun foo (x) - (try - (if (= 0 x) - (values 1 2 3) - (bar)) - (:catch (e) 27))) - - (defun bar () - (foo 0) - (throw 13)) - - (multiple-value-bind (a b c) (foo 1) - (list a b c))) - '(27 :undefined :undefined)) - -(test-js-eval case-symbol-macro-key - (symbol-macrolet ((x 1)) - (let ((blah 1)) - (case blah - (0 3) - (x 7) - (t 13)))) - 13) - -(test-js-eval case-symbol - (let ((blah 'x)) - (case blah - (0 3) - (x 7) - (t 13))) - 7) - -(test-js-eval symbol-macro-funcall - (symbol-macrolet ((bar (getprop Math 'min))) - (funcall bar -1 2)) - -1) - -(test-js-eval negative-mod - (mod -12 7) - 2) - -(test-js-eval negative-mod1 - (mod -12 (funcall (@ Math floor) 7.5)) - 2) - -(test-js-eval negative-mod2 - (1+ (mod -12 7)) - 3) - -(test-js-eval negative-rem - (rem -12 7) - -5) - -(test-js-eval negative-rem1 - (rem -12 (funcall (@ Math floor) 7.5)) - -5) - -(test-js-eval-epsilon trig1 - (sinh 3.14) - 11.530293) - -(test-js-eval-epsilon trig2 - (sinh (floor 3.14)) - 10.017875) - -(test-js-eval-epsilon trig3 - (cosh 3.14) - 11.573576) - -(test-js-eval-epsilon trig4 - (cosh (floor 3.14)) - 10.067662) - -(test-js-eval-epsilon trig5 - (tanh 3.14) - 0.9962602) - -(test-js-eval-epsilon trig6 - (tanh (floor 3.14)) - 0.9950548) - -(test-js-eval-epsilon trig7 - (asinh 3.14) - 1.8618126) - -(test-js-eval-epsilon trig8 - (asinh (floor 3.14)) - 1.8184465) - -(test-js-eval-epsilon trig7 - (acosh 3.14) - 1.8109914) - -(test-js-eval-epsilon trig8 - (acosh (floor 3.14)) - 1.7627472) - -(test-js-eval-epsilon trig7 - (atanh 0.71) - 0.88718385) - -(test-js-eval-epsilon trig8 - (atanh (expt -0.71 3)) - -0.37448788) - -(test-js-eval let-let - (let ((x (let ((y 12)) - (+ 1 2) - y))) - (1+ x)) - 13) - -(test-js-eval let-let1 - (let ((x (let ((y 12)) - (dolist (x '(1 2 3)) - (* x x)) - y))) - (1+ x)) - 13) - -(test-js-eval array-init-1 - (make-array 2 :initial-contents '(10 20)) - '(10 20)) - -(test-js-eval array-init-2 - (make-array 5 :initial-element 10) - '(10 10 10 10 10)) - -(test-js-eval dotimes-block-return - (1+ (dotimes (x 3) (if (= x 2) (return (+ x x))))) - 5) - -(test-js-eval labels-factorial - (progn - (defun fac (n) - (labels ((f (n a) - (if (< n 2) - a - (f (- n 1) (* n a))))) - (f n 1))) - (fac 5)) - 120) - -(test-js-eval destructuring-bind1 - ((lambda (a) - (when a - (destructuring-bind (b . c) - a - (list b c)))) - '(1 2 3)) - '(1 (2 3))) - -(test-js-eval defun-not-a-docstring - (progn - (defun foo () - "bar") - (foo)) - "bar") - -(test-js-eval lambda-not-a-docstring - ((lambda () "bar")) - "bar") - -(test-js-eval loop-variable-capture1 - (let ((x (make-array 10))) - (dotimes (i 10) (setf (aref x i) (lambda () i))) - (loop for x across x sum (funcall x))) - 100) - -(test-js-eval loop-variable-capture2 - (let ((x (make-array 10))) - (dotimes (i 10) - (let ((y i)) - (setf (aref x i) (lambda () y)))) - (loop for x across x sum (funcall x))) - 45) - -(test-js-eval loop-variable-capture3 - (let ((x (make-array 10))) - (dotimes (i 10) - (let ((i i)) - (setf (aref x i) (lambda () i)))) - (loop for x across x sum (funcall x))) - 45) - -(test-js-eval loop-variable-capture4 - (let ((x (make-array 10 :initial-element (lambda () 0)))) - (dotimes (i 10) - (let ((i i)) - (setf (aref x i) (lambda () i)) - (when (= i 5) (return)))) - (loop for x across x sum (funcall x))) - 15) - -(test-js-eval loop-variable-capture5 - (let ((A (make-array 10))) - (dotimes (i 10) - (flet ((foo (x) (+ i x))) - (setf (aref A i) (lambda () (foo i))))) - (loop for x across A sum (funcall x))) - 200) - -(test-js-eval loop-variable-capture6 - (labels ((make-cl (i) (lambda () (* i 10)))) - (let ((closures (loop :for i :from 1 :to 3 - :collect (make-cl i)))) - (loop :for fn :in closures :collect (funcall fn)))) - '(10 20 30)) - -(test-js-eval loop-variable-capture7 - (let ((closures (loop :for i :from 1 :to 3 - :collect (let* ((j i) - (cl (lambda () (* j 10)))) - cl)))) - (loop :for fn :in closures :collect (funcall fn))) - '(10 20 30)) - -(test-js-eval nested-let - (let ((x (let ((y 94)) - y))) - x) - 94) - -(test-js-eval lambda-apply - ((lambda (x) - (apply (lambda (y) (1+ y)) - x)) - (list 6)) - 7) - -(test-js-eval subtract-associative - (list (- 1 2 3) - (- 1 (- 2 3))) - '(-4 2)) - -(test-js-eval logand1 - (let ((x 4583)) - (setf x (logand x 947)) - x) - 419) - -(test-js-eval cons-cdr-clause-empty - ((lambda () (cond (923)))) - 923) - -(test-js-eval labels-return-from - (labels ((bar (x) - (when (evenp x) - (return-from bar "even")) - "odd")) - (bar 9)) - "odd") - -(test-js-eval random-float-const - (< 0 (rem (random 123.456) 1) 1) - t) - -(test-js-eval random-int-const - (rem (random 234) 1) - 0) - -(test-js-eval random-float-fun-once-only - (let ((x t)) - (flet ((foo () - (prog1 (if x - 123.123 - (throw "foobar")) - (setf x nil)))) - (< 0 (rem (random (foo)) 1) 1))) - t) - -(test-js-eval let-setf-side-effects - (let ((x 10)) - (defun side-effect() - (setf x 4) - 3) - (setf x (+ 2 (side-effect) x 5))) - 14) - -(test-js-eval dolist-result-bind-nil - (dolist (i '(1 2 3) (list i 9)) - (list i)) - '(nil 9)) - -(test-js-eval dotimes-result-bind-nil - (dotimes (i '(1 2 3) (list 9 i)) - (list i)) - '(9 nil)) - -(test-js-eval progn-of-block-closure - ((lambda () - (progn - (block nil - ((lambda () - ((lambda () - (return 1))) - 2)))))) - 1) - -(test-js-eval progn-of-block-closure1 - ((lambda () - (progn - (block X - ((lambda () - ((lambda () - (return-from X 1))) - 2)))))) - 1) - -(test-js-eval progn-of-block-closure2 - ((lambda () - (1+ - (block X - ((lambda () - ((lambda () - (return-from X 1))) - 3)))))) - 2) - -(test-js-eval progn-of-block-closure3 - ((lambda () - (1+ - (block nil - ((lambda () - ((lambda () - (return 1))) - 3)))))) - 2) - -(test-js-eval block-closure-no-progn - ((lambda () - (block nil - ((lambda () - ((lambda () - (return 1))) - 2))))) - 1) - -(test-js-eval function-clears-current-block-tag - ((lambda () - (block X - ((lambda () - ((lambda () - (return-from X 1))) - 2))) - 5)) - 5) - -(test-js-eval defvar-dynamic-return - (progn - (defvar foo ((lambda () - (block nil - ((lambda () (return 6))) - (+ 1 2))))) - foo) - 6) - -(test-js-eval defvar-dynamic-return1 - (progn - (defvar foo ((lambda () - (block nil - ((lambda () (return 6))) - (+ 1 2)) - (+ 4 5)))) - foo) - 9) - -(test-js-eval defvar-dynamic-return-expression - (progn - (defvar foo ((lambda () - (+ 1 (block nil - ((lambda () (return 6))) - (+ 1 2)))))) - foo) - 7) - -(test-js-eval defun-when-if-return - (progn - (defun foobar () - (when t - (loop if t return 10))) - (foobar)) - 10) - -(test-js-eval this-passthrough-generated-lambdas - (let ((obj (ps:create x 3))) - (setf (ps:getprop obj 'foo) - (lambda () - (1+ (loop repeat 10 return (ps:getprop ps:this 'x))))) - (funcall (ps:getprop obj 'foo))) - 4) - -(test-js-eval arrayp1 - (arrayp '(1 2 3)) - t - :js-target-version "1.3") - -(test-js-eval arrayp2 - (arrayp '(1 2 3)) - t - :js-target-version "1.8.5") - -(test-js-eval multiple-value-bind-values - (multiple-value-bind (x y) - (values 1 2) - y) - 2) - -(test-js-eval multiple-value-passthrough - (progn - (defun foo () - (values 1 2)) - (defun bar () - (foo)) - (multiple-value-bind (x y) - (bar) - y)) - 2) - -(test-js-eval multiple-value-call-twice - (progn - (defun foo (x &optional y z) - (if z - (values x y z) - (values x y))) - - (defun bar () - (foo 1 2 3) - (foo 4 5)) - - (multiple-value-bind (a b c) (bar) - (list a b c))) - '(4 5 :undefined)) - -(test-js-eval multiple-value-bind-nested - (multiple-value-bind (x y) - ((lambda () - (multiple-value-bind (a b) - (values 1 2) - (values b a)))) - (list x y)) - '(2 1)) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/tests/output-tests.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/tests/output-tests.lisp deleted file mode 100644 index 7604273..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/tests/output-tests.lisp +++ /dev/null @@ -1,4507 +0,0 @@ -;;; Copyright 2005-2006 Henrik Hjelte -;;; Copyright 2007-2012 Vladimir Sedach - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript.tests) -(named-readtables:in-readtable :parenscript) - -(fiveam:in-suite output-tests) - -(test-ps-js statements-and-expressions-1 - (+ i (if 1 2 3)) - "i + (1 ? 2 : 3);") - -(test-ps-js statements-and-expressions-2 - (if 1 2 3) - "if (1) { - 2; -} else { - 3; -};") - -(test-ps-js symbol-conversion-1 - !?#@% - "bangwhathashatpercent;") - -(test-ps-js symbol-conversion-2 - bla-foo-bar - "blaFooBar;") - -(test-ps-js symbol-conversion-3 - *array - "Array;") - -(test-ps-js symbol-conversion-4 - *global-array* - "GLOBALARRAY;") - -(test-ps-js symbol-conversion-5 - encodeURIComponent - "encodeURIComponent;") - -(test-ps-js symbol-conversion-6 - URI - "URI;") - -(test-ps-js number-literals-1 - 1 - "1;") - -(test-ps-js number-literals-2 - 123.123 - "123.123;") - -(test-ps-js number-literals-3 - #x10 - "16;") - -(test-ps-js string-literals-1 - "foobar" - "'foobar';") - -(test-ps-js string-literals-2 - "bratzel bub" - "'bratzel bub';") - -(test-ps-js string-literals-3 - " " - "'\\t';") - -(test-ps-js array-literals-1 - (array) - "[];") - -(test-ps-js array-literals-2 - (array 1 2 3) - "[1, 2, 3];") - -(test-ps-js array-literals-3 - (array (array 2 3) - (array "foobar" "bratzel bub")) - "[[2, 3], ['foobar', 'bratzel bub']];") - -(test-ps-js array-literals-4 - (make-array) - "new Array();") - -(test-ps-js array-literals-5 - (make-array 1 2 3) - "new Array(1, 2, 3);") - -(test-ps-js array-literals-6 - (make-array - (make-array 2 3) - (make-array "foobar" "bratzel bub")) - "new Array(new Array(2, 3), new Array('foobar', 'bratzel bub'));") - -(test-ps-js array-init-1 - (make-array 2 :initial-contents '(10 20)) - "(function () { - var arr1 = new Array(2); - var init2 = [10, 20]; - for (var i4 = 0; i4 < Math.min(arr1.length, init2.length); i4 += 1) { - arr1[i4] = init2[i4]; - }; - __PS_MV_REG = []; - return arr1; -})();") - -(test-ps-js array-init-2 - (make-array 5 :initial-element 10) - "(function () { - var arr1 = new Array(5); - var elt3 = 10; - for (var i4 = 0; i4 < arr1.length; i4 += 1) { - arr1[i4] = elt3; - }; - __PS_MV_REG = []; - return arr1; -})();") - -(test-ps-js object-literals-1 - (create foo "bar" :blorg 1) - "{ foo : 'bar', 'blorg' : 1 };") - -(test-ps-js object-literals-2 - (create foo "hihi" - blorg (array 1 2 3) - another-object (create :schtrunz 1)) - "{ foo : 'hihi', - blorg : [1, 2, 3], - anotherObject : { 'schtrunz' : 1 } };") - -(test-ps-js object-literals-3 - (getprop an-object 'foo) - "anObject.foo;") - -(test-ps-js object-literals-4 - (@ an-object foo bar) - "anObject.foo.bar;") - -(test-ps-js object-literals-5 - (with-slots (a b c) this - (+ a b c)) - "this.a + this.b + this.c;") - -(test-ps-js with-slots-single-eval - (lambda () (with-slots (a b) (foo) (+ a b))) - "function () { - var object1 = foo(); - __PS_MV_REG = []; - return object1.a + object1.b; -};") - -(test-ps-js object-literal-quoted-symbols - (create 'test "bang" 'symbol-saved-my-life "parenscript") - "{ 'test' : 'bang', 'symbolSavedMyLife' : 'parenscript' };") - -(test-ps-js object-literal-property-accessors - (defun foo () - (let ((x 10)) - (create (get x) x - (set x v) (setf x v)))) - "function foo() { - var x = 10; - return { get x() { - return x; - }, set x(v) { - return x = v; - } }; -};" - :js-target-version "1.8.5") - -(test-ps-js object-method-apply-1 - (apply (@ an-object foo) nil) - "anObject.foo.apply(anObject, null);") - -(test-ps-js object-method-apply-2 - (apply (getprop (make-an-object) foo 'bar) nil) - "(function () { - var _js1 = makeAnObject()[foo]; - var _js2 = _js1.bar; - __PS_MV_REG = []; - return _js2.apply(_js1, null); - })();") - -(test-ps-js object-method-apply-3 - (apply (@ (make-an-object) foo) (bar)) - "(function () { - var _js1 = makeAnObject(); - var _js2 = _js1.foo; - __PS_MV_REG = []; - return _js2.apply(_js1, bar()); -})();") - -(test-ps-js regular-expression-literals-1 - (regex "foobar") - "/foobar/;") - -(test-ps-js regular-expression-literals-2 - (regex "/foobar/i") - "/foobar/i;") - -(test-ps-js literal-symbols-1 - t - "true;") - -(test-ps-js literal-symbols-2 - false - "false;") - -(test-ps-js literal-symbols-3 - f - "false;") - -(test-ps-js literal-symbols-4 - (lambda () nil) - "function () { - return null; -};") - -(test-ps-js literal-symbols-5 - undefined - "undefined;") - -(test-ps-js literal-symbols-6 - this - "this;") - -(test-ps-js variables-1 - variable - "variable;") - -(test-ps-js variables-2 - a-variable - "aVariable;") - -(test-ps-js variables-3 - *math - "Math;") - -(test-ps-js function-calls-and-method-calls-1 - (blorg 1 2) - "blorg(1, 2);") - -(test-ps-js function-calls-and-method-calls-2 - (foobar (blorg 1 2) (blabla 3 4) (array 2 3 4)) - "foobar(blorg(1, 2), blabla(3, 4), [2, 3, 4]);") - -(test-ps-js function-calls-and-method-calls-3 - ((getprop this 'blorg) 1 2) - "this.blorg(1, 2);") - -(test-ps-js function-calls-and-method-calls-4 - ((aref foo i) 1 2) - "foo[i](1, 2);") - -(test-ps-js function-calls-and-method-calls-5 - ((getprop (aref foobar 1) 'blorg) nil t) - "foobar[1].blorg(null, true);") - -(test-ps-js operator-expressions-1 - (* 1 2) - "1 * 2;") - -(test-ps-js operator-expressions-2 - (= 1 2) - "1 === 2;") - -(test-ps-js operator-expressions-3 - (* 1 (+ 2 3 4) 4 (/ 6 7)) - "1 * (2 + 3 + 4) * 4 * (6 / 7);") - -(test-ps-js operator-expressions-4 - (incf i) - "++i;") - -(test-ps-js operator-expressions-5 - (decf i) - "--i;") - -(test-ps-js operator-expressions-6 - (1- i) - "i - 1;") - -(test-ps-js operator-expressions-7 - (1+ i) - "i + 1;") - -(test-ps-js operator-expressions-8 - (not (< i 2)) - "i >= 2;") - -(test-ps-js body-forms-1 - (progn (blorg i) (blafoo i)) - "blorg(i); -blafoo(i);") - -(test-ps-js body-forms-2 - (+ i (progn (blorg i) (blafoo i))) - "i + (blorg(i), blafoo(i));") - -(test-ps-js function-definition-1 - (defun a-function (a b) - (+ a b)) - "function aFunction(a, b) { - return a + b; -};") - -(test-ps-js lambda-definition-2 - (lambda (a b) (+ a b)) - "function (a, b) { - return a + b; -};") - -(test-ps-js assignment-1 - (setf a 1) - "a = 1;") - -(test-ps-js assignment-2 - (setf a 2 b 3 c 4 x (+ a b c)) - "a = 2; -b = 3; -c = 4; -x = a + b + c;") - -(test-ps-js assignment-3 - (setf a (+ a 2 3 4 a)) - "a = a + 2 + 3 + 4 + a;") - -(test-ps-js assignment-4 - (setf a (- 1 a)) - "a = 1 - a;") - -(test-ps-js assignment-5 - (let ((a 1) (b 2)) - (psetf a b b a)) - "(function () { -var a = 1; -var b = 2; -var _js3 = b; -var _js4 = a; -a = _js3; -return b = _js4; -})();") - -(test-ps-js assignment-6 - (setq a 1) - "a = 1;") - -(test-ps-js assignment-8 - (progn - (defun (setf color) (new-color el) - (setf (getprop (getprop el 'style) 'color) new-color)) - (setf (color some-div) (+ 23 "em"))) - "function __setf_color(newColor, el) { - return el.style.color = newColor; -}; -__setf_color(23 + 'em', someDiv);") - -(test-ps-js assignment-10 - (progn - (defsetf left (el) (offset) - `(setf (getprop (getprop ,el 'style) 'left) ,offset)) - (setf (left some-div) (+ 123 "px"))) - "(function () { -var _js2 = someDiv; -var _js1 = 123 + 'px'; -return _js2.style.left = _js1; -})();") - -(test-ps-js assignment-12 - (macrolet ((left (el) - `(getprop ,el 'offset-left))) - (left some-div)) - "someDiv.offsetLeft;") - -(test-ps-js nil-block-return-1 - (block nil (return) 1) - "(function () { - return null; - return 1; -})();") - -(test-ps-js single-argument-statements-2 - (throw "foobar") - "throw 'foobar';") - -(test-ps-js single-argument-expression-1 - (delete (new (*foobar 2 3 4))) - "delete new Foobar(2, 3, 4);") - -(test-ps-js single-argument-expression-2 - (if (= (typeof blorg) *string) - (alert (+ "blorg is a string: " blorg)) - (alert "blorg is not a string")) - "if (typeof blorg === String) { - alert('blorg is a string: ' + blorg); -} else { - alert('blorg is not a string'); -};") - -(test-ps-js conditional-statements-1 - (defun foo () - (if ((@ blorg is-correct)) - (progn (carry-on) (return-from foo i)) - (alert "blorg is not correct!"))) -"function foo() { - if (blorg.isCorrect()) { - carryOn(); - __PS_MV_REG = []; - return i; - } else { - __PS_MV_REG = []; - return alert('blorg is not correct!'); - }; -};") - -(test-ps-js conditional-statements-2 - (+ i (if ((@ blorg add-one)) 1 2)) - "i + (blorg.addOne() ? 1 : 2);") - -(test-ps-js conditional-statements-3 - (defun foo () - (when ((@ blorg is-correct)) - (carry-on) - (return-from foo i))) - "function foo() { - if (blorg.isCorrect()) { - carryOn(); - __PS_MV_REG = []; - return i; - }; -};") - -(test-ps-js conditional-statements-4 - (unless ((@ blorg is-correct)) - (alert "blorg is not correct!")) - "if (!blorg.isCorrect()) { - alert('blorg is not correct!'); -};") - -(test-ps-js variable-declaration-1 - (defvar *a* (array 1 2 3)) - "if ('undefined' === typeof A) { var A = [1, 2, 3]; };") - -(test-ps-js variable-declaration-2 - (progn (defvar *a* 4) - (let ((x 1) - (*a* 2)) - (let* ((y (+ x 1)) - (x (+ x y))) - (+ *a* x y)))) - "if ('undefined' === typeof A) { var A = 4; }; -(function () { -var x = 1; -var A_TMPSTACK1; -try { - A_TMPSTACK1 = A; - A = 2; - var y = x + 1; - var x2 = x + y; - return A + x2 + y; -} finally { - A = A_TMPSTACK1; -}; -})();") - -(test-ps-js variable-declaration-3 - (defparameter A 987) - "var A = 987;") - -(test-ps-js variable-declaration-4 - (progn (defparameter *a* 4) - (let ((x 1) - (*a* 2)) - (let* ((y (+ x 1)) - (x (+ x y))) - (+ *a* x y)))) - "var A = 4; -(function () { -var x = 1; -var A_TMPSTACK1; -try { - A_TMPSTACK1 = A; - A = 2; - var y = x + 1; - var x2 = x + y; - return A + x2 + y; -} finally { - A = A_TMPSTACK1; -}; -})();") - -(test-ps-js variable-declaration-5 - (defvar BAZ) - "var BAZ;") - -(test-ps-js iteration-constructs-1 - (do* ((a) b (c (array "a" "b" "c" "d" "e")) - (d 0 (1+ d)) - (e (aref c d) (aref c d))) - ((or (= d (@ c length)) (string= e "x"))) - (setf a d b e) - (funcall (@ document write) (+ "a: " a " b: " b "
"))) - "(function () { -for (var a = null, b = null, c = ['a', 'b', 'c', 'd', 'e'], d = 0, e = c[d]; - !(d === c.length || e === 'x'); d += 1, e = c[d]) { - a = d; - b = e; - document.write('a: ' + a + ' b: ' + b + '
'); -}; -})();") - -(test-ps-js iteration-constructs-2 - (do ((i 0 (1+ i)) - (s 0 (+ s i (1+ i)))) - ((> i 10)) - (funcall (@ document write) (+ "i: " i " s: " s "
"))) - "(function () { -var i = 0; -var s = 0; -for (; i <= 10; ) { - document.write('i: ' + i + ' s: ' + s + '
'); - var _js1 = i + 1; - var _js2 = s + i + (i + 1); - i = _js1; - s = _js2; -}; -})();") - -(test-ps-js iteration-constructs-3 - (do* ((i 0 (1+ i)) - (s 0 (+ s i (1- i)))) - ((> i 10)) - ((@ document write) (+ "i: " i " s: " s "
"))) - "(function () { -for (var i = 0, s = 0; i <= 10; i += 1, s = s + i + (i - 1)) { - document.write('i: ' + i + ' s: ' + s + '
'); -}; -})();") - -(test-ps-js iteration-constructs-4 - (let ((arr (array "a" "b" "c" "d" "e"))) - (dotimes (i (@ arr length)) - ((@ document write) (+ "i: " i " arr[i]: " (aref arr i) "
")))) - "(function () { -var arr = ['a', 'b', 'c', 'd', 'e']; -for (var i = 0; i < arr.length; i += 1) { - document.write('i: ' + i + ' arr[i]: ' + arr[i] + '
'); -}; -})();") - -(test-ps-js iteration-constructs-5 - (let ((res 0)) - (alert (+ "Summation to 10 is " - (dotimes (i 10 res) - (incf res (1+ i)))))) - "(function () { -var res = 0; -__PS_MV_REG = []; -return alert('Summation to 10 is ' + (function () { - for (var i = 0; i < 10; i += 1) { - res += i + 1; - }; - var i = null; - return res; -})()); -})();") - -(test-ps-js iteration-constructs-6 - (let ((l (list 1 2 4 8 16 32))) - (dolist (c l) - ((@ document write) (+ "c: " c "
")))) - "(function () { -var l = [1, 2, 4, 8, 16, 32]; -for (var c = null, _js_idx2 = 0; _js_idx2 < l.length; _js_idx2 += 1) { - c = l[_js_idx2]; - document.write('c: ' + c + '
'); -}; -})();") - -(test-ps-js iteration-constructs-7 - (let ((l '(1 2 4 8 16 32)) - (s 0)) - (alert (+ "Sum of " l " is: " - (dolist (c l s) - (incf s c))))) - "(function () { -var l = [1, 2, 4, 8, 16, 32]; -var s = 0; -__PS_MV_REG = []; -return alert('Sum of ' + l + ' is: ' + (function () { - for (var c = null, _js_idx1 = 0; _js_idx1 < l.length; _js_idx1 += 1) { - c = l[_js_idx1]; - s += c; - }; - var c = null; - return s; -})()); -})();") - -(test-ps-js iteration-constructs-8 - (let ((obj (create a 1 b 2 c 3))) - (for-in (i obj) - ((@ document write) (+ i ": " (aref obj i) "
")))) - "(function () { -var obj = { a : 1, b : 2, c : 3 }; -for (var i in obj) { - document.write(i + ': ' + obj[i] + '
'); -}; -})();") - -(test-ps-js iteration-constructs-9 - (loop while (funcall (@ film is-not-finished)) do - (funcall (@ this eat) (new *popcorn))) - "(function () { -while (film.isNotFinished()) { - this.eat(new Popcorn); -}; -}).call(this);") - -(test-ps-js loop-for-bindings - (loop :for ((a b) (:c :d)) :in arr :do (foo a b c d)) -"(function () { -var _js2 = arr.length; -for (var _js1 = 0; _js1 < _js2; _js1 += 1) { - var _db4 = arr[_js1]; - var _db5 = _db4[0]; - var a = _db5[0]; - var b = _db5[1]; - var _js3 = _db4[1]; - var c = _js3['c']; - var d = _js3['d']; - foo(a, b, c, d); -}; -})();") - -(test-ps-js loop-for-on - (loop :for (k v) :on plist :by 2 :do (foo k v)) - "(function () { -for (var _js1 = plist; _js1.length > 0; _js1 = _js1['slice'](2)) { - var k = _js1[0]; - var v = _js1[1]; - foo(k, v); -}; -})();") - -(test-ps-js loop-for-keys-of - (loop :for k :of obj :do (foo k)) - "(function () { -for (var k in obj) { - foo(k); -}; -})();") - -(test-ps-js loop-for-key-val-pairs-of - (loop :for (k v) :of obj :do (foo k v)) - "(function () { -for (var k in obj) { - var v = obj[k]; - foo(k, v); -}; -})();") - -(test-ps-js loop-for-key-val-pairs-of-with-bindings - (loop :for (k (a b)) :of obj :do (foo k a b)) -"(function () { -for (var k in obj) { - var _db1 = obj[k]; - var a = _db1[0]; - var b = _db1[1]; - foo(k, a, b); -}; -})();") - -(test-ps-js loop-for-just-vals-of - (loop :for (nil v) :of obj :do (foo k v)) - "(function () { -for (var _js1 in obj) { - var v = obj[_js1]; - foo(k, v); -}; -})();") - -(test-ps-js loop-map-to - (loop :for str :in strs :map str :to (length str)) -"(function () { - var _js2 = strs.length; - var map3 = { }; - for (var _js1 = 0; _js1 < _js2; _js1 += 1) { - var str = strs[_js1]; - map3[str] = str.length; - }; - return map3; -})();") - -(test-ps-js loop-for-of-map-to - (loop :for k :of obj :map k :to (foo k)) -"(function () { - var map1 = { }; - for (var k in obj) { - map1[k] = foo(k); - }; - __PS_MV_REG = []; - return map1; -})();") - -(test-ps-js loop-for-of-when - (loop :for k :of obj :when (foo k) :map k :to (bar k)) -"(function () { - var map1 = { }; - for (var k in obj) { - if (foo(k)) { - map1[k] = bar(k); - }; - }; - __PS_MV_REG = []; - return map1; -})();") - -(test-ps-js loop-for-in-until-when - (loop :for a :in b :until (> a 100) :when (< a 50) :do (foo a)) -"(function () { -var _js2 = b.length; -for (var _js1 = 0; _js1 < _js2; _js1 += 1) { - var a = b[_js1]; - if (a > 100) { - break; - }; - if (a < 50) { - foo(a); - }; -}; -})();") - -(test-ps-js loop-with-for-when - (loop :with c = c1 :for d :from c1 :below c2 - :when (foo c d) :do (setf c d) - :do (bar d)) -"(function () { -var c = c1; -for (var d = c1; d < c2; d += 1) { - if (foo(c, d)) { - c = d; - }; - bar(d); -}; -})();") - -(test-ps-js loop-for-then-for-in-while - (defun blah (c) - (loop :for a = (foo) :then (bar) :for b :in c :while b :do (foo a b c))) -"function blah(c) { - var _js2 = c.length; - var FIRST3 = true; - for (var a = foo(); true; a = bar()) { - var _js1 = FIRST3 ? 0 : _js1 + 1; - if (_js1 >= _js2) { - break; - }; - var b = c[_js1]; - if (!b) { - break; - }; - foo(a, b, c); - FIRST3 = null; - }; -};") - -(test-ps-js loop-while-when - (loop :for a = (pop stack) :while a :for (b c) = (foo a) :when b :do (bar c)) -"(function () { -for (var a = pop(stack); a; a = pop(stack)) { - var _db1 = foo(a); - var b = _db1[0]; - var c = _db1[1]; - if (b) { - bar(c); - }; -}; -})();") - -(test-ps-js loop-for-of-for-in - (defun blah (obj b) - (loop :for k :of obj :for a :in b :do (foo k a))) -"function blah(obj, b) { - var _js2 = b.length; - var FIRST3 = true; - for (var k in obj) { - var _js1 = FIRST3 ? 0 : _js1 + 1; - if (_js1 >= _js2) { - break; - }; - var a = b[_js1]; - foo(k, a); - FIRST3 = null; - }; -};") - -(test-ps-js loop-for-dot - (loop :for (op . args) :in expr :do (foo op args)) -"(function () { -var _js2 = expr.length; -for (var _js1 = 0; _js1 < _js2; _js1 += 1) { - var _db3 = expr[_js1]; - var op = _db3[0]; - var args = _db3.length > 1 ? _db3.slice(1) : []; - foo(op, args); -}; -})();") - -(test-ps-js loop-for-rest - (loop :for (op &rest args) :in expr :do (foo op args)) -"(function () { -var _js2 = expr.length; -for (var _js1 = 0; _js1 < _js2; _js1 += 1) { - var _db3 = expr[_js1]; - var op = _db3[0]; - var args = _db3.length > 1 ? _db3.slice(1) : []; - foo(op, args); -}; -})();") - -(test-ps-js loop-collect - (setf x (loop :for a :in b :collect (foo a))) -"x = (function () { - var _js2 = b.length; - var collect3 = []; - for (var _js1 = 0; _js1 < _js2; _js1 += 1) { - var a = b[_js1]; - collect3.push(foo(a)); - }; - __PS_MV_REG = []; - return collect3; -})();") - -(test-ps-js loop-append - (loop :for a :in b :append a) -"(function () { - var _js2 = b.length; - var append3 = []; - for (var _js1 = 0; _js1 < _js2; _js1 += 1) { - var a = b[_js1]; - append3 = append3.concat(a); - }; - __PS_MV_REG = []; - return append3; -})();") - -(test-ps-js the-case-statement-1 - (case (aref blorg i) - ((1 "one") (alert "one")) - (2 (alert "two")) - (t (alert "default clause"))) - "switch (blorg[i]) { - case 1: - case 'one': - alert('one'); - break; - case 2: - alert('two'); - break; - default: - alert('default clause'); - };") - -(test-ps-js the-case-statement-2 - (switch (aref blorg i) - (1 (alert "If I get here")) - (2 (alert "I also get here")) - (default (alert "I always get here"))) - "switch (blorg[i]) { - case 1: alert('If I get here'); - case 2: alert('I also get here'); - default: alert('I always get here'); -};") - -(test-ps-js the-try-statement-1 - (try (throw "i") - (:catch (error) - (alert (+ "an error happened: " error))) - (:finally - (alert "Leaving the try form"))) - "try { - throw 'i'; -} catch (error) { - alert('an error happened: ' + error); -} finally { - alert('Leaving the try form'); -};") - -(test-ps-js the-html-generator-1 - (ps-html ((:a :href "foobar") "blorg")) - "'blorg';") - -(test-ps-js the-html-generator-2 - (ps-html ((:a :href (generate-a-link)) "blorg")) - "['blorg'].join('');") - -(test-ps-js the-html-generator-3 - (funcall (getprop document 'write) - (ps-html ((:a :href "#" - :onclick (ps-inline (transport))) "link"))) - "document.write(['link'].join(''));") - -(test-ps-js the-html-generator-4 - (let ((disabled nil) - (authorized t)) - (setf (getprop element 'inner-h-t-m-l) - (ps-html ((:textarea (or disabled (not authorized)) :disabled "disabled") - "Edit me")))) - "(function () { -var disabled = null; -var authorized = true; -return element.innerHTML = ['Edit me'].join(''); -})();") - -(test-ps-js plus-is-not-commutative - (setf x (+ "before" x "after")) - "x = 'before' + x + 'after';") - -(test-ps-js plus-works-if-first - (setf x (+ x "middle" "after")) - "x = x + 'middle' + 'after';") - -(test-ps-js method-call-op-form - (funcall (getprop (+ "" x) 'to-string)) - "('' + x).toString();") - -(test-ps-js method-call-op-form-args - (funcall (getprop (+ "" x) 'foo) 1 2 :baz 3) - "('' + x).foo(1, 2, 'baz', 3);") - -(test-ps-js method-call-string - ((getprop "hi" 'to-string)) - "'hi'.toString();") - -(test-ps-js method-call-conditional - ((if a x y) 1) - "(a ? x : y)(1);") - -(test-ps-js method-call-variable - ((@ x to-string)) - "x.toString();") - -(test-ps-js method-call-array - ((@ (list 10 20) to-string)) - "[10, 20].toString();") - -(test-ps-js method-call-lambda-call - (funcall (getprop (funcall (lambda (x) x) 10) 'to-string)) - "(function (x) { return x; })(10).toString();") - -(fiveam:test no-whitespace-before-dot - (let ((str (ps* '((@ ((lambda (x) x) 10) to-string))))) - (fiveam:is (char= #\) (elt str (1- (position #\. str))))))) - -(test-ps-js simple-getprop - (let ((foo (create a 1))) - (alert (getprop foo 'a))) - "(function () { - var foo = { a : 1 }; - __PS_MV_REG = []; - return alert(foo.a); -})();") - -(test-ps-js buggy-getprop - (getprop foo slot-name) - "foo[slotName];") - -(test-ps-js buggy-getprop-two - (getprop foo (get-slot-name)) - "foo[getSlotName()];") - -(test-ps-js old-case-is-now-switch - ;; Switch was "case" before, but that was very non-lispish. - ;; For example, this code makes three messages and not one - ;; which may have been expected. This is because a switch - ;; statment must have a break statement for it to return - ;; after the alert. Otherwise it continues on the next - ;; clause. - (switch (aref blorg i) - (1 (alert "one")) - (2 (alert "two")) - (default (alert "default clause"))) - "switch (blorg[i]) { - case 1: alert('one'); - case 2: alert('two'); - default: alert('default clause'); - };") - -(test-ps-js lisp-like-case - (case (aref blorg i) - (1 (alert "one")) - (2 (alert "two")) - (t (alert "default clause"))) - "switch (blorg[i]) { - case 1: - alert('one'); - break; - case 2: - alert('two'); - break; - default: alert('default clause'); - };") - - -(test-ps-js even-lispier-case - (case (aref blorg i) - ((1 2) (alert "Below three")) - (3 (alert "Three")) - (t (alert "Something else"))) - "switch (blorg[i]) { - case 1: - case 2: - alert('Below three'); - break; - case 3: - alert('Three'); - break; - default: alert('Something else'); - };") - -(test-ps-js otherwise-case - (case (aref blorg i) - (1 (alert "one")) - (otherwise (alert "default clause"))) - "switch (blorg[i]) { - case 1: - alert('one'); - break; - default: alert('default clause'); - };") - -(fiveam:test escape-sequences-in-string - (let ((escapes - `((#\\ . #\\) - (#\b . #\Backspace) - (#\f . ,(code-char 12)) - ("u000B" . ,(code-char #xB)) ; vertical tab - (#\n . #\Newline) - (#\r . #\Return) - (#\' . #\') - (#\" . #\") - (#\t . #\Tab) - ("u001F" . ,(code-char #x1F)) ; character below 32 - ("u0080" . ,(code-char 128)) ; character over 127 - ("u00A0" . ,(code-char 160)) ; non-breaking space - ("u00AD" . ,(code-char 173)) ; soft hyphen - ("u200B" . ,(code-char #x200B)) ; zero-width space - ("u200C" . ,(code-char #x200C)) ; zero-width non-joiner - ))) - (loop for (js-escape . lisp-char) in escapes - for generated = (ps-doc* (format nil "hello~ahi" lisp-char)) - for wanted = (format nil "'hello\\~ahi';" js-escape) - do (fiveam:is (string= generated wanted))))) - -(fiveam:test escape-doublequotes - (let ((*js-string-delimiter* #\")) - (fiveam:is (string= (ps-doc* "hello\"hi") "\"hello\\\"\hi\";")))) - -(test-ps-js getprop-setf - (setf (getprop x 'y) (+ (+ a 3) 4)) - "x.y = (a + 3) + 4;") - -(test-ps-js getprop-conditional1 - (getprop (if zoo foo bar) 'x) - "(zoo ? foo : bar).x;") - -(test-ps-js getprop-conditional2 - (getprop (if (not zoo) foo bar) 'x) - "(!zoo ? foo : bar).x;") - -(fiveam:test script-star-eval1 - (fiveam:is (string= - (normalize-js-output (ps* '(setf x 1) '(setf y 2))) - "x = 1; y = 2;"))) - -(fiveam:test script-star-eval2 - (fiveam:is (string= - (normalize-js-output (ps* '(setf x 1))) - "x = 1;"))) - -(test-ps-js list-with-single-nil - (array nil) - "[null];") - -(test-ps-js quoted-nil-is-array - 'nil - "[];") - -(test-ps-js quoted-nil-is-array1 - '() - "[];") - -(test-ps-js literal-nil - (foo ()) - "foo(null);") - -(test-ps-js quoted-quoted-nil - '(()) - "[null];") - -(test-ps-js quoted-quoted-nil1 - '(1 ()) - "[1, null];") - -(test-ps-js defsetf1 - (progn (defsetf baz (x y) (newval) `(set-baz ,x ,y ,newval)) - (setf (baz 1 2) 3)) - "(function () { -var _js2 = 1; -var _js3 = 2; -var _js1 = 3; -__PS_MV_REG = []; -return setBaz(_js2, _js3, _js1); -})();") - -(test-ps-js setf-macroexpands1 - (macrolet ((bar (x y) - `(aref ,x ,y 1))) - (setf (bar foo 2) 3)) - "foo[2][1] = 3;") - -(test-ps-js defsetf-short - (progn (defsetf baz set-baz "docstring") - (setf (baz 1 2 3) "foo")) - "setBaz(1, 2, 3, 'foo');") - -(test-ps-js defun-setf1 - (progn (defun (setf some-thing) (new-val i1 i2) - (setf (aref *some-thing* i1 i2) new-val)) - (setf (some-thing 1 2) "foo")) -"function __setf_someThing(newVal, i1, i2) { - return SOMETHING[i1][i2] = newVal; -}; -__setf_someThing('foo', 1, 2);") - -(test-ps-js defun-optional1 - (defun test-opt (&optional x) - (if x "yes" "no")) -"function testOpt(x) { - return x ? 'yes' : 'no'; -};") - -(test-ps-js defun-optional2 - (defun foo (x &optional y) - (+ x y)) - "function foo(x, y) { - return x + y; -};") - -(test-ps-js defun-optional3 - (defun blah (&optional (x 0)) - x) - "function blah(x) { - if (x === undefined) { - x = 0; - }; - return x; -};") - -(test-ps-js arglist-optional4 - (lambda (&optional (x 0 supplied?)) - x) - "function (x) { - var suppliedwhat = x !== undefined; - if (!suppliedwhat) { - x = 0; - }; - return x; -};") - -(test-ps-js return-nothing - (defun foo () (return-from foo)) - "function foo() { - return; -};") - -(test-ps-js return-values - (defun foo () - (return-from foo (values 1 2 3))) - "function foo() { - var val1 = 1; - __PS_MV_REG = [2, 3]; - return val1; -};") - -(test-ps-js set-timeout - (set-timeout (lambda () (alert "foo")) 10) - "setTimeout(function () { __PS_MV_REG = []; return alert('foo'); }, 10);") - -(test-ps-js operator-precedence - (* 3 (+ 4 5) 6) - "3 * (4 + 5) * 6;") - -(test-ps-js operators-1 - (in prop obj) - "prop in obj;") - -(test-ps-js incf1 - (incf foo bar) - "foo += bar;") - -(test-ps-js decf1 - (decf foo bar) - "foo -= bar;") - -(test-ps-js incf2 - (incf x 5) - "x += 5;") - -(test-ps-js decf2 - (decf y 10) - "y -= 10;") - -(test-ps-js setf-conditional - (setf foo (if x 1 2)) - "foo = x ? 1 : 2;") - -(test-ps-js obj-literal-numbers - (create 1 "foo") - "{ 1 : 'foo' };") - -(test-ps-js obj-literal-strings - (create "foo" 2) - "{ 'foo' : 2 };") - -(test-ps-js getprop-string - (getprop foo "bar") - "foo['bar'];") - -(test-ps-js getprop-string1 - (getprop "bar" 'length) - "'bar'.length;") - -(test-ps-js getprop-progn - (getprop (progn (some-fun "abc") "123") "length") - "(someFun('abc'), '123')['length'];") - -(test-ps-js getprop-multi1 - (getprop foo 1 "two" three 'bar 1 2) - "foo[1]['two'][three].bar[1][2];") - -(test-ps-js method-call-block - ((@ (progn (some-fun "abc") "123") to-string)) - "(someFun('abc'), '123').toString();") - -(test-ps-js create-blank - (create) - "{ };") - -(test-ps-js blank-object-literal - {} - "{ };") - -(test-ps-js array-literal1 - [] - "[];") - -(test-ps-js array-literal2 - ([]) - "[];") - -(test-ps-js array-literal3 - ([] 1 2 3) - "[1, 2, 3];") - -(test-ps-js array-literal4 - ([] 1 (2 3)) - "[1, [2, 3]];") - -(test-ps-js array-literal5 - ([] (1 2) ("a" "b")) - "[[1, 2], ['a', 'b']];") - -(test-ps-js defun-rest1 - (defun foo (&rest bar) - (alert (aref bar 1))) - "function foo() { - var bar = Array.prototype.slice.call(arguments, 0); - __PS_MV_REG = []; - return alert(bar[1]); -};") - -(test-ps-js defun-rest2 - (defun foo (baz &rest bar) (+ baz (aref bar 1))) - "function foo(baz) { - var bar = Array.prototype.slice.call(arguments, 1); - __PS_MV_REG = []; - return baz + bar[1]; -};") - -(test-ps-js defun-keyword1 - (defun zoo (foo bar &key baz) (+ foo bar baz)) - "function zoo(foo, bar) { - var _js2 = arguments.length; - for (var n1 = 2; n1 < _js2; n1 += 2) { - switch (arguments[n1]) { - case 'baz': - baz = arguments[n1 + 1]; - }; - }; - var baz; - return foo + bar + baz; -};") - -(test-ps-js defun-keyword2 - (defun zoo (&key baz) (* baz baz)) - "function zoo() { - var _js2 = arguments.length; - for (var n1 = 0; n1 < _js2; n1 += 2) { - switch (arguments[n1]) { - case 'baz': - baz = arguments[n1 + 1]; - }; - }; - var baz; - return baz * baz; -};") - -(test-ps-js defun-keyword3 - (defun zoo (&key baz (bar 4)) (* baz bar)) - "function zoo() { - var _js2 = arguments.length; - for (var n1 = 0; n1 < _js2; n1 += 2) { - switch (arguments[n1]) { - case 'baz': - baz = arguments[n1 + 1]; - break; - case 'bar': - bar = arguments[n1 + 1]; - }; - }; - var baz; - var bar = 'undefined' === typeof bar ? 4 : bar; - return baz * bar; -};") - -(test-ps-js defun-keyword4 - (defun hello-world (&key ((:my-name-key my-name) 1)) - my-name) - "function helloWorld() { - var _js2 = arguments.length; - for (var n1 = 0; n1 < _js2; n1 += 2) { - switch (arguments[n1]) { - case 'my-name-key': - myName = arguments[n1 + 1]; - }; - }; - var myName = 'undefined' === typeof myName ? 1 : myName; - return myName; -};") - -(test-ps-js arglist-keyword-supplied - (lambda (&key (foo 1 supplied?)) - foo) -"function () { - var _js2 = arguments.length; - for (var n1 = 0; n1 < _js2; n1 += 2) { - switch (arguments[n1]) { - case 'foo': - foo = arguments[n1 + 1]; - suppliedwhat = true; - }; - }; - var suppliedwhat; - var foo = 'undefined' === typeof foo ? 1 : foo; - return foo; -};") - -(test-ps-js keyword-funcall1 - (func :baz 1) - "func('baz', 1);") - -(test-ps-js keyword-funcall2 - (func :baz 1 :bar foo) - "func('baz', 1, 'bar', foo);") - -(test-ps-js keyword-funcall3 - (fun a b :baz c) - "fun(a, b, 'baz', c);") - -(test-ps-js cond1 - (cond ((= x 1) 1)) - "if (x === 1) { - 1; -};") - -(test-ps-js cond2 - (cond ((= x 1) 2) - ((= y (* x 4)) (foo "blah") (* x y))) - "if (x === 1) { - 2; -} else if (y === x * 4) { - foo('blah'); - x * y; -};") - -(test-ps-js if-exp-without-else-return - (defun foo () (return-from foo (if x 1))) - "function foo() { - return x ? 1 : null; -};") - -(test-ps-js progn-expression-single-statement - (defun foo () (return-from foo (progn (* x y)))) - "function foo() { - return x * y; -};") - -(test-ps-js cond-expression1 - (defun foo () - (cond ((< 1 2) (bar "foo") (* 4 5)))) - "function foo() { - if (1 < 2) { - bar('foo'); - __PS_MV_REG = []; - return 4 * 5; - }; -};") - -(test-ps-js cond-expression2 - (defun foo () - (cond ((< 2 1) "foo") - ((= 7 7) "bar"))) - "function foo() { - if (2 < 1) { - return 'foo'; - } else if (7 === 7) { - return 'bar'; - }; -};") - -(test-ps-js cond-expression-final-t-clause - (defun foo () - (cond ((< 1 2) (bar "foo") (* 4 5)) - ((= a b) (+ c d)) - ((< 1 2 3 4 5) x) - (t "foo"))) - "function foo() { - var _cmp1; - var _cmp2; - var _cmp3; - if (1 < 2) { - bar('foo'); - __PS_MV_REG = []; - return 4 * 5; - } else if (a === b) { - __PS_MV_REG = []; - return c + d; - } else if (_cmp1 = 2, _cmp2 = 3, _cmp3 = 4, 1 < _cmp1 && _cmp1 < _cmp2 && _cmp2 < _cmp3 && _cmp3 < 5) { - __PS_MV_REG = []; - return x; - } else { - __PS_MV_REG = []; - return 'foo'; - }; -};") - -(test-ps-js cond-expression-middle-t-clause ;; should this signal a warning? - (defun foo () - (cond ((< 2 1) 5) - (t "foo") - ((< 1 2) "bar"))) - "function foo() { - if (2 < 1) { - return 5; - } else { - return 'foo'; - }; -};") - -(test-ps-js funcall-if-expression - (funcall (getprop document 'write) - (if (= *linkornot* 1) - (ps-html ((:a :href "#" - :onclick (ps-inline (transport))) - img)) - img)) - "document.write(LINKORNOT === 1 ? ['', img, ''].join('') : img);") - -(test-ps-js negate-number-literal - (- 1) - "-1;") - -(fiveam:test macro-environment1 - (fiveam:is - (string= - (normalize-js-output - (let* ((macroname (gensym))) - (ps* `(defmacro ,macroname (x) `(+ ,x 123)) - `(defun test1 () - (macrolet ((,macroname (x) `(aref data ,x))) - (when (,macroname x) - (setf (,macroname x) 123))))))) - (normalize-js-output -"function test1() { - return data[x] ? (data[x] = 123) : null; -};")))) - -(fiveam:test macro-environment2 - (fiveam:is - (string= - (let ((outer-lexical-variable 1)) - (defpsmacro macro-environment2-macro (x) - `(+ ,outer-lexical-variable ,x)) - (ps* '(macro-environment2-macro 2))) - "1 + 2;"))) - -(test-ps-js ampersand-whole-1 - (macrolet ((foo (&whole foo bar baz) - (declare (ignore bar baz)) - (with-standard-io-syntax - (let ((*print-case* :downcase)) - (format nil "~a" foo))))) - (foo 1 2)) - "'(foo 1 2)';") - -(test-ps-js ampersand-whole-2 - (macrolet ((foo (&whole foo bar baz) - `(+ ,bar ,baz))) - (foo 1 2)) - "1 + 2;") - -(test-ps-js keyword-consistent - :x - "'x';") - -(test-ps-js simple-symbol-macrolet - (symbol-macrolet ((x 1)) x) - "1;") - -(test-ps-js compound-symbol-macrolet - (symbol-macrolet ((x 123) - (y (* 2 x))) - y) - "2 * 123;") - -(test-ps-js define-symbol-macro - (progn (define-symbol-macro tst-sym-macro 2) - tst-sym-macro) - "2;") - -(test-ps-js define-symbol-macro1 - (progn (define-symbol-macro tst-sym-macro1 2) - (foo tst-sym-macro1)) - "foo(2);") - -(test-ps-js define-symbol-macro2 - (progn (define-symbol-macro tst-sym-macro2 3) - (list tst-sym-macro2)) - "[3];") - -(test-ps-js define-symbol-macro3 - (progn (define-symbol-macro tst-sym-macro3 4) - (setq foo (create tst-sym-macro3 tst-sym-macro3))) - "foo = { tstSymMacro3 : 4 };") - -(test-ps-js define-symbol-macro4 - (progn (define-symbol-macro tst-sym-macro4 5) - (setq foo (if (baz) tst-sym-macro4 bar))) - "foo = baz() ? 5 : bar;") - -(test-ps-js expression-progn - (1+ (progn (foo) (if x 1 2))) - "(foo(), x ? 1 : 2) + 1;") - -(test-ps-js let-decl-in-expression - (defun f (x) - (if x 1 (let* ((foo x)) foo))) -"function f(x) { - if (x) { - return 1; - } else { - var foo = x; - return foo; - }; -};") - -(test-ps-js special-var1 - (progn (defvar *foo*) - (let* ((*foo* 2)) - (* *foo* 2))) - "var FOO; -(function () { - var FOO_TMPSTACK1; - try { - FOO_TMPSTACK1 = FOO; - FOO = 2; - return FOO * 2; - } finally { - FOO = FOO_TMPSTACK1; - }; -})();") - -(test-ps-js special-var2 - (progn (defparameter *foo*) - (let* ((*baz* 3) - (*foo* 2)) - (* *foo* 2 *baz*))) - "var FOO; -(function () { - var BAZ = 3; - var FOO_TMPSTACK1; - try { - FOO_TMPSTACK1 = FOO; - FOO = 2; - return FOO * 2 * BAZ; - } finally { - FOO = FOO_TMPSTACK1; - }; -})();") - -(test-ps-js literal1 - (setf x undefined) - "x = undefined;") - -(test-ps-js literal2 - (aref this x) - "this[x];") - -(test-ps-js setf-dec1 - (setf x (- 1 x 2)) - "x = 1 - x - 2;") - -(test-ps-js setf-dec2 - (setf x (- x 1 2)) - "x = x - 1 - 2;") - -(test-ps-js special-char-equals - blah= - "blahequals;") - -(test-ps-js setf-operator-priority - (defun foo () - (or (getprop cache id) - (setf (getprop cache id) ((@ document get-element-by-id) id)))) - "function foo() { - __PS_MV_REG = []; - return cache[id] || (cache[id] = document.getElementById(id)); -};") - -(test-ps-js aref-operator-priority - (aref (if (and x (> (length x) 0)) - (aref x 0) - y) - z) - "(x && x.length > 0 ? x[0] : y)[z];") - -(test-ps-js aref-operator-priority1 - (aref (or (getprop x 'y) - (getprop a 'b)) - z) - "(x.y || a.b)[z];") - -(test-ps-js aref-operator-priority2 - (aref (if a b c) 0) - "(a ? b : c)[0];") - -(test-ps-js negate-operator-priority - (- (if x y z)) - "-(x ? y : z);") - -(test-ps-js op-p1 - (new (or a b)) - "new (a || b);") - -(test-ps-js op-p2 - (delete (if a (or b c) d)) - "delete (a ? b || c : d);") - -(test-ps-js op-p3 - (not (if (or x (not y)) z)) - "!(x || !y ? z : null);") - -(test-ps-js op-p4 - (- (- (* 1 2) 3)) - "-(1 * 2 - 3);") - -(test-ps-js op-p5 - (instanceof (or a b) (if x y z)) - "((a || b) instanceof (x ? y : z));") - -(test-ps-js op-p7 - (or x (if (= x 0) "zero" "empty")) - "x || (x === 0 ? 'zero' : 'empty');") - -(test-ps-js named-op-expression - (throw (if a b c)) - "throw a ? b : c;") - -(test-ps-js named-op-expression1 - (typeof (or x y)) - "typeof (x || y);") - -(test-ps-js aref-array-expression - (aref (or a b c) 0) - "(a || b || c)[0];") - -(test-ps-js getprop-operator - (getprop (or a b c) 'd) - "(a || b || c).d;") - -(test-ps-js getprop-parens - (getprop (getprop foo 'bar) 'baz) - "foo.bar.baz;") - -(test-ps-js funcall-funcall - ((foo)) - "foo()();") - -(test-ps-js expression-funcall - ((or (@ window eval) eval) foo nil) - "(window.eval || eval)(foo, null);") - -(test-ps-js expression-funcall1 - (((or (@ window eval) eval) foo nil)) - "(window.eval || eval)(foo, null)();") - -(test-ps-js expression-funcall2 - (((or (@ window eval) eval)) foo nil) - "(window.eval || eval)()(foo, null);") - -(test-ps-js who-html1 - (who-ps-html (:span :class "ticker-symbol" - :ticker-symbol symbol - (:a :href "http://foo.com" - symbol) - (:span :class "ticker-symbol-popup"))) - "['', symbol, ''].join('');") - -(test-ps-js who-html2 - (who-ps-html (:p "t0" (:span "t1"))) - "'

t0t1

';") - -(test-ps-js flet1 - ((lambda () (flet ((foo (x) - (1+ x))) - (foo 1)))) - "(function () { - var foo = function (x) { - return x + 1; - }; - __PS_MV_REG = []; - return foo(1); -})();") - -(test-ps-js flet2 - (flet ((foo (x) (1+ x)) - (bar (y) (+ 2 y))) - (bar (foo 1))) -"(function () { -var foo = function (x) { - return x + 1; -}; -var bar = function (y) { - return 2 + y; -}; -__PS_MV_REG = []; -return bar(foo(1)); -})();") - -(test-ps-js flet3 - (flet ((foo (x) (+ 2 x))) - (flet ((foo (x) (1+ x)) - (bar (y) (+ 2 (foo y)))) - (bar (foo 1)))) - "(function () { -var foo = function (x) { - return 2 + x; -}; -var foo1 = function (x) { - return x + 1; -}; -var bar = function (y) { - __PS_MV_REG = []; - return 2 + foo(y); -}; -__PS_MV_REG = []; -return bar(foo1(1)); -})();") - -(test-ps-js labels1 - ((lambda () (labels ((foo (x) - (if (= 0 x) - 0 - (+ x (foo (1- x)))))) - (foo 3)))) -"(function () { - var foo = function (x) { - __PS_MV_REG = []; - return 0 === x ? 0 : x + foo(x - 1); - }; - __PS_MV_REG = []; - return foo(3); -})();") - -(test-ps-js labels2 - (labels ((foo (x) (1+ (bar x))) - (bar (y) (+ 2 (foo y)))) - (bar (foo 1))) - "(function () { -var foo = function (x) { - __PS_MV_REG = []; - return bar(x) + 1; -}; -var bar = function (y) { - __PS_MV_REG = []; - return 2 + foo(y); -}; -__PS_MV_REG = []; -return bar(foo(1)); -})();") - -(test-ps-js labels3 - (labels ((foo (x) (1+ x)) - (bar (y) (+ 2 (foo y)))) - (bar (foo 1))) - "(function () { -var foo = function (x) { - return x + 1; -}; -var bar = function (y) { - __PS_MV_REG = []; - return 2 + foo(y); -}; -__PS_MV_REG = []; -return bar(foo(1)); -})();") - -(test-ps-js labels-lambda-list - (labels ((foo (x &optional (y 0)) - (+ x y))) - (foo 1)) - "(function () { -var foo = function (x, y) { - if (y === undefined) { - y = 0; - }; - return x + y; -}; -__PS_MV_REG = []; -return foo(1); -})();") - -(test-ps-js for-loop-var-init-exp - ((lambda (x) - (do* ((y (if x 0 1) (1+ y)) - (z 0 (1+ z))) - ((= y 3) z))) - t) - "(function (x) { - for (var y = x ? 0 : 1, z = 0; y !== 3; y += 1, z += 1) { - }; - return z; -})(true);") - -(test-ps-js math-pi - pi - "Math.PI;") - -(test-ps-js literal-array - '(1 2 3) - "[1, 2, 3];") - -(test-ps-js literal-array-1 - '(1 foo 3) - "[1, 'foo', 3];") - -(test-ps-js literal-array-literal - '[] - "[];") - -(test-ps-js literal-array-literal1 - '(1 []) - "[1, []];") - -(fiveam:test ps-lisp-expands-in-lexical-environment - (fiveam:is (string= (let ((x 5)) (ps (lisp x))) - "5;"))) - -(fiveam:test ps-lisp-expands-in-lexical-environment1 - (fiveam:is (string= (let ((x 5)) (ps (+ 1 (lisp x)))) - "1 + 5;"))) - -(fiveam:test ps-lisp-expands-in-lexical-environment2 - (fiveam:is (string= (let ((x 2)) (ps (+ 1 (lisp x) 3))) - "1 + 2 + 3;"))) - -(fiveam:test ps*-lisp-expands-in-null-lexical-environment - (fiveam:signals unbound-variable - (let ((x 5)) - (declare (ignore x)) - (ps* '(lisp x))))) - -(fiveam:test ps*-lisp-expands-in-dynamic-environment - (fiveam:is (string= - (let ((foo 2)) - (declare (special foo)) - (ps* '(+ 1 (lisp (locally (declare (special foo)) - foo))))) - "1 + 2;"))) - -(fiveam:test ps-lisp-dynamic-environment - (fiveam:is (string= - (let ((foo 2)) - (declare (special foo)) - (ps (+ 1 (lisp foo)))) - "1 + 2;"))) - -(test-ps-js nested-if-expressions1 - (defun foo () - (return-from foo (if (if x y z) a b))) - "function foo() { - if (x ? y : z) { - return a; - } else { - return b; - }; -};") - -(test-ps-js nested-if-expressions2 - (defun foo () - (if x y (if z a b))) -"function foo() { - if (x) { - return y; - } else { - return z ? a : b; - }; -};") - -(test-ps-js nested-if-expressions3 - (foo (if (if x y z) a b) - (if x y (if z a b))) - "foo((x ? y : z) ? a : b, x ? y : (z ? a : b));") - -(test-ps-js let1 - (let (x) - (+ x x)) - "(function () { - var x = null; - return x + x; -})();") - -(test-ps-js let2 - (let ((x 1)) - (+ x x)) - "(function () { - var x = 1; - return x + x; -})();") - -(test-ps-js let-x-x - (let ((x (1+ x))) - (+ x x)) - "(function () { - var x1 = x + 1; - return x1 + x1; -})();") - -(test-ps-js let3 - (let ((x 1) - (y 2)) - (+ x x)) - "(function () { -var x = 1; -var y = 2; -return x + x; -})();") - -(test-ps-js let4 - (let ((x 1) - (y (1+ x))) - (+ x y)) - "(function () { -var x1 = 1; -var y = x + 1; -return x1 + y; -})();") - -(test-ps-js let5 - (let ((x 1)) - (+ x 1) - (let ((x (+ x 5))) - (+ x 1)) - (+ x 1)) - "(function () { -var x = 1; -x + 1; -var x1 = x + 5; -x1 + 1; -return x + 1; -})();") - -(test-ps-js let6 - (let ((x 2)) - (let ((x 1) - (y (1+ x))) - (+ x y))) - "(function () { -var x = 2; -var x1 = 1; -var y = x + 1; -return x1 + y; -})();") - -(test-ps-js let-exp1 - (lambda () - (let (x) - (+ x x))) - "function () { - var x = null; - return x + x; -};") - -(test-ps-js let*1 - (let* ((x 1)) - (+ x x)) -"(function () { -var x = 1; -return x + x; -})();") - -(test-ps-js let*2 - (let* ((x 1) - (y (+ x 2))) - (+ x y)) - "(function () { - var x = 1; - var y = x + 2; - return x + y; -})();") - -(test-ps-js let*3 - (let ((x 3)) - (let* ((x 1) - (y (+ x 2))) - (+ x y))) - "(function () { - var x = 3; - var x1 = 1; - var y = x1 + 2; - return x1 + y; -})();") - -(test-ps-js let*4 - (let ((x 3)) - (let* ((y (+ x 2)) - (x 1)) - (+ x y))) - "(function () { - var x = 3; - var y = x + 2; - var x1 = 1; - return x1 + y; -})();") - -(test-ps-js symbol-macrolet-var - (symbol-macrolet ((x y)) - (var x)) - "var y;") - -(test-ps-js setf-conditional1 - (setf x (unless (null a) (1+ a))) - "x = a != null ? a + 1 : null;") - -(test-ps-js setf-let1 - (setf x (let ((a 1)) a)) - "x = (function () { - var a = 1; - return a; -})();") - -(test-ps-js setf-let2 - (setf x (let ((a (foo))) - (unless (null a) - (1+ a)))) - "x = (function () { - var a = foo(); - __PS_MV_REG = []; - return a != null ? a + 1 : null; -})();") - -(test-ps-js symbol-macro-env1 - (symbol-macrolet ((bar 1)) - (macrolet ((bar (x y) `(+ ,x ,y))) - (bar bar bar))) - "1 + 1;") - -(test-ps-js symbol-macrolet-fun1 - (symbol-macrolet ((baz +)) - (baz 1 2)) - "baz(1, 2);") - -(test-ps-js lisp2-namespaces1 - (let ((list nil)) - (setf list (list 1 2 3))) - "(function () { -var list = null; -return list = [1, 2, 3]; -})();") - -(test-ps-js let-shadows-symbol-macrolet - (symbol-macrolet ((x y)) - (let ((x 1)) - (+ x x)) - (+ x x)) - "(function () { -var x1 = 1; -return x1 + x1; -})(); -y + y;") - -(test-ps-js let-rename-optimization1 - (let ((x 1)) - (+ x x)) - "(function () { -var x = 1; -return x + x; -})();") - -(test-ps-js let-rename-optimization2 - (lambda (x) - (let ((x (+ 1 x))) - x)) - "function (x) { - var x1 = 1 + x; - return x1; -};") - -(test-ps-js symbol-macro-array - (symbol-macrolet ((x 1)) - (list x)) - "[1];") - -(test-ps-js symbol-macro-obj - (symbol-macrolet ((x (+ 1 2))) - (create x 1)) - "{ x : 1 };") - -(test-ps-js symbol-macro-obj1 - (symbol-macrolet ((x (+ 1 2))) - (ps:create x x)) - "{ x : 1 + 2 };") - -(test-ps-js symbol-macro-getprop1 - (symbol-macrolet ((x (+ 1 2))) - (ps:getprop a x)) - "a[1 + 2];") - -(test-ps-js symbol-macro-getprop1 - (symbol-macrolet ((x (+ 1 2))) - (ps:getprop a 'x)) - "a.x;") - -(test-ps-js let-let-create - (let ((a 99)) - (let ((a 22)) - (create a 33))) - "(function () { - var a = 99; - var a1 = 22; - return { a : 33 }; -})();") - -(test-ps-js symbol-macro-conditional1 - (symbol-macrolet ((x y)) - (if x x x)) - "if (y) { - y; -} else { - y; -};") - -(test-ps-js symbol-macro-conditional2 - (symbol-macrolet ((x y)) - (1+ (if x x x))) - "(y ? y : y) + 1;") - -(test-ps-js preserve-this - (defun foo () - (let ((y (block nil (bar this)))) - (baz y))) - "function foo() { - var y = (function () { - __PS_MV_REG = []; - return bar(this); - }).call(this); - __PS_MV_REG = []; - return baz(y); -};") - -(test-ps-js flet-apply - (flet ((foo () 'bar)) - (apply (function foo) nil)) - "(function () { -var foo = function () { - return 'bar'; -}; -return foo.apply(this, null); -}).call(this);") - -(test-ps-js let-apply - (let ((foo (lambda () 1))) - (let ((foo (lambda () 2))) - (apply foo nil))) - "(function () { -var foo = function () { - return 1; -}; -var foo1 = function () { - return 2; -}; -return foo1.apply(this, null); -}).call(this);") - -(test-ps-js flet-let - (flet ((x (x) (1+ x))) - (let ((x 2)) - (x x))) - "(function () { -var x = function (x) { - return x + 1; -}; -var x1 = 2; -__PS_MV_REG = []; -return x(x1); -})();") - -(test-ps-js let-flet - (let ((x 2)) - (flet ((x (x) (1+ x))) - (x x))) - "(function () { -var x = 2; -var x1 = function (x) { - return x + 1; -}; -__PS_MV_REG = []; -return x1(x); -})();") - -(test-ps-js labels-let - (labels ((x (x) (1+ x))) - (let ((x 2)) - (x x))) - "(function () { -var x = function (x) { - return x + 1; -}; -var x1 = 2; -__PS_MV_REG = []; -return x(x1); -})();") - -(test-ps-js let-labels - (let ((x 2)) - (labels ((x (x) (1+ x))) - (x x))) - "(function () { -var x = 2; -var x1 = function (x) { - return x + 1; -}; -__PS_MV_REG = []; -return x1(x); -})();") - -(test-ps-js macrolet-let-inteference - (macrolet ((a (n) `(+ ,n 5))) - (let ((a (a 1))) - (let ((b (a (- a 4)))) - (+ a b)))) - "(function () { -var a = 1 + 5; -var b = (a - 4) + 5; -return a + b; -})();") - -(test-ps-js let-subtract-add - (let ((x 1)) - (let ((x 2)) - (- x x) - (- x) - (decf x) - (incf x))) - "(function () { -var x = 1; -var x1 = 2; -x1 - x1; --x1; ---x1; -return ++x1; -})();") - -(test-ps-js create-reserved-word - (create :default 1) - "{ 'default' : 1 };") - -(test-ps-js getprop-reserved-word - (getprop foo :default) - "foo['default'];") - -(test-ps-js getprop-reserved-word1 - (getprop foo 'default) - "foo['default'];") - -(test-ps-js eval-when-ps-side - (eval-when (:execute) - 5) - "5;") - -(defvar *lisp-output* nil) - -(fiveam:test eval-when-lisp-side () - (setf *lisp-output* 'original-value) - (let ((js-output - (normalize-js-output - (ps-doc* `(eval-when (:compile-toplevel) - (setf *lisp-output* 'it-works)))))) - (fiveam:is (eql 'it-works *lisp-output*)) - (fiveam:is (string= "" js-output)))) - -(defpsmacro my-in-package (package-name) - `(eval-when (:compile-toplevel) - (setf *lisp-output* ,package-name))) - -(fiveam:test eval-when-macro-expansion () - (setf *lisp-output* 'original-value) - (let ((js-output - (normalize-js-output - (ps-doc* `(progn - (my-in-package :cl-user) - 3))))) - (declare (ignore js-output)) - (fiveam:is (eql :cl-user *lisp-output*)))) - -(fiveam:test eval-when-macrolet-expansion () - (setf *lisp-output* 'original-value) - (let ((js-output - (normalize-js-output - (ps-doc* - `(macrolet ((my-in-package2 (package-name) - `(eval-when (:compile-toplevel) - (setf *lisp-output* ,package-name)))) - (my-in-package2 :cl-user) - 3))))) - (declare (ignore js-output)) - (fiveam:is (eql :cl-user *lisp-output*)))) - -(test-ps-js getprop-keyword - (getprop foo :bar) - "foo['bar'];") - -(test-ps-js nary-comparison1 - (lambda () (< 1 2 3)) - "function () { - var _cmp1; - return (_cmp1 = 2, 1 < _cmp1 && _cmp1 < 3); -};") - -(test-ps-js chain-getprop1 - (chain ($ "foo") (bar x z) frob (baz 5)) - "$('foo').bar(x, z).frob.baz(5);") - -(test-ps-js chain-getprop2 - (chain ($ "foo") bar baz) - "$('foo').bar.baz;") - -(test-ps-js chain-getprop3 - (chain ($ "foo") bar (x y) baz) - "$('foo').bar.x(y).baz;") - -(test-ps-js flet-expression - (1+ (flet ((foo (x) (1+ x))) - (foo 1))) - "(function () { - var foo = function (x) { - return x + 1; - }; - __PS_MV_REG = []; - return foo(1); -})() + 1;") - -(test-ps-js flet-lambda-list - (flet ((foo (x &key (y 0)) - (+ x y))) - (foo 1 :y 2)) - "(function () { -var foo = function (x) { - var _js2 = arguments.length; - for (var n1 = 1; n1 < _js2; n1 += 2) { - switch (arguments[n1]) { - case 'y': - y = arguments[n1 + 1]; - }; - }; - var y = 'undefined' === typeof y ? 0 : y; - return x + y; -}; -__PS_MV_REG = []; -return foo(1, 'y', 2); -})();") - -(test-ps-js return-case-break-elimination - (defun foo () - (case 1 - (0 1) - (otherwise 2))) - "function foo() { - switch (1) { - case 0: - return 1; - default: - return 2; - }; -};") - -(test-ps-js aplusplus - a++ - "aplusplus;") - -(test-ps-js astarstar - a** - "astarstar;") - -(test-ps-js switch-return-fallthrough - (defun foo () - (switch x - (1 (foo) break) - (2 (bar)) - (default 4))) - "function foo() { - switch (x) { - case 1: - __PS_MV_REG = []; - return foo(); - case 2: - bar(); - default: - __PS_MV_REG = []; - return 4; - }; -};") - -(test-ps-js return-last-case - (defun foo () - (case x - (:a 'eh) - (:b 'bee))) - "function foo() { - switch (x) { - case 'a': - return 'eh'; - case 'b': - return 'bee'; - }; -};") - -(test-ps-js return-macrolet - (defun foo () - (macrolet ((x () 1)) - (case (x) - (:a 'eh) - (:b 'bee)))) - "function foo() { - switch (1) { - case 'a': - return 'eh'; - case 'b': - return 'bee'; - }; -};") - -(test-ps-js mv-bind1 - (multiple-value-bind (a b) - (progn - (returns-mv) - (doesnt)) - (alert a) - (alert b)) - "returnsMv(); -__PS_MV_REG = []; -(function () { - var a = doesnt(); - var b = __PS_MV_REG[0]; - alert(a); - __PS_MV_REG = []; - return alert(b); -})();") - -(test-ps-js mv-bind2 - (multiple-value-bind (a b) - (let ((a 1)) - (returns-mv a) - (doesnt b)) - (alert a) - (alert b)) - "(function () { - var a = 1; - returnsMv(a); - __PS_MV_REG = []; - var a1 = doesnt(b); - var b = __PS_MV_REG[0]; - alert(a1); - __PS_MV_REG = []; - return alert(b); -})();") - -(test-ps-js multiple-value-bind-simple - (multiple-value-bind (a b) (blah) - (+ a b)) - "__PS_MV_REG = []; -(function () { - var a = blah(); - var b = __PS_MV_REG[0]; - __PS_MV_REG = []; - return a + b; -})();") - -(test-ps-js values0 - (lambda () (values)) - "function () { - return; -};") - -(test-ps-js values1 - (lambda () (values x)) - "function () { - return x; -};") - -(test-ps-js values2 - (lambda () (values x y)) - "function () { - var val1 = x; - __PS_MV_REG = [y]; - return val1; -};") - -(test-ps-js values3 - (lambda () (values x y z)) - "function () { - var val1 = x; - __PS_MV_REG = [y, z]; - return val1; -};") - -(test-ps-js values-return - (defun foo (x y) - (return-from foo (values (* x x) y))) - "function foo(x, y) { - var val1 = x * x; - __PS_MV_REG = [y]; - return val1; -};") - -(test-ps-js return-macrolet1 - (defun foo () - (symbol-macrolet ((x 2)) - (loop do (+ x x)))) - "function foo() { - while (true) { - 2 + 2; - }; -};") - -(test-ps-js return-cond - (defun foo () - (return-from foo - (cond ((foo? x) (loop for y in x do (foo y))) - ((bar? x) x) - (t 3)))) - "function foo() { -if (foowhat(x)) { - var _js2 = x.length; - for (var _js1 = 0; _js1 < _js2; _js1 += 1) { - var y = x[_js1]; - foo(y); - }; -} else if (barwhat(x)) { - __PS_MV_REG = []; - return x; -} else { - __PS_MV_REG = []; - return 3; -}; -};") - -(test-ps-js return-case - (defun foo () - (return-from foo - (case x - (1 (loop for y in x do (foo y))) - (2 x) - ((t) 3)))) - "function foo() { - switch (x) { - case 1: - var _js2 = x.length; - for (var _js1 = 0; _js1 < _js2; _js1 += 1) { - var y = x[_js1]; - foo(y); - }; - __PS_MV_REG = []; - return; - case 2: - __PS_MV_REG = []; - return x; - case true: - __PS_MV_REG = []; - return 3; - }; -};") - -(test-ps-js return-case1 - (defun foo () - (return-from foo - (case x - (1 (if a 1 2)) - (2 x) - ((t) 3)))) - "function foo() { - switch (x) { - case 1: - return a ? 1 : 2; - case 2: - return x; - case true: - return 3; - }; -};") - -(test-ps-js lambda-loop-if-return - (lambda () - (if a - (loop for y in x do (foo y)) - c)) - "function () { - if (a) { - var _js4 = x.length; - for (var _js3 = 0; _js3 < _js4; _js3 += 1) { - var y = x[_js3]; - foo(y); - }; - } else { - __PS_MV_REG = []; - return c; - }; -};") - -(test-ps-js lambda-loop-if-return1 - (defun baz () - (foo (lambda () - (if a - (progn (loop for y in x do (foo y)) - (return-from baz)) - c)))) - "function baz() { - try { - __PS_MV_REG = []; - return foo(function () { - if (a) { - var _js4 = x.length; - for (var _js3 = 0; _js3 < _js4; _js3 += 1) { - var y = x[_js3]; - foo(y); - }; - __PS_MV_REG = []; - throw { '__ps_block_tag' : 'baz', - '__ps_value' : null }; - } else { - __PS_MV_REG = []; - return c; - }; - }); - } catch (_ps_err5) { - if (_ps_err5 && 'baz' === _ps_err5['__ps_block_tag']) { - return _ps_err5['__ps_value']; - } else { - throw _ps_err5; - }; - }; -};") - -(test-ps-js switch-loop - (defun foo (x) - (case x - (1 (dolist (a b))))) - "function foo(x) { -switch (x) { -case 1: - for (var a = null, _js_idx1 = 0; _js_idx1 < b.length; _js_idx1 += 1) { - a = b[_js_idx1]; - }; - return; -}; -};") - -(test-ps-js switch-folds-blocks - (defun foo () - (case x - (1 (loop repeat 3 do (alert "foo"))) - (2 "bar"))) - "function foo() { -switch (x) { -case 1: - for (var _js1 = 0; _js1 < 3; _js1 += 1) { - alert('foo'); - }; - __PS_MV_REG = []; - return; -case 2: - __PS_MV_REG = []; - return 'bar'; -}; -};") - -(test-ps-js setf-places-before-macros - (lambda () - (defsetf left (el) (offset) - `(setf (@ ,el style left) ,offset)) - (macrolet ((left (el) - `(@ ,el offset-left))) - (setf (left x) 10) - (left x))) - "function () { -var _js2 = x; -var _js1 = 10; -_js2.style.left = _js1; -return x.offsetLeft; -};") - -(test-ps-js for-return - (lambda () (dolist (arg args) (foo arg))) - "function () { - for (var arg = null, _js_idx1 = 0; _js_idx1 < args.length; _js_idx1 += 1) { - arg = args[_js_idx1]; - foo(arg); - }; -};") - -(test-ps-js try-catch-return - (defun foo () - (try (foo) - (:catch (e) - (bar)) - (:finally - (cleanup)))) - "function foo() { -try { - __PS_MV_REG = []; - return foo(); -} catch (e) { - __PS_MV_REG = []; - return bar(); -} finally { - cleanup(); -}; -};") - -(test-ps-js let-try - (let ((x (ps:try (+ 1 2) - (:catch (y) 5)))) - x) - "(function () { - var x = (function () { - try { - return 1 + 2; - } catch (y) { - return 5; - }; - })(); - __PS_MV_REG = []; - return x; -})();") - -(test-ps-js try-finally-return-from - (defun xyz () - (return-from xyz - (ps:try (when (blah) 4) - (:finally (foo)))) - (dont-call-me)) - "function xyz() { - try { - __PS_MV_REG = []; - return blah() ? 4 : null; - } finally { - foo(); - }; - __PS_MV_REG = []; - return dontCallMe(); -};") - -(test-ps-js defun-setf-optional - (defun (setf foo) (new-value b &optional c) - (setf (aref b (or c 0)) new-value)) - "function __setf_foo(newValue, b, c) { - return b[c || 0] = newValue; -};") - -(test-ps-js defun-setf-rest - (progn (defun (setf foo) (new-value b &rest foo) - (do-something b foo new-value)) - (setf (foo x 1 2 3 4) 5)) - "function __setf_foo(newValue, b) { - var foo = Array.prototype.slice.call(arguments, 2); - __PS_MV_REG = []; - return doSomething(b, foo, newValue); -}; -__setf_foo(5, x, 1, 2, 3, 4);") - -(test-ps-js return-null - (defun foo () (return-from foo nil)) - "function foo() { - return null; -};") - -(test-ps-js implicit-return-null - (lambda () - ) - "function () { - return null; -};") - -(test-ps-js implicit-return-null - (lambda () - nil) - "function () { - return null; -};") - -(test-ps-js return-conditional-nested - (defun blep (ss x y) - (when foo? - (let ((pair (bar))) - (unless (null pair) - (destructuring-bind (a b) pair - (unless (or (null a) (null b)) - (let ((val (baz a b))) - (unless (null val) - (when (blah val) - (unless (blee) - t)))))))))) - "function blep(ss, x, y) { - if (foowhat) { - var pair = bar(); - if (pair != null) { - var a = pair[0]; - var b = pair[1]; - if (!(a == null || b == null)) { - var val = baz(a, b); - if (val != null) { - if (blah(val)) { - __PS_MV_REG = []; - return !blee() ? true : null; - }; - }; - }; - }; - }; -};") - -(test-ps-js return-when-returns-broken-return - (defun foo () - (return-from foo (when x 1)) - (+ 2 3)) - "function foo() { - return x ? 1 : null; - return 2 + 3; -};") - -(test-ps-js return-case-conditional - (defun foo () - (return-from foo - (case foo - (123 (when (bar) t)) - (345 (blah))))) - "function foo() { -switch (foo) { -case 123: - __PS_MV_REG = []; - return bar() ? true : null; -case 345: - __PS_MV_REG = []; - return blah(); -}; -};") - -(test-ps-js return-try-conditional - (defun foo () - (return-from foo - (try (when x 1) - (:catch (x) 2) - (:finally (bar))))) - "function foo() { -try { - return x ? 1 : null; -} catch (x) { - return 2; -} finally { - bar(); -}; -};") - -(test-ps-js function-declare-special - (lambda () - (declare (special *foo*)) - (let ((*foo* 1)) - (1+ *foo*))) - "function () { - var FOO_TMPSTACK1; - try { - FOO_TMPSTACK1 = FOO; - FOO = 1; - return FOO + 1; - } finally { - FOO = FOO_TMPSTACK1; - }; -};") - -(test-ps-js declare-special-let - (let ((*foo* 123)) - (declare (special *foo*)) - (blah)) - "(function () { -var FOO_TMPSTACK1; -try { - FOO_TMPSTACK1 = FOO; - FOO = 123; - __PS_MV_REG = []; - return blah(); -} finally { - FOO = FOO_TMPSTACK1; -}; -})();") - -(test-ps-js declare-special-let-scope - (block nil - (let ((*foo* 123)) - (declare (special *foo*)) - (blah)) - (let ((*foo* 456)) - (+ 4 5))) - "(function () { -var FOO_TMPSTACK1; -try { - FOO_TMPSTACK1 = FOO; - FOO = 123; - blah(); -} finally { - FOO = FOO_TMPSTACK1; -}; -var FOO = 456; -__PS_MV_REG = []; -return 4 + 5; -})();") - -(test-ps-js declare-special-let* - (let* ((*foo* 123) (*bar* (+ *foo* *bar*))) - (declare (special *foo* *bar*)) - (blah)) - "(function () { - var FOO_TMPSTACK1; - try { - FOO_TMPSTACK1 = FOO; - FOO = 123; - var BAR_TMPSTACK2; - try { - BAR_TMPSTACK2 = BAR; - BAR = FOO + BAR; - __PS_MV_REG = []; - return blah(); - } finally { - BAR = BAR_TMPSTACK2; - }; - } finally { - FOO = FOO_TMPSTACK1; - }; -})();") - -(test-ps-js defun-multiple-declarations-around-docstring - (defun foo (x y) - (declare (ignorable x y)) - (declare (integer x) (float y)) - "Fooes X while barring Y." - (declare (special *foo*) (special *bar*)) - (let ((*bar* (bar y))) - (funcall *foo* x))) - "/** Fooes X while barring Y. */ -function foo(x, y) { - var BAR_TMPSTACK1; - try { - BAR_TMPSTACK1 = BAR; - BAR = bar(y); - __PS_MV_REG = []; - return FOO(x); - } finally { - BAR = BAR_TMPSTACK1; - }; -};") - -(test-ps-js macro-null-toplevel - (progn - (defmacro macro-null-toplevel () - nil) - (macro-null-toplevel)) - "") - -(test-ps-js define-symbol-macro-let - (progn - (define-symbol-macro test-symbol-macro 1) - (let ((test-symbol-macro 2)) - (1+ test-symbol-macro)) - (1+ test-symbol-macro)) - "(function () { -var testSymbolMacro1 = 2; -return testSymbolMacro1 + 1; -})(); -1 + 1;") - -(test-ps-js define-symbol-macro-flet - (progn - (define-symbol-macro test-symbol-macro1 1) - (flet ((test-symbol-macro1 () 2)) - (foo test-symbol-macro1) - (test-symbol-macro1)) - (bar test-symbol-macro1)) - "(function () { -var testSymbolMacro1_1 = function () { - return 2; -}; -foo(1); -__PS_MV_REG = []; -return testSymbolMacro1_1(); -})(); -bar(1);") - -(fiveam:test compile-stream-nulls - (fiveam:is - (string= - (with-input-from-string (s " - (defmacro macro-null-toplevel () - nil) - (macro-null-toplevel)") - (ps-compile-stream s)) - ""))) - -(fiveam:test compile-stream1 - (fiveam:is - (string= - (with-input-from-string (s " - (define-symbol-macro test-symbol-macro1 1) - (flet ((test-symbol-macro1 () 2)) - (foo test-symbol-macro1) - (test-symbol-macro1)) - (bar test-symbol-macro1)") - (ps::with-blank-compilation-environment - (ps-compile-stream s))) -"(function () { - var testSymbolMacro1_1 = function () { - return 2; - }; - foo(1); - __PS_MV_REG = []; - return testSymbolMacro1_1(); -})(); -bar(1); -"))) - -(test-ps-js equality-nary1 - (let ((x 10) (y 10) (z 10)) - (= x y z)) - "(function () { - var _cmp1; - var x = 10; - var y = 10; - var z = 10; - return (_cmp1 = y, x === _cmp1 && _cmp1 === z); -})();") - -(test-ps-js equality1 - (progn - (equal a b) - (eql a b) - (eq a b) - (= a b)) - "a == b; -a === b; -a === b; -a === b;") - -(test-ps-js getprop-quote-reserved - (getprop foo ':break) - "foo['break'];") - -(test-ps-js defun-block-return-from - (defun foo (x) - (baz 4) - (return-from foo x) - (bar 5)) - "function foo(x) { - baz(4); - __PS_MV_REG = []; - return x; - __PS_MV_REG = []; - return bar(5); -};") - -(test-ps-js block-return-from - (block scope - (foo) - (when (bar) - (return-from scope)) - (blee)) - "(function () { - foo(); - if (bar()) { - __PS_MV_REG = []; - return; - }; - __PS_MV_REG = []; - return blee(); -})();") - -(test-ps-js block-return-from0 - (defun baz () - (block scope - (foo) - (when (bar) - (return-from scope)) - (blee))) - "function baz() { - foo(); - if (bar()) { - __PS_MV_REG = []; - return; - }; - __PS_MV_REG = []; - return blee(); -};") - -(test-ps-js block-return-from01 - (defun baz () - (block scope - (foo) - (when (bar) - (return-from scope)) - (blee)) - 2) - "function baz() { - scope: { - foo(); - if (bar()) { - __PS_MV_REG = []; - break scope; - }; - blee(); - }; - __PS_MV_REG = []; - return 2; -};") - -(test-ps-js block-return-from02 - (defun baz () - (block scope - (foo) - (when (bar) - (return-from scope (foobar))) - (blee)) - 2) - "function baz() { - scope: { - foo(); - if (bar()) { - __PS_MV_REG = []; - foobar(); - break scope; - }; - blee(); - }; - __PS_MV_REG = []; - return 2; -};") - -(test-ps-js block-return-from1 - (lambda () - (block scope - (foo) - (when (bar) - (return-from scope)) - (blee)) - (+ 1 2)) - "function () { - scope: { - foo(); - if (bar()) { - __PS_MV_REG = []; - break scope; - }; - blee(); - }; - __PS_MV_REG = []; - return 1 + 2; -};") - -(test-ps-js block-return-from2 - (lambda () - (bar 5) - (block scope - (foo) - (when (bar) - (return-from scope 6)) - (blee))) - "function () { - bar(5); - foo(); - if (bar()) { - __PS_MV_REG = []; - return 6; - }; - __PS_MV_REG = []; - return blee(); -};") - -(test-ps-js let-funcall - (let ((x foo)) - (funcall x) - (let ((x bar)) - (funcall x)) - (funcall x)) - "(function () { -var x = foo; -x(); -var x1 = bar; -x1(); -return x(); -})();") - -(test-ps-js symbol-macrolet-funcall - (symbol-macrolet ((foo bar)) - (funcall foo 1 2 3)) - "bar(1, 2, 3);") - -(test-ps-js times-assign - (setf x (* x 1000)) - "x *= 1000;") - -(test-ps-js vector-literal - #(1 2 3) - "[1, 2, 3];") - -(test-ps-js vector-literal1 - #(1 2 #(a b) 3) - "[1, 2, ['a', 'b'], 3];") - -(test-ps-js rem1 - (+ 1 (rem 2 (+ 3 4))) - "1 + 2 % (3 + 4);") - -(test-ps-js non-associative - (+ (/ 1 (/ 2 3)) (- 1 (- 2 3))) - "1 / (2 / 3) + (1 - (2 - 3));") - -(test-ps-js lambda-apply - (lambda (x) - (apply (lambda (y) (bar (1+ y))) x)) - "function (x) { - return (function (y) { - __PS_MV_REG = []; - return bar(y + 1); - }).apply(this, x); -};") - -(test-ps-js operator-expressions-nested-let - (let ((x (let ((y 1)) - y))) - x) - "(function () { - var y; - var x = (y = 1, y); - return x; -})();") - -(test-ps-js operator-expressions-array-nested-let - (list (let ((y 1)) y) 2) - "[(function () { - var y = 1; - return y; -})(), 2];") - -(test-ps-js add-subtract-precedence - (- x (+ y z)) - "x - (y + z);") - -(test-ps-js ps-inline-toplevel - (ps-inline (foo)) - "'javascript:' + 'foo()';") - -(test-ps-js no-clause-progn-exp - (setf x (progn)) - "x = null;") - -(test-ps-js no-clause-progn-return - (defun foo () - (return-from foo (progn))) - "function foo() { -return null; -};") - -(test-ps-js empty-cond-clause - (setf x (cond ((foo)))) - "x = (function () { -var testResult1 = foo(); -__PS_MV_REG = []; -return testResult1 ? testResult1 : null; -})();") - -(test-ps-js empty-cond-clause1 - (setf x (cond ((foo) 123) - ((bar)) - (t 456))) - "x = foo() ? 123 : - (function () { - var testResult1 = bar(); - if (testResult1) { - __PS_MV_REG = []; - return testResult1; - } else { - if (true) { - __PS_MV_REG = []; - return 456; - }; - }; - })();") - -(test-ps-js let-no-body - (defun foo () - (return-from foo (let ((foo bar))))) - "function foo() { -var foo1 = bar; -return null; -};") - -(test-ps-js rename-lexical-dupes - (lambda () - (list (let ((foo 12)) (* foo 2)) - (let ((foo 13)) (* foo 3)))) - "function () { - var foo; - var foo1; - return [(foo = 12, foo * 2), (foo1 = 13, foo1 * 3)]; -};") - -(test-ps-js defun-comment1 - (defun foo (x) - "BARBAR is a revolutionary new foobar. -X y and x." - (1+ x)) - "/** - * BARBAR is a revolutionary new foobar. - * X y and x. - */ -function foo(x) { - return x + 1; -};") - -(test-ps-js var-comment - (var x 1 "foo") - "/** foo */ -var x = 1;") - -(test-ps-js case-return-break-broken-return - (defun foo () - (case x - ("bar" (if y (return-from foo t) nil)) - ("baz" nil))) - "function foo() { - switch (x) { - case 'bar': - if (y) { - return true; - } else { - return null; - }; - case 'baz': - return null; - }; -};") - -(test-ps-js case-return-break1-broken-return - (defun foo () - (case x - ("bar" (if y (return-from foo t))) - ("baz" nil))) - "function foo() { - switch (x) { - case 'bar': - if (y) { - return true; - } else { - return null; - }; - case 'baz': - return null; - }; -};") - -(test-ps-js setf-progn - (setf foo (progn (bar) (baz) 3)) - "bar(); -baz(); -foo = 3;") - -(test-ps-js var-progn - (var x (progn (foo) (bar))) - "foo(); -var x = bar();") - -(test-ps-js implicit-return-loop - (lambda () - (if baz 7 - (progn - (loop :repeat 100 :do (bar)) - 42))) - "function () { - if (baz) { - return 7; - } else { - for (var _js2 = 0; _js2 < 100; _js2 += 1) { - bar(); - }; - __PS_MV_REG = []; - return 42; - }; -};") - -(test-ps-js loop-closures - (dotimes (i 10) (lambda () (+ i 1))) - "(function () { -for (var i = 0; i < 10; i += 1) { - function () { - return i + 1; - }; -}; -})();") - -(test-ps-js loop-closures-let - (dotimes (i 10) - (let ((x (+ i 1))) - (lambda () (+ i x)))) - "(function () { -for (var i = 0; i < 10; i += 1) { - (function () { - var x = i + 1; - return function () { - return i + x; - }; - })(); -}; -})();") - -(test-ps-js loop-closures-flet - (dotimes (i 10) - (flet ((foo (x) (+ i x))) - (lambda () (foo i)))) - "(function () { -for (var i = 0; i < 10; i += 1) { - (function () { - var foo = function (x) { - return i + x; - }; - return function () { - __PS_MV_REG = []; - return foo(i); - }; - })(); -}; -})();") - -(test-ps-js while-closures-let - (loop while (foo) do - (let ((abc (bar))) - (lambda () (+ 1 abc)))) - "(function () { -while (foo()) { - (function () { - var abc = bar(); - __PS_MV_REG = []; - return function () { - return 1 + abc; - }; - })(); -}; -})();") - -(test-ps-js dotted-list-form - (defun foo (a) - (when a - (destructuring-bind (b . c) - bar - (list b c)))) - "function foo(a) { - if (a) { - var b = bar[0]; - var c = bar.length > 1 ? bar.slice(1) : []; - __PS_MV_REG = []; - return [b, c]; - }; -};") - -(test-ps-js explicit-nil-block - (defun bar () - (foo 1) - (block nil (return (foo 2)) (+ 1 2)) - 2) - "function bar() { - foo(1); - nilBlock: { - __PS_MV_REG = []; - foo(2); - break nilBlock; - 1 + 2; - }; - __PS_MV_REG = []; - return 2; -};") - -(test-ps-js dynamic-extent-function-return - (defun foo () - ((lambda () - (return-from foo 6)))) - "function foo() { - try { - __PS_MV_REG = []; - return (function () { - __PS_MV_REG = []; - throw { '__ps_block_tag' : 'foo', '__ps_value' : 6 }; - })(); - } catch (_ps_err1) { - if (_ps_err1 && 'foo' === _ps_err1['__ps_block_tag']) { - return _ps_err1['__ps_value']; - } else { - throw _ps_err1; - }; - }; -};") - -(test-ps-js dynamic-extent-function-return-nothing - (defun foo () - ((lambda () - (return-from foo)))) - "function foo() { - try { - __PS_MV_REG = []; - return (function () { - __PS_MV_REG = []; - throw { '__ps_block_tag' : 'foo', '__ps_value' : null }; - })(); - } catch (_ps_err1) { - if (_ps_err1 && 'foo' === _ps_err1['__ps_block_tag']) { - return _ps_err1['__ps_value']; - } else { - throw _ps_err1; - }; - }; -};") - -(test-ps-js dynamic-extent-function-return-values - (defun foo () - ((lambda () - (return-from foo (values 1 2 3))))) - "function foo() { - try { - __PS_MV_REG = []; - return (function () { - var val1 = 1; - __PS_MV_REG = [2, 3]; - throw { '__ps_block_tag' : 'foo', - '__ps_value' : val1 }; - })(); - } catch (_ps_err2) { - if (_ps_err2 && 'foo' === _ps_err2['__ps_block_tag']) { - return _ps_err2['__ps_value']; - } else { - throw _ps_err2; - }; - }; -};") - -(test-ps-js dynamic-extent-function-return-funcall - (defun foo () - ((lambda () - (return-from foo (if baz 6 5))))) - "function foo() { - try { - __PS_MV_REG = []; - return (function () { - __PS_MV_REG = []; - throw { '__ps_block_tag' : 'foo', '__ps_value' : baz ? 6 : 5 }; - })(); - } catch (_ps_err1) { - if (_ps_err1 && 'foo' === _ps_err1['__ps_block_tag']) { - return _ps_err1['__ps_value']; - } else { - throw _ps_err1; - }; - }; -};") - -(test-ps-js block-dynamic-return - (defvar foo ((lambda () - (block nil - ((lambda () (return 6))) - (+ 1 2))))) - "if ('undefined' === typeof foo) { -var foo = (function () { - try { - (function () { - __PS_MV_REG = []; - throw { '__ps_block_tag' : 'nilBlock', '__ps_value' : 6 }; - })(); - __PS_MV_REG = []; - return 1 + 2; - } catch (_ps_err1) { - if (_ps_err1 && 'nilBlock' === _ps_err1['__ps_block_tag']) { - return _ps_err1['__ps_value']; - } else { - throw _ps_err1; - }; - }; -})(); };") - -(test-ps-js iteration-lambda-capture-no-need - (dolist (x y) - (lambda (x) (1+ x))) - "(function () { -for (var x = null, _js_idx1 = 0; _js_idx1 < y.length; _js_idx1 += 1) { - x = y[_js_idx1]; - function (x) { - return x + 1; - }; -}; -})();") - -(test-ps-js case-invert1 - (encodeURIComponent fooBar) - "encodeURIComponent(fooBar);") - -(test-ps-js simple-ash - (+ (ash 4 1) (ash 4 -1)) - "(4 << 1) + (4 >> 1);") - -(test-ps-js progn-nil-expression - (bar (progn (foo) nil)) - "bar((foo(), null));") - -(test-ps-js other-progn-nil-exp - (defun blah () - (or (foo) (progn (bar) nil))) - "function blah() { - __PS_MV_REG = []; - return foo() || (bar(), null); -};") - -(test-ps-js lambda-nil-return - (lambda (x) - (block nil - (when x - (return 1)) - 2)) - "function (x) { - if (x) { - return 1; - }; - return 2; -};") - -(test-ps-js lambda-nil-return-implicit-nested2 - (lambda (x) - (block foo - (if x - (return-from foo 1) - (dotimes (i 4) - (return-from foo i))) - 2)) - "function (x) { - if (x) { - return 1; - } else { - for (var i = 0; i < 4; i += 1) { - return i; - }; - }; - return 2; -};") - -(test-ps-js throw-is-a-statement - (defun blah () - (let ((result (foo))) - (unless (null result) - (throw result)))) - "function blah() { - var result = foo(); - if (result != null) { - throw result; - }; -};") - -(test-ps-js expressify1 - (defun blah () - (when (some-condition) - (foo) - (bar) - (baz))) - "function blah() { - if (someCondition()) { - foo(); - bar(); - __PS_MV_REG = []; - return baz(); - }; -};") - -(test-ps-js case-when-return - (defun blah (a) - (case a - ("a" (when (foo) (return-from blah 111))) - ("b" t))) - "function blah(a) { - switch (a) { - case 'a': - if (foo()) { - __PS_MV_REG = []; - return 111; - } else { - __PS_MV_REG = []; - return null; - }; - case 'b': - __PS_MV_REG = []; - return true; - }; -};") - -(test-ps-js flet-return-from - (defun abc () - (flet ((foo () - (return-from foo 123))) - (foo))) - "function abc() { - var foo = function () { - return 123; - }; - __PS_MV_REG = []; - return foo(); -};") - -(test-ps-js flet-return-from1 - (flet ((foo () - (return-from foo 123))) - (foo)) - "(function () { -var foo = function () { - return 123; - }; - __PS_MV_REG = []; - return foo(); -})();") - -(test-ps-js lambda-docstring-declarations - (lambda (x) - "This is a docstring" - (declare (ignore x)) - 2) - "function (x) { - return 2; -};") - -(test-ps-js setf-let-exp - (setf foo (let ((x (+ 1 2))) - (if x 123 456))) - "foo = (function () { - var x = 1 + 2; - return x ? 123 : 456; -})();") - -(test-ps-js create-let-exp - (create :abc (let ((x (+ 1 2))) - (if x 123 456))) - "{ 'abc' : (function () { - var x = 1 + 2; - return x ? 123 : 456; -})() };") - -(test-ps-js eql-eql-eql-precedence - (unless (equal (= 3 3) (= 3 4)) - (chain console (log 1))) - "if ((3 === 3) != (3 === 4)) { - console.log(1); -};") - -(test-ps-js case-cond-breaks - (defun blah (x) - (case x - (123 (cond ((foo1) - (when (foo2) - (when (foo3) - (return-from blah nil)) - t)))) - (456 (foo7)))) - "function blah(x) { - switch (x) { - case 123: - if (foo1()) { - if (foo2()) { - if (foo3()) { - __PS_MV_REG = []; - return null; - }; - __PS_MV_REG = []; - return true; - } else { - __PS_MV_REG = []; - return null; - }; - } else { - __PS_MV_REG = []; - return null; - }; - case 456: - __PS_MV_REG = []; - return foo7(); - }; -};") - -(test-ps-js cond-double-t - (lambda () - (cond (foo 1) - (t 2) - (t 3))) - "function () { - if (foo) { - return 1; - } else { - return 2; - }; -};") - -(test-ps-js let-let-funcall-lambda - (let ((x 5)) - (let ((x 7)) - (funcall (lambda (x) (+ x 9)) x))) - "(function () { - var x = 5; - var x1 = 7; - return (function (x) { - return x + 9; - })(x1); -})();") - -(test-ps-js let-let-lambda - (let ((x 5)) - (let ((x 7)) - (lambda (x) (+ x 9)))) - "(function () { -var x = 5; -var x1 = 7; -return function (x) { - return x + 9; -}; -})();") - -(test-ps-js let-lambda - (let ((x 5)) - (lambda (x) (+ x 9))) - "(function () { -var x = 5; -return function (x) { - return x + 9; -}; -})();") - -(test-ps-js symbol-macrolet-no-shadow-lambda - (symbol-macrolet ((x y)) - (lambda (x) (+ x x))) - "function (x) { - return x + x; -};") - -(test-ps-js divide-one-arg-reciprocal - (/ 2) - "1 / 2;") - -(test-ps-js division-not-associative - (/ a (* b c)) - "a / (b * c);") - -(test-ps-js divide-expressions - (/ (foo) (bar)) - "foo() / bar();") - -(test-ps-js divide-expressions1 - (floor (1- x) y) - "Math.floor((x - 1) / y);") - -(test-ps-js lexical-funargs-shadow1 - (lambda (x) - (let ((x 1)) - (foo x)) - (incf x)) - "function (x) { - var x1 = 1; - foo(x1); - __PS_MV_REG = []; - return ++x; -};") - -(test-ps-js times-rem - (* x (rem y z)) - "x * (y % z);") - -(test-ps-js rem-divide - (/ x (rem y z)) - "x / (y % z);") - -(test-ps-js case-break-return - (lambda () (case x (:foo) (:bar 1))) - "function () { - switch (x) { - case 'foo': - return null; - case 'bar': - return 1; - }; -};") - -(test-ps-js trivial-expression-switch - (foobar (case x (1 2))) - "foobar((function () { - switch (x) { - case 1: - return 2; - }; -})());") - -(test-ps-js trivial-expression-while - (foobar (loop while (< 0 x) do (decf x))) - "foobar((function () { - while (0 < x) { - --x; - }; -})());") - -(test-ps-js funcall-block-expression-loop-lambda - (foobar (loop for i from 0 to 10 do (1+ i))) - "foobar((function () { - for (var i = 0; i <= 10; i += 1) { - i + 1; - }; -})());") - -(test-ps-js plus-block-expression-loop-lambda - (1+ (loop for i from 0 to 10 do (1+ i))) - "(function () { - for (var i = 0; i <= 10; i += 1) { - i + 1; - }; -})() + 1;") - -(test-ps-js let-closures-rename - (lambda () - (let ((x 1)) (lambda () (1+ x))) - (let ((x 2)) (lambda () (1+ x)))) - "function () { - var x = 1; - function () { - return x + 1; - }; - var x1 = 2; - return function () { - return x1 + 1; - }; -};") - -(test-ps-js let-closures-rename1 - (lambda () - (let ((x 1)) - (let ((y 2)) - (lambda () (+ x y)))) - (let ((x 2)) - (let ((y 3)) - (lambda () (+ x y))))) - "function () { - var x = 1; - var y = 2; - function () { - return x + y; - }; - var x1 = 2; - var y2 = 3; - return function () { - return x1 + y2; - }; -};") - -(test-ps-js let-closures-rename2 - (defun make-closures () - (list - (let ((x 1)) (lambda () (1+ x))) - (let ((x 2)) (lambda () (1+ x))))) - "function makeClosures() { - var x; - var x1; - return [(x = 1, function () { - return x + 1; - }), (x1 = 2, function () { - return x1 + 1; - })]; - -};") - -(test-ps-js conditional-not-used-up - (lambda (bar) - (when bar - (let ((x 1)) - (1+ x)))) - "function (bar) { - if (bar) { - var x = 1; - return x + 1; - }; -};") - -(test-ps-js toplevel-local-scope - (create "fn" (let ((x 5)) (lambda () x))) - "{ 'fn' : (function () { - var x = 5; - return function () { - return x; - }; -})() };") - -(test-ps-js toplevel-local-scope1 - (defparameter foo (create "fn" (let ((x 5)) (lambda () x)))) - "var foo = { 'fn' : (function () { - var x = 5; - return function () { - return x; - }; -})() };") - -(test-ps-js block-let - (block foobar - (let ((x 1)) - (return-from foobar x) - 2)) - "(function () { - var x = 1; - return x; - return 2; -})();") - -(test-ps-js expressionize-if-macroexpand-error - (progn (defmacro xbaz () `(blah)) - - (defun foo (xbaz) - (unless (blah) - (cond (xbaz (blah)) - (t (blahblah)))))) - "function foo(xbaz) { - if (!blah()) { - if (xbaz) { - __PS_MV_REG = []; - return blah(); - } else { - __PS_MV_REG = []; - return blahblah(); - }; - }; -};") - -(test-ps-js toplevel-defun-macroexpand - (progn (defmacro defun-js (name lambda-list &body body) - `(defun ,name ,lambda-list ,@body)) - - (let ((foo 0)) - (defun-js bar () (1+ foo)) - (defvar baz 2))) - "var foo = 0; -function bar() { - return foo + 1; -}; -if ('undefined' === typeof baz) { var baz = 2; };") - -(test-ps-js js-ir-package-unique-symbols - (loop :for i :from 0 :below 5 :do - (let ((block (elt blocks i))) - (foo block) - (lambda () nil))) - "(function () { -for (var i = 0; i < 5; i += 1) { - var block = blocks[i]; - foo(block); - function () { - return null; - }; -}; -})();") - -(test-ps-js broken-quote-expansion1 - (lambda (p) - (with-slots (x y) p - (if (< x 0) y x))) - "function (p) { - return p.x < 0 ? p.y : p.x; -};") - -(test-ps-js broken-quote-expansion2 - (progn - (define-symbol-macro foo123 (ps:@ a foo123)) - (lambda () (when (> foo123 1) 2))) - "function () { - return a.foo123 > 1 ? 2 : null; -};") - -(test-ps-js unused-named-block-not-printed1 - (block foobar - (+ 1 2 3)) - "(function () { - return 1 + 2 + 3; -})();") - -(test-ps-js unused-named-block-not-printed2 - (block nil - (block nil - (+ 1 2 3))) - "(function () { - return 1 + 2 + 3; -})();") - -(test-ps-js unused-named-block-not-printed3 - (block foobar - (block nil - (+ 1 2 3))) - "(function () { - return 1 + 2 + 3; -})();") - -(test-ps-js unused-named-block-not-printed4 - (block nil - (block foobar - (block nil - (+ 1 2 3)))) - "(function () { - return 1 + 2 + 3; -})();") - -(test-ps-js trig-no-bind1 - (cosh 3.14) - "(Math.exp(3.14) + Math.exp(-3.14)) / 2;") - -(test-ps-js trig-bind1 - (acosh (blah 3.14)) - "(function () { - var x1 = blah(3.14); - __PS_MV_REG = []; - return 2 * Math.log(Math.sqrt((x1 + 1) / 2) + Math.sqrt((x1 - 1) / 2)); -})();") - -(test-ps-js double-negation - (or (not foo) (not (not foo)) (not (not (not foo)))) - "!foo || foo || !foo;") - -(test-ps-js empty-let - (defun foo () - (let ((a (bar))))) - "function foo() { - var a = bar(); - __PS_MV_REG = []; - return null; -};") - -(test-ps-js empty-let* - (defun foo () - (let* ((a (bar))))) - "function foo() { - var a = bar(); - __PS_MV_REG = []; - return null; -};") - -(test-ps-js defun-no-body-declare - (defun foo () (declare (ignore x))) - "function foo() { - return null; -};") - -(test-ps-js defun-no-body-let-declare - (defun foo () (let () (declare (ignore x)))) - "function foo() { - return null; -};") - -(test-ps-js empty-defun-docstring-declare - (defun foo (x) - "docstring" - (declare (ignore x))) - "/** docstring */ -function foo(x) { - return null; -};") - -(test-ps-js defun-docstring-string - (defun foo (x) - "docstring" - "abc") - "/** docstring */ -function foo(x) { - return 'abc'; -};") - -(test-ps-js return-object - (defun foo (obj) - (ps:create :abc (let ((x (ps:getprop obj "blah"))) - (if x 123 456)))) - "function foo(obj) { - var x; - return { 'abc' : (x = obj['blah'], x ? 123 : 456) }; -};") - -(test-ps-js unicode-strings - "фоо бар" - "'фоо бар';") - -(test-ps-js expressionize-return - (defun next-page (self) - (with-slots (limit offset count) - (@ self state) - (when (and count (< (* limit offset) count)) - (set-state self (create x (+ offset 1)))))) - "function nextPage(self) { - var object1 = self.state; - __PS_MV_REG = []; - return object1.count && object1.limit * object1.offset < object1.count ? setState(self, { x : object1.offset + 1 }) : null; -};") - -(test-ps-js let-defun-toplevel - (progn (let ((foo 0)) - (defun bar () foo)) - (bar)) - "var foo = 0; -function bar() { - return foo; -}; -bar();") - -(test-ps-js let-defvar-toplevel - (progn (let ((foo 0)) - (defvar bar (1+ foo))) - bar) - "var foo = 0; -if ('undefined' === typeof bar) { var bar = foo + 1; }; -bar;") - -(test-ps-js setf-side-effects - (let ((x 10)) - (defun side-effect() - (setf x 4) - 3) - (setf x (+ 2 (side-effect) x 5))) - "var x = 10; -function sideEffect() { - x = 4; - return 3; -}; -x = 2 + sideEffect() + x + 5;") - -(test-ps-js stupid-lisp-trick - (alert - (lisp - (progn - (write-string "[1,2,3]" ps::*psw-stream*) - (values)))) - "alert([1,2,3]);") - -(test-ps-js maybe-once-only-symbol-macrolet - (symbol-macrolet ((x (call-me-once))) - (sinh x)) - - "(function () { - var x1 = callMeOnce(); - __PS_MV_REG = []; - return (Math.exp(x1) - Math.exp(-x1)) / 2; -})();") - -(test-ps-js maybe-once-only-symbol-macro - (progn - (define-symbol-macro maybe-once-only-symbol-macro (call-me-once)) - (tanh maybe-once-only-symbol-macro)) - - "(function () { - var x1 = callMeOnce(); - __PS_MV_REG = []; - return (Math.exp(x1) - Math.exp(-x1)) / (Math.exp(x1) + Math.exp(-x1)); -})();") - -(test-ps-js maybe-once-only-evaluation-order - (macrolet - ((A (x y) - (maybe-once-only (x y) - `(+ ,x ,x ,y ,y)))) - (A (fun1) (fun2))) - "(function () { - var x1 = fun1(); - var y2 = fun2(); - __PS_MV_REG = []; - return x1 + x1 + y2 + y2; -})();") - -(test-ps-js maybe-once-only-macroexpansion - (macrolet - ((A (x y) - (ps:maybe-once-only (x y) - `(+ ,x ,x ,y ,y))) - (fun1 () 'G) - (fun2 () 6)) - (A (fun1) (fun2))) - "G + G + 6 + 6;") - -(test-ps-js lambda-block-wrap-for-dynamic-return - (lambda () - (block X - ((lambda () - ((lambda () - (return-from X 1))) - 2))) - 5) -"function () { - X: { - try { - (function () { - (function () { - __PS_MV_REG = []; - throw { '__ps_block_tag' : 'X', '__ps_value' : 1 }; - })(); - __PS_MV_REG = []; - return 2; - })(); - } catch (_ps_err1) { - if (_ps_err1 && 'X' === _ps_err1['__ps_block_tag']) { - _ps_err1['__ps_value']; - break X; - } else { - throw _ps_err1; - }; - }; - }; - __PS_MV_REG = []; - return 5; -};") - -(test-ps-js lambda-progn-block - (lambda () - (progn - (block X - (lambda () - (return-from X 1))))) - "function () { - try { - return function () { - __PS_MV_REG = []; - throw { '__ps_block_tag' : 'X', '__ps_value' : 1 }; - }; - } catch (_ps_err1) { - if (_ps_err1 && 'X' === _ps_err1['__ps_block_tag']) { - return _ps_err1['__ps_value']; - } else { - throw _ps_err1; - }; - }; -};") - -(test-ps-js defun-when-if-return - (defun foobar () - (when (bar) - (loop if (foo) return 10))) - "function foobar() { - if (bar()) { - while (true) { - if (foo()) { - __PS_MV_REG = []; - return 10; - }; - }; - }; -};") - -(test-ps-js block-block-return-from-toplevel - (block bar - (block foo - (return-from foo 10))) - "(function () { - return 10; -})();") - -;;; Stuff to fix. Not necessarily wrong, but redundant/could be better - -(test-ps-js block-dynamic-return1-redundant - (defparameter foo - ((lambda () - (block nil - ((lambda () (return 6))) - (+ 1 2)) - (+ 4 5)))) - ;;; FIXME. Not wrong, but redundant - "var foo = (function () { - nilBlock: { - try { - (function () { - __PS_MV_REG = []; - throw { '__ps_block_tag' : 'nilBlock', '__ps_value' : 6 }; - })(); - 1 + 2; - } catch (_ps_err1) { - if (_ps_err1 && 'nilBlock' === _ps_err1['__ps_block_tag']) { - _ps_err1['__ps_value']; - break nilBlock; - } else { - throw _ps_err1; - }; - }; - }; - __PS_MV_REG = []; - return 4 + 5; -})();") - -(test-ps-js block-gratuitous-dynamic-return - (block foo - (block bar - (block nil - (return-from bar 10))) - (foo)) - "(function () { - bar: { - try { - __PS_MV_REG = []; - throw { '__ps_block_tag' : 'bar', '__ps_value' : 10 }; - } catch (_ps_err1) { - if (_ps_err1 && 'bar' === _ps_err1['__ps_block_tag']) { - _ps_err1['__ps_value']; - break bar; - } else { - throw _ps_err1; - }; - }; - }; - __PS_MV_REG = []; - return foo(); -})();") - -(test-ps-js for-loop-var-init-let - (lambda (y) - (ps:for - ((x (let ((x0 (foo y))) - (bar x0)))) - () () - (xyzzy x))) - "function (y) { - var x0; - for (var x = (x0 = foo(y), bar(x0)); ; ) { - xyzzy(x); - }; -};") diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/tests/package-system-tests.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/tests/package-system-tests.lisp deleted file mode 100644 index 0c84599..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/tests/package-system-tests.lisp +++ /dev/null @@ -1,170 +0,0 @@ -;;; Copyright 2007 Red Daly -;;; Copyright 2007 Vladimir Sedach - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript.tests) - -(fiveam:in-suite package-system-tests) - -(test-ps-js operator-packages1 - (#:new) - "new();") - -(defpackage #:parenscript.tests.my-library - (:use #:parenscript)) -(setf (ps-package-prefix '#:parenscript.tests.my-library) - "my_library_") - -(test-ps-js lib-function1 - (defun parenscript.tests.my-library::library-function (x y) - (+ x y)) - "function my_library_libraryFunction(x, y) { - return x + y; - };") - -(test-ps-js lib-function2 - (defun parenscript.tests.my-library::library-function - (parenscript.tests.my-library::x - &key ((:y parenscript.tests.my-library::z) 1)) - (+ parenscript.tests.my-library::x parenscript.tests.my-library::z)) - "function my_library_libraryFunction(my_library_x) { - var _js2 = arguments.length; - for (var n1 = 1; n1 < _js2; n1 += 2) { - switch (arguments[n1]) { - case 'y': - my_library_z = arguments[n1 + 1]; - }; - }; - var my_library_z = 'undefined' === typeof my_library_z ? 1 : my_library_z; - - return my_library_x + my_library_z; -};") - -(test-ps-js uniform-symbol-handling1 - (progn (create parenscript.tests.my-library::foo 1) - (getprop foo 'parenscript.tests.my-library::foo)) - "{ my_library_foo : 1 }; -foo.my_library_foo;") - -(let ((map (make-hash-table))) - (defun symbol-obfuscator (symbol) - (or #1=(gethash symbol map) - (setf #1# (make-symbol (map 'string (lambda (x) - (code-char (1+ (char-code x)))) - (symbol-name symbol))))))) - -(defpackage #:parenscript.tests.obfuscate-me) -(obfuscate-package '#:parenscript.tests.obfuscate-me - #'symbol-obfuscator) - -(test-ps-js obfuscation1 - (defun parenscript.tests.obfuscate-me::libfun2 (a b parenscript.tests.obfuscate-me::foo) - (+ a (parenscript.tests.my-library::library-function b parenscript.tests.obfuscate-me::foo))) - "function mjcgvo3(a, b, gpp) { - __PS_MV_REG = []; - return a + my_library_libraryFunction(b, gpp); -};") - -(defpackage #:parenscript.tests.obfuscate-and-prefix) -(obfuscate-package '#:parenscript.tests.obfuscate-and-prefix #'symbol-obfuscator) -(setf (ps-package-prefix '#:parenscript.tests.obfuscate-and-prefix) "__FOO___") - -(test-ps-js obfuscate-and-prefix - (defun parenscript.tests.obfuscate-and-prefix::xfun (a parenscript.tests.obfuscate-and-prefix::b parenscript.tests.my-library::d) - (* a - (parenscript.tests.obfuscate-me::libfun2 parenscript.tests.obfuscate-and-prefix::b a) - (parenscript.tests.my-library::library-function parenscript.tests.my-library::d parenscript.tests.obfuscate-and-prefix::b))) - "function __FOO___ygvo(a, __FOO___c, my_library_d) { - __PS_MV_REG = []; - return a * mjcgvo3(__FOO___c, a) * my_library_libraryFunction(my_library_d, __FOO___c); -};") - -(defpackage #:parenscript.tests.pststpkg - (:use #:parenscript)) - -(setf (ps-package-prefix '#:parenscript.tests.pststpkg) "prefix_") - -(fiveam:test namespace1 () - (fiveam:is (string= - (ps* 'parenscript.tests.pststpkg::foo) - "prefix_foo;"))) - -(cl:in-package #:parenscript.tests.pststpkg) - -(parenscript.tests::test-ps-js namespace-and-special-forms - (defun foo () - (let ((foo (create bar 1 not-a-keyword something))) - (return-from foo (and (not foo) (+ (getprop foo 'bar) some-other-var))))) -"function prefix_foo() { -var foo1 = { prefix_bar : 1, prefix_notAKeyword : prefix_something }; -return !foo1 && foo1.prefix_bar + prefix_someOtherVar; -};") - -(parenscript.tests::test-ps-js exported-interface - (defun parenscript.tests:interface-function (baz) - (+ baz parenscript.tests.obfuscate-me::foo)) -"function interfaceFunction(prefix_baz) { - return prefix_baz + gpp; -};") - -(parenscript.tests::test-ps-js prefixed-symbol-macro-obj1 - (symbol-macrolet ((x (+ 1 2))) - (ps:create x x)) - "{ prefix_x : 1 + 2 };") - -(cl:in-package #:parenscript.tests) - -(fiveam:test compile-stream-in-package - (fiveam:is - (string= - (with-input-from-string (s " -(defun parenscript.tests.obfuscate-and-prefix::xfun (a parenscript.tests.obfuscate-and-prefix::b parenscript.tests.my-library::d) - (* a - (parenscript.tests.obfuscate-me::libfun2 parenscript.tests.obfuscate-and-prefix::b a) - (parenscript.tests.my-library::library-function parenscript.tests.my-library::d parenscript.tests.obfuscate-and-prefix::b))) - -(in-package #:parenscript.tests.pststpkg) - -(defun parenscript.tests:interface-function (baz) - (+ baz parenscript.tests.obfuscate-me::foo)) -") - (ps-compile-stream s)) - "function __FOO___ygvo(a, __FOO___c, my_library_d) { - __PS_MV_REG = []; - return a * mjcgvo3(__FOO___c, a) * my_library_libraryFunction(my_library_d, __FOO___c); -}; -function interfaceFunction(prefix_baz) { - return prefix_baz + gpp; -}; -"))) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/tests/test-package.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/tests/test-package.lisp deleted file mode 100644 index 9459e7f..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/tests/test-package.lisp +++ /dev/null @@ -1,15 +0,0 @@ -(in-package #:cl) -(named-readtables:in-readtable :parenscript) - -(defpackage #:parenscript.tests - (:use #:cl #:parenscript) - (:export - #:parenscript-tests - #:run-tests - #:interface-function - #:test-js-eval - #:test-js-eval-epsilon - #:jsarray)) - -(defpackage #:parenscript.eval-tests - (:use #:cl #:parenscript #:parenscript.tests)) diff --git a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/tests/test.lisp b/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/tests/test.lisp deleted file mode 100644 index 17a765e..0000000 --- a/quicklisp/dists/quicklisp/software/Parenscript-2.7.1/tests/test.lisp +++ /dev/null @@ -1,86 +0,0 @@ -;;; Copyright 2005-2006 Henrik Hjelte -;;; Copyright 2007-2012 Vladimir Sedach - -;;; SPDX-License-Identifier: BSD-3-Clause - -;;; Redistribution and use in source and binary forms, with or -;;; without modification, are permitted provided that the following -;;; conditions are met: - -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. - -;;; 2. Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials provided -;;; with the distribution. - -;;; 3. Neither the name of the copyright holder nor the names of its -;;; contributors may be used to endorse or promote products derived -;;; from this software without specific prior written permission. - -;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -;;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -;;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -;;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -;;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -;;; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -;;; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -;;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -;;; POSSIBILITY OF SUCH DAMAGE. - -(in-package #:parenscript.tests) - -(defun normalize-js-output (str) - (cl-ppcre:regex-replace-all "\\s+" str " ")) - -(defmacro test-ps-js (testname parenscript javascript - &key (js-target-version *js-target-version*)) - `(fiveam:test ,testname () - (fiveam:is - (string= (normalize-js-output ,javascript) - (normalize-js-output - (let ((*js-target-version* ,js-target-version)) - (ps-doc* ',parenscript))))))) - -(defun js-repr (x) - (cond ((or (consp x) (simple-vector-p x)) - (cl-js:js-array - (make-array (length x) - :initial-contents (map 'vector #'js-repr x) - :adjustable t))) - ((null x) :null) - (t x))) - -(defmacro %test-js-eval (testname parenscript test-statement - js-target-version) - `(fiveam:test ,testname () - (cl-js:with-js-env () - (let* ((*js-target-version* ,js-target-version) - (js-result (cl-js:run-js (ps-doc* ',parenscript)))) - ,test-statement)))) - -(defmacro test-js-eval (testname parenscript expected - &key (js-target-version *js-target-version*)) - `(%test-js-eval ,testname ,parenscript - (fiveam:is (equalp js-result (js-repr ,expected))) - ,js-target-version)) - -(defmacro test-js-eval-epsilon (testname parenscript expected - &key (js-target-version *js-target-version*)) - `(%test-js-eval ,testname ,parenscript - (fiveam:is (< (abs (- js-result ,expected)) 0.0001)) - ,js-target-version)) - -(fiveam:def-suite parenscript-tests) -(fiveam:def-suite output-tests :in parenscript-tests) -(fiveam:def-suite package-system-tests :in parenscript-tests) -(fiveam:def-suite eval-tests :in parenscript-tests) - -(defun run-tests () - (let ((*js-string-delimiter* #\')) - (fiveam:run! 'parenscript-tests))) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/.boring b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/.boring deleted file mode 100644 index dfa9e6d..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/.boring +++ /dev/null @@ -1,13 +0,0 @@ -# Boring file regexps: -~$ -^_darcs -^\{arch\} -^.arch-ids -\# -\.dfsl$ -\.ppcf$ -\.fasl$ -\.x86f$ -\.fas$ -\.lib$ -^public_html diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/.gitignore b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/.gitignore deleted file mode 100644 index e832e94..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -*.fasl -*~ -\#* -*.patch diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/.gitlab-ci.yml b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/.gitlab-ci.yml deleted file mode 100644 index 278633b..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/.gitlab-ci.yml +++ /dev/null @@ -1,27 +0,0 @@ -include: - project: 'clci/gitlab-ci' - ref: release/v2-dev - file: - - definitions.gitlab-ci.yml - - test-pipeline.gitlab-ci.yml - -variables: - CLCI_INSTALL_QUICKLISP_CLIENT: "yes" - # Off by default because it's proprietary and has a separate license. - CLCI_TEST_ALLEGRO: "yes" - # Off by default because the Docker image is a bit out of date, due to - # upstream churn. - CLCI_TEST_CLASP: "yes" - # Alexandria is a non-commercial project, so we can use the express version - # of Allegro for testing. - I_AGREE_TO_ALLEGRO_EXPRESS_LICENSE: "yes" - -# This section is not strictly required, but prevents Gitlab CI from launching -# multiple redundent pipelines when a Merge Request is opened. -workflow: - rules: - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - - if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS' - when: never - - if: '$CI_COMMIT_BRANCH' - - if: '$CI_COMMIT_TAG' diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/AUTHORS b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/AUTHORS deleted file mode 100644 index b550ea5..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/AUTHORS +++ /dev/null @@ -1,9 +0,0 @@ - -ACTA EST FABULA PLAUDITE - -Nikodemus Siivola -Attila Lendvai -Marco Baringer -Robert Strandh -Luis Oliveira -Tobias C. Rittweiler \ No newline at end of file diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/LICENCE b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/LICENCE deleted file mode 100644 index b5140fb..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/LICENCE +++ /dev/null @@ -1,37 +0,0 @@ -Alexandria software and associated documentation are in the public -domain: - - Authors dedicate this work to public domain, for the benefit of the - public at large and to the detriment of the authors' heirs and - successors. Authors intends this dedication to be an overt act of - relinquishment in perpetuity of all present and future rights under - copyright law, whether vested or contingent, in the work. Authors - understands that such relinquishment of all rights includes the - relinquishment of all rights to enforce (by lawsuit or otherwise) - those copyrights in the work. - - Authors recognize that, once placed in the public domain, the work - may be freely reproduced, distributed, transmitted, used, modified, - built upon, or otherwise exploited by anyone for any purpose, - commercial or non-commercial, and in any way, including by methods - that have not yet been invented or conceived. - -In those legislations where public domain dedications are not -recognized or possible, Alexandria is distributed under the following -terms and conditions: - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/README b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/README deleted file mode 100644 index 8255e89..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/README +++ /dev/null @@ -1,62 +0,0 @@ -Alexandria is a collection of portable public domain utilities that -meet the following constraints: - - * Utilities, not extensions: Alexandria will not contain conceptual - extensions to Common Lisp, instead limiting itself to tools and - utilities that fit well within the framework of standard ANSI - Common Lisp. Test-frameworks, system definitions, logging - facilities, serialization layers, etc. are all outside the scope of - Alexandria as a library, though well within the scope of Alexandria - as a project. - - * Conservative: Alexandria limits itself to what project members - consider conservative utilities. Alexandria does not and will not - include anaphoric constructs, loop-like binding macros, etc. - - * Portable: Alexandria limits itself to portable parts of Common - Lisp. Even apparently conservative and useful functions remain - outside the scope of Alexandria if they cannot be implemented - portably. Portability is here defined as portable within a - conforming implementation: implementation bugs are not considered - portability issues. - -Homepage: - - http://common-lisp.net/project/alexandria/ - -Mailing lists: - - http://lists.common-lisp.net/mailman/listinfo/alexandria-devel - http://lists.common-lisp.net/mailman/listinfo/alexandria-cvs - -Repository: - - git://gitlab.common-lisp.net/alexandria/alexandria.git - -Documentation: - - http://common-lisp.net/project/alexandria/draft/alexandria.html - - (To build docs locally: cd doc && make html pdf info) - -Patches: - - Patches are always welcome! Please prepare pull requests in - gitlab, though we also can pull branches off github. - - Patches should include a commit message that explains what's being - done and /why/, and when fixing a bug or adding a feature you should - also include a test-case. - -Versioning & Changes: - - Be advised that the ALEXANDRIA-1 package is frozen; there are so many - existing users that any newly exported symbols are likely to break - someone's code. - For that reason an ALEXANDRIA-2 package is now open for additions; - to make switching over easier it will include all the symbols from - ALEXANDRIA-1 as well [just change your (:USE ALEXANDRIA) to - (:USE ALEXANDRIA-2) to get the new functions in your package]. - - Alexandria will be running 1.x version numbers until ALEXANDRIA-2 is - frozen as well; then a 2.0.0 will be released. diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/arrays.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/arrays.lisp deleted file mode 100644 index 76c1879..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/arrays.lisp +++ /dev/null @@ -1,18 +0,0 @@ -(in-package :alexandria) - -(defun copy-array (array &key (element-type (array-element-type array)) - (fill-pointer (and (array-has-fill-pointer-p array) - (fill-pointer array))) - (adjustable (adjustable-array-p array))) - "Returns an undisplaced copy of ARRAY, with same fill-pointer and -adjustability (if any) as the original, unless overridden by the keyword -arguments." - (let* ((dimensions (array-dimensions array)) - (new-array (make-array dimensions - :element-type element-type - :adjustable adjustable - :fill-pointer fill-pointer))) - (dotimes (i (array-total-size array)) - (setf (row-major-aref new-array i) - (row-major-aref array i))) - new-array)) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/binding.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/binding.lisp deleted file mode 100644 index 37a3d52..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/binding.lisp +++ /dev/null @@ -1,90 +0,0 @@ -(in-package :alexandria) - -(defmacro if-let (bindings &body (then-form &optional else-form)) - "Creates new variable bindings, and conditionally executes either -THEN-FORM or ELSE-FORM. ELSE-FORM defaults to NIL. - -BINDINGS must be either single binding of the form: - - (variable initial-form) - -or a list of bindings of the form: - - ((variable-1 initial-form-1) - (variable-2 initial-form-2) - ... - (variable-n initial-form-n)) - -All initial-forms are executed sequentially in the specified order. Then all -the variables are bound to the corresponding values. - -If all variables were bound to true values, the THEN-FORM is executed with the -bindings in effect, otherwise the ELSE-FORM is executed with the bindings in -effect." - (let* ((binding-list (if (and (consp bindings) (symbolp (car bindings))) - (list bindings) - bindings)) - (variables (mapcar #'car binding-list))) - `(let ,binding-list - (if (and ,@variables) - ,then-form - ,else-form)))) - -(defmacro when-let (bindings &body forms) - "Creates new variable bindings, and conditionally executes FORMS. - -BINDINGS must be either single binding of the form: - - (variable initial-form) - -or a list of bindings of the form: - - ((variable-1 initial-form-1) - (variable-2 initial-form-2) - ... - (variable-n initial-form-n)) - -All initial-forms are executed sequentially in the specified order. Then all -the variables are bound to the corresponding values. - -If all variables were bound to true values, then FORMS are executed as an -implicit PROGN." - (let* ((binding-list (if (and (consp bindings) (symbolp (car bindings))) - (list bindings) - bindings)) - (variables (mapcar #'car binding-list))) - `(let ,binding-list - (when (and ,@variables) - ,@forms)))) - -(defmacro when-let* (bindings &body body) - "Creates new variable bindings, and conditionally executes BODY. - -BINDINGS must be either single binding of the form: - - (variable initial-form) - -or a list of bindings of the form: - - ((variable-1 initial-form-1) - (variable-2 initial-form-2) - ... - (variable-n initial-form-n)) - -Each INITIAL-FORM is executed in turn, and the variable bound to the -corresponding value. INITIAL-FORM expressions can refer to variables -previously bound by the WHEN-LET*. - -Execution of WHEN-LET* stops immediately if any INITIAL-FORM evaluates to NIL. -If all INITIAL-FORMs evaluate to true, then BODY is executed as an implicit -PROGN." - (let ((binding-list (if (and (consp bindings) (symbolp (car bindings))) - (list bindings) - bindings))) - (labels ((bind (bindings body) - (if bindings - `(let (,(car bindings)) - (when ,(caar bindings) - ,(bind (cdr bindings) body))) - `(progn ,@body)))) - (bind binding-list body)))) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/conditions.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/conditions.lisp deleted file mode 100644 index ac471cc..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/conditions.lisp +++ /dev/null @@ -1,91 +0,0 @@ -(in-package :alexandria) - -(defun required-argument (&optional name) - "Signals an error for a missing argument of NAME. Intended for -use as an initialization form for structure and class-slots, and -a default value for required keyword arguments." - (error "Required argument ~@[~S ~]missing." name)) - -(define-condition simple-style-warning (simple-warning style-warning) - ()) - -(defun simple-style-warning (message &rest args) - (warn 'simple-style-warning :format-control message :format-arguments args)) - -;; We don't specify a :report for simple-reader-error to let the -;; underlying implementation report the line and column position for -;; us. Unfortunately this way the message from simple-error is not -;; displayed, unless there's special support for that in the -;; implementation. But even then it's still inspectable from the -;; debugger... -(define-condition simple-reader-error - #-sbcl(simple-error reader-error) - #+sbcl(sb-int:simple-reader-error) - ()) - -(defun simple-reader-error (stream message &rest args) - (error 'simple-reader-error - :stream stream - :format-control message - :format-arguments args)) - -(define-condition simple-parse-error (simple-error parse-error) - ()) - -(defun simple-parse-error (message &rest args) - (error 'simple-parse-error - :format-control message - :format-arguments args)) - -(define-condition simple-program-error (simple-error program-error) - ()) - -(defun simple-program-error (message &rest args) - (error 'simple-program-error - :format-control message - :format-arguments args)) - -(defmacro ignore-some-conditions ((&rest conditions) &body body) - "Similar to CL:IGNORE-ERRORS but the (unevaluated) CONDITIONS -list determines which specific conditions are to be ignored." - `(handler-case - (progn ,@body) - ,@(loop for condition in conditions collect - `(,condition (c) (values nil c))))) - -(defmacro unwind-protect-case ((&optional abort-flag) protected-form &body clauses) - "Like CL:UNWIND-PROTECT, but you can specify the circumstances that -the cleanup CLAUSES are run. - - clauses ::= (:NORMAL form*)* | (:ABORT form*)* | (:ALWAYS form*)* - -Clauses can be given in any order, and more than one clause can be -given for each circumstance. The clauses whose denoted circumstance -occured, are executed in the order the clauses appear. - -ABORT-FLAG is the name of a variable that will be bound to T in -CLAUSES if the PROTECTED-FORM aborted preemptively, and to NIL -otherwise. - -Examples: - - (unwind-protect-case () - (protected-form) - (:normal (format t \"This is only evaluated if PROTECTED-FORM executed normally.~%\")) - (:abort (format t \"This is only evaluated if PROTECTED-FORM aborted preemptively.~%\")) - (:always (format t \"This is evaluated in either case.~%\"))) - - (unwind-protect-case (aborted-p) - (protected-form) - (:always (perform-cleanup-if aborted-p))) -" - (check-type abort-flag (or null symbol)) - (let ((gflag (gensym "FLAG+"))) - `(let ((,gflag t)) - (unwind-protect (multiple-value-prog1 ,protected-form (setf ,gflag nil)) - (let ,(and abort-flag `((,abort-flag ,gflag))) - ,@(loop for (cleanup-kind . forms) in clauses - collect (ecase cleanup-kind - (:normal `(when (not ,gflag) ,@forms)) - (:abort `(when ,gflag ,@forms)) - (:always `(progn ,@forms))))))))) \ No newline at end of file diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/control-flow.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/control-flow.lisp deleted file mode 100644 index 98085c4..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/control-flow.lisp +++ /dev/null @@ -1,112 +0,0 @@ -(in-package :alexandria) - -(defun extract-function-name (spec) - "Useful for macros that want to mimic the functional interface for functions -like #'eq and 'eq." - (if (and (consp spec) - (member (first spec) '(quote function))) - (second spec) - spec)) - -(defun generate-switch-body (whole object clauses test key &optional default) - (with-gensyms (value) - (setf test (extract-function-name test)) - (setf key (extract-function-name key)) - (when (and (consp default) - (member (first default) '(error cerror))) - (setf default `(,@default "No keys match in SWITCH. Testing against ~S with ~S." - ,value ',test))) - `(let ((,value (,key ,object))) - (cond ,@(mapcar (lambda (clause) - (if (member (first clause) '(t otherwise)) - (progn - (when default - (error "Multiple default clauses or illegal use of a default clause in ~S." - whole)) - (setf default `(progn ,@(rest clause))) - '(())) - (destructuring-bind (key-form &body forms) clause - `((,test ,value ,key-form) - ,@forms)))) - clauses) - (t ,default))))) - -(defmacro switch (&whole whole (object &key (test 'eql) (key 'identity)) - &body clauses) - "Evaluates first matching clause, returning its values, or evaluates and -returns the values of T or OTHERWISE if no keys match." - (generate-switch-body whole object clauses test key)) - -(defmacro eswitch (&whole whole (object &key (test 'eql) (key 'identity)) - &body clauses) - "Like SWITCH, but signals an error if no key matches." - (generate-switch-body whole object clauses test key '(error))) - -(defmacro cswitch (&whole whole (object &key (test 'eql) (key 'identity)) - &body clauses) - "Like SWITCH, but signals a continuable error if no key matches." - (generate-switch-body whole object clauses test key '(cerror "Return NIL from CSWITCH."))) - -(defmacro whichever (&rest possibilities &environment env) - "Evaluates exactly one of POSSIBILITIES, chosen at random." - (setf possibilities (mapcar (lambda (p) (macroexpand p env)) possibilities)) - (let ((length (length possibilities))) - (cond - ((= 1 length) - (first possibilities)) - ((every #'constantp possibilities) - `(svref (load-time-value (vector ,@possibilities)) - (random ,length))) - (T - (labels ((expand (possibilities position random-number) - (if (null (cdr possibilities)) - (car possibilities) - (let* ((length (length possibilities)) - (half (truncate length 2)) - (second-half (nthcdr half possibilities)) - (first-half (butlast possibilities (- length half)))) - `(if (< ,random-number ,(+ position half)) - ,(expand first-half position random-number) - ,(expand second-half (+ position half) random-number)))))) - (with-gensyms (random-number) - `(let ((,random-number (random ,length))) - ,(expand possibilities 0 random-number)))))))) - -(defmacro xor (&rest datums) - "Evaluates its arguments one at a time, from left to right. If more than one -argument evaluates to a true value no further DATUMS are evaluated, and NIL is -returned as both primary and secondary value. If exactly one argument -evaluates to true, its value is returned as the primary value after all the -arguments have been evaluated, and T is returned as the secondary value. If no -arguments evaluate to true NIL is returned as primary, and T as secondary -value." - (with-gensyms (xor tmp true) - `(let (,tmp ,true) - (declare (ignorable ,tmp)) - (block ,xor - ,@(mapcar (lambda (datum) - `(if (setf ,tmp ,datum) - (if ,true - (return-from ,xor (values nil nil)) - (setf ,true ,tmp)))) - datums) - (return-from ,xor (values ,true t)))))) - -(defmacro nth-value-or (nth-value &body forms) - "Evaluates FORM arguments one at a time, until the NTH-VALUE returned by one -of the forms is true. It then returns all the values returned by evaluating -that form. If none of the forms return a true nth value, this form returns -NIL." - (once-only (nth-value) - (with-gensyms (values) - `(let ((,values (multiple-value-list ,(first forms)))) - (if (nth ,nth-value ,values) - (values-list ,values) - ,(if (rest forms) - `(nth-value-or ,nth-value ,@(rest forms)) - nil)))))) - -(defmacro multiple-value-prog2 (first-form second-form &body forms) - "Evaluates FIRST-FORM, then SECOND-FORM, and then FORMS. Yields as its value -all the value returned by SECOND-FORM." - `(progn ,first-form (multiple-value-prog1 ,second-form ,@forms))) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/definitions.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/definitions.lisp deleted file mode 100644 index 863e1f6..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/definitions.lisp +++ /dev/null @@ -1,37 +0,0 @@ -(in-package :alexandria) - -(defun %reevaluate-constant (name value test) - (if (not (boundp name)) - value - (let ((old (symbol-value name)) - (new value)) - (if (not (constantp name)) - (prog1 new - (cerror "Try to redefine the variable as a constant." - "~@<~S is an already bound non-constant variable ~ - whose value is ~S.~:@>" name old)) - (if (funcall test old new) - old - (restart-case - (error "~@<~S is an already defined constant whose value ~ - ~S is not equal to the provided initial value ~S ~ - under ~S.~:@>" name old new test) - (ignore () - :report "Retain the current value." - old) - (continue () - :report "Try to redefine the constant." - new))))))) - -(defmacro define-constant (name initial-value &key (test ''eql) documentation) - "Ensures that the global variable named by NAME is a constant with a value -that is equal under TEST to the result of evaluating INITIAL-VALUE. TEST is a -/function designator/ that defaults to EQL. If DOCUMENTATION is given, it -becomes the documentation string of the constant. - -Signals an error if NAME is already a bound non-constant variable. - -Signals an error if NAME is already a constant variable whose value is not -equal under TEST to result of evaluating INITIAL-VALUE." - `(defconstant ,name (%reevaluate-constant ',name ,initial-value ,test) - ,@(when documentation `(,documentation)))) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/features.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/features.lisp deleted file mode 100644 index 67348db..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/features.lisp +++ /dev/null @@ -1,14 +0,0 @@ -(in-package :alexandria) - -(defun featurep (feature-expression) - "Returns T if the argument matches the state of the *FEATURES* -list and NIL if it does not. FEATURE-EXPRESSION can be any atom -or list acceptable to the reader macros #+ and #-." - (etypecase feature-expression - (symbol (not (null (member feature-expression *features*)))) - (cons (check-type (first feature-expression) symbol) - (eswitch ((first feature-expression) :test 'string=) - (:and (every #'featurep (rest feature-expression))) - (:or (some #'featurep (rest feature-expression))) - (:not (assert (= 2 (length feature-expression))) - (not (featurep (second feature-expression)))))))) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/functions.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/functions.lisp deleted file mode 100644 index dd83e38..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/functions.lisp +++ /dev/null @@ -1,161 +0,0 @@ -(in-package :alexandria) - -;;; To propagate return type and allow the compiler to eliminate the IF when -;;; it is known if the argument is function or not. -(declaim (inline ensure-function)) - -(declaim (ftype (function (t) (values function &optional)) - ensure-function)) -(defun ensure-function (function-designator) - "Returns the function designated by FUNCTION-DESIGNATOR: -if FUNCTION-DESIGNATOR is a function, it is returned, otherwise -it must be a function name and its FDEFINITION is returned." - (if (functionp function-designator) - function-designator - (fdefinition function-designator))) - -(define-modify-macro ensure-functionf/1 () ensure-function) - -(defmacro ensure-functionf (&rest places) - "Multiple-place modify macro for ENSURE-FUNCTION: ensures that each of -PLACES contains a function." - `(progn ,@(mapcar (lambda (x) `(ensure-functionf/1 ,x)) places))) - -(defun disjoin (predicate &rest more-predicates) - "Returns a function that applies each of PREDICATE and MORE-PREDICATE -functions in turn to its arguments, returning the primary value of the first -predicate that returns true, without calling the remaining predicates. -If none of the predicates returns true, NIL is returned." - (declare (optimize (speed 3) (safety 1) (debug 1))) - (let ((predicate (ensure-function predicate)) - (more-predicates (mapcar #'ensure-function more-predicates))) - (lambda (&rest arguments) - (or (apply predicate arguments) - (some (lambda (p) - (declare (type function p)) - (apply p arguments)) - more-predicates))))) - -(defun conjoin (predicate &rest more-predicates) - "Returns a function that applies each of PREDICATE and MORE-PREDICATE -functions in turn to its arguments, returning NIL if any of the predicates -returns false, without calling the remaining predicates. If none of the -predicates returns false, returns the primary value of the last predicate." - (if (null more-predicates) - predicate - (lambda (&rest arguments) - (and (apply predicate arguments) - ;; Cannot simply use CL:EVERY because we want to return the - ;; non-NIL value of the last predicate if all succeed. - (do ((tail (cdr more-predicates) (cdr tail)) - (head (car more-predicates) (car tail))) - ((not tail) - (apply head arguments)) - (unless (apply head arguments) - (return nil))))))) - - -(defun compose (function &rest more-functions) - "Returns a function composed of FUNCTION and MORE-FUNCTIONS that applies its -arguments to to each in turn, starting from the rightmost of MORE-FUNCTIONS, -and then calling the next one with the primary value of the last." - (declare (optimize (speed 3) (safety 1) (debug 1))) - (reduce (lambda (f g) - (let ((f (ensure-function f)) - (g (ensure-function g))) - (lambda (&rest arguments) - (declare (dynamic-extent arguments)) - (funcall f (apply g arguments))))) - more-functions - :initial-value function)) - -(define-compiler-macro compose (function &rest more-functions) - (labels ((compose-1 (funs) - (if (cdr funs) - `(funcall ,(car funs) ,(compose-1 (cdr funs))) - `(apply ,(car funs) arguments)))) - (let* ((args (cons function more-functions)) - (funs (make-gensym-list (length args) "COMPOSE"))) - `(let ,(loop for f in funs for arg in args - collect `(,f (ensure-function ,arg))) - (declare (optimize (speed 3) (safety 1) (debug 1))) - (lambda (&rest arguments) - (declare (dynamic-extent arguments)) - ,(compose-1 funs)))))) - -(defun multiple-value-compose (function &rest more-functions) - "Returns a function composed of FUNCTION and MORE-FUNCTIONS that applies -its arguments to each in turn, starting from the rightmost of -MORE-FUNCTIONS, and then calling the next one with all the return values of -the last." - (declare (optimize (speed 3) (safety 1) (debug 1))) - (reduce (lambda (f g) - (let ((f (ensure-function f)) - (g (ensure-function g))) - (lambda (&rest arguments) - (declare (dynamic-extent arguments)) - (multiple-value-call f (apply g arguments))))) - more-functions - :initial-value function)) - -(define-compiler-macro multiple-value-compose (function &rest more-functions) - (labels ((compose-1 (funs) - (if (cdr funs) - `(multiple-value-call ,(car funs) ,(compose-1 (cdr funs))) - `(apply ,(car funs) arguments)))) - (let* ((args (cons function more-functions)) - (funs (make-gensym-list (length args) "MV-COMPOSE"))) - `(let ,(mapcar #'list funs args) - (declare (optimize (speed 3) (safety 1) (debug 1))) - (lambda (&rest arguments) - (declare (dynamic-extent arguments)) - ,(compose-1 funs)))))) - -(declaim (inline curry rcurry)) - -(defun curry (function &rest arguments) - "Returns a function that applies ARGUMENTS and the arguments -it is called with to FUNCTION." - (declare (optimize (speed 3) (safety 1))) - (let ((fn (ensure-function function))) - (lambda (&rest more) - (declare (dynamic-extent more)) - ;; Using M-V-C we don't need to append the arguments. - (multiple-value-call fn (values-list arguments) (values-list more))))) - -(define-compiler-macro curry (function &rest arguments) - (let ((curries (make-gensym-list (length arguments) "CURRY")) - (fun (gensym "FUN"))) - `(let ((,fun (ensure-function ,function)) - ,@(mapcar #'list curries arguments)) - (declare (optimize (speed 3) (safety 1))) - (lambda (&rest more) - (declare (dynamic-extent more)) - (apply ,fun ,@curries more))))) - -(defun rcurry (function &rest arguments) - "Returns a function that applies the arguments it is called -with and ARGUMENTS to FUNCTION." - (declare (optimize (speed 3) (safety 1))) - (let ((fn (ensure-function function))) - (lambda (&rest more) - (declare (dynamic-extent more)) - (multiple-value-call fn (values-list more) (values-list arguments))))) - -(define-compiler-macro rcurry (function &rest arguments) - (let ((rcurries (make-gensym-list (length arguments) "RCURRY")) - (fun (gensym "FUN"))) - `(let ((,fun (ensure-function ,function)) - ,@(mapcar #'list rcurries arguments)) - (declare (optimize (speed 3) (safety 1))) - (lambda (&rest more) - (declare (dynamic-extent more)) - (multiple-value-call ,fun (values-list more) ,@rcurries))))) - -(declaim (notinline curry rcurry)) - -(defmacro named-lambda (name lambda-list &body body) - "Expands into a lambda-expression within whose BODY NAME denotes the -corresponding function." - `(labels ((,name ,lambda-list ,@body)) - #',name)) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/hash-tables.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/hash-tables.lisp deleted file mode 100644 index a9f7902..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/hash-tables.lisp +++ /dev/null @@ -1,101 +0,0 @@ -(in-package :alexandria) - -(defmacro ensure-gethash (key hash-table &optional default) - "Like GETHASH, but if KEY is not found in the HASH-TABLE saves the DEFAULT -under key before returning it. Secondary return value is true if key was -already in the table." - (once-only (key hash-table) - (with-unique-names (value presentp) - `(multiple-value-bind (,value ,presentp) (gethash ,key ,hash-table) - (if ,presentp - (values ,value ,presentp) - (values (setf (gethash ,key ,hash-table) ,default) nil)))))) - -(defun copy-hash-table (table &key key test size - rehash-size rehash-threshold) - "Returns a copy of hash table TABLE, with the same keys and values -as the TABLE. The copy has the same properties as the original, unless -overridden by the keyword arguments. - -Before each of the original values is set into the new hash-table, KEY -is invoked on the value. As KEY defaults to CL:IDENTITY, a shallow -copy is returned by default." - (setf key (or key 'identity)) - (setf test (or test (hash-table-test table))) - (setf size (or size (hash-table-size table))) - (setf rehash-size (or rehash-size (hash-table-rehash-size table))) - (setf rehash-threshold (or rehash-threshold (hash-table-rehash-threshold table))) - (let ((copy (make-hash-table :test test :size size - :rehash-size rehash-size - :rehash-threshold rehash-threshold))) - (maphash (lambda (k v) - (setf (gethash k copy) (funcall key v))) - table) - copy)) - -(declaim (inline maphash-keys)) -(defun maphash-keys (function table) - "Like MAPHASH, but calls FUNCTION with each key in the hash table TABLE." - (maphash (lambda (k v) - (declare (ignore v)) - (funcall function k)) - table)) - -(declaim (inline maphash-values)) -(defun maphash-values (function table) - "Like MAPHASH, but calls FUNCTION with each value in the hash table TABLE." - (maphash (lambda (k v) - (declare (ignore k)) - (funcall function v)) - table)) - -(defun hash-table-keys (table) - "Returns a list containing the keys of hash table TABLE." - (let ((keys nil)) - (maphash-keys (lambda (k) - (push k keys)) - table) - keys)) - -(defun hash-table-values (table) - "Returns a list containing the values of hash table TABLE." - (let ((values nil)) - (maphash-values (lambda (v) - (push v values)) - table) - values)) - -(defun hash-table-alist (table) - "Returns an association list containing the keys and values of hash table -TABLE." - (let ((alist nil)) - (maphash (lambda (k v) - (push (cons k v) alist)) - table) - alist)) - -(defun hash-table-plist (table) - "Returns a property list containing the keys and values of hash table -TABLE." - (let ((plist nil)) - (maphash (lambda (k v) - (setf plist (list* k v plist))) - table) - plist)) - -(defun alist-hash-table (alist &rest hash-table-initargs) - "Returns a hash table containing the keys and values of the association list -ALIST. Hash table is initialized using the HASH-TABLE-INITARGS." - (let ((table (apply #'make-hash-table hash-table-initargs))) - (dolist (cons alist) - (ensure-gethash (car cons) table (cdr cons))) - table)) - -(defun plist-hash-table (plist &rest hash-table-initargs) - "Returns a hash table containing the keys and values of the property list -PLIST. Hash table is initialized using the HASH-TABLE-INITARGS." - (let ((table (apply #'make-hash-table hash-table-initargs))) - (do ((tail plist (cddr tail))) - ((not tail)) - (ensure-gethash (car tail) table (cadr tail))) - table)) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/io.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/io.lisp deleted file mode 100644 index d3be536..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/io.lisp +++ /dev/null @@ -1,182 +0,0 @@ -;; Copyright (c) 2002-2006, Edward Marco Baringer -;; All rights reserved. - -(in-package :alexandria) - -(defmacro with-open-file* ((stream filespec &key direction element-type - if-exists if-does-not-exist external-format) - &body body) - "Just like WITH-OPEN-FILE, but NIL values in the keyword arguments -mean to use the default value specified for OPEN." - (once-only (direction element-type if-exists if-does-not-exist external-format) - `(with-open-stream - (,stream (apply #'open ,filespec - (append - (when ,direction - (list :direction ,direction)) - (list :element-type (or ,element-type - (default-element-type))) - (when ,if-exists - (list :if-exists ,if-exists)) - (when ,if-does-not-exist - (list :if-does-not-exist ,if-does-not-exist)) - (when ,external-format - (list :external-format ,external-format))))) - ,@body))) - -(defun default-element-type () - ;; On Lispworks, ELEMENT-TYPE :DEFAULT selects the appropriate - ;; subtype of CHARACTER for the given external format which can - ;; represent all possible characters. - #+lispworks :default - ;; The spec says that OPEN's default ELEMENT-TYPE (when it is not - ;; specified) is CHARACTER, but on AllegroCL it's (UNSIGNED-BYTE 8). - ;; No harm done by specifying it on other implementations. - #-lispworks 'character) - -(defmacro with-input-from-file ((stream-name file-name &rest args - &key (direction nil direction-p) - &allow-other-keys) - &body body) - "Evaluate BODY with STREAM-NAME to an input stream on the file -FILE-NAME. ARGS is sent as is to the call to OPEN except EXTERNAL-FORMAT, -which is only sent to WITH-OPEN-FILE when it's not NIL." - (declare (ignore direction)) - (when direction-p - (error "Can't specify :DIRECTION for WITH-INPUT-FROM-FILE.")) - `(with-open-file* (,stream-name ,file-name :direction :input ,@args) - ,@body)) - -(defmacro with-output-to-file ((stream-name file-name &rest args - &key (direction nil direction-p) - &allow-other-keys) - &body body) - "Evaluate BODY with STREAM-NAME to an output stream on the file -FILE-NAME. ARGS is sent as is to the call to OPEN except EXTERNAL-FORMAT, -which is only sent to WITH-OPEN-FILE when it's not NIL." - (declare (ignore direction)) - (when direction-p - (error "Can't specify :DIRECTION for WITH-OUTPUT-TO-FILE.")) - `(with-open-file* (,stream-name ,file-name :direction :output ,@args) - ,@body)) - -(defun read-stream-content-into-string (stream &key (buffer-size 4096)) - "Return the \"content\" of STREAM as a fresh string." - (check-type buffer-size positive-integer) - (let ((*print-pretty* nil) - (element-type (stream-element-type stream))) - (with-output-to-string (datum nil :element-type element-type) - (let ((buffer (make-array buffer-size :element-type element-type))) - (loop - :for bytes-read = (read-sequence buffer stream) - :do (write-sequence buffer datum :start 0 :end bytes-read) - :while (= bytes-read buffer-size)))))) - -(defun read-file-into-string (pathname &key (buffer-size 4096) external-format) - "Return the contents of the file denoted by PATHNAME as a fresh string. - -The EXTERNAL-FORMAT parameter will be passed directly to WITH-OPEN-FILE -unless it's NIL, which means the system default." - (with-input-from-file (file-stream pathname :external-format external-format) - (read-stream-content-into-string file-stream :buffer-size buffer-size))) - -(defun write-string-into-file (string pathname &key (if-exists :error) - if-does-not-exist - external-format) - "Write STRING to PATHNAME. - -The EXTERNAL-FORMAT parameter will be passed directly to WITH-OPEN-FILE -unless it's NIL, which means the system default." - (with-output-to-file (file-stream pathname :if-exists if-exists - :if-does-not-exist if-does-not-exist - :external-format external-format) - (write-sequence string file-stream))) - -(defun read-stream-content-into-byte-vector (stream &key ((%length length)) - (initial-size 4096)) - "Return \"content\" of STREAM as freshly allocated (unsigned-byte 8) vector." - (check-type length (or null non-negative-integer)) - (check-type initial-size positive-integer) - (do ((buffer (make-array (or length initial-size) - :element-type '(unsigned-byte 8))) - (offset 0) - (offset-wanted 0)) - ((or (/= offset-wanted offset) - (and length (>= offset length))) - (if (= offset (length buffer)) - buffer - (subseq buffer 0 offset))) - (unless (zerop offset) - (let ((new-buffer (make-array (* 2 (length buffer)) - :element-type '(unsigned-byte 8)))) - (replace new-buffer buffer) - (setf buffer new-buffer))) - (setf offset-wanted (length buffer) - offset (read-sequence buffer stream :start offset)))) - -(defun read-file-into-byte-vector (pathname) - "Read PATHNAME into a freshly allocated (unsigned-byte 8) vector." - (with-input-from-file (stream pathname :element-type '(unsigned-byte 8)) - (read-stream-content-into-byte-vector stream '%length (file-length stream)))) - -(defun write-byte-vector-into-file (bytes pathname &key (if-exists :error) - if-does-not-exist) - "Write BYTES to PATHNAME." - (check-type bytes (vector (unsigned-byte 8))) - (with-output-to-file (stream pathname :if-exists if-exists - :if-does-not-exist if-does-not-exist - :element-type '(unsigned-byte 8)) - (write-sequence bytes stream))) - -(defun copy-file (from to &key (if-to-exists :supersede) - (element-type '(unsigned-byte 8)) finish-output) - (with-input-from-file (input from :element-type element-type) - (with-output-to-file (output to :element-type element-type - :if-exists if-to-exists) - (copy-stream input output - :element-type element-type - :finish-output finish-output)))) - -(defun copy-stream (input output &key (element-type (stream-element-type input)) - (buffer-size 4096) - (buffer (make-array buffer-size :element-type element-type)) - (start 0) end - finish-output) - "Reads data from INPUT and writes it to OUTPUT. Both INPUT and OUTPUT must -be streams, they will be passed to READ-SEQUENCE and WRITE-SEQUENCE and must have -compatible element-types." - (check-type start non-negative-integer) - (check-type end (or null non-negative-integer)) - (check-type buffer-size positive-integer) - (when (and end - (< end start)) - (error "END is smaller than START in ~S" 'copy-stream)) - (let ((output-position 0) - (input-position 0)) - (unless (zerop start) - ;; FIXME add platform specific optimization to skip seekable streams - (loop while (< input-position start) - do (let ((n (read-sequence buffer input - :end (min (length buffer) - (- start input-position))))) - (when (zerop n) - (error "~@" 'copy-stream start)) - (incf input-position n)))) - (assert (= input-position start)) - (loop while (or (null end) (< input-position end)) - do (let ((n (read-sequence buffer input - :end (when end - (min (length buffer) - (- end input-position)))))) - (when (zerop n) - (if end - (error "~@" 'copy-stream end) - (return))) - (incf input-position n) - (write-sequence buffer output :end n) - (incf output-position n))) - (when finish-output - (finish-output output)) - output-position)) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/lists.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/lists.lisp deleted file mode 100644 index e96837d..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/lists.lisp +++ /dev/null @@ -1,369 +0,0 @@ -(in-package :alexandria) - -(declaim (inline safe-endp)) -(defun safe-endp (x) - (declare (optimize safety)) - (endp x)) - -(defun alist-plist (alist) - "Returns a property list containing the same keys and values as the -association list ALIST in the same order." - (let (plist) - (dolist (pair alist) - (push (car pair) plist) - (push (cdr pair) plist)) - (nreverse plist))) - -(defun plist-alist (plist) - "Returns an association list containing the same keys and values as the -property list PLIST in the same order." - (let (alist) - (do ((tail plist (cddr tail))) - ((safe-endp tail) (nreverse alist)) - (push (cons (car tail) (cadr tail)) alist)))) - -(declaim (inline racons)) -(defun racons (key value ralist) - (acons value key ralist)) - -(macrolet - ((define-alist-get (name get-entry get-value-from-entry add doc) - `(progn - (declaim (inline ,name)) - (defun ,name (alist key &key (test 'eql)) - ,doc - (let ((entry (,get-entry key alist :test test))) - (values (,get-value-from-entry entry) entry))) - (define-setf-expander ,name (place key &key (test ''eql) - &environment env) - (multiple-value-bind - (temporary-variables initforms newvals setter getter) - (get-setf-expansion place env) - (when (cdr newvals) - (error "~A cannot store multiple values in one place" ',name)) - (with-unique-names (new-value key-val test-val alist entry) - (values - (append temporary-variables - (list alist - key-val - test-val - entry)) - (append initforms - (list getter - key - test - `(,',get-entry ,key-val ,alist :test ,test-val))) - `(,new-value) - `(cond - (,entry - (setf (,',get-value-from-entry ,entry) ,new-value)) - (t - (let ,newvals - (setf ,(first newvals) (,',add ,key ,new-value ,alist)) - ,setter - ,new-value))) - `(,',get-value-from-entry ,entry)))))))) - (define-alist-get assoc-value assoc cdr acons -"ASSOC-VALUE is an alist accessor very much like ASSOC, but it can -be used with SETF.") - (define-alist-get rassoc-value rassoc car racons -"RASSOC-VALUE is an alist accessor very much like RASSOC, but it can -be used with SETF.")) - -(defun malformed-plist (plist) - (error "Malformed plist: ~S" plist)) - -(defmacro doplist ((key val plist &optional values) &body body) - "Iterates over elements of PLIST. BODY can be preceded by -declarations, and is like a TAGBODY. RETURN may be used to terminate -the iteration early. If RETURN is not used, returns VALUES." - (multiple-value-bind (forms declarations) (parse-body body) - (with-gensyms (tail loop results) - `(block nil - (flet ((,results () - (let (,key ,val) - (declare (ignorable ,key ,val)) - (return ,values)))) - (let* ((,tail ,plist) - (,key (if ,tail - (pop ,tail) - (,results))) - (,val (if ,tail - (pop ,tail) - (malformed-plist ',plist)))) - (declare (ignorable ,key ,val)) - ,@declarations - (tagbody - ,loop - ,@forms - (setf ,key (if ,tail - (pop ,tail) - (,results)) - ,val (if ,tail - (pop ,tail) - (malformed-plist ',plist))) - (go ,loop)))))))) - -(define-modify-macro appendf (&rest lists) append - "Modify-macro for APPEND. Appends LISTS to the place designated by the first -argument.") - -(define-modify-macro nconcf (&rest lists) nconc - "Modify-macro for NCONC. Concatenates LISTS to place designated by the first -argument.") - -(define-modify-macro unionf (list &rest args) union - "Modify-macro for UNION. Saves the union of LIST and the contents of the -place designated by the first argument to the designated place.") - -(define-modify-macro nunionf (list &rest args) nunion - "Modify-macro for NUNION. Saves the union of LIST and the contents of the -place designated by the first argument to the designated place. May modify -either argument.") - -(define-modify-macro reversef () reverse - "Modify-macro for REVERSE. Copies and reverses the list stored in the given -place and saves back the result into the place.") - -(define-modify-macro nreversef () nreverse - "Modify-macro for NREVERSE. Reverses the list stored in the given place by -destructively modifying it and saves back the result into the place.") - -(defun circular-list (&rest elements) - "Creates a circular list of ELEMENTS." - (let ((cycle (copy-list elements))) - (nconc cycle cycle))) - -(defun circular-list-p (object) - "Returns true if OBJECT is a circular list, NIL otherwise." - (and (listp object) - (do ((fast object (cddr fast)) - (slow (cons (car object) (cdr object)) (cdr slow))) - (nil) - (unless (and (consp fast) (listp (cdr fast))) - (return nil)) - (when (eq fast slow) - (return t))))) - -(defun circular-tree-p (object) - "Returns true if OBJECT is a circular tree, NIL otherwise." - (labels ((circularp (object seen) - (and (consp object) - (do ((fast (cons (car object) (cdr object)) (cddr fast)) - (slow object (cdr slow))) - (nil) - (when (or (eq fast slow) (member slow seen)) - (return-from circular-tree-p t)) - (when (or (not (consp fast)) (not (consp (cdr slow)))) - (return - (do ((tail object (cdr tail))) - ((not (consp tail)) - nil) - (let ((elt (car tail))) - (circularp elt (cons object seen)))))))))) - (circularp object nil))) - -(defun proper-list-p (object) - "Returns true if OBJECT is a proper list." - (cond ((not object) - t) - ((consp object) - (do ((fast object (cddr fast)) - (slow (cons (car object) (cdr object)) (cdr slow))) - (nil) - (unless (and (listp fast) (consp (cdr fast))) - (return (and (listp fast) (not (cdr fast))))) - (when (eq fast slow) - (return nil)))) - (t - nil))) - -(deftype proper-list () - "Type designator for proper lists. Implemented as a SATISFIES type, hence -not recommended for performance intensive use. Main usefullness as a type -designator of the expected type in a TYPE-ERROR." - `(and list (satisfies proper-list-p))) - -(defun circular-list-error (list) - (error 'type-error - :datum list - :expected-type '(and list (not circular-list)))) - -(macrolet ((def (name lambda-list doc step declare ret1 ret2) - (assert (member 'list lambda-list)) - `(defun ,name ,lambda-list - ,doc - (unless (listp list) - (error 'type-error :datum list :expected-type 'list)) - (do ((last list fast) - (fast list (cddr fast)) - (slow (cons (car list) (cdr list)) (cdr slow)) - ,@(when step (list step))) - (nil) - (declare (dynamic-extent slow) ,@(when declare (list declare)) - (ignorable last)) - (when (safe-endp fast) - (return ,ret1)) - (when (safe-endp (cdr fast)) - (return ,ret2)) - (when (eq fast slow) - (circular-list-error list)))))) - (def proper-list-length (list) - "Returns length of LIST, signalling an error if it is not a proper list." - (n 1 (+ n 2)) - ;; KLUDGE: Most implementations don't actually support lists with bignum - ;; elements -- and this is WAY faster on most implementations then declaring - ;; N to be an UNSIGNED-BYTE. - (fixnum n) - (1- n) - n) - - (def lastcar (list) - "Returns the last element of LIST. Signals a type-error if LIST is not a -proper list." - nil - nil - (cadr last) - (car fast)) - - (def (setf lastcar) (object list) - "Sets the last element of LIST. Signals a type-error if LIST is not a proper -list." - nil - nil - (setf (cadr last) object) - (setf (car fast) object))) - -(defun make-circular-list (length &key initial-element) - "Creates a circular list of LENGTH with the given INITIAL-ELEMENT." - (let ((cycle (make-list length :initial-element initial-element))) - (nconc cycle cycle))) - -(deftype circular-list () - "Type designator for circular lists. Implemented as a SATISFIES type, so not -recommended for performance intensive use. Main usefullness as the -expected-type designator of a TYPE-ERROR." - `(satisfies circular-list-p)) - -(defun ensure-car (thing) - "If THING is a CONS, its CAR is returned. Otherwise THING is returned." - (if (consp thing) - (car thing) - thing)) - -(defun ensure-cons (cons) - "If CONS is a cons, it is returned. Otherwise returns a fresh cons with CONS - in the car, and NIL in the cdr." - (if (consp cons) - cons - (cons cons nil))) - -(defun ensure-list (list) - "If LIST is a list, it is returned. Otherwise returns the list designated by LIST." - (if (listp list) - list - (list list))) - -(defun remove-from-plist (plist &rest keys) - "Returns a property-list with same keys and values as PLIST, except that keys -in the list designated by KEYS and values corresponding to them are removed. -The returned property-list may share structure with the PLIST, but PLIST is -not destructively modified. Keys are compared using EQ." - (declare (optimize (speed 3))) - ;; FIXME: possible optimization: (remove-from-plist '(:x 0 :a 1 :b 2) :a) - ;; could return the tail without consing up a new list. - (loop for (key . rest) on plist by #'cddr - do (assert rest () "Expected a proper plist, got ~S" plist) - unless (member key keys :test #'eq) - collect key and collect (first rest))) - -(defun delete-from-plist (plist &rest keys) - "Just like REMOVE-FROM-PLIST, but this version may destructively modify the -provided PLIST." - (declare (optimize speed)) - (loop with head = plist - with tail = nil ; a nil tail means an empty result so far - for (key . rest) on plist by #'cddr - do (assert rest () "Expected a proper plist, got ~S" plist) - (if (member key keys :test #'eq) - ;; skip over this pair - (let ((next (cdr rest))) - (if tail - (setf (cdr tail) next) - (setf head next))) - ;; keep this pair - (setf tail rest)) - finally (return head))) - -(define-modify-macro remove-from-plistf (&rest keys) remove-from-plist - "Modify macro for REMOVE-FROM-PLIST.") -(define-modify-macro delete-from-plistf (&rest keys) delete-from-plist - "Modify macro for DELETE-FROM-PLIST.") - -(declaim (inline sans)) -(defun sans (plist &rest keys) - "Alias of REMOVE-FROM-PLIST for backward compatibility." - (apply #'remove-from-plist plist keys)) - -(defun mappend (function &rest lists) - "Applies FUNCTION to respective element(s) of each LIST, appending all the -all the result list to a single list. FUNCTION must return a list." - (loop for results in (apply #'mapcar function lists) - append results)) - -(defun setp (object &key (test #'eql) (key #'identity)) - "Returns true if OBJECT is a list that denotes a set, NIL otherwise. A list -denotes a set if each element of the list is unique under KEY and TEST." - (and (listp object) - (let (seen) - (dolist (elt object t) - (let ((key (funcall key elt))) - (if (member key seen :test test) - (return nil) - (push key seen))))))) - -(defun set-equal (list1 list2 &key (test #'eql) (key nil keyp)) - "Returns true if every element of LIST1 matches some element of LIST2 and -every element of LIST2 matches some element of LIST1. Otherwise returns false." - (let ((keylist1 (if keyp (mapcar key list1) list1)) - (keylist2 (if keyp (mapcar key list2) list2))) - (and (dolist (elt keylist1 t) - (or (member elt keylist2 :test test) - (return nil))) - (dolist (elt keylist2 t) - (or (member elt keylist1 :test test) - (return nil)))))) - -(defun map-product (function list &rest more-lists) - "Returns a list containing the results of calling FUNCTION with one argument -from LIST, and one from each of MORE-LISTS for each combination of arguments. -In other words, returns the product of LIST and MORE-LISTS using FUNCTION. - -Example: - - (map-product 'list '(1 2) '(3 4) '(5 6)) - => ((1 3 5) (1 3 6) (1 4 5) (1 4 6) - (2 3 5) (2 3 6) (2 4 5) (2 4 6)) -" - (labels ((%map-product (f lists) - (let ((more (cdr lists)) - (one (car lists))) - (if (not more) - (mapcar f one) - (mappend (lambda (x) - (%map-product (curry f x) more)) - one))))) - (%map-product (ensure-function function) (cons list more-lists)))) - -(defun flatten (tree) - "Traverses the tree in order, collecting non-null leaves into a list." - (let (list) - (labels ((traverse (subtree) - (when subtree - (if (consp subtree) - (progn - (traverse (car subtree)) - (traverse (cdr subtree))) - (push subtree list))))) - (traverse tree)) - (nreverse list))) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/macros.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/macros.lisp deleted file mode 100644 index 4364ad6..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/macros.lisp +++ /dev/null @@ -1,370 +0,0 @@ -(in-package :alexandria) - -(defmacro with-gensyms (names &body forms) - "Binds a set of variables to gensyms and evaluates the implicit progn FORMS. - -Each element within NAMES is either a symbol SYMBOL or a pair (SYMBOL -STRING-DESIGNATOR). Bare symbols are equivalent to the pair (SYMBOL SYMBOL). - -Each pair (SYMBOL STRING-DESIGNATOR) specifies that the variable named by SYMBOL -should be bound to a symbol constructed using GENSYM with the string designated -by STRING-DESIGNATOR being its first argument." - `(let ,(mapcar (lambda (name) - (multiple-value-bind (symbol string) - (etypecase name - (symbol - (values name (symbol-name name))) - ((cons symbol (cons string-designator null)) - (values (first name) (string (second name))))) - `(,symbol (gensym ,string)))) - names) - ,@forms)) - -(defmacro with-unique-names (names &body forms) - "Alias for WITH-GENSYMS." - `(with-gensyms ,names ,@forms)) - -(defmacro once-only (specs &body forms) - "Constructs code whose primary goal is to help automate the handling of -multiple evaluation within macros. Multiple evaluation is handled by introducing -intermediate variables, in order to reuse the result of an expression. - -The returned value is a list of the form - - (let (( ) - ... - ( )) - ) - -where GENSYM-1, ..., GENSYM-N are the intermediate variables introduced in order -to evaluate EXPR-1, ..., EXPR-N once, only. RES is code that is the result of -evaluating the implicit progn FORMS within a special context determined by -SPECS. RES should make use of (reference) the intermediate variables. - -Each element within SPECS is either a symbol SYMBOL or a pair (SYMBOL INITFORM). -Bare symbols are equivalent to the pair (SYMBOL SYMBOL). - -Each pair (SYMBOL INITFORM) specifies a single intermediate variable: - -- INITFORM is an expression evaluated to produce EXPR-i - -- SYMBOL is the name of the variable that will be bound around FORMS to the - corresponding gensym GENSYM-i, in order for FORMS to generate RES that - references the intermediate variable - -The evaluation of INITFORMs and binding of SYMBOLs resembles LET. INITFORMs of -all the pairs are evaluated before binding SYMBOLs and evaluating FORMS. - -Example: - - The following expression - - (let ((x '(incf y))) - (once-only (x) - `(cons ,x ,x))) - - ;;; => - ;;; (let ((#1=#:X123 (incf y))) - ;;; (cons #1# #1#)) - - could be used within a macro to avoid multiple evaluation like so - - (defmacro cons1 (x) - (once-only (x) - `(cons ,x ,x))) - - (let ((y 0)) - (cons1 (incf y))) - - ;;; => (1 . 1) - -Example: - - The following expression demonstrates the usage of the INITFORM field - - (let ((expr '(incf y))) - (once-only ((var `(1+ ,expr))) - `(list ',expr ,var ,var))) - - ;;; => - ;;; (let ((#1=#:VAR123 (1+ (incf y)))) - ;;; (list '(incf y) #1# #1)) - - which could be used like so - - (defmacro print-succ-twice (expr) - (once-only ((var `(1+ ,expr))) - `(format t \"Expr: ~s, Once: ~s, Twice: ~s~%\" ',expr ,var ,var))) - - (let ((y 10)) - (print-succ-twice (incf y))) - - ;;; >> - ;;; Expr: (INCF Y), Once: 12, Twice: 12" - (let ((gensyms (make-gensym-list (length specs) "ONCE-ONLY")) - (names-and-forms (mapcar (lambda (spec) - (etypecase spec - (list - (destructuring-bind (name form) spec - (cons name form))) - (symbol - (cons spec spec)))) - specs))) - ;; bind in user-macro - `(let ,(mapcar (lambda (g n) (list g `(gensym ,(string (car n))))) - gensyms names-and-forms) - ;; bind in final expansion - `(let (,,@(mapcar (lambda (g n) - ``(,,g ,,(cdr n))) - gensyms names-and-forms)) - ;; bind in user-macro - ,(let ,(mapcar (lambda (n g) (list (car n) g)) - names-and-forms gensyms) - ,@forms))))) - -(defun parse-body (body &key documentation whole) - "Parses BODY into (values remaining-forms declarations doc-string). -Documentation strings are recognized only if DOCUMENTATION is true. -Syntax errors in body are signalled and WHOLE is used in the signal -arguments when given." - (let ((doc nil) - (decls nil) - (current nil)) - (tagbody - :declarations - (setf current (car body)) - (when (and documentation (stringp current) (cdr body)) - (if doc - (error "Too many documentation strings in ~S." (or whole body)) - (setf doc (pop body))) - (go :declarations)) - (when (and (listp current) (eql (first current) 'declare)) - (push (pop body) decls) - (go :declarations))) - (values body (nreverse decls) doc))) - -(defun parse-ordinary-lambda-list (lambda-list &key (normalize t) - allow-specializers - (normalize-optional normalize) - (normalize-keyword normalize) - (normalize-auxilary normalize)) - "Parses an ordinary lambda-list, returning as multiple values: - -1. Required parameters. - -2. Optional parameter specifications, normalized into form: - - (name init suppliedp) - -3. Name of the rest parameter, or NIL. - -4. Keyword parameter specifications, normalized into form: - - ((keyword-name name) init suppliedp) - -5. Boolean indicating &ALLOW-OTHER-KEYS presence. - -6. &AUX parameter specifications, normalized into form - - (name init). - -7. Existence of &KEY in the lambda-list. - -Signals a PROGRAM-ERROR is the lambda-list is malformed." - (let ((state :required) - (allow-other-keys nil) - (auxp nil) - (required nil) - (optional nil) - (rest nil) - (keys nil) - (keyp nil) - (aux nil)) - (labels ((fail (elt) - (simple-program-error "Misplaced ~S in ordinary lambda-list:~% ~S" - elt lambda-list)) - (check-variable (elt what &optional (allow-specializers allow-specializers)) - (unless (and (or (symbolp elt) - (and allow-specializers - (consp elt) (= 2 (length elt)) (symbolp (first elt)))) - (not (constantp elt))) - (simple-program-error "Invalid ~A ~S in ordinary lambda-list:~% ~S" - what elt lambda-list))) - (check-spec (spec what) - (destructuring-bind (init suppliedp) spec - (declare (ignore init)) - (check-variable suppliedp what nil)))) - (dolist (elt lambda-list) - (case elt - (&optional - (if (eq state :required) - (setf state elt) - (fail elt))) - (&rest - (if (member state '(:required &optional)) - (setf state elt) - (fail elt))) - (&key - (if (member state '(:required &optional :after-rest)) - (setf state elt) - (fail elt)) - (setf keyp t)) - (&allow-other-keys - (if (eq state '&key) - (setf allow-other-keys t - state elt) - (fail elt))) - (&aux - (cond ((eq state '&rest) - (fail elt)) - (auxp - (simple-program-error "Multiple ~S in ordinary lambda-list:~% ~S" - elt lambda-list)) - (t - (setf auxp t - state elt)) - )) - (otherwise - (when (member elt '#.(set-difference lambda-list-keywords - '(&optional &rest &key &allow-other-keys &aux))) - (simple-program-error - "Bad lambda-list keyword ~S in ordinary lambda-list:~% ~S" - elt lambda-list)) - (case state - (:required - (check-variable elt "required parameter") - (push elt required)) - (&optional - (cond ((consp elt) - (destructuring-bind (name &rest tail) elt - (check-variable name "optional parameter") - (cond ((cdr tail) - (check-spec tail "optional-supplied-p parameter")) - ((and normalize-optional tail) - (setf elt (append elt '(nil)))) - (normalize-optional - (setf elt (append elt '(nil nil))))))) - (t - (check-variable elt "optional parameter") - (when normalize-optional - (setf elt (cons elt '(nil nil)))))) - (push (ensure-list elt) optional)) - (&rest - (check-variable elt "rest parameter") - (setf rest elt - state :after-rest)) - (&key - (cond ((consp elt) - (destructuring-bind (var-or-kv &rest tail) elt - (cond ((consp var-or-kv) - (destructuring-bind (keyword var) var-or-kv - (unless (symbolp keyword) - (simple-program-error "Invalid keyword name ~S in ordinary ~ - lambda-list:~% ~S" - keyword lambda-list)) - (check-variable var "keyword parameter"))) - (t - (check-variable var-or-kv "keyword parameter") - (when normalize-keyword - (setf var-or-kv (list (make-keyword var-or-kv) var-or-kv))))) - (cond ((cdr tail) - (check-spec tail "keyword-supplied-p parameter")) - ((and normalize-keyword tail) - (setf tail (append tail '(nil)))) - (normalize-keyword - (setf tail '(nil nil)))) - (setf elt (cons var-or-kv tail)))) - (t - (check-variable elt "keyword parameter") - (setf elt (if normalize-keyword - (list (list (make-keyword elt) elt) nil nil) - elt)))) - (push elt keys)) - (&aux - (if (consp elt) - (destructuring-bind (var &optional init) elt - (declare (ignore init)) - (check-variable var "&aux parameter")) - (progn - (check-variable elt "&aux parameter") - (setf elt (list* elt (when normalize-auxilary - '(nil)))))) - (push elt aux)) - (t - (simple-program-error "Invalid ordinary lambda-list:~% ~S" lambda-list))))))) - (values (nreverse required) (nreverse optional) rest (nreverse keys) - allow-other-keys (nreverse aux) keyp))) - -;;;; DESTRUCTURING-*CASE - -(defun expand-destructuring-case (key clauses case) - (once-only (key) - `(if (typep ,key 'cons) - (,case (car ,key) - ,@(mapcar (lambda (clause) - (destructuring-bind ((keys . lambda-list) &body body) clause - `(,keys - (destructuring-bind ,lambda-list (cdr ,key) - ,@body)))) - clauses)) - (error "Invalid key to DESTRUCTURING-~S: ~S" ',case ,key)))) - -(defmacro destructuring-case (keyform &body clauses) - "DESTRUCTURING-CASE, -CCASE, and -ECASE are a combination of CASE and DESTRUCTURING-BIND. -KEYFORM must evaluate to a CONS. - -Clauses are of the form: - - ((CASE-KEYS . DESTRUCTURING-LAMBDA-LIST) FORM*) - -The clause whose CASE-KEYS matches CAR of KEY, as if by CASE, CCASE, or ECASE, -is selected, and FORMs are then executed with CDR of KEY is destructured and -bound by the DESTRUCTURING-LAMBDA-LIST. - -Example: - - (defun dcase (x) - (destructuring-case x - ((:foo a b) - (format nil \"foo: ~S, ~S\" a b)) - ((:bar &key a b) - (format nil \"bar: ~S, ~S\" a b)) - (((:alt1 :alt2) a) - (format nil \"alt: ~S\" a)) - ((t &rest rest) - (format nil \"unknown: ~S\" rest)))) - - (dcase (list :foo 1 2)) ; => \"foo: 1, 2\" - (dcase (list :bar :a 1 :b 2)) ; => \"bar: 1, 2\" - (dcase (list :alt1 1)) ; => \"alt: 1\" - (dcase (list :alt2 2)) ; => \"alt: 2\" - (dcase (list :quux 1 2 3)) ; => \"unknown: 1, 2, 3\" - - (defun decase (x) - (destructuring-case x - ((:foo a b) - (format nil \"foo: ~S, ~S\" a b)) - ((:bar &key a b) - (format nil \"bar: ~S, ~S\" a b)) - (((:alt1 :alt2) a) - (format nil \"alt: ~S\" a)))) - - (decase (list :foo 1 2)) ; => \"foo: 1, 2\" - (decase (list :bar :a 1 :b 2)) ; => \"bar: 1, 2\" - (decase (list :alt1 1)) ; => \"alt: 1\" - (decase (list :alt2 2)) ; => \"alt: 2\" - (decase (list :quux 1 2 3)) ; =| error -" - (expand-destructuring-case keyform clauses 'case)) - -(defmacro destructuring-ccase (keyform &body clauses) - (expand-destructuring-case keyform clauses 'ccase)) - -(defmacro destructuring-ecase (keyform &body clauses) - (expand-destructuring-case keyform clauses 'ecase)) - -(dolist (name '(destructuring-ccase destructuring-ecase)) - (setf (documentation name 'function) (documentation 'destructuring-case 'function))) - - - diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/numbers.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/numbers.lisp deleted file mode 100644 index 1c06f71..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/numbers.lisp +++ /dev/null @@ -1,295 +0,0 @@ -(in-package :alexandria) - -(declaim (inline clamp)) -(defun clamp (number min max) - "Clamps the NUMBER into [min, max] range. Returns MIN if NUMBER is lesser then -MIN and MAX if NUMBER is greater then MAX, otherwise returns NUMBER." - (if (< number min) - min - (if (> number max) - max - number))) - -(defun gaussian-random (&optional min max) - "Returns two gaussian random double floats as the primary and secondary value, -optionally constrained by MIN and MAX. Gaussian random numbers form a standard -normal distribution around 0.0d0. - -Sufficiently positive MIN or negative MAX will cause the algorithm used to -take a very long time. If MIN is positive it should be close to zero, and -similarly if MAX is negative it should be close to zero." - (macrolet - ((valid (x) - `(<= (or min ,x) ,x (or max ,x)) )) - (labels - ((gauss () - (loop - for x1 = (- (random 2.0d0) 1.0d0) - for x2 = (- (random 2.0d0) 1.0d0) - for w = (+ (expt x1 2) (expt x2 2)) - when (< w 1.0d0) - do (let ((v (sqrt (/ (* -2.0d0 (log w)) w)))) - (return (values (* x1 v) (* x2 v)))))) - (guard (x) - (unless (valid x) - (tagbody - :retry - (multiple-value-bind (x1 x2) (gauss) - (when (valid x1) - (setf x x1) - (go :done)) - (when (valid x2) - (setf x x2) - (go :done)) - (go :retry)) - :done)) - x)) - (multiple-value-bind - (g1 g2) (gauss) - (values (guard g1) (guard g2)))))) - -(declaim (inline iota)) -(defun iota (n &key (start 0) (step 1)) - "Return a list of n numbers, starting from START (with numeric contagion -from STEP applied), each consequtive number being the sum of the previous one -and STEP. START defaults to 0 and STEP to 1. - -Examples: - - (iota 4) => (0 1 2 3) - (iota 3 :start 1 :step 1.0) => (1.0 2.0 3.0) - (iota 3 :start -1 :step -1/2) => (-1 -3/2 -2) -" - (declare (type (integer 0) n) (number start step)) - (loop ;; KLUDGE: get numeric contagion right for the first element too - for i = (+ (- (+ start step) step)) then (+ i step) - repeat n - collect i)) - -(declaim (inline map-iota)) -(defun map-iota (function n &key (start 0) (step 1)) - "Calls FUNCTION with N numbers, starting from START (with numeric contagion -from STEP applied), each consequtive number being the sum of the previous one -and STEP. START defaults to 0 and STEP to 1. Returns N. - -Examples: - - (map-iota #'print 3 :start 1 :step 1.0) => 3 - ;;; 1.0 - ;;; 2.0 - ;;; 3.0 -" - (declare (type (integer 0) n) (number start step)) - (loop ;; KLUDGE: get numeric contagion right for the first element too - for i = (+ start (- step step)) then (+ i step) - repeat n - do (funcall function i)) - n) - -(declaim (inline lerp)) -(defun lerp (v a b) - "Returns the result of linear interpolation between A and B, using the -interpolation coefficient V." - ;; The correct version is numerically stable, at the expense of an - ;; extra multiply. See (lerp 0.1 4 25) with (+ a (* v (- b a))). The - ;; unstable version can often be converted to a fast instruction on - ;; a lot of machines, though this is machine/implementation - ;; specific. As alexandria is more about correct code, than - ;; efficiency, and we're only talking about a single extra multiply, - ;; many would prefer the stable version - (+ (* (- 1.0 v) a) (* v b))) - -(declaim (inline mean)) -(defun mean (sample) - "Returns the mean of SAMPLE. SAMPLE must be a sequence of numbers." - (/ (reduce #'+ sample) (length sample))) - -(defun median (sample) - "Returns median of SAMPLE. SAMPLE must be a sequence of real numbers." - ;; Implements and uses the quick-select algorithm to find the median - ;; https://en.wikipedia.org/wiki/Quickselect - - (labels ((randint-in-range (start-int end-int) - "Returns a random integer in the specified range, inclusive" - (+ start-int (random (1+ (- end-int start-int))))) - (partition (vec start-i end-i) - "Implements the partition function, which performs a partial - sort of vec around the (randomly) chosen pivot. - Returns the index where the pivot element would be located - in a correctly-sorted array" - (if (= start-i end-i) - start-i - (let ((pivot-i (randint-in-range start-i end-i))) - (rotatef (aref vec start-i) (aref vec pivot-i)) - (let ((swap-i end-i)) - (loop for i from swap-i downto (1+ start-i) do - (when (>= (aref vec i) (aref vec start-i)) - (rotatef (aref vec i) (aref vec swap-i)) - (decf swap-i))) - (rotatef (aref vec swap-i) (aref vec start-i)) - swap-i))))) - - (let* ((vector (copy-sequence 'vector sample)) - (len (length vector)) - (mid-i (ash len -1)) - (i 0) - (j (1- len))) - - (loop for correct-pos = (partition vector i j) - while (/= correct-pos mid-i) do - (if (< correct-pos mid-i) - (setf i (1+ correct-pos)) - (setf j (1- correct-pos)))) - - (if (oddp len) - (aref vector mid-i) - (* 1/2 - (+ (aref vector mid-i) - (reduce #'max (make-array - mid-i - :displaced-to vector)))))))) - -(declaim (inline variance)) -(defun variance (sample &key (biased t)) - "Variance of SAMPLE. Returns the biased variance if BIASED is true (the default), -and the unbiased estimator of variance if BIASED is false. SAMPLE must be a -sequence of numbers." - (let ((mean (mean sample))) - (/ (reduce (lambda (a b) - (+ a (expt (- b mean) 2))) - sample - :initial-value 0) - (- (length sample) (if biased 0 1))))) - -(declaim (inline standard-deviation)) -(defun standard-deviation (sample &key (biased t)) - "Standard deviation of SAMPLE. Returns the biased standard deviation if -BIASED is true (the default), and the square root of the unbiased estimator -for variance if BIASED is false (which is not the same as the unbiased -estimator for standard deviation). SAMPLE must be a sequence of numbers." - (sqrt (variance sample :biased biased))) - -(define-modify-macro maxf (&rest numbers) max - "Modify-macro for MAX. Sets place designated by the first argument to the -maximum of its original value and NUMBERS.") - -(define-modify-macro minf (&rest numbers) min - "Modify-macro for MIN. Sets place designated by the first argument to the -minimum of its original value and NUMBERS.") - -;;;; Factorial - -;;; KLUDGE: This is really dependant on the numbers in question: for -;;; small numbers this is larger, and vice versa. Ideally instead of a -;;; constant we would have RANGE-FAST-TO-MULTIPLY-DIRECTLY-P. -(defconstant +factorial-bisection-range-limit+ 8) - -;;; KLUDGE: This is really platform dependant: ideally we would use -;;; (load-time-value (find-good-direct-multiplication-limit)) instead. -(defconstant +factorial-direct-multiplication-limit+ 13) - -(defun %multiply-range (i j) - ;; We use a a bit of cleverness here: - ;; - ;; 1. For large factorials we bisect in order to avoid expensive bignum - ;; multiplications: 1 x 2 x 3 x ... runs into bignums pretty soon, - ;; and once it does that all further multiplications will be with bignums. - ;; - ;; By instead doing the multiplication in a tree like - ;; ((1 x 2) x (3 x 4)) x ((5 x 6) x (7 x 8)) - ;; we manage to get less bignums. - ;; - ;; 2. Division isn't exactly free either, however, so we don't bisect - ;; all the way down, but multiply ranges of integers close to each - ;; other directly. - ;; - ;; For even better results it should be possible to use prime - ;; factorization magic, but Nikodemus ran out of steam. - ;; - ;; KLUDGE: We support factorials of bignums, but it seems quite - ;; unlikely anyone would ever be able to use them on a modern lisp, - ;; since the resulting numbers are unlikely to fit in memory... but - ;; it would be extremely unelegant to define FACTORIAL only on - ;; fixnums, _and_ on lisps with 16 bit fixnums this can actually be - ;; needed. - (labels ((bisect (j k) - (declare (type (integer 1 #.most-positive-fixnum) j k)) - (if (< (- k j) +factorial-bisection-range-limit+) - (multiply-range j k) - (let ((middle (+ j (truncate (- k j) 2)))) - (* (bisect j middle) - (bisect (+ middle 1) k))))) - (bisect-big (j k) - (declare (type (integer 1) j k)) - (if (= j k) - j - (let ((middle (+ j (truncate (- k j) 2)))) - (* (if (<= middle most-positive-fixnum) - (bisect j middle) - (bisect-big j middle)) - (bisect-big (+ middle 1) k))))) - (multiply-range (j k) - (declare (type (integer 1 #.most-positive-fixnum) j k)) - (do ((f k (* f m)) - (m (1- k) (1- m))) - ((< m j) f) - (declare (type (integer 0 (#.most-positive-fixnum)) m) - (type unsigned-byte f))))) - (if (and (typep i 'fixnum) (typep j 'fixnum)) - (bisect i j) - (bisect-big i j)))) - -(declaim (inline factorial)) -(defun %factorial (n) - (if (< n 2) - 1 - (%multiply-range 1 n))) - -(defun factorial (n) - "Factorial of non-negative integer N." - (check-type n (integer 0)) - (%factorial n)) - -;;;; Combinatorics - -(defun binomial-coefficient (n k) - "Binomial coefficient of N and K, also expressed as N choose K. This is the -number of K element combinations given N choises. N must be equal to or -greater then K." - (check-type n (integer 0)) - (check-type k (integer 0)) - (assert (>= n k)) - (if (or (zerop k) (= n k)) - 1 - (let ((n-k (- n k))) - ;; Swaps K and N-K if K < N-K because the algorithm - ;; below is faster for bigger K and smaller N-K - (when (< k n-k) - (rotatef k n-k)) - (if (= 1 n-k) - n - ;; General case, avoid computing the 1x...xK twice: - ;; - ;; N! 1x...xN (K+1)x...xN - ;; -------- = ---------------- = ------------, N>1 - ;; K!(N-K)! 1x...xK x (N-K)! (N-K)! - (/ (%multiply-range (+ k 1) n) - (%factorial n-k)))))) - -(defun subfactorial (n) - "Subfactorial of the non-negative integer N." - (check-type n (integer 0)) - (if (zerop n) - 1 - (do ((x 1 (1+ x)) - (a 0 (* x (+ a b))) - (b 1 a)) - ((= n x) a)))) - -(defun count-permutations (n &optional (k n)) - "Number of K element permutations for a sequence of N objects. -K defaults to N" - (check-type n (integer 0)) - (check-type k (integer 0)) - (assert (>= n k)) - (%multiply-range (1+ (- n k)) n)) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/package.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/package.lisp deleted file mode 100644 index d8fab65..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/package.lisp +++ /dev/null @@ -1,243 +0,0 @@ -(defpackage :alexandria - (:nicknames :alexandria.1.0.0 :alexandria-1) - (:use :cl) - #+sb-package-locks - (:lock t) - (:export - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; BLESSED - ;; - ;; Binding constructs - #:if-let - #:when-let - #:when-let* - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; REVIEW IN PROGRESS - ;; - ;; Control flow - ;; - ;; -- no clear consensus yet -- - #:cswitch - #:eswitch - #:switch - ;; -- problem free? -- - #:multiple-value-prog2 - #:nth-value-or - #:whichever - #:xor - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; REVIEW PENDING - ;; - ;; Definitions - #:define-constant - ;; Hash tables - #:alist-hash-table - #:copy-hash-table - #:ensure-gethash - #:hash-table-alist - #:hash-table-keys - #:hash-table-plist - #:hash-table-values - #:maphash-keys - #:maphash-values - #:plist-hash-table - ;; Functions - #:compose - #:conjoin - #:curry - #:disjoin - #:ensure-function - #:ensure-functionf - #:multiple-value-compose - #:named-lambda - #:rcurry - ;; Lists - #:alist-plist - #:appendf - #:nconcf - #:reversef - #:nreversef - #:circular-list - #:circular-list-p - #:circular-tree-p - #:doplist - #:ensure-car - #:ensure-cons - #:ensure-list - #:flatten - #:lastcar - #:make-circular-list - #:map-product - #:mappend - #:nunionf - #:plist-alist - #:proper-list - #:proper-list-length - #:proper-list-p - #:remove-from-plist - #:remove-from-plistf - #:delete-from-plist - #:delete-from-plistf - #:set-equal - #:setp - #:unionf - ;; Numbers - #:binomial-coefficient - #:clamp - #:count-permutations - #:factorial - #:gaussian-random - #:iota - #:lerp - #:map-iota - #:maxf - #:mean - #:median - #:minf - #:standard-deviation - #:subfactorial - #:variance - ;; Arrays - #:array-index - #:array-length - #:copy-array - ;; Sequences - #:copy-sequence - #:deletef - #:emptyp - #:ends-with - #:ends-with-subseq - #:extremum - #:first-elt - #:last-elt - #:length= - #:map-combinations - #:map-derangements - #:map-permutations - #:proper-sequence - #:random-elt - #:removef - #:rotate - #:sequence-of-length-p - #:shuffle - #:starts-with - #:starts-with-subseq - ;; Macros - #:once-only - #:parse-body - #:parse-ordinary-lambda-list - #:with-gensyms - #:with-unique-names - ;; Symbols - #:ensure-symbol - #:format-symbol - #:make-gensym - #:make-gensym-list - #:make-keyword - ;; Strings - #:string-designator - ;; Types - #:negative-double-float - #:negative-fixnum-p - #:negative-float - #:negative-float-p - #:negative-long-float - #:negative-long-float-p - #:negative-rational - #:negative-rational-p - #:negative-real - #:negative-single-float-p - #:non-negative-double-float - #:non-negative-double-float-p - #:non-negative-fixnum - #:non-negative-fixnum-p - #:non-negative-float - #:non-negative-float-p - #:non-negative-integer-p - #:non-negative-long-float - #:non-negative-rational - #:non-negative-real-p - #:non-negative-short-float-p - #:non-negative-single-float - #:non-negative-single-float-p - #:non-positive-double-float - #:non-positive-double-float-p - #:non-positive-fixnum - #:non-positive-fixnum-p - #:non-positive-float - #:non-positive-float-p - #:non-positive-integer - #:non-positive-rational - #:non-positive-real - #:non-positive-real-p - #:non-positive-short-float - #:non-positive-short-float-p - #:non-positive-single-float-p - #:positive-double-float - #:positive-double-float-p - #:positive-fixnum - #:positive-fixnum-p - #:positive-float - #:positive-float-p - #:positive-integer - #:positive-rational - #:positive-real - #:positive-real-p - #:positive-short-float - #:positive-short-float-p - #:positive-single-float - #:positive-single-float-p - #:coercef - #:negative-double-float-p - #:negative-fixnum - #:negative-integer - #:negative-integer-p - #:negative-real-p - #:negative-short-float - #:negative-short-float-p - #:negative-single-float - #:non-negative-integer - #:non-negative-long-float-p - #:non-negative-rational-p - #:non-negative-real - #:non-negative-short-float - #:non-positive-integer-p - #:non-positive-long-float - #:non-positive-long-float-p - #:non-positive-rational-p - #:non-positive-single-float - #:of-type - #:positive-integer-p - #:positive-long-float - #:positive-long-float-p - #:positive-rational-p - #:type= - ;; Conditions - #:required-argument - #:ignore-some-conditions - #:simple-style-warning - #:simple-reader-error - #:simple-parse-error - #:simple-program-error - #:unwind-protect-case - ;; Features - #:featurep - ;; io - #:with-input-from-file - #:with-output-to-file - #:read-stream-content-into-string - #:read-file-into-string - #:write-string-into-file - #:read-stream-content-into-byte-vector - #:read-file-into-byte-vector - #:write-byte-vector-into-file - #:copy-stream - #:copy-file - ;; new additions collected at the end (subject to removal or further changes) - #:symbolicate - #:assoc-value - #:rassoc-value - #:destructuring-case - #:destructuring-ccase - #:destructuring-ecase - )) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/sequences.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/sequences.lisp deleted file mode 100644 index a89c39b..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/sequences.lisp +++ /dev/null @@ -1,564 +0,0 @@ -(in-package :alexandria) - -;; Make these inlinable by declaiming them INLINE here and some of them -;; NOTINLINE at the end of the file. Exclude functions that have a compiler -;; macro, because NOTINLINE is required to prevent compiler-macro expansion. -(declaim (inline copy-sequence sequence-of-length-p)) - -(defun sequence-of-length-p (sequence length) - "Return true if SEQUENCE is a sequence of length LENGTH. Signals an error if -SEQUENCE is not a sequence. Returns FALSE for circular lists." - (declare (type array-index length) - #-lispworks (inline length) - (optimize speed)) - (etypecase sequence - (null - (zerop length)) - (cons - (let ((n (1- length))) - (unless (minusp n) - (let ((tail (nthcdr n sequence))) - (and tail - (null (cdr tail))))))) - (vector - (= length (length sequence))) - (sequence - (= length (length sequence))))) - -(defun rotate-tail-to-head (sequence n) - (declare (type (integer 1) n)) - (if (listp sequence) - (let ((m (mod n (proper-list-length sequence)))) - (if (null (cdr sequence)) - sequence - (let* ((tail (last sequence (+ m 1))) - (last (cdr tail))) - (setf (cdr tail) nil) - (nconc last sequence)))) - (let* ((len (length sequence)) - (m (mod n len)) - (tail (subseq sequence (- len m)))) - (replace sequence sequence :start1 m :start2 0) - (replace sequence tail) - sequence))) - -(defun rotate-head-to-tail (sequence n) - (declare (type (integer 1) n)) - (if (listp sequence) - (let ((m (mod (1- n) (proper-list-length sequence)))) - (if (null (cdr sequence)) - sequence - (let* ((headtail (nthcdr m sequence)) - (tail (cdr headtail))) - (setf (cdr headtail) nil) - (nconc tail sequence)))) - (let* ((len (length sequence)) - (m (mod n len)) - (head (subseq sequence 0 m))) - (replace sequence sequence :start1 0 :start2 m) - (replace sequence head :start1 (- len m)) - sequence))) - -(defun rotate (sequence &optional (n 1)) - "Returns a sequence of the same type as SEQUENCE, with the elements of -SEQUENCE rotated by N: N elements are moved from the end of the sequence to -the front if N is positive, and -N elements moved from the front to the end if -N is negative. SEQUENCE must be a proper sequence. N must be an integer, -defaulting to 1. - -If absolute value of N is greater then the length of the sequence, the results -are identical to calling ROTATE with - - (* (signum n) (mod n (length sequence))). - -Note: the original sequence may be destructively altered, and result sequence may -share structure with it." - (if (plusp n) - (rotate-tail-to-head sequence n) - (if (minusp n) - (rotate-head-to-tail sequence (- n)) - sequence))) - -(defun shuffle (sequence &key (start 0) end) - "Returns a random permutation of SEQUENCE bounded by START and END. -Original sequence may be destructively modified. -Signals an error if SEQUENCE is not a proper sequence." - (declare (type fixnum start) - (type (or fixnum null) end)) - (etypecase sequence - (list - (let* ((end (or end (proper-list-length sequence))) - (n (- end start)) - (sublist (nthcdr start sequence)) - (small-enough-threshold 100)) - ;; It's fine to use a pure list shuffle if the number of items - ;; to shuffle is small enough, but otherwise it's more - ;; time-efficient to create an intermediate vector to work on. - ;; I picked the threshold based on rudimentary benchmarks on my - ;; machine, where both branches take about the same time. - (if (< n small-enough-threshold) - (do ((tail sublist (cdr tail))) - ((zerop n)) - (rotatef (car tail) (car (nthcdr (random n) tail))) - (decf n)) - (let ((intermediate-vector (replace (make-array n) sublist))) - (replace sublist (shuffle intermediate-vector)))))) - (vector - (let ((end (or end (length sequence)))) - (loop for i from start below end - do (rotatef (aref sequence i) - (aref sequence (+ i (random (- end i)))))))) - (sequence - (let ((end (or end (length sequence)))) - (loop for i from (- end 1) downto start - do (rotatef (elt sequence i) - (elt sequence (+ i (random (- end i))))))))) - sequence) - -(defun random-elt (sequence &key (start 0) end) - "Returns a random element from SEQUENCE bounded by START and END. Signals an -error if the SEQUENCE is not a proper non-empty sequence, or if END and START -are not proper bounding index designators for SEQUENCE." - (declare (sequence sequence) (fixnum start) (type (or fixnum null) end)) - (let* ((size (if (listp sequence) - (proper-list-length sequence) - (length sequence))) - (end2 (or end size))) - (cond ((zerop size) - (error 'type-error - :datum sequence - :expected-type `(and sequence (not (satisfies emptyp))))) - ((not (and (<= 0 start) (< start end2) (<= end2 size))) - (error 'simple-type-error - :datum (cons start end) - :expected-type `(cons (integer 0 (,end2)) - (or null (integer (,start) ,size))) - :format-control "~@<~S and ~S are not valid bounding index designators for ~ - a sequence of length ~S.~:@>" - :format-arguments (list start end size))) - (t - (let ((index (+ start (random (- end2 start))))) - (elt sequence index)))))) - -(declaim (inline remove/swapped-arguments)) -(defun remove/swapped-arguments (sequence item &rest keyword-arguments) - (apply #'remove item sequence keyword-arguments)) - -(define-modify-macro removef (item &rest keyword-arguments) - remove/swapped-arguments - "Modify-macro for REMOVE. Sets place designated by the first argument to -the result of calling REMOVE with ITEM, place, and the KEYWORD-ARGUMENTS.") - -(declaim (inline delete/swapped-arguments)) -(defun delete/swapped-arguments (sequence item &rest keyword-arguments) - (apply #'delete item sequence keyword-arguments)) - -(define-modify-macro deletef (item &rest keyword-arguments) - delete/swapped-arguments - "Modify-macro for DELETE. Sets place designated by the first argument to -the result of calling DELETE with ITEM, place, and the KEYWORD-ARGUMENTS.") - -(deftype proper-sequence () - "Type designator for proper sequences, that is proper lists and sequences -that are not lists." - `(or proper-list - (and (not list) sequence))) - -(eval-when (:compile-toplevel :load-toplevel :execute) - (when (and (find-package '#:sequence) - (find-symbol (string '#:emptyp) '#:sequence)) - (pushnew 'sequence-emptyp *features*))) - -#-alexandria::sequence-emptyp -(defun emptyp (sequence) - "Returns true if SEQUENCE is an empty sequence. Signals an error if SEQUENCE -is not a sequence." - (etypecase sequence - (list (null sequence)) - (sequence (zerop (length sequence))))) - -#+alexandria::sequence-emptyp -(declaim (ftype (function (sequence) (values boolean &optional)) emptyp)) -#+alexandria::sequence-emptyp -(setf (symbol-function 'emptyp) (symbol-function 'sequence:emptyp)) -#+alexandria::sequence-emptyp -(define-compiler-macro emptyp (sequence) - `(sequence:emptyp ,sequence)) - -(defun length= (&rest sequences) - "Takes any number of sequences or integers in any order. Returns true iff -the length of all the sequences and the integers are equal. Hint: there's a -compiler macro that expands into more efficient code if the first argument -is a literal integer." - (declare (dynamic-extent sequences) - (inline sequence-of-length-p) - (optimize speed)) - (unless (cdr sequences) - (error "You must call LENGTH= with at least two arguments")) - ;; There's room for optimization here: multiple list arguments could be - ;; traversed in parallel. - (let* ((first (pop sequences)) - (current (if (integerp first) - first - (length first)))) - (declare (type array-index current)) - (dolist (el sequences) - (if (integerp el) - (unless (= el current) - (return-from length= nil)) - (unless (sequence-of-length-p el current) - (return-from length= nil))))) - t) - -(define-compiler-macro length= (&whole form length &rest sequences) - (cond - ((zerop (length sequences)) - form) - (t - (let ((optimizedp (integerp length))) - (with-unique-names (tmp current) - (declare (ignorable current)) - `(locally - (declare (inline sequence-of-length-p)) - (let ((,tmp) - ,@(unless optimizedp - `((,current ,length)))) - ,@(unless optimizedp - `((unless (integerp ,current) - (setf ,current (length ,current))))) - (and - ,@(loop - :for sequence :in sequences - :collect `(progn - (setf ,tmp ,sequence) - (if (integerp ,tmp) - (= ,tmp ,(if optimizedp - length - current)) - (sequence-of-length-p ,tmp ,(if optimizedp - length - current))))))))))))) - -(defun copy-sequence (type sequence) - "Returns a fresh sequence of TYPE, which has the same elements as -SEQUENCE." - (if (typep sequence type) - (copy-seq sequence) - (coerce sequence type))) - -(defun first-elt (sequence) - "Returns the first element of SEQUENCE. Signals a type-error if SEQUENCE is -not a sequence, or is an empty sequence." - ;; Can't just directly use ELT, as it is not guaranteed to signal the - ;; type-error. - (cond ((consp sequence) - (car sequence)) - ((and (typep sequence 'sequence) (not (emptyp sequence))) - (elt sequence 0)) - (t - (error 'type-error - :datum sequence - :expected-type '(and sequence (not (satisfies emptyp))))))) - -(defun (setf first-elt) (object sequence) - "Sets the first element of SEQUENCE. Signals a type-error if SEQUENCE is -not a sequence, is an empty sequence, or if OBJECT cannot be stored in SEQUENCE." - ;; Can't just directly use ELT, as it is not guaranteed to signal the - ;; type-error. - (cond ((consp sequence) - (setf (car sequence) object)) - ((and (typep sequence 'sequence) (not (emptyp sequence))) - (setf (elt sequence 0) object)) - (t - (error 'type-error - :datum sequence - :expected-type '(and sequence (not (satisfies emptyp))))))) - -(defun last-elt (sequence) - "Returns the last element of SEQUENCE. Signals a type-error if SEQUENCE is -not a proper sequence, or is an empty sequence." - ;; Can't just directly use ELT, as it is not guaranteed to signal the - ;; type-error. - (let ((len 0)) - (cond ((consp sequence) - (lastcar sequence)) - ((and (typep sequence '(and sequence (not list))) (plusp (setf len (length sequence)))) - (elt sequence (1- len))) - (t - (error 'type-error - :datum sequence - :expected-type '(and proper-sequence (not (satisfies emptyp)))))))) - -(defun (setf last-elt) (object sequence) - "Sets the last element of SEQUENCE. Signals a type-error if SEQUENCE is not a proper -sequence, is an empty sequence, or if OBJECT cannot be stored in SEQUENCE." - (let ((len 0)) - (cond ((consp sequence) - (setf (lastcar sequence) object)) - ((and (typep sequence '(and sequence (not list))) (plusp (setf len (length sequence)))) - (setf (elt sequence (1- len)) object)) - (t - (error 'type-error - :datum sequence - :expected-type '(and proper-sequence (not (satisfies emptyp)))))))) - -(defun starts-with-subseq (prefix sequence &rest args - &key - (return-suffix nil return-suffix-supplied-p) - &allow-other-keys) - "Test whether the first elements of SEQUENCE are the same (as per TEST) as the elements of PREFIX. - -If RETURN-SUFFIX is T the function returns, as a second value, a -sub-sequence or displaced array pointing to the sequence after PREFIX." - (declare (dynamic-extent args)) - (let ((sequence-length (length sequence)) - (prefix-length (length prefix))) - (when (< sequence-length prefix-length) - (return-from starts-with-subseq (values nil nil))) - (flet ((make-suffix (start) - (when return-suffix - (cond - ((not (arrayp sequence)) - (if start - (subseq sequence start) - (subseq sequence 0 0))) - ((not start) - (make-array 0 - :element-type (array-element-type sequence) - :adjustable nil)) - (t - (make-array (- sequence-length start) - :element-type (array-element-type sequence) - :displaced-to sequence - :displaced-index-offset start - :adjustable nil)))))) - (let ((mismatch (apply #'mismatch prefix sequence - (if return-suffix-supplied-p - (remove-from-plist args :return-suffix) - args)))) - (cond - ((not mismatch) - (values t (make-suffix nil))) - ((= mismatch prefix-length) - (values t (make-suffix mismatch))) - (t - (values nil nil))))))) - -(defun ends-with-subseq (suffix sequence &key (test #'eql)) - "Test whether SEQUENCE ends with SUFFIX. In other words: return true if -the last (length SUFFIX) elements of SEQUENCE are equal to SUFFIX." - (let ((sequence-length (length sequence)) - (suffix-length (length suffix))) - (when (< sequence-length suffix-length) - ;; if SEQUENCE is shorter than SUFFIX, then SEQUENCE can't end with SUFFIX. - (return-from ends-with-subseq nil)) - (loop for sequence-index from (- sequence-length suffix-length) below sequence-length - for suffix-index from 0 below suffix-length - when (not (funcall test (elt sequence sequence-index) (elt suffix suffix-index))) - do (return-from ends-with-subseq nil) - finally (return t)))) - -(defun starts-with (object sequence &key (test #'eql) (key #'identity)) - "Returns true if SEQUENCE is a sequence whose first element is EQL to OBJECT. -Returns NIL if the SEQUENCE is not a sequence or is an empty sequence." - (let ((first-elt (typecase sequence - (cons (car sequence)) - (sequence - (if (emptyp sequence) - (return-from starts-with nil) - (elt sequence 0))) - (t - (return-from starts-with nil))))) - (funcall test (funcall key first-elt) object))) - -(defun ends-with (object sequence &key (test #'eql) (key #'identity)) - "Returns true if SEQUENCE is a sequence whose last element is EQL to OBJECT. -Returns NIL if the SEQUENCE is not a sequence or is an empty sequence. Signals -an error if SEQUENCE is an improper list." - (let ((last-elt (typecase sequence - (cons - (lastcar sequence)) ; signals for improper lists - (sequence - ;; Can't use last-elt, as that signals an error - ;; for empty sequences - (let ((len (length sequence))) - (if (plusp len) - (elt sequence (1- len)) - (return-from ends-with nil)))) - (t - (return-from ends-with nil))))) - (funcall test (funcall key last-elt) object))) - -(defun map-combinations (function sequence &key (start 0) end length (copy t)) - "Calls FUNCTION with each combination of LENGTH constructable from the -elements of the subsequence of SEQUENCE delimited by START and END. START -defaults to 0, END to length of SEQUENCE, and LENGTH to the length of the -delimited subsequence. (So unless LENGTH is specified there is only a single -combination, which has the same elements as the delimited subsequence.) If -COPY is true (the default) each combination is freshly allocated. If COPY is -false all combinations are EQ to each other, in which case consequences are -unspecified if a combination is modified by FUNCTION." - (let* ((end (or end (length sequence))) - (size (- end start)) - (length (or length size)) - (combination (subseq sequence 0 length)) - (function (ensure-function function))) - (if (= length size) - (funcall function combination) - (flet ((call () - (funcall function (if copy - (copy-seq combination) - combination)))) - (etypecase sequence - ;; When dealing with lists we prefer walking back and - ;; forth instead of using indexes. - (list - (labels ((combine-list (c-tail o-tail) - (if (not c-tail) - (call) - (do ((tail o-tail (cdr tail))) - ((not tail)) - (setf (car c-tail) (car tail)) - (combine-list (cdr c-tail) (cdr tail)))))) - (combine-list combination (nthcdr start sequence)))) - (vector - (labels ((combine (count start) - (if (zerop count) - (call) - (loop for i from start below end - do (let ((j (- count 1))) - (setf (aref combination j) (aref sequence i)) - (combine j (+ i 1))))))) - (combine length start))) - (sequence - (labels ((combine (count start) - (if (zerop count) - (call) - (loop for i from start below end - do (let ((j (- count 1))) - (setf (elt combination j) (elt sequence i)) - (combine j (+ i 1))))))) - (combine length start))))))) - sequence) - -(defun map-permutations (function sequence &key (start 0) end length (copy t)) - "Calls function with each permutation of LENGTH constructable -from the subsequence of SEQUENCE delimited by START and END. START -defaults to 0, END to length of the sequence, and LENGTH to the -length of the delimited subsequence." - (let* ((end (or end (length sequence))) - (size (- end start)) - (length (or length size))) - (labels ((permute (seq n) - (let ((n-1 (- n 1))) - (if (zerop n-1) - (funcall function (if copy - (copy-seq seq) - seq)) - (loop for i from 0 upto n-1 - do (permute seq n-1) - (if (evenp n-1) - (rotatef (elt seq 0) (elt seq n-1)) - (rotatef (elt seq i) (elt seq n-1))))))) - (permute-sequence (seq) - (permute seq length))) - (if (= length size) - ;; Things are simple if we need to just permute the - ;; full START-END range. - (permute-sequence (subseq sequence start end)) - ;; Otherwise we need to generate all the combinations - ;; of LENGTH in the START-END range, and then permute - ;; a copy of the result: can't permute the combination - ;; directly, as they share structure with each other. - (let ((permutation (subseq sequence 0 length))) - (flet ((permute-combination (combination) - (permute-sequence (replace permutation combination)))) - (declare (dynamic-extent #'permute-combination)) - (map-combinations #'permute-combination sequence - :start start - :end end - :length length - :copy nil))))))) - -(defun map-derangements (function sequence &key (start 0) end (copy t)) - "Calls FUNCTION with each derangement of the subsequence of SEQUENCE denoted -by the bounding index designators START and END. Derangement is a permutation -of the sequence where no element remains in place. SEQUENCE is not modified, -but individual derangements are EQ to each other. Consequences are unspecified -if calling FUNCTION modifies either the derangement or SEQUENCE." - (let* ((end (or end (length sequence))) - (size (- end start)) - ;; We don't really care about the elements here. - (derangement (subseq sequence 0 size)) - ;; Bitvector that has 1 for elements that have been deranged. - (mask (make-array size :element-type 'bit :initial-element 0))) - (declare (dynamic-extent mask)) - ;; ad hoc algorith - (labels ((derange (place n) - ;; Perform one recursive step in deranging the - ;; sequence: PLACE is index of the original sequence - ;; to derange to another index, and N is the number of - ;; indexes not yet deranged. - (if (zerop n) - (funcall function (if copy - (copy-seq derangement) - derangement)) - ;; Itarate over the indexes I of the subsequence to - ;; derange: if I != PLACE and I has not yet been - ;; deranged by an earlier call put the element from - ;; PLACE to I, mark I as deranged, and recurse, - ;; finally removing the mark. - (loop for i from 0 below size - do - (unless (or (= place (+ i start)) (not (zerop (bit mask i)))) - (setf (elt derangement i) (elt sequence place) - (bit mask i) 1) - (derange (1+ place) (1- n)) - (setf (bit mask i) 0)))))) - (derange start size) - sequence))) - -(declaim (notinline sequence-of-length-p)) - -(defun extremum (sequence predicate &key key (start 0) end) - "Returns the element of SEQUENCE that would appear first if the subsequence -bounded by START and END was sorted using PREDICATE and KEY. - -EXTREMUM determines the relationship between two elements of SEQUENCE by using -the PREDICATE function. PREDICATE should return true if and only if the first -argument is strictly less than the second one (in some appropriate sense). Two -arguments X and Y are considered to be equal if (FUNCALL PREDICATE X Y) -and (FUNCALL PREDICATE Y X) are both false. - -The arguments to the PREDICATE function are computed from elements of SEQUENCE -using the KEY function, if supplied. If KEY is not supplied or is NIL, the -sequence element itself is used. - -If SEQUENCE is empty, NIL is returned." - (let* ((pred-fun (ensure-function predicate)) - (key-fun (unless (or (not key) (eq key 'identity) (eq key #'identity)) - (ensure-function key))) - (real-end (or end (length sequence)))) - (cond ((> real-end start) - (if key-fun - (flet ((reduce-keys (a b) - (if (funcall pred-fun - (funcall key-fun a) - (funcall key-fun b)) - a - b))) - (declare (dynamic-extent #'reduce-keys)) - (reduce #'reduce-keys sequence :start start :end real-end)) - (flet ((reduce-elts (a b) - (if (funcall pred-fun a b) - a - b))) - (declare (dynamic-extent #'reduce-elts)) - (reduce #'reduce-elts sequence :start start :end real-end)))) - ((= real-end start) - nil) - (t - (error "Invalid bounding indexes for sequence of length ~S: ~S ~S, ~S ~S" - (length sequence) - :start start - :end end))))) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/strings.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/strings.lisp deleted file mode 100644 index e9fd91c..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/strings.lisp +++ /dev/null @@ -1,6 +0,0 @@ -(in-package :alexandria) - -(deftype string-designator () - "A string designator type. A string designator is either a string, a symbol, -or a character." - `(or symbol string character)) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/symbols.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/symbols.lisp deleted file mode 100644 index 5733d3e..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/symbols.lisp +++ /dev/null @@ -1,65 +0,0 @@ -(in-package :alexandria) - -(declaim (inline ensure-symbol)) -(defun ensure-symbol (name &optional (package *package*)) - "Returns a symbol with name designated by NAME, accessible in package -designated by PACKAGE. If symbol is not already accessible in PACKAGE, it is -interned there. Returns a secondary value reflecting the status of the symbol -in the package, which matches the secondary return value of INTERN. - -Example: - - (ensure-symbol :cons :cl) => cl:cons, :external -" - (intern (string name) package)) - -(defun maybe-intern (name package) - (values - (if package - (intern name (if (eq t package) *package* package)) - (make-symbol name)))) - -(declaim (inline format-symbol)) -(defun format-symbol (package control &rest arguments) - "Constructs a string by applying ARGUMENTS to string designator CONTROL as -if by FORMAT within WITH-STANDARD-IO-SYNTAX, and then creates a symbol named -by that string. - -If PACKAGE is NIL, returns an uninterned symbol, if package is T, returns a -symbol interned in the current package, and otherwise returns a symbol -interned in the package designated by PACKAGE." - (maybe-intern (with-standard-io-syntax - (apply #'format nil (string control) arguments)) - package)) - -(defun make-keyword (name) - "Interns the string designated by NAME in the KEYWORD package." - (intern (string name) :keyword)) - -(defun make-gensym (name) - "If NAME is a non-negative integer, calls GENSYM using it. Otherwise NAME -must be a string designator, in which case calls GENSYM using the designated -string as the argument." - (gensym (if (typep name '(integer 0)) - name - (string name)))) - -(defun make-gensym-list (length &optional (x "G")) - "Returns a list of LENGTH gensyms, each generated as if with a call to MAKE-GENSYM, -using the second (optional, defaulting to \"G\") argument." - (let ((g (if (typep x '(integer 0)) x (string x)))) - (loop repeat length - collect (gensym g)))) - -(defun symbolicate (&rest things) - "Concatenate together the names of some strings and symbols, -producing a symbol in the current package." - (let* ((length (reduce #'+ things - :key (lambda (x) (length (string x))))) - (name (make-array length :element-type 'character))) - (let ((index 0)) - (dolist (thing things (values (intern name))) - (let* ((x (string thing)) - (len (length x))) - (replace name x :start1 index) - (incf index len)))))) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/tests.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/tests.lisp deleted file mode 100644 index 3c85d44..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/tests.lisp +++ /dev/null @@ -1,2075 +0,0 @@ -(in-package :cl-user) - -(defpackage :alexandria/tests - (:use :cl :alexandria #+sbcl :sb-rt #-sbcl :rtest) - (:import-from #+sbcl :sb-rt #-sbcl :rtest - #:*compile-tests* #:*expected-failures*)) - -(in-package :alexandria/tests) - -(defun run-tests (&key ((:compiled *compile-tests*))) - (do-tests)) - -(defun hash-table-test-name (name) - ;; Workaround for Clisp calling EQL in a hash-table FASTHASH-EQL. - (hash-table-test (make-hash-table :test name))) - -;;;; Arrays - -(deftest copy-array.1 - (let* ((orig (vector 1 2 3)) - (copy (copy-array orig))) - (values (eq orig copy) (equalp orig copy))) - nil t) - -(deftest copy-array.2 - (let ((orig (make-array 1024 :fill-pointer 0 :initial-element nil))) - (vector-push-extend 1 orig) - (vector-push-extend 2 orig) - (vector-push-extend 3 orig) - (let ((copy (copy-array orig))) - (values (eq orig copy) (equalp orig copy) - (array-has-fill-pointer-p copy) - (eql (fill-pointer orig) (fill-pointer copy))))) - nil t t t) - -(deftest copy-array.3 - (let* ((orig (vector 1 2 3)) - (copy (copy-array orig))) - (typep copy 'simple-array)) - t) - -(deftest copy-array.4 - (let ((orig (make-array 21 - :adjustable t - :fill-pointer 0))) - (dotimes (n 42) - (vector-push-extend n orig)) - (let ((copy (copy-array orig - :adjustable nil - :fill-pointer nil))) - (typep copy 'simple-array))) - t) - -(deftest array-index.1 - (typep 0 'array-index) - t) - -;;;; Conditions - -(deftest unwind-protect-case.1 - (let (result) - (unwind-protect-case () - (random 10) - (:normal (push :normal result)) - (:abort (push :abort result)) - (:always (push :always result))) - result) - (:always :normal)) - -(deftest unwind-protect-case.2 - (let (result) - (unwind-protect-case () - (random 10) - (:always (push :always result)) - (:normal (push :normal result)) - (:abort (push :abort result))) - result) - (:normal :always)) - -(deftest unwind-protect-case.3 - (let (result1 result2 result3) - (ignore-errors - (unwind-protect-case () - (error "FOOF!") - (:normal (push :normal result1)) - (:abort (push :abort result1)) - (:always (push :always result1)))) - (catch 'foof - (unwind-protect-case () - (throw 'foof 42) - (:normal (push :normal result2)) - (:abort (push :abort result2)) - (:always (push :always result2)))) - (block foof - (unwind-protect-case () - (return-from foof 42) - (:normal (push :normal result3)) - (:abort (push :abort result3)) - (:always (push :always result3)))) - (values result1 result2 result3)) - (:always :abort) - (:always :abort) - (:always :abort)) - -(deftest unwind-protect-case.4 - (let (result) - (unwind-protect-case (aborted-p) - (random 42) - (:always (setq result aborted-p))) - result) - nil) - -(deftest unwind-protect-case.5 - (let (result) - (block foof - (unwind-protect-case (aborted-p) - (return-from foof) - (:always (setq result aborted-p)))) - result) - t) - -;;;; Control flow - -(deftest switch.1 - (switch (13 :test =) - (12 :oops) - (13.0 :yay)) - :yay) - -(deftest switch.2 - (switch (13) - ((+ 12 2) :oops) - ((- 13 1) :oops2) - (t :yay)) - :yay) - -(deftest eswitch.1 - (let ((x 13)) - (eswitch (x :test =) - (12 :oops) - (13.0 :yay))) - :yay) - -(deftest eswitch.2 - (let ((x 13)) - (eswitch (x :key 1+) - (11 :oops) - (14 :yay))) - :yay) - -(deftest cswitch.1 - (cswitch (13 :test =) - (12 :oops) - (13.0 :yay)) - :yay) - -(deftest cswitch.2 - (cswitch (13 :key 1-) - (12 :yay) - (13.0 :oops)) - :yay) - -(deftest multiple-value-prog2.1 - (multiple-value-prog2 - (values 1 1 1) - (values 2 20 200) - (values 3 3 3)) - 2 20 200) - -(deftest nth-value-or.1 - (multiple-value-bind (a b c) - (nth-value-or 1 - (values 1 nil 1) - (values 2 2 2)) - (= a b c 2)) - t) - -(deftest whichever.1 - (let ((x (whichever 1 2 3))) - (and (member x '(1 2 3)) t)) - t) - -(deftest whichever.2 - (let* ((a 1) - (b 2) - (c 3) - (x (whichever a b c))) - (and (member x '(1 2 3)) t)) - t) - -;; https://gitlab.common-lisp.net/alexandria/alexandria/issues/13 -(deftest whichever.3 - (multiple-value-bind (code warnings?) - (compile nil `(lambda (x) - (whichever (1+ x)))) - (and (not warnings?) - (= 6 (funcall code 5)))) - t) - -(deftest xor.1 - (xor nil nil 1 nil) - 1 - t) - -(deftest xor.2 - (xor nil nil 1 2) - nil - nil) - -(deftest xor.3 - (xor nil nil nil) - nil - t) - -;;;; Definitions - -(deftest define-constant.1 - (let ((name (gensym))) - (eval `(define-constant ,name "FOO" :test 'equal)) - (eval `(define-constant ,name "FOO" :test 'equal)) - (values (equal "FOO" (symbol-value name)) - (constantp name))) - t - t) - -(deftest define-constant.2 - (let ((name (gensym))) - (eval `(define-constant ,name 13)) - (eval `(define-constant ,name 13)) - (values (eql 13 (symbol-value name)) - (constantp name))) - t - t) - -;;;; Errors - -;;; TYPEP is specified to return a generalized boolean and, for -;;; example, ECL exploits this by returning the superclasses of ERROR -;;; in this case. -(defun errorp (x) - (not (null (typep x 'error)))) - -(deftest required-argument.1 - (multiple-value-bind (res err) - (ignore-errors (required-argument)) - (errorp err)) - t) - -;;;; Hash tables - -(deftest ensure-gethash.1 - (let ((table (make-hash-table)) - (x (list 1))) - (multiple-value-bind (value already-there) - (ensure-gethash x table 42) - (and (= value 42) - (not already-there) - (= 42 (gethash x table)) - (multiple-value-bind (value2 already-there2) - (ensure-gethash x table 13) - (and (= value2 42) - already-there2 - (= 42 (gethash x table))))))) - t) - -(deftest ensure-gethash.2 - (let ((table (make-hash-table)) - (count 0)) - (multiple-value-call #'values - (ensure-gethash (progn (incf count) :foo) - (progn (incf count) table) - (progn (incf count) :bar)) - (gethash :foo table) - count)) - :bar nil :bar t 3) - -(deftest copy-hash-table.1 - (let ((orig (make-hash-table :test 'eq :size 123)) - (foo "foo")) - (setf (gethash orig orig) t - (gethash foo orig) t) - (let ((eq-copy (copy-hash-table orig)) - (eql-copy (copy-hash-table orig :test 'eql)) - (equal-copy (copy-hash-table orig :test 'equal)) - (equalp-copy (copy-hash-table orig :test 'equalp))) - (list (eql (hash-table-size eq-copy) (hash-table-size orig)) - (eql (hash-table-rehash-size eq-copy) - (hash-table-rehash-size orig)) - (hash-table-count eql-copy) - (gethash orig eq-copy) - (gethash (copy-seq foo) eql-copy) - (gethash foo eql-copy) - (gethash (copy-seq foo) equal-copy) - (gethash "FOO" equal-copy) - (gethash "FOO" equalp-copy)))) - (t t 2 t nil t t nil t)) - -(deftest copy-hash-table.2 - (let ((ht (make-hash-table)) - (list (list :list (vector :A :B :C)))) - (setf (gethash 'list ht) list) - (let* ((shallow-copy (copy-hash-table ht)) - (deep1-copy (copy-hash-table ht :key 'copy-list)) - (list (gethash 'list ht)) - (shallow-list (gethash 'list shallow-copy)) - (deep1-list (gethash 'list deep1-copy))) - (list (eq ht shallow-copy) - (eq ht deep1-copy) - (eq list shallow-list) - (eq list deep1-list) ; outer list was copied. - (eq (second list) (second shallow-list)) - (eq (second list) (second deep1-list)) ; inner vector wasn't copied. - ))) - (nil nil t nil t t)) - -(deftest maphash-keys.1 - (let ((keys nil) - (table (make-hash-table))) - (declare (notinline maphash-keys)) - (dotimes (i 10) - (setf (gethash i table) t)) - (maphash-keys (lambda (k) (push k keys)) table) - (set-equal keys '(0 1 2 3 4 5 6 7 8 9))) - t) - -(deftest maphash-values.1 - (let ((vals nil) - (table (make-hash-table))) - (declare (notinline maphash-values)) - (dotimes (i 10) - (setf (gethash i table) (- i))) - (maphash-values (lambda (v) (push v vals)) table) - (set-equal vals '(0 -1 -2 -3 -4 -5 -6 -7 -8 -9))) - t) - -(deftest hash-table-keys.1 - (let ((table (make-hash-table))) - (dotimes (i 10) - (setf (gethash i table) t)) - (set-equal (hash-table-keys table) '(0 1 2 3 4 5 6 7 8 9))) - t) - -(deftest hash-table-values.1 - (let ((table (make-hash-table))) - (dotimes (i 10) - (setf (gethash (gensym) table) i)) - (set-equal (hash-table-values table) '(0 1 2 3 4 5 6 7 8 9))) - t) - -(deftest hash-table-alist.1 - (let ((table (make-hash-table))) - (dotimes (i 10) - (setf (gethash i table) (- i))) - (let ((alist (hash-table-alist table))) - (list (length alist) - (assoc 0 alist) - (assoc 3 alist) - (assoc 9 alist) - (assoc nil alist)))) - (10 (0 . 0) (3 . -3) (9 . -9) nil)) - -(deftest hash-table-plist.1 - (let ((table (make-hash-table))) - (dotimes (i 10) - (setf (gethash i table) (- i))) - (let ((plist (hash-table-plist table))) - (list (length plist) - (getf plist 0) - (getf plist 2) - (getf plist 7) - (getf plist nil)))) - (20 0 -2 -7 nil)) - -(deftest alist-hash-table.1 - (let* ((alist '((0 a) (1 b) (2 c))) - (table (alist-hash-table alist))) - (list (hash-table-count table) - (gethash 0 table) - (gethash 1 table) - (gethash 2 table) - (eq (hash-table-test-name 'eql) - (hash-table-test table)))) - (3 (a) (b) (c) t)) - -(deftest alist-hash-table.duplicate-keys - (let* ((alist '((0 a) (1 b) (0 c) (1 d) (2 e))) - (table (alist-hash-table alist))) - (list (hash-table-count table) - (gethash 0 table) - (gethash 1 table) - (gethash 2 table))) - (3 (a) (b) (e))) - -(deftest plist-hash-table.1 - (let* ((plist '(:a 1 :b 2 :c 3)) - (table (plist-hash-table plist :test 'eq))) - (list (hash-table-count table) - (gethash :a table) - (gethash :b table) - (gethash :c table) - (gethash 2 table) - (gethash nil table) - (eq (hash-table-test-name 'eq) - (hash-table-test table)))) - (3 1 2 3 nil nil t)) - -(deftest plist-hash-table.duplicate-keys - (let* ((plist '(:a 1 :b 2 :a 3 :b 4 :c 5)) - (table (plist-hash-table plist))) - (list (hash-table-count table) - (gethash :a table) - (gethash :b table) - (gethash :c table))) - (3 1 2 5)) - -;;;; Functions - -(deftest disjoin.1 - (let ((disjunction (disjoin (lambda (x) - (and (consp x) :cons)) - (lambda (x) - (and (stringp x) :string))))) - (list (funcall disjunction 'zot) - (funcall disjunction '(foo bar)) - (funcall disjunction "test"))) - (nil :cons :string)) - -(deftest disjoin.2 - (let ((disjunction (disjoin #'zerop))) - (list (funcall disjunction 0) - (funcall disjunction 1))) - (t nil)) - -(deftest conjoin.1 - (let ((conjunction (conjoin #'consp - (lambda (x) - (stringp (car x))) - (lambda (x) - (char (car x) 0))))) - (list (funcall conjunction 'zot) - (funcall conjunction '(foo)) - (funcall conjunction '("foo")))) - (nil nil #\f)) - -(deftest conjoin.2 - (let ((conjunction (conjoin #'zerop))) - (list (funcall conjunction 0) - (funcall conjunction 1))) - (t nil)) - -(deftest compose.1 - (let ((composite (compose '1+ - (lambda (x) - (* x 2)) - #'read-from-string))) - (funcall composite "1")) - 3) - -(deftest compose.2 - (let ((composite - (locally (declare (notinline compose)) - (compose '1+ - (lambda (x) - (* x 2)) - #'read-from-string)))) - (funcall composite "2")) - 5) - -(deftest compose.3 - (let ((compose-form (funcall (compiler-macro-function 'compose) - '(compose '1+ - (lambda (x) - (* x 2)) - #'read-from-string) - nil))) - (let ((fun (funcall (compile nil `(lambda () ,compose-form))))) - (funcall fun "3"))) - 7) - -(deftest compose.4 - (let ((composite (compose #'zerop))) - (list (funcall composite 0) - (funcall composite 1))) - (t nil)) - -(deftest multiple-value-compose.1 - (let ((composite (multiple-value-compose - #'truncate - (lambda (x y) - (values y x)) - (lambda (x) - (with-input-from-string (s x) - (values (read s) (read s))))))) - (multiple-value-list (funcall composite "2 7"))) - (3 1)) - -(deftest multiple-value-compose.2 - (let ((composite (locally (declare (notinline multiple-value-compose)) - (multiple-value-compose - #'truncate - (lambda (x y) - (values y x)) - (lambda (x) - (with-input-from-string (s x) - (values (read s) (read s)))))))) - (multiple-value-list (funcall composite "2 11"))) - (5 1)) - -(deftest multiple-value-compose.3 - (let ((compose-form (funcall (compiler-macro-function 'multiple-value-compose) - '(multiple-value-compose - #'truncate - (lambda (x y) - (values y x)) - (lambda (x) - (with-input-from-string (s x) - (values (read s) (read s))))) - nil))) - (let ((fun (funcall (compile nil `(lambda () ,compose-form))))) - (multiple-value-list (funcall fun "2 9")))) - (4 1)) - -(deftest multiple-value-compose.4 - (let ((composite (multiple-value-compose #'truncate))) - (multiple-value-list (funcall composite 9 2))) - (4 1)) - -(deftest curry.1 - (let ((curried (curry '+ 3))) - (funcall curried 1 5)) - 9) - -(deftest curry.2 - (let ((curried (locally (declare (notinline curry)) - (curry '* 2 3)))) - (funcall curried 7)) - 42) - -(deftest curry.3 - (let ((curried-form (funcall (compiler-macro-function 'curry) - '(curry '/ 8) - nil))) - (let ((fun (funcall (compile nil `(lambda () ,curried-form))))) - (funcall fun 2))) - 4) - -(deftest curry.4 - (let* ((x 1) - (curried (curry (progn - (incf x) - (lambda (y z) (* x y z))) - 3))) - (list (funcall curried 7) - (funcall curried 7) - x)) - (42 42 2)) - -(deftest rcurry.1 - (let ((r (rcurry '/ 2))) - (funcall r 8)) - 4) - -(deftest rcurry.2 - (let* ((x 1) - (curried (rcurry (progn - (incf x) - (lambda (y z) (* x y z))) - 3))) - (list (funcall curried 7) - (funcall curried 7) - x)) - (42 42 2)) - -(deftest named-lambda.1 - (let ((fac (named-lambda fac (x) - (if (> x 1) - (* x (fac (- x 1))) - x)))) - (funcall fac 5)) - 120) - -(deftest named-lambda.2 - (let ((fac (named-lambda fac (&key x) - (if (> x 1) - (* x (fac :x (- x 1))) - x)))) - (funcall fac :x 5)) - 120) - -;;;; Lists - -(deftest alist-plist.1 - (alist-plist '((a . 1) (b . 2) (c . 3))) - (a 1 b 2 c 3)) - -(deftest plist-alist.1 - (plist-alist '(a 1 b 2 c 3)) - ((a . 1) (b . 2) (c . 3))) - -(deftest unionf.1 - (let* ((list (list 1 2 3)) - (orig list)) - (unionf list (list 1 2 4)) - (values (equal orig (list 1 2 3)) - (eql (length list) 4) - (set-difference list (list 1 2 3 4)) - (set-difference (list 1 2 3 4) list))) - t - t - nil - nil) - -(deftest nunionf.1 - (let ((list (list 1 2 3))) - (nunionf list (list 1 2 4)) - (values (eql (length list) 4) - (set-difference (list 1 2 3 4) list) - (set-difference list (list 1 2 3 4)))) - t - nil - nil) - -(deftest appendf.1 - (let* ((list (list 1 2 3)) - (orig list)) - (appendf list '(4 5 6) '(7 8)) - (list list (eq list orig))) - ((1 2 3 4 5 6 7 8) nil)) - -(deftest nconcf.1 - (let ((list1 (list 1 2 3)) - (list2 (list 4 5 6))) - (nconcf list1 list2 (list 7 8 9)) - list1) - (1 2 3 4 5 6 7 8 9)) - -(deftest circular-list.1 - (let ((circle (circular-list 1 2 3))) - (list (first circle) - (second circle) - (third circle) - (fourth circle) - (eq circle (nthcdr 3 circle)))) - (1 2 3 1 t)) - -(deftest circular-list-p.1 - (let* ((circle (circular-list 1 2 3 4)) - (tree (list circle circle)) - (dotted (cons circle t)) - (proper (list 1 2 3 circle)) - (tailcirc (list* 1 2 3 circle))) - (list (circular-list-p circle) - (circular-list-p tree) - (circular-list-p dotted) - (circular-list-p proper) - (circular-list-p tailcirc))) - (t nil nil nil t)) - -(deftest circular-list-p.2 - (circular-list-p 'foo) - nil) - -(deftest circular-tree-p.1 - (let* ((circle (circular-list 1 2 3 4)) - (tree1 (list circle circle)) - (tree2 (let* ((level2 (list 1 nil 2)) - (level1 (list level2))) - (setf (second level2) level1) - level1)) - (dotted (cons circle t)) - (proper (list 1 2 3 circle)) - (tailcirc (list* 1 2 3 circle)) - (quite-proper (list 1 2 3)) - (quite-dotted (list 1 (cons 2 3)))) - (list (circular-tree-p circle) - (circular-tree-p tree1) - (circular-tree-p tree2) - (circular-tree-p dotted) - (circular-tree-p proper) - (circular-tree-p tailcirc) - (circular-tree-p quite-proper) - (circular-tree-p quite-dotted))) - (t t t t t t nil nil)) - -(deftest circular-tree-p.2 - (alexandria:circular-tree-p '#1=(#1#)) - t) - -(deftest proper-list-p.1 - (let ((l1 (list 1)) - (l2 (list 1 2)) - (l3 (cons 1 2)) - (l4 (list (cons 1 2) 3)) - (l5 (circular-list 1 2))) - (list (proper-list-p l1) - (proper-list-p l2) - (proper-list-p l3) - (proper-list-p l4) - (proper-list-p l5))) - (t t nil t nil)) - -(deftest proper-list-p.2 - (proper-list-p '(1 2 . 3)) - nil) - -(deftest proper-list.type.1 - (let ((l1 (list 1)) - (l2 (list 1 2)) - (l3 (cons 1 2)) - (l4 (list (cons 1 2) 3)) - (l5 (circular-list 1 2))) - (list (typep l1 'proper-list) - (typep l2 'proper-list) - (typep l3 'proper-list) - (typep l4 'proper-list) - (typep l5 'proper-list))) - (t t nil t nil)) - -(deftest proper-list-length.1 - (values - (proper-list-length nil) - (proper-list-length (list 1)) - (proper-list-length (list 2 2)) - (proper-list-length (list 3 3 3)) - (proper-list-length (list 4 4 4 4)) - (proper-list-length (list 5 5 5 5 5)) - (proper-list-length (list 6 6 6 6 6 6)) - (proper-list-length (list 7 7 7 7 7 7 7)) - (proper-list-length (list 8 8 8 8 8 8 8 8)) - (proper-list-length (list 9 9 9 9 9 9 9 9 9))) - 0 1 2 3 4 5 6 7 8 9) - -(deftest proper-list-length.2 - (flet ((plength (x) - (handler-case - (proper-list-length x) - (type-error () - :ok)))) - (values - (plength (list* 1)) - (plength (list* 2 2)) - (plength (list* 3 3 3)) - (plength (list* 4 4 4 4)) - (plength (list* 5 5 5 5 5)) - (plength (list* 6 6 6 6 6 6)) - (plength (list* 7 7 7 7 7 7 7)) - (plength (list* 8 8 8 8 8 8 8 8)) - (plength (list* 9 9 9 9 9 9 9 9 9)))) - :ok :ok :ok - :ok :ok :ok - :ok :ok :ok) - -(deftest lastcar.1 - (let ((l1 (list 1)) - (l2 (list 1 2))) - (list (lastcar l1) - (lastcar l2))) - (1 2)) - -(deftest lastcar.error.2 - (handler-case - (progn - (lastcar (circular-list 1 2 3)) - nil) - (error () - t)) - t) - -(deftest setf-lastcar.1 - (let ((l (list 1 2 3 4))) - (values (lastcar l) - (progn - (setf (lastcar l) 42) - (lastcar l)))) - 4 - 42) - -(deftest setf-lastcar.2 - (let ((l (circular-list 1 2 3))) - (multiple-value-bind (res err) - (ignore-errors (setf (lastcar l) 4)) - (typep err 'type-error))) - t) - -(deftest make-circular-list.1 - (let ((l (make-circular-list 3 :initial-element :x))) - (setf (car l) :y) - (list (eq l (nthcdr 3 l)) - (first l) - (second l) - (third l) - (fourth l))) - (t :y :x :x :y)) - -(deftest circular-list.type.1 - (let* ((l1 (list 1 2 3)) - (l2 (circular-list 1 2 3)) - (l3 (list* 1 2 3 l2))) - (list (typep l1 'circular-list) - (typep l2 'circular-list) - (typep l3 'circular-list))) - (nil t t)) - -(deftest ensure-list.1 - (let ((x (list 1)) - (y 2)) - (list (ensure-list x) - (ensure-list y))) - ((1) (2))) - -(deftest ensure-cons.1 - (let ((x (cons 1 2)) - (y nil) - (z "foo")) - (values (ensure-cons x) - (ensure-cons y) - (ensure-cons z))) - (1 . 2) - (nil) - ("foo")) - -(deftest setp.1 - (setp '(1)) - t) - -(deftest setp.2 - (setp nil) - t) - -(deftest setp.3 - (setp "foo") - nil) - -(deftest setp.4 - (setp '(1 2 3 1)) - nil) - -(deftest setp.5 - (setp '(1 2 3)) - t) - -(deftest setp.6 - (setp '(a :a)) - t) - -(deftest setp.7 - (setp '(a :a) :key 'character) - nil) - -(deftest setp.8 - (setp '(a :a) :key 'character :test (constantly nil)) - t) - -(deftest set-equal.1 - (set-equal '(1 2 3) '(3 1 2)) - t) - -(deftest set-equal.2 - (set-equal '("Xa") '("Xb") - :test (lambda (a b) (eql (char a 0) (char b 0)))) - t) - -(deftest set-equal.3 - (set-equal '(1 2) '(4 2)) - nil) - -(deftest set-equal.4 - (set-equal '(a b c) '(:a :b :c) :key 'string :test 'equal) - t) - -(deftest set-equal.5 - (set-equal '(a d c) '(:a :b :c) :key 'string :test 'equal) - nil) - -(deftest set-equal.6 - (set-equal '(a b c) '(a b c d)) - nil) - -(deftest map-product.1 - (map-product 'cons '(2 3) '(1 4)) - ((2 . 1) (2 . 4) (3 . 1) (3 . 4))) - -(deftest map-product.2 - (map-product #'cons '(2 3) '(1 4)) - ((2 . 1) (2 . 4) (3 . 1) (3 . 4))) - -(deftest flatten.1 - (flatten '((1) 2 (((3 4))) ((((5)) 6)) 7)) - (1 2 3 4 5 6 7)) - -(deftest remove-from-plist.1 - (let ((orig '(a 1 b 2 c 3 d 4))) - (list (remove-from-plist orig 'a 'c) - (remove-from-plist orig 'b 'd) - (remove-from-plist orig 'b) - (remove-from-plist orig 'a) - (remove-from-plist orig 'd 42 "zot") - (remove-from-plist orig 'a 'b 'c 'd) - (remove-from-plist orig 'a 'b 'c 'd 'x) - (equal orig '(a 1 b 2 c 3 d 4)))) - ((b 2 d 4) - (a 1 c 3) - (a 1 c 3 d 4) - (b 2 c 3 d 4) - (a 1 b 2 c 3) - nil - nil - t)) - -(deftest delete-from-plist.1 - (let ((orig '(a 1 b 2 c 3 d 4 d 5))) - (list (delete-from-plist (copy-list orig) 'a 'c) - (delete-from-plist (copy-list orig) 'b 'd) - (delete-from-plist (copy-list orig) 'b) - (delete-from-plist (copy-list orig) 'a) - (delete-from-plist (copy-list orig) 'd 42 "zot") - (delete-from-plist (copy-list orig) 'a 'b 'c 'd) - (delete-from-plist (copy-list orig) 'a 'b 'c 'd 'x) - (equal orig (delete-from-plist orig)) - (eq orig (delete-from-plist orig)))) - ((b 2 d 4 d 5) - (a 1 c 3) - (a 1 c 3 d 4 d 5) - (b 2 c 3 d 4 d 5) - (a 1 b 2 c 3) - nil - nil - t - t)) - -(deftest mappend.1 - (mappend (compose 'list '*) '(1 2 3) '(1 2 3)) - (1 4 9)) - -(deftest assoc-value.1 - (let ((key1 '(complex key)) - (key2 'simple-key) - (alist '()) - (result '())) - (push 1 (assoc-value alist key1 :test #'equal)) - (push 2 (assoc-value alist key1 :test 'equal)) - (push 42 (assoc-value alist key2)) - (push 43 (assoc-value alist key2 :test 'eq)) - (push (assoc-value alist key1 :test #'equal) result) - (push (assoc-value alist key2) result) - - (push 'very (rassoc-value alist (list 2 1) :test #'equal)) - (push (cdr (assoc '(very complex key) alist :test #'equal)) result) - result) - ((2 1) (43 42) (2 1))) - -;;;; Numbers - -(deftest clamp.1 - (list (clamp 1.5 1 2) - (clamp 2.0 1 2) - (clamp 1.0 1 2) - (clamp 3 1 2) - (clamp 0 1 2)) - (1.5 2.0 1.0 2 1)) - -(deftest gaussian-random.1 - (let ((min -0.2) - (max +0.2)) - (multiple-value-bind (g1 g2) - (gaussian-random min max) - (values (<= min g1 max) - (<= min g2 max) - (/= g1 g2) ;uh - ))) - t - t - t) - -#+sbcl -(deftest gaussian-random.2 - (handler-case - (sb-ext:with-timeout 2 - (progn - (loop - :repeat 10000 - :do (gaussian-random 0 nil)) - 'done)) - (sb-ext:timeout () - 'timed-out)) - done) - -(deftest iota.1 - (iota 3) - (0 1 2)) - -(deftest iota.2 - (iota 3 :start 0.0d0) - (0.0d0 1.0d0 2.0d0)) - -(deftest iota.3 - (iota 3 :start 2 :step 3.0) - (2.0 5.0 8.0)) - -(deftest map-iota.1 - (let (all) - (declare (notinline map-iota)) - (values (map-iota (lambda (x) (push x all)) - 3 - :start 2 - :step 1.1d0) - all)) - 3 - (4.2d0 3.1d0 2.0d0)) - -(deftest lerp.1 - (lerp 0.5 1 2) - 1.5) - -(deftest lerp.2 - (lerp 0.1 1 2) - 1.1) - -(deftest lerp.3 - (lerp 0.1 4 25) - 6.1) - -(deftest mean.1 - (mean '(1 2 3)) - 2) - -(deftest mean.2 - (mean '(1 2 3 4)) - 5/2) - -(deftest mean.3 - (mean '(1 2 10)) - 13/3) - -(deftest median.1 - (median '(100 0 99 1 98 2 97)) - 97) - -(deftest median.2 - (median '(100 0 99 1 98 2 97 96)) - 193/2) - -(deftest variance.1 - (variance (list 1 2 3)) - 2/3) - -(deftest standard-deviation.1 - (< 0 (standard-deviation (list 1 2 3)) 1) - t) - -(deftest maxf.1 - (let ((x 1)) - (maxf x 2) - x) - 2) - -(deftest maxf.2 - (let ((x 1)) - (maxf x 0) - x) - 1) - -(deftest maxf.3 - (let ((x 1) - (c 0)) - (maxf x (incf c)) - (list x c)) - (1 1)) - -(deftest maxf.4 - (let ((xv (vector 0 0 0)) - (p 0)) - (maxf (svref xv (incf p)) (incf p)) - (list p xv)) - (2 #(0 2 0))) - -(deftest minf.1 - (let ((y 1)) - (minf y 0) - y) - 0) - -(deftest minf.2 - (let ((xv (vector 10 10 10)) - (p 0)) - (minf (svref xv (incf p)) (incf p)) - (list p xv)) - (2 #(10 2 10))) - -(deftest subfactorial.1 - (mapcar #'subfactorial (iota 22)) - (1 - 0 - 1 - 2 - 9 - 44 - 265 - 1854 - 14833 - 133496 - 1334961 - 14684570 - 176214841 - 2290792932 - 32071101049 - 481066515734 - 7697064251745 - 130850092279664 - 2355301661033953 - 44750731559645106 - 895014631192902121 - 18795307255050944540)) - -;;;; Arrays - -#+nil -(deftest array-index.type) - -#+nil -(deftest copy-array) - -;;;; Sequences - -(deftest rotate.1 - (list (rotate (list 1 2 3) 0) - (rotate (list 1 2 3) 1) - (rotate (list 1 2 3) 2) - (rotate (list 1 2 3) 3) - (rotate (list 1 2 3) 4)) - ((1 2 3) - (3 1 2) - (2 3 1) - (1 2 3) - (3 1 2))) - -(deftest rotate.2 - (list (rotate (vector 1 2 3 4) 0) - (rotate (vector 1 2 3 4)) - (rotate (vector 1 2 3 4) 2) - (rotate (vector 1 2 3 4) 3) - (rotate (vector 1 2 3 4) 4) - (rotate (vector 1 2 3 4) 5)) - (#(1 2 3 4) - #(4 1 2 3) - #(3 4 1 2) - #(2 3 4 1) - #(1 2 3 4) - #(4 1 2 3))) - -(deftest rotate.3 - (list (rotate (list 1 2 3) 0) - (rotate (list 1 2 3) -1) - (rotate (list 1 2 3) -2) - (rotate (list 1 2 3) -3) - (rotate (list 1 2 3) -4)) - ((1 2 3) - (2 3 1) - (3 1 2) - (1 2 3) - (2 3 1))) - -(deftest rotate.4 - (list (rotate (vector 1 2 3 4) 0) - (rotate (vector 1 2 3 4) -1) - (rotate (vector 1 2 3 4) -2) - (rotate (vector 1 2 3 4) -3) - (rotate (vector 1 2 3 4) -4) - (rotate (vector 1 2 3 4) -5)) - (#(1 2 3 4) - #(2 3 4 1) - #(3 4 1 2) - #(4 1 2 3) - #(1 2 3 4) - #(2 3 4 1))) - -(deftest rotate.5 - (values (rotate (list 1) 17) - (rotate (list 1) -5)) - (1) - (1)) - -(deftest shuffle.1 - (let ((s (shuffle (iota 100)))) - (list (equal s (iota 100)) - (every (lambda (x) - (member x s)) - (iota 100)) - (every (lambda (x) - (typep x '(integer 0 99))) - s))) - (nil t t)) - -(deftest shuffle.2 - (let ((s (shuffle (coerce (iota 100) 'vector)))) - (list (equal s (coerce (iota 100) 'vector)) - (every (lambda (x) - (find x s)) - (iota 100)) - (every (lambda (x) - (typep x '(integer 0 99))) - s))) - (nil t t)) - -(deftest shuffle.3 - (let* ((orig (coerce (iota 21) 'vector)) - (copy (copy-seq orig))) - (shuffle copy :start 10 :end 15) - (list (every #'eql (subseq copy 0 10) (subseq orig 0 10)) - (every #'eql (subseq copy 15) (subseq orig 15)))) - (t t)) - -(deftest random-elt.1 - (let ((s1 #(1 2 3 4)) - (s2 '(1 2 3 4))) - (list (dotimes (i 1000 nil) - (unless (member (random-elt s1) s2) - (return nil)) - (when (/= (random-elt s1) (random-elt s1)) - (return t))) - (dotimes (i 1000 nil) - (unless (member (random-elt s2) s2) - (return nil)) - (when (/= (random-elt s2) (random-elt s2)) - (return t))))) - (t t)) - -(deftest removef.1 - (let* ((x '(1 2 3)) - (x* x) - (y #(1 2 3)) - (y* y)) - (removef x 1) - (removef y 3) - (list x x* y y*)) - ((2 3) - (1 2 3) - #(1 2) - #(1 2 3))) - -(deftest deletef.1 - (let* ((x (list 1 2 3)) - (x* x) - (y (vector 1 2 3))) - (deletef x 2) - (deletef y 1) - (list x x* y)) - ((1 3) - (1 3) - #(2 3))) - -(deftest map-permutations.1 - (let ((seq (list 1 2 3)) - (seen nil) - (ok t)) - (map-permutations (lambda (s) - (unless (set-equal s seq) - (setf ok nil)) - (when (member s seen :test 'equal) - (setf ok nil)) - (push s seen)) - seq - :copy t) - (values ok (length seen))) - t - 6) - -(deftest proper-sequence.type.1 - (mapcar (lambda (x) - (typep x 'proper-sequence)) - (list (list 1 2 3) - (vector 1 2 3) - #2a((1 2) (3 4)) - (circular-list 1 2 3 4))) - (t t nil nil)) - -(deftest emptyp.1 - (mapcar #'emptyp - (list (list 1) - (circular-list 1) - nil - (vector) - (vector 1))) - (nil nil t t nil)) - -(deftest sequence-of-length-p.1 - (mapcar #'sequence-of-length-p - (list nil - #() - (list 1) - (vector 1) - (list 1 2) - (vector 1 2) - (list 1 2) - (vector 1 2) - (list 1 2) - (vector 1 2)) - (list 0 - 0 - 1 - 1 - 2 - 2 - 1 - 1 - 4 - 4)) - (t t t t t t nil nil nil nil)) - -(deftest length=.1 - (mapcar #'length= - (list nil - #() - (list 1) - (vector 1) - (list 1 2) - (vector 1 2) - (list 1 2) - (vector 1 2) - (list 1 2) - (vector 1 2)) - (list 0 - 0 - 1 - 1 - 2 - 2 - 1 - 1 - 4 - 4)) - (t t t t t t nil nil nil nil)) - -(deftest length=.2 - ;; test the compiler macro - (macrolet ((x (&rest args) - (funcall - (compile nil - `(lambda () - (length= ,@args)))))) - (list (x 2 '(1 2)) - (x '(1 2) '(3 4)) - (x '(1 2) 2) - (x '(1 2) 2 '(3 4)) - (x 1 2 3))) - (t t t t nil)) - -(deftest copy-sequence.1 - (let ((l (list 1 2 3)) - (v (vector #\a #\b #\c))) - (declare (notinline copy-sequence)) - (let ((l.list (copy-sequence 'list l)) - (l.vector (copy-sequence 'vector l)) - (l.spec-v (copy-sequence '(vector fixnum) l)) - (v.vector (copy-sequence 'vector v)) - (v.list (copy-sequence 'list v)) - (v.string (copy-sequence 'string v))) - (list (member l (list l.list l.vector l.spec-v)) - (member v (list v.vector v.list v.string)) - (equal l.list l) - (equalp l.vector #(1 2 3)) - (type= (upgraded-array-element-type 'fixnum) - (array-element-type l.spec-v)) - (equalp v.vector v) - (equal v.list '(#\a #\b #\c)) - (equal "abc" v.string)))) - (nil nil t t t t t t)) - -(deftest first-elt.1 - (mapcar #'first-elt - (list (list 1 2 3) - "abc" - (vector :a :b :c))) - (1 #\a :a)) - -(deftest first-elt.error.1 - (mapcar (lambda (x) - (handler-case - (first-elt x) - (type-error () - :type-error))) - (list nil - #() - 12 - :zot)) - (:type-error - :type-error - :type-error - :type-error)) - -(deftest setf-first-elt.1 - (let ((l (list 1 2 3)) - (s (copy-seq "foobar")) - (v (vector :a :b :c))) - (setf (first-elt l) -1 - (first-elt s) #\x - (first-elt v) 'zot) - (values l s v)) - (-1 2 3) - "xoobar" - #(zot :b :c)) - -(deftest setf-first-elt.error.1 - (let ((l 'foo)) - (multiple-value-bind (res err) - (ignore-errors (setf (first-elt l) 4)) - (typep err 'type-error))) - t) - -(deftest last-elt.1 - (mapcar #'last-elt - (list (list 1 2 3) - (vector :a :b :c) - "FOOBAR" - #*001 - #*010)) - (3 :c #\R 1 0)) - -(deftest last-elt.error.1 - (mapcar (lambda (x) - (handler-case - (last-elt x) - (type-error () - :type-error))) - (list nil - #() - 12 - :zot - (circular-list 1 2 3) - (list* 1 2 3 (circular-list 4 5)))) - (:type-error - :type-error - :type-error - :type-error - :type-error - :type-error)) - -(deftest setf-last-elt.1 - (let ((l (list 1 2 3)) - (s (copy-seq "foobar")) - (b (copy-seq #*010101001))) - (setf (last-elt l) '??? - (last-elt s) #\? - (last-elt b) 0) - (values l s b)) - (1 2 ???) - "fooba?" - #*010101000) - -(deftest setf-last-elt.error.1 - (handler-case - (setf (last-elt 'foo) 13) - (type-error () - :type-error)) - :type-error) - -(deftest starts-with.1 - (list (starts-with 1 '(1 2 3)) - (starts-with 1 #(1 2 3)) - (starts-with #\x "xyz") - (starts-with 2 '(1 2 3)) - (starts-with 3 #(1 2 3)) - (starts-with 1 1) - (starts-with nil nil)) - (t t t nil nil nil nil)) - -(deftest starts-with.2 - (values (starts-with 1 '(-1 2 3) :key '-) - (starts-with "foo" '("foo" "bar") :test 'equal) - (starts-with "f" '(#\f) :key 'string :test 'equal) - (starts-with -1 '(0 1 2) :key #'1+) - (starts-with "zot" '("ZOT") :test 'equal)) - t - t - t - nil - nil) - -(deftest ends-with.1 - (list (ends-with 3 '(1 2 3)) - (ends-with 3 #(1 2 3)) - (ends-with #\z "xyz") - (ends-with 2 '(1 2 3)) - (ends-with 1 #(1 2 3)) - (ends-with 1 1) - (ends-with nil nil)) - (t t t nil nil nil nil)) - -(deftest ends-with.2 - (values (ends-with 2 '(0 13 1) :key '1+) - (ends-with "foo" (vector "bar" "foo") :test 'equal) - (ends-with "X" (vector 1 2 #\X) :key 'string :test 'equal) - (ends-with "foo" "foo" :test 'equal)) - t - t - t - nil) - -(deftest ends-with.error.1 - (handler-case - (ends-with 3 (circular-list 3 3 3 1 3 3)) - (type-error () - :type-error)) - :type-error) - -(deftest sequences.passing-improper-lists - (macrolet ((signals-error-p (form) - `(handler-case - (progn ,form nil) - (type-error (e) - t))) - (cut (fn &rest args) - (with-gensyms (arg) - (print`(lambda (,arg) - (apply ,fn (list ,@(substitute arg '_ args)))))))) - (let ((circular-list (make-circular-list 5 :initial-element :foo)) - (dotted-list (list* 'a 'b 'c 'd))) - (loop for nth from 0 - for fn in (list - (cut #'lastcar _) - (cut #'rotate _ 3) - (cut #'rotate _ -3) - (cut #'shuffle _) - (cut #'random-elt _) - (cut #'last-elt _) - (cut #'ends-with :foo _)) - nconcing - (let ((on-circular-p (signals-error-p (funcall fn circular-list))) - (on-dotted-p (signals-error-p (funcall fn dotted-list)))) - (when (or (not on-circular-p) (not on-dotted-p)) - (append - (unless on-circular-p - (let ((*print-circle* t)) - (list - (format nil - "No appropriate error signalled when passing ~S to ~Ath entry." - circular-list nth)))) - (unless on-dotted-p - (list - (format nil - "No appropriate error signalled when passing ~S to ~Ath entry." - dotted-list nth))))))))) - nil) - -;;;; IO - -(deftest read-stream-content-into-string.1 - (values (with-input-from-string (stream "foo bar") - (read-stream-content-into-string stream)) - (with-input-from-string (stream "foo bar") - (read-stream-content-into-string stream :buffer-size 1)) - (with-input-from-string (stream "foo bar") - (read-stream-content-into-string stream :buffer-size 6)) - (with-input-from-string (stream "foo bar") - (read-stream-content-into-string stream :buffer-size 7))) - "foo bar" - "foo bar" - "foo bar" - "foo bar") - -(deftest read-stream-content-into-string.1-umlauts - (values (with-input-from-string (stream "föö βαÏ") - (read-stream-content-into-string stream)) - (with-input-from-string (stream "föö βαÏ") - (read-stream-content-into-string stream :buffer-size 1)) - (with-input-from-string (stream "föö βαÏ") - (read-stream-content-into-string stream :buffer-size 6)) - (with-input-from-string (stream "föö βαÏ") - (read-stream-content-into-string stream :buffer-size 7))) - "föö βαÏ" - "föö βαÏ" - "föö βαÏ" - "föö βαÏ") - - -(deftest read-stream-content-into-string.2 - (handler-case - (let ((stream (make-broadcast-stream))) - (read-stream-content-into-string stream :buffer-size 0)) - (type-error () - :type-error)) - :type-error) - -#+(or) -(defvar *octets* - (map '(simple-array (unsigned-byte 8) (7)) #'char-code "foo bar")) - -#+(or) -(deftest read-stream-content-into-byte-vector.1 - (values (with-input-from-byte-vector (stream *octets*) - (read-stream-content-into-byte-vector stream)) - (with-input-from-byte-vector (stream *octets*) - (read-stream-content-into-byte-vector stream :initial-size 1)) - (with-input-from-byte-vector (stream *octets*) - (read-stream-content-into-byte-vector stream 'alexandria::%length 6)) - (with-input-from-byte-vector (stream *octets*) - (read-stream-content-into-byte-vector stream 'alexandria::%length 3))) - *octets* - *octets* - *octets* - (subseq *octets* 0 3)) - -(deftest read-stream-content-into-byte-vector.2 - (handler-case - (let ((stream (make-broadcast-stream))) - (read-stream-content-into-byte-vector stream :initial-size 0)) - (type-error () - :type-error)) - :type-error) - -;;;; Macros - -(deftest with-unique-names.1 - (let ((*gensym-counter* 0)) - (let ((syms (with-unique-names (foo bar quux) - (list foo bar quux)))) - (list (find-if #'symbol-package syms) - (equal '("FOO0" "BAR1" "QUUX2") - (mapcar #'symbol-name syms))))) - (nil t)) - -(deftest with-unique-names.2 - (let ((*gensym-counter* 0)) - (let ((syms (with-unique-names ((foo "_foo_") (bar -bar-) (quux #\q)) - (list foo bar quux)))) - (list (find-if #'symbol-package syms) - (equal '("_foo_0" "-BAR-1" "q2") - (mapcar #'symbol-name syms))))) - (nil t)) - -(deftest with-unique-names.3 - (let ((*gensym-counter* 0) - (*error-output* (make-broadcast-stream))) - (multiple-value-bind (res err) - (ignore-errors - (eval - '(let ((syms - (with-unique-names ((foo "_foo_") (bar -bar-) (quux 42)) - (list foo bar quux)))) - (list (find-if #'symbol-package syms) - (equal '("_foo_0" "-BAR-1" "q2") - (mapcar #'symbol-name syms)))))) - (errorp err))) - t) - -(deftest once-only.1 - (macrolet ((cons1.good (x) - (once-only (x) - `(cons ,x ,x))) - (cons1.bad (x) - `(cons ,x ,x))) - (let ((y 0)) - (list (cons1.good (incf y)) - y - (cons1.bad (incf y)) - y))) - ((1 . 1) 1 (2 . 3) 3)) - -(deftest once-only.2 - (macrolet ((cons1 (x) - (once-only ((y x)) - `(cons ,y ,y)))) - (let ((z 0)) - (list (cons1 (incf z)) - z - (cons1 (incf z))))) - ((1 . 1) 1 (2 . 2))) - -(deftest parse-body.1 - (parse-body '("doc" "body") :documentation t) - ("body") - nil - "doc") - -(deftest parse-body.2 - (parse-body '("body") :documentation t) - ("body") - nil - nil) - -(deftest parse-body.3 - (parse-body '("doc" "body")) - ("doc" "body") - nil - nil) - -(deftest parse-body.4 - (parse-body '((declare (foo)) "doc" (declare (bar)) body) :documentation t) - (body) - ((declare (foo)) (declare (bar))) - "doc") - -(deftest parse-body.5 - (parse-body '((declare (foo)) "doc" (declare (bar)) body)) - ("doc" (declare (bar)) body) - ((declare (foo))) - nil) - -(deftest parse-body.6 - (multiple-value-bind (res err) - (ignore-errors - (parse-body '("foo" "bar" "quux") - :documentation t)) - (errorp err)) - t) - -;;;; Symbols - -(deftest ensure-symbol.1 - (ensure-symbol :cons :cl) - cons - :external) - -(deftest ensure-symbol.2 - (ensure-symbol "CONS" :alexandria) - cons - :inherited) - -(deftest ensure-symbol.3 - (ensure-symbol 'foo :keyword) - :foo - :external) - -(deftest ensure-symbol.4 - (ensure-symbol #\* :alexandria) - * - :inherited) - -(deftest format-symbol.1 - (let ((s (format-symbol nil '#:x-~d 13))) - (list (symbol-package s) - (string= (string '#:x-13) (symbol-name s)))) - (nil t)) - -(deftest format-symbol.2 - (format-symbol :keyword '#:sym-~a (string :bolic)) - :sym-bolic) - -(deftest format-symbol.3 - (let ((*package* (find-package :cl))) - (format-symbol t '#:find-~a (string 'package))) - find-package) - -(deftest make-keyword.1 - (list (make-keyword 'zot) - (make-keyword "FOO") - (make-keyword #\Q)) - (:zot :foo :q)) - -(deftest make-gensym-list.1 - (let ((*gensym-counter* 0)) - (let ((syms (make-gensym-list 3 "FOO"))) - (list (find-if 'symbol-package syms) - (equal '("FOO0" "FOO1" "FOO2") - (mapcar 'symbol-name syms))))) - (nil t)) - -(deftest make-gensym-list.2 - (let ((*gensym-counter* 0)) - (let ((syms (make-gensym-list 3))) - (list (find-if 'symbol-package syms) - (equal '("G0" "G1" "G2") - (mapcar 'symbol-name syms))))) - (nil t)) - -;;;; Type-system - -(deftest of-type.1 - (locally - (declare (notinline of-type)) - (let ((f (of-type 'string))) - (list (funcall f "foo") - (funcall f 'bar)))) - (t nil)) - -(deftest type=.1 - (type= 'string 'string) - t - t) - -(deftest type=.2 - (type= 'list '(or null cons)) - t - t) - -(deftest type=.3 - (type= 'null '(and symbol list)) - t - t) - -(deftest type=.4 - (type= 'string '(satisfies emptyp)) - nil - nil) - -(deftest type=.5 - (type= 'string 'list) - nil - t) - -(macrolet - ((test (type numbers) - `(deftest ,(format-symbol t '#:cdr5.~a (string type)) - (let ((numbers ,numbers)) - (values (mapcar (of-type ',(format-symbol t '#:negative-~a (string type))) numbers) - (mapcar (of-type ',(format-symbol t '#:non-positive-~a (string type))) numbers) - (mapcar (of-type ',(format-symbol t '#:non-negative-~a (string type))) numbers) - (mapcar (of-type ',(format-symbol t '#:positive-~a (string type))) numbers))) - (t t t nil nil nil nil) - (t t t t nil nil nil) - (nil nil nil t t t t) - (nil nil nil nil t t t)))) - (test fixnum (list most-negative-fixnum -42 -1 0 1 42 most-positive-fixnum)) - (test integer (list (1- most-negative-fixnum) -42 -1 0 1 42 (1+ most-positive-fixnum))) - (test rational (list (1- most-negative-fixnum) -42/13 -1 0 1 42/13 (1+ most-positive-fixnum))) - (test real (list most-negative-long-float -42/13 -1 0 1 42/13 most-positive-long-float)) - (test float (list most-negative-short-float -42.02 -1.0 0.0 1.0 42.02 most-positive-short-float)) - (test short-float (list most-negative-short-float -42.02s0 -1.0s0 0.0s0 1.0s0 42.02s0 most-positive-short-float)) - (test single-float (list most-negative-single-float -42.02f0 -1.0f0 0.0f0 1.0f0 42.02f0 most-positive-single-float)) - (test double-float (list most-negative-double-float -42.02d0 -1.0d0 0.0d0 1.0d0 42.02d0 most-positive-double-float)) - (test long-float (list most-negative-long-float -42.02l0 -1.0l0 0.0l0 1.0l0 42.02l0 most-positive-long-float))) - -;;;; Bindings - -(declaim (notinline opaque)) -(defun opaque (x) - x) - -(deftest if-let.1 - (if-let (x (opaque :ok)) - x - :bad) - :ok) - -(deftest if-let.2 - (if-let (x (opaque nil)) - :bad - (and (not x) :ok)) - :ok) - -(deftest if-let.3 - (let ((x 1)) - (if-let ((x 2) - (y x)) - (+ x y) - :oops)) - 3) - -(deftest if-let.4 - (if-let ((x 1) - (y nil)) - :oops - (and (not y) x)) - 1) - -(deftest if-let.5 - (if-let (x) - :oops - (not x)) - t) - -(deftest if-let.error.1 - (handler-case - (eval '(if-let x - :oops - :oops)) - (type-error () - :type-error)) - :type-error) - -(deftest when-let.1 - (when-let (x (opaque :ok)) - (setf x (cons x x)) - x) - (:ok . :ok)) - -(deftest when-let.2 - (when-let ((x 1) - (y nil) - (z 3)) - :oops) - nil) - -(deftest when-let.3 - (let ((x 1)) - (when-let ((x 2) - (y x)) - (+ x y))) - 3) - -(deftest when-let.error.1 - (handler-case - (eval '(when-let x :oops)) - (type-error () - :type-error)) - :type-error) - -(deftest when-let*.1 - (let ((x 1)) - (when-let* ((x 2) - (y x)) - (+ x y))) - 4) - -(deftest when-let*.2 - (let ((y 1)) - (when-let* (x y) - (1+ x))) - 2) - -(deftest when-let*.3 - (when-let* ((x t) - (y (consp x)) - (z (error "OOPS"))) - t) - nil) - -(deftest when-let*.error.1 - (handler-case - (eval '(when-let* x :oops)) - (type-error () - :type-error)) - :type-error) - -(deftest doplist.1 - (let (keys values) - (doplist (k v '(a 1 b 2 c 3) (values t (reverse keys) (reverse values) k v)) - (push k keys) - (push v values))) - t - (a b c) - (1 2 3) - nil - nil) - -(deftest count-permutations.1 - (values (count-permutations 31 7) - (count-permutations 1 1) - (count-permutations 2 1) - (count-permutations 2 2) - (count-permutations 3 2) - (count-permutations 3 1)) - 13253058000 - 1 - 2 - 2 - 6 - 3) - -(deftest binomial-coefficient.1 - (alexandria:binomial-coefficient 1239 139) - 28794902202288970200771694600561826718847179309929858835480006683522184441358211423695124921058123706380656375919763349913245306834194782172712255592710204598527867804110129489943080460154) - -;; Exercise bignum case (at least on x86). -(deftest binomial-coefficient.2 - (alexandria:binomial-coefficient 2000000000000 20) - 430998041177272843950422879590338454856322722740402365741730748431530623813012487773080486408378680853987520854296499536311275320016878730999689934464711239072435565454954447356845336730100919970769793030177499999999900000000000) - -(deftest copy-stream.1 - (let ((data "sdkfjhsakfh weior763495ewofhsdfk sdfadlkfjhsadf woif sdlkjfhslkdfh sdklfjh")) - (values (equal data - (with-input-from-string (in data) - (with-output-to-string (out) - (alexandria:copy-stream in out)))) - (equal (subseq data 10 20) - (with-input-from-string (in data) - (with-output-to-string (out) - (alexandria:copy-stream in out :start 10 :end 20)))) - (equal (subseq data 10) - (with-input-from-string (in data) - (with-output-to-string (out) - (alexandria:copy-stream in out :start 10)))) - (equal (subseq data 0 20) - (with-input-from-string (in data) - (with-output-to-string (out) - (alexandria:copy-stream in out :end 20)))))) - t - t - t - t) - -(deftest extremum.1 - (let ((n 0)) - (dotimes (i 10) - (let ((data (shuffle (coerce (iota 10000 :start i) 'vector))) - (ok t)) - (unless (eql i (extremum data #'<)) - (setf ok nil)) - (unless (eql i (extremum (coerce data 'list) #'<)) - (setf ok nil)) - (unless (eql (+ 9999 i) (extremum data #'>)) - (setf ok nil)) - (unless (eql (+ 9999 i) (extremum (coerce data 'list) #'>)) - (setf ok nil)) - (when ok - (incf n)))) - (when (eql 10 (extremum #(100 1 10 1000) #'> :start 1 :end 3)) - (incf n)) - (when (eql -1000 (extremum #(100 1 10 -1000) #'> :key 'abs)) - (incf n)) - (when (eq nil (extremum "" (lambda (a b) (error "wtf? ~S, ~S" a b)))) - (incf n)) - n) - 13) - -(deftest starts-with-subseq.string - (starts-with-subseq "f" "foo" :return-suffix t) - t - "oo") - -(deftest starts-with-subseq.vector - (starts-with-subseq #(1) #(1 2 3) :return-suffix t) - t - #(2 3)) - -(deftest starts-with-subseq.list - (starts-with-subseq '(1) '(1 2 3) :return-suffix t) - t - (2 3)) - -(deftest starts-with-subseq.start1 - (starts-with-subseq "foo" "oop" :start1 1) - t - nil) - -(deftest starts-with-subseq.start2 - (starts-with-subseq "foo" "xfoop" :start2 1) - t - nil) - -(deftest format-symbol.print-case-bound - (let ((upper (intern "FOO-BAR")) - (lower (intern "foo-bar")) - (*print-escape* nil)) - (values - (let ((*print-case* :downcase)) - (and (eq upper (format-symbol t "~A" upper)) - (eq lower (format-symbol t "~A" lower)))) - (let ((*print-case* :upcase)) - (and (eq upper (format-symbol t "~A" upper)) - (eq lower (format-symbol t "~A" lower)))) - (let ((*print-case* :capitalize)) - (and (eq upper (format-symbol t "~A" upper)) - (eq lower (format-symbol t "~A" lower)))))) - t - t - t) - -;; In CLISP, (eql #C(2 0) 2) => T -;; but (eql #C(2 0) 2.0) => NIL -;; so we need a complex start point -(deftest iota.fp-start-and-complex-integer-step - (equal '(#C(0.0 0.0) #C(0.0 2.0) #C(0.0 4.0)) - (iota 3 :start #C(0.0 0.0) :step #C(0 2))) - t) - -(deftest parse-ordinary-lambda-list.1 - (multiple-value-bind (req opt rest keys allowp aux keyp) - (parse-ordinary-lambda-list '(a b c - &optional o1 (o2 42) (o3 42 o3-supplied?) - &key (k1) ((:key k2)) (k3 42 k3-supplied?)) - :normalize t) - (and (equal '(a b c) req) - (equal '((o1 nil nil) - (o2 42 nil) - (o3 42 o3-supplied?)) - opt) - (equal '(((:k1 k1) nil nil) - ((:key k2) nil nil) - ((:k3 k3) 42 k3-supplied?)) - keys) - (not allowp) - (not aux) - (eq t keyp))) - t) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/types.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/types.lisp deleted file mode 100644 index 1942d0e..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-1/types.lisp +++ /dev/null @@ -1,137 +0,0 @@ -(in-package :alexandria) - -(deftype array-index (&optional (length (1- array-dimension-limit))) - "Type designator for an index into array of LENGTH: an integer between -0 (inclusive) and LENGTH (exclusive). LENGTH defaults to one less than -ARRAY-DIMENSION-LIMIT." - `(integer 0 (,length))) - -(deftype array-length (&optional (length (1- array-dimension-limit))) - "Type designator for a dimension of an array of LENGTH: an integer between -0 (inclusive) and LENGTH (inclusive). LENGTH defaults to one less than -ARRAY-DIMENSION-LIMIT." - `(integer 0 ,length)) - -;; This MACROLET will generate most of CDR5 (http://cdr.eurolisp.org/document/5/) -;; except the RATIO related definitions and ARRAY-INDEX. -(macrolet - ((frob (type &optional (base-type type)) - (let ((subtype-names (list)) - (predicate-names (list))) - (flet ((make-subtype-name (format-control) - (let ((result (format-symbol :alexandria format-control - (symbol-name type)))) - (push result subtype-names) - result)) - (make-predicate-name (sybtype-name) - (let ((result (format-symbol :alexandria '#:~A-p - (symbol-name sybtype-name)))) - (push result predicate-names) - result)) - (make-docstring (range-beg range-end range-type) - (let ((inf (ecase range-type (:negative "-inf") (:positive "+inf")))) - (format nil "Type specifier denoting the ~(~A~) range from ~A to ~A." - type - (if (equal range-beg ''*) inf (ensure-car range-beg)) - (if (equal range-end ''*) inf (ensure-car range-end)))))) - (let* ((negative-name (make-subtype-name '#:negative-~a)) - (non-positive-name (make-subtype-name '#:non-positive-~a)) - (non-negative-name (make-subtype-name '#:non-negative-~a)) - (positive-name (make-subtype-name '#:positive-~a)) - (negative-p-name (make-predicate-name negative-name)) - (non-positive-p-name (make-predicate-name non-positive-name)) - (non-negative-p-name (make-predicate-name non-negative-name)) - (positive-p-name (make-predicate-name positive-name)) - (negative-extremum) - (positive-extremum) - (below-zero) - (above-zero) - (zero)) - (setf (values negative-extremum below-zero - above-zero positive-extremum zero) - (ecase type - (fixnum (values 'most-negative-fixnum -1 1 'most-positive-fixnum 0)) - (integer (values ''* -1 1 ''* 0)) - (rational (values ''* '(0) '(0) ''* 0)) - (real (values ''* '(0) '(0) ''* 0)) - (float (values ''* '(0.0E0) '(0.0E0) ''* 0.0E0)) - (short-float (values ''* '(0.0S0) '(0.0S0) ''* 0.0S0)) - (single-float (values ''* '(0.0F0) '(0.0F0) ''* 0.0F0)) - (double-float (values ''* '(0.0D0) '(0.0D0) ''* 0.0D0)) - (long-float (values ''* '(0.0L0) '(0.0L0) ''* 0.0L0)))) - `(progn - (deftype ,negative-name () - ,(make-docstring negative-extremum below-zero :negative) - `(,',base-type ,,negative-extremum ,',below-zero)) - - (deftype ,non-positive-name () - ,(make-docstring negative-extremum zero :negative) - `(,',base-type ,,negative-extremum ,',zero)) - - (deftype ,non-negative-name () - ,(make-docstring zero positive-extremum :positive) - `(,',base-type ,',zero ,,positive-extremum)) - - (deftype ,positive-name () - ,(make-docstring above-zero positive-extremum :positive) - `(,',base-type ,',above-zero ,,positive-extremum)) - - (declaim (inline ,@predicate-names)) - - (defun ,negative-p-name (n) - (and (typep n ',type) - (< n ,zero))) - - (defun ,non-positive-p-name (n) - (and (typep n ',type) - (<= n ,zero))) - - (defun ,non-negative-p-name (n) - (and (typep n ',type) - (<= ,zero n))) - - (defun ,positive-p-name (n) - (and (typep n ',type) - (< ,zero n))))))))) - (frob fixnum integer) - (frob integer) - (frob rational) - (frob real) - (frob float) - (frob short-float) - (frob single-float) - (frob double-float) - (frob long-float)) - -(defun of-type (type) - "Returns a function of one argument, which returns true when its argument is -of TYPE." - (lambda (thing) (typep thing type))) - -(define-compiler-macro of-type (&whole form type &environment env) - ;; This can yeild a big benefit, but no point inlining the function - ;; all over the place if TYPE is not constant. - (if (constantp type env) - (with-gensyms (thing) - `(lambda (,thing) - (typep ,thing ,type))) - form)) - -(declaim (inline type=)) -(defun type= (type1 type2) - "Returns a primary value of T is TYPE1 and TYPE2 are the same type, -and a secondary value that is true is the type equality could be reliably -determined: primary value of NIL and secondary value of T indicates that the -types are not equivalent." - (multiple-value-bind (sub ok) (subtypep type1 type2) - (cond ((and ok sub) - (subtypep type2 type1)) - (ok - (values nil ok)) - (t - (multiple-value-bind (sub ok) (subtypep type2 type1) - (declare (ignore sub)) - (values nil ok)))))) - -(define-modify-macro coercef (type-spec) coerce - "Modify-macro for COERCE.") diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/arrays.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/arrays.lisp deleted file mode 100644 index 3faebeb..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/arrays.lisp +++ /dev/null @@ -1,43 +0,0 @@ -(in-package :alexandria-2) - -(defun dim-in-bounds-p (dimensions &rest subscripts) - "Mirrors cl:array-in-bounds-p, but takes dimensions (list of integers) as its - first argument instead of an array. - (array-in-bounds-p arr ...) == (dim-in-bounds-p (array-dimensions arr) ...)" - (and (= (length dimensions) (length subscripts)) - (every (lambda (i d) (and (integerp i) (< -1 i d))) - subscripts dimensions))) - -(defun row-major-index (dimensions &rest subscripts) - "Mirrors cl:array-row-major-index, but takes dimensions (list of integers) - as its first argument instead of an array. - Signals an error if lengths of dimensions and subscripts are not equal - (array-row-major-index arr ...) == (row-major-index (array-dimensions arr) ...)" - (unless (apply #'dim-in-bounds-p dimensions subscripts) - (error (format nil "Indices ~a invalid for dimensions ~a" subscripts dimensions))) - (loop with word-idx = 0 - with dimprod = 1 - for dim-size in (reverse dimensions) - for dim-idx in (reverse subscripts) - do - (incf word-idx (* dim-idx dimprod)) - (setf dimprod (* dimprod dim-size)) - finally (return word-idx))) - -(defun rmajor-to-indices (dimensions index) - "The inverse function to row-major-index. Given a set of dimensions and a - row-major index, produce the list of indices such that - (row-major-index dimensions sucscripts) = index" - (when (null dimensions) (error "Dimensions must be non-null")) - (let ((size (reduce #'* dimensions))) - (unless (< -1 index size) - (error (format nil "Row-major index ~a invalid for array of total size ~a" index size)))) - (labels ((rec (dimensions index word-sizes acc) - (if (null (cdr dimensions)) - (reverse (cons index acc)) - (multiple-value-bind (idx remainder) (floor index (car word-sizes)) - (rec (cdr dimensions) remainder (cdr word-sizes) (cons idx acc)))))) - (rec dimensions index - (cdr (reduce (lambda (x y) (cons (* x (car y)) y)) dimensions - :initial-value '(1) :from-end t)) - nil))) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/control-flow.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/control-flow.lisp deleted file mode 100644 index 668c682..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/control-flow.lisp +++ /dev/null @@ -1,52 +0,0 @@ -(in-package :alexandria-2) - -(defun line-up-iter (thread-first-p acc forms) - "Iterative implementation for `thread-iter'. - -The THREAD-FIRST-P decides where to thread the FORMS, accumulating in ACC." - (if forms - (line-up-iter thread-first-p - (let ((form (car forms))) - (if (listp form) - (if thread-first-p - (apply #'list (car form) acc (cdr form)) - (append form (cons acc nil))) - (list form acc))) - (cdr forms)) - acc)) - -(defmacro line-up-first (&rest forms) - "Lines up FORMS elements as the first argument of their successor. -Example: - - (line-up-first - 5 - (+ 20) - / - (+ 40)) - -is equivalent to: - - (+ (/ (+ 5 20)) 40) - -Note how the single '/ got converted into a list before -threading." - (line-up-iter t (car forms) (cdr forms))) - -(defmacro line-up-last (&rest forms) - "Lines up FORMS elements as the last argument of their successor. -Example: - - (line-up-last - 5 - (+ 20) - / - (+ 40)) - -is equivalent to: - - (+ 40 (/ (+ 20 5))) - -Note how the single '/ got converted into a list before -threading." - (line-up-iter nil (car forms) (cdr forms))) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/lists.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/lists.lisp deleted file mode 100644 index 38d9176..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/lists.lisp +++ /dev/null @@ -1,24 +0,0 @@ -(in-package :alexandria-2) - -(defun delete-from-plist* (plist &rest keys) - "Just like REMOVE-FROM-PLIST, but this version may destructively modify the -provided PLIST. -The second return value is an alist of the removed items, in unspecified order." - ;; TODO: a plist? - (declare (optimize speed)) - (loop with head = plist - with tail = nil ; a nil tail means an empty result so far - with kept = () - for (key . rest) on plist by #'cddr - do (assert rest () "Expected a proper plist, got ~S" plist) - (if (member key keys :test #'eq) - ;; skip over this pair - (let ((next (cdr rest))) - (push (cons key (car rest)) - kept) - (if tail - (setf (cdr tail) next) - (setf head next))) - ;; keep this pair - (setf tail rest)) - finally (return (values head kept)))) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/package.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/package.lisp deleted file mode 100644 index e9d5c4a..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/package.lisp +++ /dev/null @@ -1,19 +0,0 @@ -(in-package :cl-user) -(defpackage :alexandria-2 - (:nicknames :alexandria.2) - (:use :cl :alexandria.1.0.0) - #+sb-package-locks - (:lock t) - (:export - ;; arrays - #:dim-in-bounds-p - #:row-major-index - #:rmajor-to-indices - ;; lists - #:delete-from-plist* - ;; control-flow - #:line-up-first - #:line-up-last - #:subseq* - . #. (let (res) (do-external-symbols (sym :alexandria.1.0.0) (push sym res)) res) - )) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/sequences.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/sequences.lisp deleted file mode 100644 index c9d5633..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/sequences.lisp +++ /dev/null @@ -1,9 +0,0 @@ -(in-package :alexandria-2) - - -(defun subseq* (sequence start &optional end) - "Like SUBSEQ, but limits END to the length." - (subseq sequence start - (if end - (min end (length sequence))))) - diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/tests.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/tests.lisp deleted file mode 100644 index 531a2cd..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria-2/tests.lisp +++ /dev/null @@ -1,189 +0,0 @@ -(in-package :cl-user) - -(defpackage :alexandria-2/tests - (:use :cl :alexandria-2 #+sbcl :sb-rt #-sbcl :rtest) - (:import-from #+sbcl :sb-rt #-sbcl :rtest - #:*compile-tests* #:*expected-failures*)) - -(in-package :alexandria-2/tests) - -;; Arrays Tests -(deftest dim-in-bounds-p.0 - (dim-in-bounds-p '(2 2) 0 1 1) - nil) - -(deftest dim-in-bounds-p.1 - (dim-in-bounds-p '(2 2) 0 1) - t) - -(deftest dim-in-bounds-p.2 - (dim-in-bounds-p '(2 2) 0 2) - nil) - -(deftest row-major-index.0 - (let* ((dims '(4 3 2 1)) - (test-arr (make-array dims)) - (idcs '(0 0 0 0))) - (= 0 (apply #'row-major-index dims idcs) (apply #'array-row-major-index test-arr idcs))) - t) - -(deftest row-major-index.1 - (let* ((dims '(4 3 2 1)) - (test-arr (make-array dims)) - (idcs '(3 2 1 0))) - (= 23 (apply #'row-major-index dims idcs) (apply #'array-row-major-index test-arr idcs))) - t) - -(deftest row-major-index.2 - (let* ((dims '(4 3 2 1)) - (test-arr (make-array dims)) - (idcs '(2 1 0 0))) - (= 14 (apply #'row-major-index dims idcs) (apply #'array-row-major-index test-arr idcs))) - t) - -(deftest row-major-index.3 - (let* ((dims '(4 3 2 1)) - (test-arr (make-array dims)) - (idcs '(0 2 1 0))) - (= 5 (apply #'row-major-index dims idcs) (apply #'array-row-major-index test-arr idcs))) - t) - -(deftest rmajor-to-indices.0 - (loop for dims in '((70 30 4 2) (50 200 5 7) (5 4 300 2) (5 2 30 19)) - with index = 173 - with indices = '(4 0 3 1) - always (and (= index (apply #'row-major-index dims (rmajor-to-indices dims index))) - (equalp indices (rmajor-to-indices dims - (apply #'row-major-index dims indices))))) - t) - -;; List Tests - -(deftest delete-from-plist*.middle - (let ((input (list 'a 1 'b 2 'c 3 'd 4 'd 5))) - (multiple-value-list (delete-from-plist* input 'b 'c))) - ((a 1 d 4 d 5) - ((c . 3) (b . 2)))) - -(deftest delete-from-plist*.start - (let ((input (list 'a 1 'b 2 'c 3 'd 4 'd 5))) - (multiple-value-list (delete-from-plist* input 'a 'c))) - ((b 2 d 4 d 5) - ((c . 3) (a . 1)))) - - -;; Control Flow tests - -(deftest line-up-first.no-form - (values - (equal (macroexpand '(line-up-first 5)) - 5) - (equal (macroexpand '(line-up-first (+ 1 2))) - '(+ 1 2))) - t - t) - -(deftest line-up-first.function-names-are-threaded - (values - (equal (macroexpand '(line-up-first 5 -)) - '(- 5)) - (equal (macroexpand '(line-up-first (+ 1 2) -)) - '(- (+ 1 2)))) - t - t) - -(deftest line-up-first.list-promotion - (macroexpand '(line-up-first - 5 - (+ 20) - (/ 25) - - - (+ 40))) - (+ (- (/ (+ 5 20) 25)) 40) - t) - -(deftest line-up-first.multiple-args - (macroexpand '(line-up-first - "this-is-a-string" - (subseq 0 4))) - (subseq "this-is-a-string" 0 4) - t) - -(deftest line-up-first.several-examples - (values - (equal (line-up-first (+ 40 2)) 42) - (equal (line-up-first - 5 - (+ 20) - (/ 25) - - - (+ 40)) 39) - (equal (line-up-first - "this-is-a-string" - (subseq 4 5) - (string-trim "--------good")) - "good")) - t - t - t) - -;; Thread last tests - -(deftest line-up-last.no-forms - (values - (equal (macroexpand '(line-up-last 5)) 5) - (equal (macroexpand '(line-up-last (+ 1 2))) '(+ 1 2))) - t - t) - -(deftest line-up-last.function-names-are-threaded - (values (equal (macroexpand - '(line-up-last 5 - -)) - '(- 5)) - (equal (macroexpand - '(line-up-last (+ 1 2) - -)) - '(- (+ 1 2)))) - t - t) - -(deftest line-up-last.lisp-promotion - (macroexpand '(line-up-last - 5 - (+ 20) - (/ 25) - - - (+ 40))) - (+ 40 (- (/ 25 (+ 20 5)))) - t) - -(deftest line-up-last.several-examples - (values (equal (line-up-last (+ 40 2)) 42) - (equal (line-up-last - 5 - (+ 20) - (/ 25) - - - (+ 40)) - 39) - (equal (line-up-last - (list 1 -2 3 -4 5) - (mapcar #'abs) - (reduce #'+) - (format nil "abs sum is: ~D")) - "abs sum is: 15")) - t - t - t) - - -(deftest subseq*.1 - (values (subseq* "abcdef" 0 3) - (subseq* "abcdef" 1 3) - (subseq* "abcdef" 1) - (subseq* "abcdef" 1 9)) - "abc" - "bc" - "bcdef" - "bcdef") diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria.asd b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria.asd deleted file mode 100644 index 466d373..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/alexandria.asd +++ /dev/null @@ -1,87 +0,0 @@ -(defsystem "alexandria" - :version "1.0.1" - :licence "Public Domain / 0-clause MIT" - :description "Alexandria is a collection of portable public domain utilities." - :author "Nikodemus Siivola and others." - :long-description - "Alexandria is a project and a library. - -As a project Alexandria's goal is to reduce duplication of effort and improve -portability of Common Lisp code according to its own idiosyncratic and rather -conservative aesthetic. - -As a library Alexandria is one of the means by which the project strives for -its goals. - -Alexandria is a collection of portable public domain utilities that meet -the following constraints: - - * Utilities, not extensions: Alexandria will not contain conceptual - extensions to Common Lisp, instead limiting itself to tools and utilities - that fit well within the framework of standard ANSI Common Lisp. - Test-frameworks, system definitions, logging facilities, serialization - layers, etc. are all outside the scope of Alexandria as a library, though - well within the scope of Alexandria as a project. - - * Conservative: Alexandria limits itself to what project members consider - conservative utilities. Alexandria does not and will not include anaphoric - constructs, loop-like binding macros, etc. - Also, its exported symbols are being imported by many other packages - already, so each new export carries the danger of causing conflicts. - - * Portable: Alexandria limits itself to portable parts of Common Lisp. Even - apparently conservative and useful functions remain outside the scope of - Alexandria if they cannot be implemented portably. Portability is here - defined as portable within a conforming implementation: implementation bugs - are not considered portability issues. - - * Team player: Alexandria will not (initially, at least) subsume or provide - functionality for which good-quality special-purpose packages exist, like - split-sequence. Instead, third party packages such as that may be - \"blessed\"." - :components - ((:static-file "LICENCE") - (:module "alexandria-1" - :components ((:static-file "tests.lisp") - (:file "package") - (:file "definitions" :depends-on ("package")) - (:file "binding" :depends-on ("package")) - (:file "strings" :depends-on ("package")) - (:file "conditions" :depends-on ("package")) - (:file "io" :depends-on ("package" "macros" "lists" "types")) - (:file "macros" :depends-on ("package" "strings" "symbols")) - (:file "hash-tables" :depends-on ("package" "macros")) - (:file "control-flow" :depends-on ("package" "definitions" "macros")) - (:file "symbols" :depends-on ("package")) - (:file "functions" :depends-on ("package" "symbols" "macros")) - (:file "lists" :depends-on ("package" "functions")) - (:file "types" :depends-on ("package" "symbols" "lists")) - (:file "arrays" :depends-on ("package" "types")) - (:file "sequences" :depends-on ("package" "lists" "types")) - (:file "numbers" :depends-on ("package" "sequences")) - (:file "features" :depends-on ("package" "control-flow")))) - (:module "alexandria-2" - :components ((:static-file "tests.lisp") - (:file "package") - (:file "arrays" :depends-on ("package")) - (:file "control-flow" :depends-on ("package")) - (:file "sequences" :depends-on ("package")) - (:file "lists" :depends-on ("package"))))) - :in-order-to ((test-op (test-op "alexandria/tests")))) - -(defsystem "alexandria/tests" - :licence "Public Domain / 0-clause MIT" - :description "Tests for Alexandria, which is a collection of portable public domain utilities." - :author "Nikodemus Siivola , and others." - :depends-on (:alexandria #+sbcl :sb-rt #-sbcl :rt) - :components ((:file "alexandria-1/tests") - (:file "alexandria-2/tests")) - :perform (test-op (o c) - (let ((unexpected-failure-p nil)) - (flet ((run-tests (&rest args) - (unless (apply (intern (string '#:run-tests) '#:alexandria/tests) args) - (setf unexpected-failure-p t)))) - (run-tests :compiled nil) - (run-tests :compiled t)) - (when unexpected-failure-p - (error "Unexpected test failure"))))) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/doc/.gitignore b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/doc/.gitignore deleted file mode 100644 index b90c2cb..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/doc/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -include - -alexandria.aux -alexandria.fn -alexandria.fns -alexandria.log -alexandria.pdf -alexandria.toc -alexandria.tp -alexandria.tps diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/doc/Makefile b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/doc/Makefile deleted file mode 100644 index 6f35d2c..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/doc/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -.PHONY: clean html pdf include clean-include clean-crap info doc - -doc: pdf html info clean-crap - -clean-include: - rm -rf include - -clean-crap: - rm -f *.aux *.cp *.fn *.fns *.ky *.log *.pg *.toc *.tp *.tps *.vr - -clean: clean-include - rm -f *.pdf *.html *.info - -include: - sbcl --no-userinit --eval '(require :asdf)' \ - --eval '(let ((asdf:*central-registry* (list "../"))) (require :alexandria))' \ - --eval '(with-compilation-unit () (load "docstrings.lisp"))' \ - --eval '(sb-texinfo:generate-includes "include/" (list :alexandria-1 :alexandria-2) :base-package :alexandria)' \ - --eval '(quit)' - -pdf: include - texi2pdf alexandria.texinfo - -html: include - makeinfo --html --no-split alexandria.texinfo - -info: include - makeinfo alexandria.texinfo - -publish: - rsync -va alexandria.pdf alexandria.html common-lisp.net:/project/alexandria/public_html/draft/ diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/doc/alexandria.texinfo b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/doc/alexandria.texinfo deleted file mode 100644 index 04b3fe2..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/doc/alexandria.texinfo +++ /dev/null @@ -1,288 +0,0 @@ -\input texinfo @c -*-texinfo-*- -@c %**start of header -@setfilename alexandria.info -@settitle alexandria Manual -@c %**end of header - -@settitle alexandria Manual -- draft version - -@c for install-info -@dircategory Software development -@direntry -* alexandria: Common Lisp utilities. -@end direntry - -@copying -Alexandria software and associated documentation are in the public -domain: - -@quotation - Authors dedicate this work to public domain, for the benefit of the - public at large and to the detriment of the authors' heirs and - successors. Authors intends this dedication to be an overt act of - relinquishment in perpetuity of all present and future rights under - copyright law, whether vested or contingent, in the work. Authors - understands that such relinquishment of all rights includes the - relinquishment of all rights to enforce (by lawsuit or otherwise) - those copyrights in the work. - - Authors recognize that, once placed in the public domain, the work - may be freely reproduced, distributed, transmitted, used, modified, - built upon, or otherwise exploited by anyone for any purpose, - commercial or non-commercial, and in any way, including by methods - that have not yet been invented or conceived. -@end quotation - -In those legislations where public domain dedications are not -recognized or possible, Alexandria is distributed under the following -terms and conditions: - -@quotation - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation files - (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, - publish, distribute, sublicense, and/or sell copies of the Software, - and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -@end quotation - -Unless otherwise noted, the symbols are exported from -the @code{"ALEXANDRIA"} package; only newer symbols -that require @code{"ALEXANDRIA-2"} are fully qualified. - -The package @code{"ALEXANDRIA-2"} includes all the symbols -from @code{"ALEXANDRIA-1"}. - -@end copying -@titlepage - -@title alexandria Manual -@subtitle draft version - -@c The following two commands start the copyright page. -@page -@vskip 0pt plus 1filll -@insertcopying - -@end titlepage - -@contents - -@ifnottex - -@include include/ifnottex.texinfo - -@node Top -@comment node-name, next, previous, up -@top Alexandria - -@insertcopying - -@menu -* Hash Tables:: -* Data and Control Flow:: -* Conses:: -* Sequences:: -* IO:: -* Macro Writing:: -* Symbols:: -* Arrays:: -* Types:: -* Numbers:: -@end menu - -@end ifnottex - -@node Hash Tables -@comment node-name, next, previous, up -@chapter Hash Tables - -@include include/macro-alexandria-ensure-gethash.texinfo -@include include/fun-alexandria-copy-hash-table.texinfo -@include include/fun-alexandria-maphash-keys.texinfo -@include include/fun-alexandria-maphash-values.texinfo -@include include/fun-alexandria-hash-table-keys.texinfo -@include include/fun-alexandria-hash-table-values.texinfo -@include include/fun-alexandria-hash-table-alist.texinfo -@include include/fun-alexandria-hash-table-plist.texinfo -@include include/fun-alexandria-alist-hash-table.texinfo -@include include/fun-alexandria-plist-hash-table.texinfo - -@node Data and Control Flow -@comment node-name, next, previous, up -@chapter Data and Control Flow - -@include include/macro-alexandria-define-constant.texinfo -@include include/macro-alexandria-destructuring-case.texinfo -@include include/macro-alexandria-ensure-functionf.texinfo -@include include/macro-alexandria-multiple-value-prog2.texinfo -@include include/macro-alexandria-named-lambda.texinfo -@include include/macro-alexandria-nth-value-or.texinfo -@include include/macro-alexandria-if-let.texinfo -@include include/macro-alexandria-when-let.texinfo -@include include/macro-alexandria-when-let-star.texinfo -@include include/macro-alexandria-switch.texinfo -@include include/macro-alexandria-cswitch.texinfo -@include include/macro-alexandria-eswitch.texinfo -@include include/macro-alexandria-whichever.texinfo -@include include/macro-alexandria-xor.texinfo - -@include include/fun-alexandria-disjoin.texinfo -@include include/fun-alexandria-conjoin.texinfo -@include include/fun-alexandria-compose.texinfo -@include include/fun-alexandria-ensure-function.texinfo -@include include/fun-alexandria-multiple-value-compose.texinfo -@include include/fun-alexandria-curry.texinfo -@include include/fun-alexandria-rcurry.texinfo - -@include include/macro-alexandria-2-line-up-first.texinfo -@include include/macro-alexandria-2-line-up-last.texinfo - -@node Conses -@comment node-name, next, previous, up -@chapter Conses - -@include include/type-alexandria-proper-list.texinfo -@include include/type-alexandria-circular-list.texinfo - -@include include/macro-alexandria-appendf.texinfo -@include include/macro-alexandria-nconcf.texinfo -@include include/macro-alexandria-remove-from-plistf.texinfo -@include include/macro-alexandria-delete-from-plistf.texinfo -@include include/macro-alexandria-reversef.texinfo -@include include/macro-alexandria-nreversef.texinfo -@include include/macro-alexandria-unionf.texinfo -@include include/macro-alexandria-nunionf.texinfo - -@include include/macro-alexandria-doplist.texinfo - -@include include/fun-alexandria-circular-list-p.texinfo -@include include/fun-alexandria-circular-tree-p.texinfo -@include include/fun-alexandria-proper-list-p.texinfo - -@include include/fun-alexandria-alist-plist.texinfo -@include include/fun-alexandria-plist-alist.texinfo -@include include/fun-alexandria-circular-list.texinfo -@include include/fun-alexandria-make-circular-list.texinfo -@include include/fun-alexandria-ensure-car.texinfo -@include include/fun-alexandria-ensure-cons.texinfo -@include include/fun-alexandria-ensure-list.texinfo -@include include/fun-alexandria-flatten.texinfo -@include include/fun-alexandria-lastcar.texinfo -@include include/fun-alexandria-setf-lastcar.texinfo -@include include/fun-alexandria-proper-list-length.texinfo -@include include/fun-alexandria-mappend.texinfo -@include include/fun-alexandria-map-product.texinfo -@include include/fun-alexandria-remove-from-plist.texinfo -@include include/fun-alexandria-delete-from-plist.texinfo -@include include/fun-alexandria-2-delete-from-plist-star.texinfo -@include include/fun-alexandria-set-equal.texinfo -@include include/fun-alexandria-setp.texinfo - -@node Sequences -@comment node-name, next, previous, up -@chapter Sequences - -@include include/type-alexandria-proper-sequence.texinfo - -@include include/macro-alexandria-deletef.texinfo -@include include/macro-alexandria-removef.texinfo - -@include include/fun-alexandria-rotate.texinfo -@include include/fun-alexandria-shuffle.texinfo -@include include/fun-alexandria-random-elt.texinfo -@include include/fun-alexandria-emptyp.texinfo -@include include/fun-alexandria-sequence-of-length-p.texinfo -@include include/fun-alexandria-length-equals.texinfo -@include include/fun-alexandria-copy-sequence.texinfo -@include include/fun-alexandria-first-elt.texinfo -@include include/fun-alexandria-setf-first-elt.texinfo -@include include/fun-alexandria-last-elt.texinfo -@include include/fun-alexandria-setf-last-elt.texinfo -@include include/fun-alexandria-starts-with.texinfo -@include include/fun-alexandria-starts-with-subseq.texinfo -@include include/fun-alexandria-ends-with.texinfo -@include include/fun-alexandria-ends-with-subseq.texinfo -@include include/fun-alexandria-map-combinations.texinfo -@include include/fun-alexandria-map-derangements.texinfo -@include include/fun-alexandria-map-permutations.texinfo - -@node IO -@comment node-name, next, previous, up -@chapter IO - -@include include/fun-alexandria-read-stream-content-into-string.texinfo -@include include/fun-alexandria-read-file-into-string.texinfo -@include include/fun-alexandria-read-stream-content-into-byte-vector.texinfo -@include include/fun-alexandria-read-file-into-byte-vector.texinfo - -@node Macro Writing -@comment node-name, next, previous, up -@chapter Macro Writing - -@include include/macro-alexandria-once-only.texinfo -@include include/macro-alexandria-with-gensyms.texinfo -@include include/macro-alexandria-with-unique-names.texinfo -@include include/fun-alexandria-featurep.texinfo -@include include/fun-alexandria-parse-body.texinfo -@include include/fun-alexandria-parse-ordinary-lambda-list.texinfo - -@node Symbols -@comment node-name, next, previous, up -@chapter Symbols - -@include include/fun-alexandria-ensure-symbol.texinfo -@include include/fun-alexandria-format-symbol.texinfo -@include include/fun-alexandria-make-keyword.texinfo -@include include/fun-alexandria-make-gensym.texinfo -@include include/fun-alexandria-make-gensym-list.texinfo -@include include/fun-alexandria-symbolicate.texinfo - -@node Arrays -@comment node-name, next, previous, up -@chapter Arrays - -@include include/type-alexandria-array-index.texinfo -@include include/type-alexandria-array-length.texinfo -@include include/fun-alexandria-copy-array.texinfo - -@node Types -@comment node-name, next, previous, up -@chapter Types - -@include include/type-alexandria-string-designator.texinfo -@include include/macro-alexandria-coercef.texinfo -@include include/fun-alexandria-of-type.texinfo -@include include/fun-alexandria-type-equals.texinfo - -@node Numbers -@comment node-name, next, previous, up -@chapter Numbers - -@include include/macro-alexandria-maxf.texinfo -@include include/macro-alexandria-minf.texinfo - -@include include/fun-alexandria-binomial-coefficient.texinfo -@include include/fun-alexandria-count-permutations.texinfo -@include include/fun-alexandria-clamp.texinfo -@include include/fun-alexandria-lerp.texinfo -@include include/fun-alexandria-factorial.texinfo -@include include/fun-alexandria-subfactorial.texinfo -@include include/fun-alexandria-gaussian-random.texinfo -@include include/fun-alexandria-iota.texinfo -@include include/fun-alexandria-map-iota.texinfo -@include include/fun-alexandria-mean.texinfo -@include include/fun-alexandria-median.texinfo -@include include/fun-alexandria-variance.texinfo -@include include/fun-alexandria-standard-deviation.texinfo - -@bye diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/doc/docstrings.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/doc/docstrings.lisp deleted file mode 100644 index e049f78..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/doc/docstrings.lisp +++ /dev/null @@ -1,903 +0,0 @@ -;;; -*- lisp -*- - -;;;; A docstring extractor for the sbcl manual. Creates -;;;; @include-ready documentation from the docstrings of exported -;;;; symbols of specified packages. - -;;;; This software is part of the SBCL software system. SBCL is in the -;;;; public domain and is provided with absolutely no warranty. See -;;;; the COPYING file for more information. -;;;; -;;;; Written by Rudi Schlatte , mangled -;;;; by Nikodemus Siivola. - -;;;; TODO -;;;; * Verbatim text -;;;; * Quotations -;;;; * Method documentation untested -;;;; * Method sorting, somehow -;;;; * Index for macros & constants? -;;;; * This is getting complicated enough that tests would be good -;;;; * Nesting (currently only nested itemizations work) -;;;; * doc -> internal form -> texinfo (so that non-texinfo format are also -;;;; easily generated) - -;;;; FIXME: The description below is no longer complete. This -;;;; should possibly be turned into a contrib with proper documentation. - -;;;; Formatting heuristics (tweaked to format SAVE-LISP-AND-DIE sanely): -;;;; -;;;; Formats SYMBOL as @code{symbol}, or @var{symbol} if symbol is in -;;;; the argument list of the defun / defmacro. -;;;; -;;;; Lines starting with * or - that are followed by intented lines -;;;; are marked up with @itemize. -;;;; -;;;; Lines containing only a SYMBOL that are followed by indented -;;;; lines are marked up as @table @code, with the SYMBOL as the item. - -(eval-when (:compile-toplevel :load-toplevel :execute) - (require 'sb-introspect)) - -(defpackage :sb-texinfo - (:use :cl :sb-mop) - (:shadow #:documentation) - (:export #:generate-includes #:document-package) - (:documentation - "Tools to generate TexInfo documentation from docstrings.")) - -(in-package :sb-texinfo) - -;;;; various specials and parameters - -(defvar *texinfo-output*) -(defvar *texinfo-variables*) -(defvar *documentation-package*) -(defvar *base-package*) - -(defparameter *undocumented-packages* '(sb-pcl sb-int sb-kernel sb-sys sb-c)) - -(defparameter *documentation-types* - '(compiler-macro - function - method-combination - setf - ;;structure ; also handled by `type' - type - variable) - "A list of symbols accepted as second argument of `documentation'") - -(defparameter *character-replacements* - '((#\* . "star") (#\/ . "slash") (#\+ . "plus") - (#\< . "lt") (#\> . "gt") - (#\= . "equals")) - "Characters and their replacement names that `alphanumize' uses. If -the replacements contain any of the chars they're supposed to replace, -you deserve to lose.") - -(defparameter *characters-to-drop* '(#\\ #\` #\') - "Characters that should be removed by `alphanumize'.") - -(defparameter *texinfo-escaped-chars* "@{}" - "Characters that must be escaped with #\@ for Texinfo.") - -(defparameter *itemize-start-characters* '(#\* #\-) - "Characters that might start an itemization in docstrings when - at the start of a line.") - -(defparameter *symbol-characters* "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890*:-+&#'" - "List of characters that make up symbols in a docstring.") - -(defparameter *symbol-delimiters* " ,.!?;") - -(defparameter *ordered-documentation-kinds* - '(package type structure condition class macro)) - -;;;; utilities - -(defun flatten (list) - (cond ((null list) - nil) - ((consp (car list)) - (nconc (flatten (car list)) (flatten (cdr list)))) - ((null (cdr list)) - (cons (car list) nil)) - (t - (cons (car list) (flatten (cdr list)))))) - -(defun whitespacep (char) - (find char #(#\tab #\space #\page))) - -(defun setf-name-p (name) - (or (symbolp name) - (and (listp name) (= 2 (length name)) (eq (car name) 'setf)))) - -(defgeneric specializer-name (specializer)) - -(defmethod specializer-name ((specializer eql-specializer)) - (list 'eql (eql-specializer-object specializer))) - -(defmethod specializer-name ((specializer class)) - (class-name specializer)) - -(defun ensure-class-precedence-list (class) - (unless (class-finalized-p class) - (finalize-inheritance class)) - (class-precedence-list class)) - -(defun specialized-lambda-list (method) - ;; courtecy of AMOP p. 61 - (let* ((specializers (method-specializers method)) - (lambda-list (method-lambda-list method)) - (n-required (length specializers))) - (append (mapcar (lambda (arg specializer) - (if (eq specializer (find-class 't)) - arg - `(,arg ,(specializer-name specializer)))) - (subseq lambda-list 0 n-required) - specializers) - (subseq lambda-list n-required)))) - -(defun string-lines (string) - "Lines in STRING as a vector." - (coerce (with-input-from-string (s string) - (loop for line = (read-line s nil nil) - while line collect line)) - 'vector)) - -(defun indentation (line) - "Position of first non-SPACE character in LINE." - (position-if-not (lambda (c) (char= c #\Space)) line)) - -(defun docstring (x doc-type) - (cl:documentation x doc-type)) - -(defun flatten-to-string (list) - (format nil "~{~A~^-~}" (flatten list))) - -(defun alphanumize (original) - "Construct a string without characters like *`' that will f-star-ck -up filename handling. See `*character-replacements*' and -`*characters-to-drop*' for customization." - (let ((name (remove-if (lambda (x) (member x *characters-to-drop*)) - (if (listp original) - (flatten-to-string original) - (string original)))) - (chars-to-replace (mapcar #'car *character-replacements*))) - (flet ((replacement-delimiter (index) - (cond ((or (< index 0) (>= index (length name))) "") - ((alphanumericp (char name index)) "-") - (t "")))) - (loop for index = (position-if #'(lambda (x) (member x chars-to-replace)) - name) - while index - do (setf name (concatenate 'string (subseq name 0 index) - (replacement-delimiter (1- index)) - (cdr (assoc (aref name index) - *character-replacements*)) - (replacement-delimiter (1+ index)) - (subseq name (1+ index)))))) - name)) - -;;;; generating various names - -(defgeneric name (thing) - (:documentation "Name for a documented thing. Names are either -symbols or lists of symbols.")) - -(defmethod name ((symbol symbol)) - symbol) - -(defmethod name ((cons cons)) - cons) - -(defmethod name ((package package)) - (short-package-name package)) - -(defmethod name ((method method)) - (list - (generic-function-name (method-generic-function method)) - (method-qualifiers method) - (specialized-lambda-list method))) - -;;; Node names for DOCUMENTATION instances - -(defun short-name-for-symbol (symbol &optional (package *base-package*)) - "Given a SYMBOL, return its name if it's available in PACKAGE, - or PACKAGE:SYMBOL otherwise." - (format nil "~@[~a:~]~a" - (unless (eq symbol - (find-symbol (symbol-name symbol) - package)) - (shortest-package-name (symbol-package symbol))) - (symbol-name symbol))) - -(defgeneric name-using-kind/name (kind name doc)) - -(defmethod name-using-kind/name (kind (name string) doc) - (declare (ignore kind doc)) - name) - -(defmethod name-using-kind/name (kind (name symbol) doc) - (declare (ignore kind)) - (short-name-for-symbol name)) - -(defmethod name-using-kind/name (kind (name list) doc) - (declare (ignore kind)) - (assert (setf-name-p name)) - (let ((name (short-name-for-symbol (second name)))) - (format nil "(setf ~A)" name))) - -(defmethod name-using-kind/name ((kind (eql 'method)) name doc) - (format nil "~A~{ ~A~} ~A" - (name-using-kind/name nil (first name) doc) - (second name) - (third name))) - -(defun node-name (doc) - "Returns TexInfo node name as a string for a DOCUMENTATION instance." - (let ((kind (get-kind doc))) - (format nil "~:(~A~) ~(~A~)" kind (name-using-kind/name kind (get-name doc) doc)))) - -(defun shortest-package-name (package) - (car (sort (copy-list (cons (package-name package) (package-nicknames package))) - #'< :key #'length))) - -(defun short-package-name (package) - (unless (eq package *base-package*) - (shortest-package-name package))) - - -;;; Definition titles for DOCUMENTATION instances - -(defgeneric title-using-kind/name (kind name doc)) - -(defmethod title-using-kind/name (kind (name string) doc) - (declare (ignore kind doc)) - name) - -(defmethod title-using-kind/name (kind (name symbol) doc) - (declare (ignore kind)) - (short-name-for-symbol name)) - -(defmethod title-using-kind/name (kind (name list) doc) - (declare (ignore kind)) - (assert (setf-name-p name)) - (format nil "(setf ~A)" (short-name-for-symbol (second name)))) - -(defmethod title-using-kind/name ((kind (eql 'method)) name doc) - (format nil "~{~A ~}~A" - (second name) - (title-using-kind/name nil (first name) doc))) - -(defun title-name (doc) - "Returns a string to be used as name of the definition." - (string-downcase (title-using-kind/name (get-kind doc) (get-name doc) doc))) - -(defun include-pathname (doc) - (let* ((kind (get-kind doc)) - (name (nstring-downcase - (if (eq 'package kind) - (format nil "package-~A" (alphanumize (get-name doc))) - (format nil "~A-~A-~A" - (case (get-kind doc) - ((function generic-function) "fun") - (structure "struct") - (variable "var") - (otherwise (symbol-name (get-kind doc)))) - (alphanumize (let ((*base-package* nil)) - (short-package-name (get-package doc)))) - (alphanumize (get-name doc))))))) - (make-pathname :name name :type "texinfo"))) - -;;;; documentation class and related methods - -(defclass documentation () - ((name :initarg :name :reader get-name) - (kind :initarg :kind :reader get-kind) - (string :initarg :string :reader get-string) - (children :initarg :children :initform nil :reader get-children) - (package :initform *documentation-package* :reader get-package))) - -(defmethod print-object ((documentation documentation) stream) - (print-unreadable-object (documentation stream :type t) - (princ (list (get-kind documentation) (get-name documentation)) stream))) - -(defgeneric make-documentation (x doc-type string)) - -(defmethod make-documentation ((x package) doc-type string) - (declare (ignore doc-type)) - (make-instance 'documentation - :name (name x) - :kind 'package - :string string)) - -(defmethod make-documentation (x (doc-type (eql 'function)) string) - (declare (ignore doc-type)) - (let* ((fdef (and (fboundp x) (fdefinition x))) - (name x) - (kind (cond ((and (symbolp x) (special-operator-p x)) - 'special-operator) - ((and (symbolp x) (macro-function x)) - 'macro) - ((typep fdef 'generic-function) - (assert (or (symbolp name) (setf-name-p name))) - 'generic-function) - (fdef - (assert (or (symbolp name) (setf-name-p name))) - 'function))) - (children (when (eq kind 'generic-function) - (collect-gf-documentation fdef)))) - (make-instance 'documentation - :name (name x) - :string string - :kind kind - :children children))) - -(defmethod make-documentation ((x method) doc-type string) - (declare (ignore doc-type)) - (make-instance 'documentation - :name (name x) - :kind 'method - :string string)) - -(defmethod make-documentation (x (doc-type (eql 'type)) string) - (make-instance 'documentation - :name (name x) - :string string - :kind (etypecase (find-class x nil) - (structure-class 'structure) - (standard-class 'class) - (sb-pcl::condition-class 'condition) - ((or built-in-class null) 'type)))) - -(defmethod make-documentation (x (doc-type (eql 'variable)) string) - (make-instance 'documentation - :name (name x) - :string string - :kind (if (constantp x) - 'constant - 'variable))) - -(defmethod make-documentation (x (doc-type (eql 'setf)) string) - (declare (ignore doc-type)) - (make-instance 'documentation - :name (name x) - :kind 'setf-expander - :string string)) - -(defmethod make-documentation (x doc-type string) - (make-instance 'documentation - :name (name x) - :kind doc-type - :string string)) - -(defun maybe-documentation (x doc-type) - "Returns a DOCUMENTATION instance for X and DOC-TYPE, or NIL if -there is no corresponding docstring." - (let ((docstring (docstring x doc-type))) - (when docstring - (make-documentation x doc-type docstring)))) - -(defun lambda-list (doc) - (case (get-kind doc) - ((package constant variable type structure class condition nil) - nil) - (method - (third (get-name doc))) - (t - ;; KLUDGE: Eugh. - ;; - ;; believe it or not, the above comment was written before CSR - ;; came along and obfuscated this. (2005-07-04) - (when (symbolp (get-name doc)) - (labels ((clean (x &key optional key) - (typecase x - (atom x) - ((cons (member &optional)) - (cons (car x) (clean (cdr x) :optional t))) - ((cons (member &key)) - (cons (car x) (clean (cdr x) :key t))) - ((cons (member &whole &environment)) - ;; Skip these - (clean (cdr x) :optional optional :key key)) - ((cons cons) - (cons - (cond (key (if (consp (caar x)) - (caaar x) - (caar x))) - (optional (caar x)) - (t (clean (car x)))) - (clean (cdr x) :key key :optional optional))) - (cons - (cons - (cond ((or key optional) (car x)) - (t (clean (car x)))) - (clean (cdr x) :key key :optional optional)))))) - (clean (sb-introspect:function-lambda-list (get-name doc)))))))) - -(defun get-string-name (x) - (let ((name (get-name x))) - (cond ((symbolp name) - (symbol-name name)) - ((and (consp name) (eq 'setf (car name))) - (symbol-name (second name))) - ((stringp name) - name) - (t - (error "Don't know which symbol to use for name ~S" name))))) - -(defun documentation< (x y) - (let ((p1 (position (get-kind x) *ordered-documentation-kinds*)) - (p2 (position (get-kind y) *ordered-documentation-kinds*))) - (if (or (not (and p1 p2)) (= p1 p2)) - (string< (get-string-name x) (get-string-name y)) - (< p1 p2)))) - -;;;; turning text into texinfo - -(defun escape-for-texinfo (string &optional downcasep) - "Return STRING with characters in *TEXINFO-ESCAPED-CHARS* escaped -with #\@. Optionally downcase the result." - (let ((result (with-output-to-string (s) - (loop for char across string - when (find char *texinfo-escaped-chars*) - do (write-char #\@ s) - do (write-char char s))))) - (if downcasep (nstring-downcase result) result))) - -(defun empty-p (line-number lines) - (and (< -1 line-number (length lines)) - (not (indentation (svref lines line-number))))) - -;;; line markups - -(defvar *not-symbols* '("ANSI" "CLHS")) - -(defun locate-symbols (line) - "Return a list of index pairs of symbol-like parts of LINE." - ;; This would be a good application for a regex ... - (let (result) - (flet ((grab (start end) - (unless (member (subseq line start end) '("ANSI" "CLHS")) - (push (list start end) result)))) - (do ((begin nil) - (maybe-begin t) - (i 0 (1+ i))) - ((= i (length line)) - ;; symbol at end of line - (when (and begin (or (> i (1+ begin)) - (not (member (char line begin) '(#\A #\I))))) - (grab begin i)) - (nreverse result)) - (cond - ((and begin (find (char line i) *symbol-delimiters*)) - ;; symbol end; remember it if it's not "A" or "I" - (when (or (> i (1+ begin)) (not (member (char line begin) '(#\A #\I)))) - (grab begin i)) - (setf begin nil - maybe-begin t)) - ((and begin (not (find (char line i) *symbol-characters*))) - ;; Not a symbol: abort - (setf begin nil)) - ((and maybe-begin (not begin) (find (char line i) *symbol-characters*)) - ;; potential symbol begin at this position - (setf begin i - maybe-begin nil)) - ((find (char line i) *symbol-delimiters*) - ;; potential symbol begin after this position - (setf maybe-begin t)) - (t - ;; Not reading a symbol, not at potential start of symbol - (setf maybe-begin nil))))))) - -(defun texinfo-line (line) - "Format symbols in LINE texinfo-style: either as code or as -variables if the symbol in question is contained in symbols -*TEXINFO-VARIABLES*." - (with-output-to-string (result) - (let ((last 0)) - (dolist (symbol/index (locate-symbols line)) - (write-string (subseq line last (first symbol/index)) result) - (let ((symbol-name (apply #'subseq line symbol/index))) - (format result (if (member symbol-name *texinfo-variables* - :test #'string=) - "@var{~A}" - "@code{~A}") - (string-downcase symbol-name))) - (setf last (second symbol/index))) - (write-string (subseq line last) result)))) - -;;; lisp sections - -(defun lisp-section-p (line line-number lines) - "Returns T if the given LINE looks like start of lisp code -- -ie. if it starts with whitespace followed by a paren or -semicolon, and the previous line is empty" - (let ((offset (indentation line))) - (and offset - (plusp offset) - (find (find-if-not #'whitespacep line) "(;") - (empty-p (1- line-number) lines)))) - -(defun collect-lisp-section (lines line-number) - (let ((lisp (loop for index = line-number then (1+ index) - for line = (and (< index (length lines)) (svref lines index)) - while (indentation line) - collect line))) - (values (length lisp) `("@lisp" ,@lisp "@end lisp")))) - -;;; itemized sections - -(defun maybe-itemize-offset (line) - "Return NIL or the indentation offset if LINE looks like it starts -an item in an itemization." - (let* ((offset (indentation line)) - (char (when offset (char line offset)))) - (and offset - (member char *itemize-start-characters* :test #'char=) - (char= #\Space (find-if-not (lambda (c) (char= c char)) - line :start offset)) - offset))) - -(defun collect-maybe-itemized-section (lines starting-line) - ;; Return index of next line to be processed outside - (let ((this-offset (maybe-itemize-offset (svref lines starting-line))) - (result nil) - (lines-consumed 0)) - (loop for line-number from starting-line below (length lines) - for line = (svref lines line-number) - for indentation = (indentation line) - for offset = (maybe-itemize-offset line) - do (cond - ((not indentation) - ;; empty line -- inserts paragraph. - (push "" result) - (incf lines-consumed)) - ((and offset (> indentation this-offset)) - ;; nested itemization -- handle recursively - ;; FIXME: tables in itemizations go wrong - (multiple-value-bind (sub-lines-consumed sub-itemization) - (collect-maybe-itemized-section lines line-number) - (when sub-lines-consumed - (incf line-number (1- sub-lines-consumed)) ; +1 on next loop - (incf lines-consumed sub-lines-consumed) - (setf result (nconc (nreverse sub-itemization) result))))) - ((and offset (= indentation this-offset)) - ;; start of new item - (push (format nil "@item ~A" - (texinfo-line (subseq line (1+ offset)))) - result) - (incf lines-consumed)) - ((and (not offset) (> indentation this-offset)) - ;; continued item from previous line - (push (texinfo-line line) result) - (incf lines-consumed)) - (t - ;; end of itemization - (loop-finish)))) - ;; a single-line itemization isn't. - (if (> (count-if (lambda (line) (> (length line) 0)) result) 1) - (values lines-consumed `("@itemize" ,@(reverse result) "@end itemize")) - nil))) - -;;; table sections - -(defun tabulation-body-p (offset line-number lines) - (when (< line-number (length lines)) - (let ((offset2 (indentation (svref lines line-number)))) - (and offset2 (< offset offset2))))) - -(defun tabulation-p (offset line-number lines direction) - (let ((step (ecase direction - (:backwards (1- line-number)) - (:forwards (1+ line-number))))) - (when (and (plusp line-number) (< line-number (length lines))) - (and (eql offset (indentation (svref lines line-number))) - (or (when (eq direction :backwards) - (empty-p step lines)) - (tabulation-p offset step lines direction) - (tabulation-body-p offset step lines)))))) - -(defun maybe-table-offset (line-number lines) - "Return NIL or the indentation offset if LINE looks like it starts -an item in a tabulation. Ie, if it is (1) indented, (2) preceded by an -empty line, another tabulation label, or a tabulation body, (3) and -followed another tabulation label or a tabulation body." - (let* ((line (svref lines line-number)) - (offset (indentation line)) - (prev (1- line-number)) - (next (1+ line-number))) - (when (and offset (plusp offset)) - (and (or (empty-p prev lines) - (tabulation-body-p offset prev lines) - (tabulation-p offset prev lines :backwards)) - (or (tabulation-body-p offset next lines) - (tabulation-p offset next lines :forwards)) - offset)))) - -;;; FIXME: This and itemization are very similar: could they share -;;; some code, mayhap? - -(defun collect-maybe-table-section (lines starting-line) - ;; Return index of next line to be processed outside - (let ((this-offset (maybe-table-offset starting-line lines)) - (result nil) - (lines-consumed 0)) - (loop for line-number from starting-line below (length lines) - for line = (svref lines line-number) - for indentation = (indentation line) - for offset = (maybe-table-offset line-number lines) - do (cond - ((not indentation) - ;; empty line -- inserts paragraph. - (push "" result) - (incf lines-consumed)) - ((and offset (= indentation this-offset)) - ;; start of new item, or continuation of previous item - (if (and result (search "@item" (car result) :test #'char=)) - (push (format nil "@itemx ~A" (texinfo-line line)) - result) - (progn - (push "" result) - (push (format nil "@item ~A" (texinfo-line line)) - result))) - (incf lines-consumed)) - ((> indentation this-offset) - ;; continued item from previous line - (push (texinfo-line line) result) - (incf lines-consumed)) - (t - ;; end of itemization - (loop-finish)))) - ;; a single-line table isn't. - (if (> (count-if (lambda (line) (> (length line) 0)) result) 1) - (values lines-consumed - `("" "@table @emph" ,@(reverse result) "@end table" "")) - nil))) - -;;; section markup - -(defmacro with-maybe-section (index &rest forms) - `(multiple-value-bind (count collected) (progn ,@forms) - (when count - (dolist (line collected) - (write-line line *texinfo-output*)) - (incf ,index (1- count))))) - -(defun write-texinfo-string (string &optional lambda-list) - "Try to guess as much formatting for a raw docstring as possible." - (let ((*texinfo-variables* (flatten lambda-list)) - (lines (string-lines (escape-for-texinfo string nil)))) - (loop for line-number from 0 below (length lines) - for line = (svref lines line-number) - do (cond - ((with-maybe-section line-number - (and (lisp-section-p line line-number lines) - (collect-lisp-section lines line-number)))) - ((with-maybe-section line-number - (and (maybe-itemize-offset line) - (collect-maybe-itemized-section lines line-number)))) - ((with-maybe-section line-number - (and (maybe-table-offset line-number lines) - (collect-maybe-table-section lines line-number)))) - (t - (write-line (texinfo-line line) *texinfo-output*)))))) - -;;;; texinfo formatting tools - -(defun hide-superclass-p (class-name super-name) - (let ((super-package (symbol-package super-name))) - (or - ;; KLUDGE: We assume that we don't want to advertise internal - ;; classes in CP-lists, unless the symbol we're documenting is - ;; internal as well. - (and (member super-package #.'(mapcar #'find-package *undocumented-packages*)) - (not (eq super-package (symbol-package class-name)))) - ;; KLUDGE: We don't generally want to advertise SIMPLE-ERROR or - ;; SIMPLE-CONDITION in the CPLs of conditions that inherit them - ;; simply as a matter of convenience. The assumption here is that - ;; the inheritance is incidental unless the name of the condition - ;; begins with SIMPLE-. - (and (member super-name '(simple-error simple-condition)) - (let ((prefix "SIMPLE-")) - (mismatch prefix (string class-name) :end2 (length prefix))) - t ; don't return number from MISMATCH - )))) - -(defun hide-slot-p (symbol slot) - ;; FIXME: There is no pricipal reason to avoid the slot docs fo - ;; structures and conditions, but their DOCUMENTATION T doesn't - ;; currently work with them the way we'd like. - (not (and (typep (find-class symbol nil) 'standard-class) - (docstring slot t)))) - -(defun texinfo-anchor (doc) - (format *texinfo-output* "@anchor{~A}~%" (node-name doc))) - -;;; KLUDGE: &AUX *PRINT-PRETTY* here means "no linebreaks please" -(defun texinfo-begin (doc &aux *print-pretty*) - (let ((kind (get-kind doc))) - (format *texinfo-output* "@~A {~:(~A~)} ~({~A}~@[ ~{~A~^ ~}~]~)~%" - (case kind - ((package constant variable) - "defvr") - ((structure class condition type) - "deftp") - (t - "deffn")) - (map 'string (lambda (char) (if (eql char #\-) #\Space char)) (string kind)) - (title-name doc) - ;; &foo would be amusingly bold in the pdf thanks to TeX/Texinfo - ;; interactions,so we escape the ampersand -- amusingly for TeX. - ;; sbcl.texinfo defines macros that expand @&key and friends to &key. - (mapcar (lambda (name) - (if (member name lambda-list-keywords) - (format nil "@~A" name) - name)) - (lambda-list doc))))) - -(defun texinfo-index (doc) - (let ((title (title-name doc))) - (case (get-kind doc) - ((structure type class condition) - (format *texinfo-output* "@tindex ~A~%" title)) - ((variable constant) - (format *texinfo-output* "@vindex ~A~%" title)) - ((compiler-macro function method-combination macro generic-function) - (format *texinfo-output* "@findex ~A~%" title))))) - -(defun texinfo-inferred-body (doc) - (when (member (get-kind doc) '(class structure condition)) - (let ((name (get-name doc))) - ;; class precedence list - (format *texinfo-output* "Class precedence list: @code{~(~{@lw{~A}~^, ~}~)}~%~%" - (remove-if (lambda (class) (hide-superclass-p name class)) - (mapcar #'class-name (ensure-class-precedence-list (find-class name))))) - ;; slots - (let ((slots (remove-if (lambda (slot) (hide-slot-p name slot)) - (class-direct-slots (find-class name))))) - (when slots - (format *texinfo-output* "Slots:~%@itemize~%") - (dolist (slot slots) - (format *texinfo-output* - "@item ~(@code{~A}~#[~:; --- ~]~ - ~:{~2*~@[~2:*~A~P: ~{@code{@w{~S}}~^, ~}~]~:^; ~}~)~%~%" - (slot-definition-name slot) - (remove - nil - (mapcar - (lambda (name things) - (if things - (list name (length things) things))) - '("initarg" "reader" "writer") - (list - (slot-definition-initargs slot) - (slot-definition-readers slot) - (slot-definition-writers slot))))) - ;; FIXME: Would be neater to handler as children - (write-texinfo-string (docstring slot t))) - (format *texinfo-output* "@end itemize~%~%")))))) - -(defun texinfo-body (doc) - (write-texinfo-string (get-string doc) (lambda-list doc))) - -(defun texinfo-end (doc) - (write-line (case (get-kind doc) - ((package variable constant) "@end defvr") - ((structure type class condition) "@end deftp") - (t "@end deffn")) - *texinfo-output*)) - -(defun write-texinfo (doc) - "Writes TexInfo for a DOCUMENTATION instance to *TEXINFO-OUTPUT*." - (texinfo-anchor doc) - (texinfo-begin doc) - (texinfo-index doc) - (texinfo-inferred-body doc) - (texinfo-body doc) - (texinfo-end doc) - ;; FIXME: Children should be sorted one way or another - (mapc #'write-texinfo (get-children doc))) - -;;;; main logic - -(defun collect-gf-documentation (gf) - "Collects method documentation for the generic function GF" - (loop for method in (generic-function-methods gf) - for doc = (maybe-documentation method t) - when doc - collect doc)) - -(defun collect-name-documentation (name) - (loop for type in *documentation-types* - for doc = (maybe-documentation name type) - when doc - collect doc)) - -(defun collect-symbol-documentation (symbol) - "Collects all docs for a SYMBOL and (SETF SYMBOL), returns a list of -the form DOC instances. See `*documentation-types*' for the possible -values of doc-type." - (nconc (collect-name-documentation symbol) - (collect-name-documentation (list 'setf symbol)))) - -(defun collect-documentation (package &optional ht) - "Collects all documentation for all external symbols of the given -package, as well as for the package itself." - (let* ((*documentation-package* (find-package package)) - (docs nil)) - (check-type package package) - (do-external-symbols (symbol package) - (unless (and ht - (nth-value 1 (alexandria:ensure-gethash symbol ht t))) - (setf (gethash symbol ht) t) - (setf docs (nconc (collect-symbol-documentation symbol) docs)))) - (let ((doc (maybe-documentation *documentation-package* t))) - (when doc - (push doc docs))) - docs)) - -(defmacro with-texinfo-file (pathname &body forms) - `(with-open-file (*texinfo-output* ,pathname - :direction :output - :if-does-not-exist :create - :if-exists :supersede) - ,@forms)) - -(defun write-ifnottex () - ;; We use @&key, etc to escape & from TeX in lambda lists -- so we need to - ;; define them for info as well. - ;; Texinfo > 5 doesn't allow "&" in macro names any more; - ;; see also https://bugs.launchpad.net/asdf/+bug/1172567 or - ;; ASDF commit dfa4643b212b194f2d673b6f0d9c7d4b19d823ba - (flet ((macro (name) - (let ((string (string-downcase name))) - (format *texinfo-output* "@macro ~A~%&~A~%@end macro~%" string string)))) - (macro 'allow-other-keys) - (macro 'optional) - (macro 'rest) - (macro 'key) - (macro 'body))) - -(defun generate-includes (directory packages &key (base-package :cl-user)) - "Create files in `directory' containing Texinfo markup of all -docstrings of each exported symbol in `packages'. `directory' is -created if necessary. If you supply a namestring that doesn't end in a -slash, you lose. The generated files are of the form -\"__.texinfo\" and can be included -via @include statements. Texinfo syntax-significant characters are -escaped in symbol names, but if a docstring contains invalid Texinfo -markup, you lose." - (handler-bind ((warning #'muffle-warning)) - (let* ((directory (merge-pathnames (pathname directory))) - (*base-package* (find-package base-package)) - (syms-seen (make-hash-table :test #'eq))) - (ensure-directories-exist directory) - (dolist (package packages) - (dolist (doc (collect-documentation (find-package package) syms-seen)) - (with-texinfo-file (merge-pathnames (include-pathname doc) directory) - (write-texinfo doc)))) - (with-texinfo-file (merge-pathnames "ifnottex.texinfo" directory) - (write-ifnottex)) - directory))) - -(defun document-package (package &optional filename) - "Create a file containing all available documentation for the -exported symbols of `package' in Texinfo format. If `filename' is not -supplied, a file \".texinfo\" is generated. - -The definitions can be referenced using Texinfo statements like -@ref{__.texinfo}. Texinfo -syntax-significant characters are escaped in symbol names, but if a -docstring contains invalid Texinfo markup, you lose." - (handler-bind ((warning #'muffle-warning)) - (let* ((package (find-package package)) - (filename (or filename (make-pathname - :name (string-downcase (short-package-name package)) - :type "texinfo"))) - (docs (sort (collect-documentation package) #'documentation<))) - (with-texinfo-file filename - (dolist (doc docs) - (write-texinfo doc))) - filename))) diff --git a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/scripts/ci-test.lisp b/quicklisp/dists/quicklisp/software/alexandria-20220707-git/scripts/ci-test.lisp deleted file mode 100644 index 2d74959..0000000 --- a/quicklisp/dists/quicklisp/software/alexandria-20220707-git/scripts/ci-test.lisp +++ /dev/null @@ -1,5 +0,0 @@ -;; Install all the deps -(ql:quickload "alexandria/tests") - -;; Run the tests! -(asdf:test-system "alexandria") diff --git a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/.travis.yml b/quicklisp/dists/quicklisp/software/anaphora-20220220-git/.travis.yml deleted file mode 100644 index 9a1fdd8..0000000 --- a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/.travis.yml +++ /dev/null @@ -1,34 +0,0 @@ -language: lisp -sudo: required - -env: - matrix: - - LISP=abcl - - LISP=allegro - - LISP=sbcl - - LISP=sbcl32 - - LISP=ccl - - LISP=ccl32 - - LISP=ecl - - LISP=clisp - - LISP=clisp32 - - LISP=cmucl - -matrix: - allow_failures: - # Disabled until issue #6 is fixed. - - env: LISP=clisp - - env: LISP=clisp32 - # Disabled until cim supports cmucl. - - env: LISP=cmucl - -install: - - curl -L https://github.com/tokenrove/cl-travis/raw/master/install.sh | sh - - if [ "${LISP:(-2)}" = "32" ]; then - sudo apt-get install -qq -y libc6-dev-i386; - fi - -script: - - cl -e '(ql:quickload :anaphora/test) - (unless (asdf:oos :test-op :anaphora/test) - (uiop:quit 1))' diff --git a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/LICENSE b/quicklisp/dists/quicklisp/software/anaphora-20220220-git/LICENSE deleted file mode 100644 index 8a7316d..0000000 --- a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/LICENSE +++ /dev/null @@ -1,3 +0,0 @@ -;;;; This file is part of the Anaphora package Common Lisp, -;;;; and has been placed in Public Domain by the author, -;;;; Nikodemus Siivola diff --git a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/README.md b/quicklisp/dists/quicklisp/software/anaphora-20220220-git/README.md deleted file mode 100644 index 5fa3c97..0000000 --- a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# Anaphora - -Anaphora is the anaphoric macro collection from Hell: it includes many -new fiends in addition to old friends like `AIF` and `AWHEN`. -Anaphora has been placed in Public Domain by the author, [Nikodemus -Siivola](mailto:nikodemus@random-state.net). - -# Installation - -Use [quicklisp](http://www.quicklisp.org/), and simply: - -``` -CL-USER(1): (ql:quickload "anaphora") -``` - -# Documentation - -Anaphoric macros provide implicit bindings for various -operations. Extensive use of anaphoric macros is not good style, -and probably makes you go blind as well — there's a reason why -Anaphora claims to be from Hell. - -Anaphora provides two families of anaphoric macros, which can be -identified by their names and packages (both families are also -exported from the package `ANAPHORA`). The implicitly-bound symbol -`ANAPHORA:IT` is also exported from all three packages. - -## Basic anaphora - -#### Exported from package `ANAPHORA-BASIC` - -These bind their first argument to `IT` via `LET`. In case of `COND` -all clauses have their test-values bound to `IT`. - -Variants: `AAND`, `ALET`, `APROG1`, `AIF`, `ACOND`, `AWHEN`, `ACASE`, -`ACCASE`, `AECASE`, `ATYPECASE`, `ACTYPECASE`, and `AETYPECASE`. - -## Symbol-macro anaphora - -#### Exported from package `ANAPHORA-SYMBOL` - -These bind their first argument (unevaluated) to `IT` via -SYMBOL-`MACROLET.` - -Variants: `SOR`, `SLET`, `SIF`, `SCOND`, `SUNLESS`, -`SWHEN`, `SCASE`, `SCCASE`, `SECASE`, `STYPECASE`, `SCTYPECASE`, -`SETYPECASE`. - -Also: `ASIF`, which binds via `LET` for the -then-clause, and `SYMBOL-MACROLET` for the else-clause. diff --git a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/anaphora.asd b/quicklisp/dists/quicklisp/software/anaphora-20220220-git/anaphora.asd deleted file mode 100644 index 4f48aa3..0000000 --- a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/anaphora.asd +++ /dev/null @@ -1,33 +0,0 @@ -;;;; -*- Mode: Lisp; Base: 10; Syntax: ANSI-Common-lisp; -*- - -;;;; Anaphora: The Anaphoric Macro Package from Hell -;;;; -;;;; This been placed in Public Domain by the author, -;;;; Nikodemus Siivola - -(defsystem :anaphora - :version "0.9.8" - :description "The Anaphoric Macro Package from Hell" - :author "Nikodemus Siivola " - :maintainer "Sean Whitton " - :license "Public Domain" - :components - ((:file "packages") - (:file "early" :depends-on ("packages")) - (:file "symbolic" :depends-on ("early")) - (:file "anaphora" :depends-on ("symbolic")))) - -(defsystem :anaphora/test - :description "Tests for anaphora" - :author "Nikodemus Siivola " - :maintainer "Sean Whitton " - :license "Public Domain" - :depends-on (:anaphora :rt) - :components ((:file "tests"))) - -(defmethod perform ((o test-op) (c (eql (find-system :anaphora)))) - (test-system :anaphora/test)) - -(defmethod perform ((o test-op) (c (eql (find-system :anaphora/test)))) - (or (symbol-call :rt '#:do-tests) - (error "test-op failed"))) diff --git a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/anaphora.lisp b/quicklisp/dists/quicklisp/software/anaphora-20220220-git/anaphora.lisp deleted file mode 100644 index 0ccc151..0000000 --- a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/anaphora.lisp +++ /dev/null @@ -1,168 +0,0 @@ -;;;; -*- Mode: Lisp; Base: 10; Syntax: ANSI-Common-Lisp; Package: ANAPHORA -*- - -;;;; Anaphora: The Anaphoric Macro Package from Hell -;;;; -;;;; This been placed in Public Domain by the author, -;;;; Nikodemus Siivola - -(in-package :anaphora) - -;;; This was the original implementation of SYMBOLIC -- and still good -;;; for getting the basic idea. Brian Masterbrooks solution to -;;; infinite recusion during macroexpansion, that nested forms of this -;;; are subject to, is in symbolic.lisp. -;;; -;;; (defmacro symbolic (op test &body body &environment env) -;;; `(symbol-macrolet ((it ,test)) -;;; (,op it ,@body))) - -(defmacro alet (form &body body) - "Binds the FORM to IT (via LET) in the scope of the BODY." - `(anaphoric ignore-first ,form (progn ,@body))) - -(defmacro slet (form &body body) - "Binds the FORM to IT (via SYMBOL-MACROLET) in the scope of the BODY. IT can -be set with SETF." - `(symbolic ignore-first ,form (progn ,@body))) - -(defmacro aand (first &rest rest) - "Like AND, except binds the first argument to IT (via LET) for the -scope of the rest of the arguments." - `(anaphoric and ,first ,@rest)) - -(defmacro sor (first &rest rest) - "Like OR, except binds the first argument to IT (via SYMBOL-MACROLET) for -the scope of the rest of the arguments. IT can be set with SETF." - `(symbolic or ,first ,@rest)) - -(defmacro aif (test then &optional else) - "Like IF, except binds the result of the test to IT (via LET) for -the scope of the then and else expressions." - `(anaphoric if ,test ,then ,else)) - -(defmacro sif (test then &optional else) - "Like IF, except binds the test form to IT (via SYMBOL-MACROLET) for -the scope of the then and else expressions. IT can be set with SETF" - `(symbolic if ,test ,then ,else)) - -(defmacro asif (test then &optional else) - "Like IF, except binds the result of the test to IT (via LET) for -the the scope of the then-expression, and the test form to IT (via -SYMBOL-MACROLET) for the scope of the else-expression. Within scope of -the else-expression, IT can be set with SETF." - `(let ((it ,test)) - (if it - ,then - (symbolic ignore-first ,test ,else)))) - -(defmacro aprog1 (first &body rest) - "Binds IT to the first form so that it can be used in the rest of the -forms. The whole thing returns IT." - `(anaphoric prog1 ,first ,@rest)) - -(defmacro awhen (test &body body) - "Like WHEN, except binds the result of the test to IT (via LET) for the scope -of the body." - `(anaphoric when ,test ,@body)) - -(defmacro swhen (test &body body) - "Like WHEN, except binds the test form to IT (via SYMBOL-MACROLET) for the -scope of the body. IT can be set with SETF." - `(symbolic when ,test ,@body)) - -(defmacro sunless (test &body body) - "Like UNLESS, except binds the test form to IT (via SYMBOL-MACROLET) for the -scope of the body. IT can be set with SETF." - `(symbolic unless ,test ,@body)) - -(defmacro acase (keyform &body cases) - "Like CASE, except binds the result of the keyform to IT (via LET) for the -scope of the cases." - `(anaphoric case ,keyform ,@cases)) - -(defmacro scase (keyform &body cases) - "Like CASE, except binds the keyform to IT (via SYMBOL-MACROLET) for the -scope of the body. IT can be set with SETF." - `(symbolic case ,keyform ,@cases)) - -(defmacro aecase (keyform &body cases) - "Like ECASE, except binds the result of the keyform to IT (via LET) for the -scope of the cases." - `(anaphoric ecase ,keyform ,@cases)) - -(defmacro secase (keyform &body cases) - "Like ECASE, except binds the keyform to IT (via SYMBOL-MACROLET) for the -scope of the cases. IT can be set with SETF." - `(symbolic ecase ,keyform ,@cases)) - -(defmacro accase (keyform &body cases) - "Like CCASE, except binds the result of the keyform to IT (via LET) for the -scope of the cases. Unlike CCASE, the keyform/place doesn't receive new values -possibly stored with STORE-VALUE restart; the new value is received by IT." - `(anaphoric ccase ,keyform ,@cases)) - -(defmacro sccase (keyform &body cases) - "Like CCASE, except binds the keyform to IT (via SYMBOL-MACROLET) for the -scope of the cases. IT can be set with SETF." - `(symbolic ccase ,keyform ,@cases)) - -(defmacro atypecase (keyform &body cases) - "Like TYPECASE, except binds the result of the keyform to IT (via LET) for -the scope of the cases." - `(anaphoric typecase ,keyform ,@cases)) - -(defmacro stypecase (keyform &body cases) - "Like TYPECASE, except binds the keyform to IT (via SYMBOL-MACROLET) for the -scope of the cases. IT can be set with SETF." - `(symbolic typecase ,keyform ,@cases)) - -(defmacro aetypecase (keyform &body cases) - "Like ETYPECASE, except binds the result of the keyform to IT (via LET) for -the scope of the cases." - `(anaphoric etypecase ,keyform ,@cases)) - -(defmacro setypecase (keyform &body cases) - "Like ETYPECASE, except binds the keyform to IT (via SYMBOL-MACROLET) for -the scope of the cases. IT can be set with SETF." - `(symbolic etypecase ,keyform ,@cases)) - -(defmacro actypecase (keyform &body cases) - "Like CTYPECASE, except binds the result of the keyform to IT (via LET) for -the scope of the cases. Unlike CTYPECASE, new values possible stored by the -STORE-VALUE restart are not received by the keyform/place, but by IT." - `(anaphoric ctypecase ,keyform ,@cases)) - -(defmacro sctypecase (keyform &body cases) - "Like CTYPECASE, except binds the keyform to IT (via SYMBOL-MACROLET) for -the scope of the cases. IT can be set with SETF." - `(symbolic ctypecase ,keyform ,@cases)) - -(defmacro acond (&body clauses) - "Like COND, except result of each test-form is bound to IT (via LET) for the -scope of the corresponding clause." - (labels ((rec (clauses) - (if clauses - (destructuring-bind ((test &body body) . rest) clauses - (if body - `(anaphoric if ,test (progn ,@body) ,(rec rest)) - `(anaphoric if ,test it ,(rec rest)))) - nil))) - (rec clauses))) - -(defmacro scond (&body clauses) - "Like COND, except each test-form is bound to IT (via SYMBOL-MACROLET) for the -scope of the corresponsing clause. IT can be set with SETF." - (labels ((rec (clauses) - (if clauses - (destructuring-bind ((test &body body) . rest) clauses - (if body - `(symbolic if ,test (progn ,@body) ,(rec rest)) - `(symbolic if ,test it ,(rec rest)))) - nil))) - (rec clauses))) - -(defmacro alambda (lambda-list &body body) - "Like LAMBDA, except that SELF is bound to the resulting function (via LABELS) -within BODY." - `(labels ((self ,lambda-list ,@body)) - #'self)) diff --git a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/early.lisp b/quicklisp/dists/quicklisp/software/anaphora-20220220-git/early.lisp deleted file mode 100644 index db044af..0000000 --- a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/early.lisp +++ /dev/null @@ -1,20 +0,0 @@ -;;;; -*- Mode: Lisp; Base: 10; Syntax: ANSI-Common-Lisp; Package: ANAPHORA -*- - -;;;; Anaphora: The Anaphoric Macro Package from Hell -;;;; -;;;; This been placed in Public Domain by the author, -;;;; Nikodemus Siivola - -(in-package :anaphora) - -(defmacro with-unique-names ((&rest bindings) &body body) - `(let ,(mapcar #'(lambda (binding) - (destructuring-bind (var prefix) - (if (consp binding) binding (list binding binding)) - `(,var (gensym ,(string prefix))))) - bindings) - ,@body)) - -(defmacro ignore-first (first expr) - (declare (ignore first)) - expr) diff --git a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/packages.lisp b/quicklisp/dists/quicklisp/software/anaphora-20220220-git/packages.lisp deleted file mode 100644 index ba9fa4b..0000000 --- a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/packages.lisp +++ /dev/null @@ -1,94 +0,0 @@ -;;;; -*- Mode: Lisp; Base: 10; Syntax: ANSI-Common-Lisp; Package: CL-USER -*- - -;;;; Anaphora: The Anaphoric Macro Package from Hell -;;;; -;;;; This been placed in Public Domain by the author, -;;;; Nikodemus Siivola - -(defpackage :anaphora - (:use :cl) - (:export - #:it - #:self - #:alet - #:slet - #:aif - #:aand - #:sor - #:awhen - #:aprog1 - #:acase - #:aecase - #:accase - #:atypecase - #:aetypecase - #:actypecase - #:acond - #:alambda - #:sif - #:asif - #:swhen - #:sunless - #:scase - #:secase - #:sccase - #:stypecase - #:setypecase - #:sctypecase - #:scond) - (:documentation - "ANAPHORA provides a full complement of anaphoric macros. Subsets of the -functionality provided by this package are exported from ANAPHORA-BASIC and -ANAPHORA-SYMBOL.")) - -(defpackage :anaphora-basic - (:use :cl :anaphora) - (:export - #:it - #:self - #:alet - #:aif - #:aand - #:awhen - #:aprog1 - #:acase - #:aecase - #:accase - #:atypecase - #:aetypecase - #:actypecase - #:acond - #:alambda) - (:documentation - "ANAPHORA-BASIC provides all normal anaphoric constructs, which bind -primary values to IT/SELF.")) - -(defpackage :anaphora-symbol - (:use :cl :anaphora) - (:export - #:it - #:slet - #:sor - #:sif - #:asif - #:swhen - #:sunless - #:scase - #:secase - #:sccase - #:stypecase - #:setypecase - #:sctypecase - #:scond) - (:documentation - "ANAPHORA-SYMBOL provides ``symbolic anaphoric macros'', which bind forms -to IT via SYMBOL-MACROLET. - -Examples: - - (sor (gethash key table) (setf it default)) - - (asif (gethash key table) - (foo it) ; IT is a value bound by LET here - (setf it default)) ; IT is the GETHASH form bound by SYMBOL-MACROLET here -")) diff --git a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/symbolic.lisp b/quicklisp/dists/quicklisp/software/anaphora-20220220-git/symbolic.lisp deleted file mode 100644 index 686c6fd..0000000 --- a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/symbolic.lisp +++ /dev/null @@ -1,54 +0,0 @@ -;;;; -*- Mode: Lisp; Base: 10; Syntax: ANSI-Common-Lisp; Package: ANAPHORA -*- - -;;;; Copyright (c) 2003 Brian Mastenbrook - -;;;; Permission is hereby granted, free of charge, to any person obtaining -;;;; a copy of this software and associated documentation files (the -;;;; "Software"), to deal in the Software without restriction, including -;;;; without limitation the rights to use, copy, modify, merge, publish, -;;;; distribute, sublicense, and/or sell copies of the Software, and to -;;;; permit persons to whom the Software is furnished to do so, subject to -;;;; the following conditions: - -;;;; The above copyright notice and this permission notice shall be -;;;; included in all copies or substantial portions of the Software. - -;;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -;;;; IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -;;;; CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -;;;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -;;;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -(in-package :anaphora) - -(defmacro internal-symbol-macrolet (&rest whatever) - `(symbol-macrolet ,@whatever)) - -(define-setf-expander internal-symbol-macrolet (binding-forms place &environment env) - (multiple-value-bind (dummies vals newvals setter getter) - (get-setf-expansion place env) - (values dummies - (substitute `(symbol-macrolet ,binding-forms it) 'it vals) - newvals - `(symbol-macrolet ,binding-forms ,setter) - `(symbol-macrolet ,binding-forms ,getter)))) - -(with-unique-names (s-indicator current-s-indicator) - (defmacro symbolic (operation test &rest other-args) - (with-unique-names (this-s) - (let ((current-s (get s-indicator current-s-indicator))) - (setf (get s-indicator current-s-indicator) this-s) - `(symbol-macrolet - ((,this-s (internal-symbol-macrolet ((it ,current-s)) ,test)) - (it ,this-s)) - (,operation it ,@other-args))))) - - (defmacro anaphoric (op test &body body) - (with-unique-names (this-s) - (setf (get s-indicator current-s-indicator) this-s) - `(let* ((it ,test) - (,this-s it)) - (declare (ignorable ,this-s)) - (,op it ,@body))))) diff --git a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/tests.lisp b/quicklisp/dists/quicklisp/software/anaphora-20220220-git/tests.lisp deleted file mode 100644 index 2d378a3..0000000 --- a/quicklisp/dists/quicklisp/software/anaphora-20220220-git/tests.lisp +++ /dev/null @@ -1,440 +0,0 @@ -;;;; Anaphora: The Anaphoric Macro Package from Hell -;;;; -;;;; This been placed in Public Domain by the author, -;;;; Nikodemus Siivola - -(defpackage :anaphora-test - (:use :cl :anaphora :rt)) - -(in-package :anaphora-test) - -(deftest alet.1 - (alet (1+ 1) - (1+ it)) - 3) - -(deftest alet.2 - (alet (1+ 1) - it - (1+ it)) - 3) - -(deftest slet.1 - (let ((x (list 1 2 3))) - (slet (car x) - (incf it) (values it x))) - 2 (2 2 3)) - -(deftest aand.1 - (aand (+ 1 1) - (+ 1 it)) - 3) - -(deftest aand.2 - (aand 1 t (values it 2)) - 1 2) - -(deftest aand.3 - (let ((x 1)) - (aand (incf x) t t (values t it))) - t 2) - -(deftest aand.4 - (aand 1 (values t it)) - t 1) - -#+(or) -;;; bug or a feature? forms like this expand to -;;; -;;; (let ((it (values ...))) (and it ...)) -;;; -(deftest aand.5 - (aand (values nil t) it) - nil t) - -(deftest sor.1 - (let ((x (list nil))) - (sor (car x) - (setf it t)) - x) - (t)) - -(deftest aif.1 - (aif (+ 1 1) - (+ 1 it) - :never) - 3) - -(deftest aif.2 - (let ((x 0)) - (aif (incf x) - it - :never)) - 1) - -(deftest aif.3 - (let ((x 0)) - (aif (eval `(and ,(incf x) nil)) - :never - (list it x))) - (nil 1)) - -(deftest sif.1 - (let ((x (list nil))) - (sif (car x) - (setf it :oops) - (setf it :yes!)) - (car x)) - :yes!) - -(deftest sif.2 - (let ((x (list t))) - (sif (car x) - (setf it :yes!) - (setf it :oops)) - (car x)) - :yes!) - -(deftest sif.3 - (sif (list 1 2 3) - (sif (car it) - (setf it 'a) - :foo)) - a) - -(deftest sif.4 - (progn - (defclass sif.4 () - ((a :initform (list :sif)))) - (with-slots (a) - (make-instance 'sif.4) - (sif a - (sif (car it) - it)))) - :sif) - -(deftest asif.1 - (let ((x (list 0))) - (asif (incf (car x)) - it - (list :oops it))) - 1) - -(deftest asif.2 - (let ((x (list nil))) - (asif (car x) - (setf x :oops) - (setf it :yes!)) - x) - (:yes!)) - -(deftest awhen.1 - (let ((x 0)) - (awhen (incf x) - (+ 1 it))) - 2) - -(deftest awhen.2 - (let ((x 0)) - (or (awhen (not (incf x)) - t) - x)) - 1) - -(deftest swhen.1 - (let ((x 0)) - (swhen x - (setf it :ok)) - x) - :ok) - -(deftest swhen.2 - (let ((x nil)) - (swhen x - (setf it :oops)) - x) - nil) - -(deftest sunless.1 - (let ((x nil)) - (sunless x - (setf it :ok)) - x) - :ok) - -(deftest sunless.2 - (let ((x t)) - (sunless x - (setf it :oops)) - x) - t) - -(deftest acase.1 - (let ((x 0)) - (acase (incf x) - (0 :no) - (1 (list :yes it)) - (2 :nono))) - (:yes 1)) - -(deftest scase.1 - (let ((x (list 3))) - (scase (car x) - (0 (setf it :no)) - (3 (setf it :yes!)) - (t (setf it :nono))) - x) - (:yes!)) - -(deftest aecase.1 - (let ((x (list :x))) - (aecase (car x) - (:y :no) - (:x (list it :yes)))) - (:x :yes)) - -(deftest aecase.2 - (nth-value 0 (ignore-errors - (let ((x (list :x))) - (secase (car x) - (:y :no))) - :oops)) - nil) - -(deftest secase.1 - (let ((x (list :x))) - (secase (car x) - (:y (setf it :no)) - (:x (setf it :yes))) - x) - (:yes)) - -(deftest secase.2 - (nth-value 0 (ignore-errors - (let ((x (list :x))) - (secase (car x) - (:y (setf it :no))) - :oops))) - nil) - -(deftest accase.1 - (let ((x (list :x))) - (accase (car x) - (:y :no) - (:x (list it :yes)))) - (:x :yes)) - -(deftest accase.2 - (let ((x (list :x))) - (handler-bind ((type-error (lambda (e) (store-value :z e)))) - (accase (car x) - (:y (setf x :no)) - (:z (setf x :yes)))) - x) - :yes) - -(deftest accase.3 - (let ((x (list :x))) - (accase (car x) - (:x (setf it :foo))) - x) - (:x)) - -(deftest sccase.1 - (let ((x (list :x))) - (sccase (car x) - (:y (setf it :no)) - (:x (setf it :yes))) - x) - (:yes)) - -(deftest sccase.2 - (let ((x (list :x))) - (handler-bind ((type-error (lambda (e) (store-value :z e)))) - (sccase (car x) - (:y (setf it :no)) - (:z (setf it :yes)))) - x) - (:yes)) - -(deftest atypecase.1 - (atypecase 1.0 - (integer (+ 2 it)) - (float (1- it))) - 0.0) - -(deftest atypecase.2 - (atypecase "Foo" - (fixnum :no) - (hash-table :nono)) - nil) - -(deftest stypecase.1 - (let ((x (list 'foo))) - (stypecase (car x) - (vector (setf it :no)) - (symbol (setf it :yes))) - x) - (:yes)) - -(deftest stypecase.2 - (let ((x (list :bar))) - (stypecase (car x) - (fixnum (setf it :no))) - x) - (:bar)) - -(deftest aetypecase.1 - (aetypecase 1.0 - (fixnum (* 2 it)) - (float (+ 2.0 it)) - (symbol :oops)) - 3.0) - -(deftest aetypecase.2 - (nth-value 0 (ignore-errors - (aetypecase 1.0 - (symbol :oops)))) - nil) - -(deftest setypecase.1 - (let ((x (list "Foo"))) - (setypecase (car x) - (symbol (setf it :no)) - (string (setf it "OK")) - (integer (setf it :noon))) - x) - ("OK")) - -(deftest setypecase.2 - (nth-value 0 (ignore-errors - (setypecase 'foo - (string :nono)))) - nil) - -(deftest actypecase.1 - (actypecase :foo - (string (list :string it)) - (keyword (list :keyword it)) - (symbol (list :symbol it))) - (:keyword :foo)) - -(deftest actypecase.2 - (handler-bind ((type-error (lambda (e) (store-value "OK" e)))) - (actypecase 0 - (string it))) - "OK") - -(deftest sctypecase.1 - (let ((x (list 0))) - (sctypecase (car x) - (symbol (setf it 'symbol)) - (bit (setf it 'bit))) - x) - (bit)) - -(deftest sctypecase.2 - (handler-bind ((type-error (lambda (e) (store-value "OK" e)))) - (let ((x (list 0))) - (sctypecase (car x) - (string (setf it :ok))) - x)) - (:ok)) - -(deftest acond.1 - (acond (:foo)) - :foo) - -(deftest acond.2 - (acond ((null 1) (list :no it)) - ((+ 1 2) (list :yes it)) - (t :nono)) - (:yes 3)) - -(deftest acond.3 - (acond ((= 1 2) :no) - (nil :nono) - (t :yes)) - :yes) - -;; Test COND with multiple forms in the implicit progn. -(deftest acond.4 - (let ((foo)) - (acond ((+ 2 2) (setf foo 38) (incf foo it) foo) - (t nil))) - 42) - -(deftest scond.1 - (let ((x (list nil)) - (y (list t))) - (scond ((car x) (setf it :nono)) - ((car y) (setf it :yes))) - (values x y)) - (nil) - (:yes)) - -(deftest scond.2 - (scond ((= 1 2) :no!)) - nil) - -(deftest scond.3 - (equal (scond ((list 'a 'b))) - '(a b)) - t) - -(deftest aprog.1 - (aprog1 :yes - (unless (eql it :yes) (error "Broken.")) - :no) - :yes) - -(deftest aif.sif.1 - (sif 1 (aif it it)) - 1) - -(deftest aif.sif.2 - (aif 1 (sif it it)) - 1) - -(deftest aif.sif.3 - (aif (list 1 2 3) - (sif (car it) - (setf it 'a) - :foo)) - a) - -(deftest alet.slet.1 - (slet 42 (alet 43 (slet it it))) - 43) - -(deftest alambda.1 - (funcall (alambda (x) - (if (zerop x) - x - (self (1- x)))) - 4) - 0) - - -(defun elt-like (index seq) - (elt seq index)) - -(define-setf-expander elt-like (index seq) - (let ((index-var (gensym "index")) - (seq-var (gensym "seq")) - (store (gensym "store"))) - (values (list index-var seq-var) - (list index seq) - (list store) - `(if (listp ,seq-var) - (setf (nth ,index-var ,seq-var) ,store) - (setf (aref ,seq-var ,index-var) ,store)) - `(if (listp ,seq-var) - (nth ,index-var ,seq-var) - (aref ,seq-var ,index-var))))) - -(deftest symbolic.setf-expansion.1 - (let ((cell (list nil))) - (sor (elt-like 0 cell) (setf it 1)) - (equal cell '(1))) - t) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/.travis.yml b/quicklisp/dists/quicklisp/software/babel-20230214-git/.travis.yml deleted file mode 100644 index 7460681..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/.travis.yml +++ /dev/null @@ -1,31 +0,0 @@ -language: lisp - -env: - matrix: - - LISP=abcl - - LISP=allegro - - LISP=sbcl - - LISP=sbcl32 - - LISP=ccl - - LISP=ccl32 - - LISP=clisp - - LISP=clisp32 - - LISP=cmucl - - LISP=ecl - -matrix: - allow_failures: - - env: LISP=cmucl - - env: LISP=ecl - -install: - - curl -L https://github.com/luismbo/cl-travis/raw/master/install.sh | sh - - git clone --depth=1 git://github.com/trivial-features/trivial-features.git ~/lisp/trivial-features - - git clone https://gitlab.common-lisp.net/alexandria/alexandria.git ~/lisp/alexandria - -script: - - cl -e '(ql:quickload :babel-tests) - (unless (babel-tests:run) - (uiop:quit 1))' - -sudo: required diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/COPYRIGHT b/quicklisp/dists/quicklisp/software/babel-20230214-git/COPYRIGHT deleted file mode 100644 index 99692ea..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/COPYRIGHT +++ /dev/null @@ -1,46 +0,0 @@ -Copyright (C) 2007, Luis Oliveira - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -For src/streams.lisp - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/HEADER b/quicklisp/dists/quicklisp/software/babel-20230214-git/HEADER deleted file mode 100644 index 6687549..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/HEADER +++ /dev/null @@ -1,27 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; filename --- description -;;; -;;; Copyright (C) 2007, Luis Oliveira -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - - diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/NOTES b/quicklisp/dists/quicklisp/software/babel-20230214-git/NOTES deleted file mode 100644 index 47105d5..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/NOTES +++ /dev/null @@ -1,34 +0,0 @@ -====================================== -LIST OF IDEAS AND TODO ITEMS FOR BABEL - - * VERY IMPORTANT: given that we steal a lot of code from OpenMCL we - probably to license those files under the LLGPL (or is it the - whole library?) Figure this out ASAP. - - * Many more tests needed. - - test invalid sequences. - - use more interesting test files. - - test with big strings that when converted would need a array - with more than array-index-limit elements. - - * Add support for ennforcing endiannes for multi-byte encodings like - UTF-16 and UTF-32. - - * Implement more encodings. (ISO-8859-*, windows, CJK encodings, etc) - - * null-termination, bom-markers. Add to string-to-octets. - - * Unicode normalization routines? - - * Allow for non-fixnum indexes? - - * Documentation. - - * Address the various XXX and TODO items in the source. - - * Should we start adding a lot of encodings, a load-on-demand scheme - might come in handy. It would also help with debugging. - - * Make the test suite reusable, very much like mappings are reusable. - - * Make the whole thing easier to debug. diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/README.md b/quicklisp/dists/quicklisp/software/babel-20230214-git/README.md deleted file mode 100644 index 76d64e7..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/README.md +++ /dev/null @@ -1,19 +0,0 @@ -[![Build Status](https://travis-ci.org/cl-babel/babel.svg?branch=master)](https://travis-ci.org/cl-babel/babel) - -Babel is a charset encoding/decoding library, not unlike GNU libiconv, -but completely written in Common Lisp. - -It strives to achieve decent performance. To that effect, we use -OpenMCL's approach of calculating the destination buffer size in -advance. Most of the encoding/decoding algorithms have been adapted -from OpenMCL's source. - -Another important goal is reusability. Similarly to SBCL, we define -an interface wherein the algorithms can be reused between a variety of -data types so long we're dealing with conversions between octets and -unicode code points. - -Babel comes with converters between strings and (unsigned-byte 8) -vectors but can be easily extended to deal with, e.g., strings and -foreign memory, vectors and Closure's runes, etc... - diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/babel-streams.asd b/quicklisp/dists/quicklisp/software/babel-20230214-git/babel-streams.asd deleted file mode 100644 index 8a5cac0..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/babel-streams.asd +++ /dev/null @@ -1,38 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; babel-streams.asd --- ASDF system definition for Babel streams. -;;; -;;; Copyright (C) 2008, Attila Lendvai -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(defsystem :babel-streams - :description "Some useful streams based on Babel's encoding code" - :author ("Dr. Edmund Weitz" - "Attila Lendvai ") - :version "0.1.0" - :licence "MIT" - :depends-on (:babel :alexandria :trivial-gray-streams) - :components - ((:module "src" - :serial t - :components - ((:file "streams"))))) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/babel-tests.asd b/quicklisp/dists/quicklisp/software/babel-20230214-git/babel-tests.asd deleted file mode 100644 index 9c1eed0..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/babel-tests.asd +++ /dev/null @@ -1,42 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; babel-tests.asd --- ASDF system definition for Babel unit tests. -;;; -;;; Copyright (C) 2007, Luis Oliveira -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(defsystem babel-tests - :description "Unit tests for Babel." - :depends-on (babel hu.dwim.stefil) - :components - ((:module "tests" - :serial t - :components - ((:file "tests"))))) - -(defmethod perform ((o test-op) (c (eql (find-system :babel-tests)))) - (funcall (intern (string '#:run) '#:babel-tests))) - -(defmethod operation-done-p ((o test-op) (c (eql (find-system :babel-tests)))) - nil) - -;;; vim: ft=lisp et diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/babel.asd b/quicklisp/dists/quicklisp/software/babel-20230214-git/babel.asd deleted file mode 100644 index c6b5148..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/babel.asd +++ /dev/null @@ -1,60 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; babel.asd --- ASDF system definition for Babel. -;;; -;;; Copyright (C) 2007, Luis Oliveira -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(defsystem babel - :description "Babel, a charset conversion library." - :author "Luis Oliveira " - :licence "MIT" - :depends-on (trivial-features alexandria) - :components - ((:module src - :serial t - :components - ((:file "packages") - (:file "encodings") - (:file "enc-ascii") - (:file "enc-ebcdic") - (:file "enc-ebcdic-int") - (:file "enc-iso-8859") - (:file "enc-unicode") - (:file "enc-cp437") - (:file "enc-cp1251") - (:file "enc-cp1252") - (:file "jpn-table") - (:file "enc-jpn") - (:file "enc-gbk") - (:file "enc-koi8") - (:file "external-format") - (:file "strings") - (:file "gbk-map") - (:file "sharp-backslash"))))) - -(defmethod perform ((o test-op) (c (eql (find-system :babel)))) - (operate 'load-op :babel-tests) - (operate 'test-op :babel-tests)) - -(defmethod operation-done-p ((o test-op) (c (eql (find-system :babel)))) - nil) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/doc/Makefile b/quicklisp/dists/quicklisp/software/babel-20230214-git/doc/Makefile deleted file mode 100644 index 5446d3c..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/doc/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# -*- Mode: Makefile; tab-width: 4; indent-tabs-mode: t -*- - -MANUAL := "babel" -SYSTEM := "babel" -PACKAGES := babel babel-encodings -TITLE := "Babel Manual" -CSS := "default" - -export LISP ?= sbcl -export SBCL_OPTIONS ?= --noinform - -.PHONY: all clean html pdf upload - -all: - texinfo-docstrings all $(SYSTEM) $(MANUAL) $(TITLE) $(CSS) $(PACKAGES) - -pdf: - texinfo-docstrings pdf $(SYSTEM) $(MANUAL) $(TITLE) $(CSS) $(PACKAGES) - -html: - texinfo-docstrings html $(SYSTEM) $(MANUAL) $(TITLE) $(CSS) $(PACKAGES) - -upload: -# rsync -av --delete -e ssh manual common-lisp.net:/project/FOO/public_html/ -# scp -r manual common-lisp.net:/project/cffi/public_html/ - -clean: - find . \( -name "*.pdf" -o -name "*.html" -o -name "*.info" -o -name "*.aux" -o -name "*.cp" -o -name "*.fn" -o -name "*.fns" -o -name "*.ky" -o -name "*.log" -o -name "*.pg" -o -name "*.toc" -o -name "*.tp" -o -name "*.vr" -o -name "*.dvi" -o -name "*.cps" -o -name "*.vrs" \) -exec rm {} \; - rm -rf include manual - -# vim: ft=make ts=4 noet diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/doc/babel.texinfo b/quicklisp/dists/quicklisp/software/babel-20230214-git/doc/babel.texinfo deleted file mode 100644 index efdc5dc..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/doc/babel.texinfo +++ /dev/null @@ -1,105 +0,0 @@ -\input texinfo @c -*-texinfo-*- -@c %**start of header -@setfilename babel.info -@settitle Babel Manual - -@c @exampleindent 2 -@c @documentencoding utf-8 - -@c %**end of header - -@c for install-info -@c @dircategory %%INFO-CATEGORY%% -@c @direntry -@c * babel: %%PROJECT-DESCRIPTION%% -@c @end direntry - -@include macros.texinfo - -@c Show types, functions, and concepts in the same index. -@syncodeindex tp cp -@syncodeindex fn cp - -@copying -@c Copyright @copyright{} 2084 John Doe - -@include license.texinfo -@end copying - -@titlepage -@title Babel Manual -@subtitle draft version -@c @author John Doe -@page -@vskip 0pt plus 1filll -@insertcopying -@end titlepage - -@contents - -@ifnottex -@node Top -@top babel -@insertcopying -@end ifnottex - -@c Top Menu -@menu -* First Chapter:: -* Comprehensive Index:: -@end menu - -@node First Chapter -@chapter First Chapter - -Bla bla bla, bla bla bla. - -@section Conditions - -@include include/condition-babel-character-out-of-range.texinfo -@include include/condition-babel-encodings-character-out-of-range.texinfo -@include include/condition-babel-encodings-end-of-input-in-character.texinfo -@include include/condition-babel-encodings-invalid-utf8-continuation-byte.texinfo -@include include/condition-babel-encodings-invalid-utf8-starter-byte.texinfo -@include include/condition-babel-encodings-overlong-utf8-sequence.texinfo -@include include/condition-babel-end-of-input-in-character.texinfo -@include include/condition-babel-invalid-utf8-continuation-byte.texinfo -@include include/condition-babel-invalid-utf8-starter-byte.texinfo -@include include/condition-babel-overlong-utf8-sequence.texinfo -@include include/constant-babel-unicode-char-code-limit.texinfo - -@section More stuff - -@include include/fun-babel-encodings-get-character-encoding.texinfo -@include include/fun-babel-encodings-list-character-encodings.texinfo -@include include/fun-babel-encodings-lookup-mapping.texinfo -@include include/fun-babel-list-character-encodings.texinfo -@include include/macro-babel-encodings-with-checked-simple-vector.texinfo -@include include/macro-babel-encodings-with-simple-vector.texinfo -@include include/type-babel-simple-unicode-string.texinfo -@include include/type-babel-unicode-char.texinfo -@include include/type-babel-unicode-string.texinfo -@include include/var-babel-encodings-star-default-character-encoding-star.texinfo -@include include/var-babel-encodings-star-suppress-character-coding-errors-star.texinfo -@include include/var-babel-star-default-character-encoding-star.texinfo -@include include/var-babel-star-default-eol-style-star.texinfo - -@c @include include/fun-somepackage-somefunction.texinfo -@c @include include/macro-somepackage-somemacro.texinfo - -@c @node First Section -@c @section First Section - -@c @include include/fun-somepackage-somefunction.texinfo -@c @include include/fun-somepackage-somefunction.texinfo - - - -@c We call this node ``Comprehensive Index'' so that texinfo's HTML -@c output doesn't generate an index.html that'd overwrite the manual's -@c initial page. -@node Comprehensive Index -@unnumbered Index -@printindex cp - -@bye diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/doc/license.texinfo b/quicklisp/dists/quicklisp/software/babel-20230214-git/doc/license.texinfo deleted file mode 100644 index 2835843..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/doc/license.texinfo +++ /dev/null @@ -1,20 +0,0 @@ -@quotation -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -``Software''), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -@sc{The software is provided ``as is'', without warranty of any kind, -express or implied, including but not limited to the warranties of -merchantability, fitness for a particular purpose and noninfringement. -In no event shall the authors or copyright holders be liable for any -claim, damages or other liability, whether in an action of contract, -tort or otherwise, arising from, out of or in connection with the -software or the use or other dealings in the software.} -@end quotation diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/doc/macros.texinfo b/quicklisp/dists/quicklisp/software/babel-20230214-git/doc/macros.texinfo deleted file mode 100644 index 95f47cf..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/doc/macros.texinfo +++ /dev/null @@ -1,27 +0,0 @@ -@c Some plain TeX macrology to wrap text in \hbox{} only if the text -@c contains no hyphens. -@iftex -@tex -\newif\ifdash -\long\def\dashp#1{\expandafter\setnext#1-\dashphelper} -\long\def\setnext#1-{\futurelet\next\dashphelper} -\long\def\dashphelper#1\dashphelper{ - \ifx\dashphelper\next\dashfalse\else\dashtrue\fi -} -\def\lw#1{\leavevmode\dashp{#1}\ifdash#1\else\hbox{#1}\fi} -@end tex -@end iftex - -@c A Texinfo binding for the plain TeX above. Analogous to Texinfo's -@c @w, but for Lisp symbols. AFAICT, the comment characters are -@c necessary to prevent treating the newline as a space. -@macro lw{word} -@iftex -@tex -\\lw{\word\}% -@end tex -@end iftex -@ifnottex -\word\@c -@end ifnottex -@end macro diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/scripts/release.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/scripts/release.lisp deleted file mode 100644 index 80308d0..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/scripts/release.lisp +++ /dev/null @@ -1,250 +0,0 @@ -#!/usr/bin/env clisp -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- - -(defpackage :release-script (:use #:cl #:regexp)) -(in-package :release-script) - -;;;; Configuration ------------------------------------------------------------ - -(defparameter *project-name* "babel") -(defparameter *asdf-file* (format nil "~A.asd" *project-name*)) - -(defparameter *host* "common-lisp.net") -(defparameter *release-dir* - (format nil "/project/~A/public_html/releases" *project-name*)) - -(defparameter *version-file* "VERSION") -(defparameter *version-file-dir* - (format nil "/project/~A/public_html" *project-name*)) - -;;;; -------------------------------------------------------------------------- - -;;;; Utilities - -(defun ensure-list (x) - (if (listp x) x (list x))) - -(defmacro string-case (expression &body clauses) - `(let ((it ,expression)) ; yes, anaphoric, deal with it. - (cond - ,@(loop for clause in clauses collect - `((or ,@(loop for alternative in (ensure-list (first clause)) - collect (or (eq t alternative) - `(string= it ,alternative)))) - ,@(rest clause)))))) - -(defparameter *development-mode* nil) - -(defun die (format-control &rest format-args) - (format *error-output* "~?" format-control format-args) - (if *development-mode* - (cerror "continue" "die") - (ext:quit 1))) - -(defun numeric-split (string) - (if (digit-char-p (char string 0)) - (multiple-value-bind (number next-position) - (parse-integer string :junk-allowed t) - (cons number (when (< next-position (length string)) - (numeric-split (subseq string next-position))))) - (let ((next-digit-position (position-if #'digit-char-p string))) - (if next-digit-position - (cons (subseq string 0 next-digit-position) - (numeric-split (subseq string next-digit-position))) - (list string))))) - -(defun natural-string-< (s1 s2) - (labels ((aux< (l1 l2) - (cond ((null l1) (not (null l2))) - ((null l2) nil) - (t (destructuring-bind (x . xs) l1 - (destructuring-bind (y . ys) l2 - (cond ((and (numberp x) (stringp y)) - t) - ((and (numberp y) (stringp x)) - nil) - ((and (numberp x) (numberp y)) - (or (< x y) (and (= x y) (aux< xs ys)))) - (t - (or (string-lessp x y) - (and (string-equal x y) - (aux< xs ys))))))))))) - (aux< (numeric-split s1) - (numeric-split s2)))) - -;;;; Running commands - -(defparameter *dry-run* nil) - -(defun cmd? (format-control &rest format-args) - (let ((cmd (format nil "~?" format-control format-args))) - (with-open-stream (s1 (ext:run-shell-command cmd :output :stream)) - (loop for line = (read-line s1 nil nil) - while line - collect line)))) - -;; XXX: quote arguments. -(defun cmd (format-control &rest format-args) - (when *development-mode* - (format *debug-io* "CMD: ~?~%" format-control format-args)) - (let ((ret (ext:run-shell-command (format nil "~?" format-control format-args)))) - (or (null ret) - (zerop ret)))) - -(defun cmd! (format-control &rest format-args) - (or (apply #'cmd format-control format-args) - (die "cmd '~?' failed." format-control format-args))) - -(defun maybe-cmd! (format-control &rest format-args) - (if *dry-run* - (format t "SUPPRESSING: ~?~%" format-control format-args) - (apply #'cmd! format-control format-args))) - -;;;; - -(defun find-current-version () - (subseq (reduce (lambda (x y) (if (natural-string-< x y) y x)) - (or (cmd? "git tag -l v\\*") - (die "no version tags found. Please specify initial version."))) - 1)) - -(defun parse-version (string) - (mapcar (lambda (x) - (parse-integer x :junk-allowed t)) - (loop repeat 3 ; XXX: parameterize - for el in (regexp-split "\\." (find-current-version)) - collect el))) - -(defun check-for-unrecorded-changes (&optional force) - (unless (cmd "git diff --exit-code") - (write-line "Unrecorded changes.") - (if force - (write-line "Continuing anyway.") - (die "Aborting.~@ - Use -f or --force if you want to make a release anyway.")))) - -(defun new-version-number-candidates (current-version) - (let ((current-version (parse-version current-version))) - (labels ((alternatives (before after) - (when after - (cons (append before (list (1+ (first after))) - (mapcar (constantly 0) (rest after))) - (alternatives (append before (list (first after))) - (rest after)))))) - (loop for alt in (alternatives nil current-version) - collect (reduce (lambda (acc next) - (format nil "~a.~a" acc next)) - alt))))) - -(defun ask-user-for-version (current-version next-versions) - (format *query-io* "Current version is ~A. Which will be the next one?~%" - current-version) - (loop for i from 1 and version in next-versions - do (format *query-io* "~T~A) ~A~%" i version)) - (format *query-io* "? ") - (finish-output *query-io*) - (nth (1- (parse-integer (read-line) :junk-allowed t)) - next-versions)) - -(defun git-tag-tree (version) - (write-line "Tagging the tree...") - (maybe-cmd! "git tag \"v~A\"" version)) - -(defun add-version-to-system-file (version path-in path-out) - (with-open-file (in path-in :direction :input) - (with-open-file (out path-out :direction :output) - (loop for line = (read-line in nil nil) while line - do (write-line line out) - when (string= #1="(defsystem " line - :end2 (min (length #1#) (length line))) - do (format out " :version ~s~%" version))))) - -(defun create-dist (version distname) - (write-line "Creating distribution...") - (cmd! "mkdir \"~a\"" distname) - (cmd! "git archive master | tar xC \"~A\"" distname) - (format t "Updating ~A with new version: ~A~%" *asdf-file* version) - (let* ((asdf-file-path (format nil "~A/~A" distname *asdf-file*)) - (tmp-asdf-file-path (format nil "~a.tmp" asdf-file-path))) - (add-version-to-system-file version asdf-file-path tmp-asdf-file-path) - (cmd! "mv \"~a\" \"~a\"" tmp-asdf-file-path asdf-file-path))) - -(defun tar-and-sign (distname tarball) - (write-line "Creating and signing tarball...") - (cmd! "tar czf \"~a\" \"~a\"" tarball distname) - (cmd! "gpg -b -a \"~a\"" tarball)) - -(defparameter *remote-directory* (format nil "~A:~A" *host* *release-dir*)) - -(defun upload-tarball (tarball signature remote-directory) - (write-line "Copying tarball to web server...") - (maybe-cmd! "scp \"~A\" \"~A\" \"~A\"" tarball signature remote-directory) - (format t "Uploaded ~A and ~A.~%" tarball signature)) - -(defun update-remote-links (tarball signature host release-dir project-name) - (format t "Updating ~A_latest links...~%" project-name) - (maybe-cmd! "ssh \"~A\" ln -sf \"~A\" \"~A/~A_latest.tar.gz\"" - host tarball release-dir project-name) - (maybe-cmd! "ssh \"~A\" ln -sf \"~A\" \"~A/~A_latest.tar.gz.asc\"" - host signature release-dir project-name)) - -(defun upload-version-file (version version-file host version-file-dir) - (format t "Uploading ~A...~%" version-file) - (with-open-file (out version-file :direction :output) - (write-string version out)) - (maybe-cmd! "scp \"~A\" \"~A\":\"~A\"" version-file host version-file-dir) - (maybe-cmd! "rm \"~A\"" version-file)) - -(defun maybe-clean-things-up (tarball signature) - (when (y-or-n-p "Clean local tarball and signature?") - (cmd! "rm \"~A\" \"~A\"" tarball signature))) - -(defun run (force version) - (check-for-unrecorded-changes force) - ;; figure out what version we'll be preparing. - (unless version - (let* ((current-version (find-current-version)) - (next-versions (new-version-number-candidates current-version))) - (setf version (or (ask-user-for-version current-version next-versions) - (die "invalid selection."))))) - (git-tag-tree version) - (let* ((distname (format nil "~A_~A" *project-name* version)) - (tarball (format nil "~A.tar.gz" distname)) - (signature (format nil "~A.asc" tarball))) - ;; package things up. - (create-dist version distname) - (tar-and-sign distname tarball) - ;; upload. - (upload-tarball tarball signature *remote-directory*) - (update-remote-links tarball signature *host* *release-dir* *project-name*) - (when *version-file* - (upload-version-file version *version-file* *host* *version-file-dir*)) - ;; clean up. - (maybe-clean-things-up tarball signature) - ;; documentation. - ;; (write-line "Building and uploading documentation...") - ;; (maybe-cmd! "make -C doc upload-docs") - ;; push tags and any outstanding changes. - (write-line "Pushing tags and changes...") - (maybe-cmd! "git push --tags origin master"))) - - -;;;; Do it to it - -(let ((force nil) - (version nil) - (args ext:*args*)) - (loop while args - do (string-case (pop args) - (("-h" "--help") - (write-line "No help, sorry. Read the source.") - (ext:quit 0)) - (("-f" "--force") - (setf force t)) - (("-v" "--version") - (setf version (pop args))) - (("-n" "--dry-run") - (setf *dry-run* t)) - (t - (die "Unrecognized argument '~a'" it)))) - (run force version)) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-ascii.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-ascii.lisp deleted file mode 100644 index dd26d13..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-ascii.lisp +++ /dev/null @@ -1,43 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; enc-ascii.lisp --- Implementation of the ASCII character encoding. -;;; -;;; Copyright (C) 2007, Luis Oliveira -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(in-package #:babel-encodings) - -(define-character-encoding :ascii - "A 7-bit, fixed-width character encoding in which all -character codes map to their Unicode equivalents." - :aliases '(:us-ascii) - :literal-char-code-limit 128) - -(define-unibyte-encoder :ascii (code) - (if (>= code 128) - (handle-error) - code)) - -(define-unibyte-decoder :ascii (octet) - (if (>= octet 128) - (handle-error) - octet)) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-cp1251.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-cp1251.lisp deleted file mode 100644 index 8bcead0..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-cp1251.lisp +++ /dev/null @@ -1,119 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; enc-cp1251.lisp --- Implementation of the CP1251 character encoding. -;;; -;;; Copyright (C) 2009, Andrey Moskvitin -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(in-package #:babel-encodings) - -(define-character-encoding :cp1251 - "An 8-bit, fixed-width character Russian encoding from Windows." - :aliases '(:windows-1251) - :literal-char-code-limit #x80) - -(define-constant +cp1251-to-unicode+ - #(;; #x80 - #x0402 #x0403 #x201a #x0453 #x201e #x2026 #x2020 #x2021 - #x20ac #x2030 #x0409 #x2039 #x040a #x040c #x040b #x040f - ;; #x90 - #x0452 #x2018 #x2019 #x201c #x201d #x2022 #x2013 #x2014 - #xfffd #x2122 #x0459 #x203a #x045a #x045c #x045b #x045f - ;; #xa0 - #x00a0 #x040e #x045e #x0408 #x00a4 #x0490 #x00a6 #x00a7 - #x0401 #x00a9 #x0404 #x00ab #x00ac #x00ad #x00ae #x0407 - ;; #xb0 - #x00b0 #x00b1 #x0406 #x0456 #x0491 #x00b5 #x00b6 #x00b7 - #x0451 #x2116 #x0454 #x00bb #x0458 #x0405 #x0455 #x0457 - ;; #xc0 - #x0410 #x0411 #x0412 #x0413 #x0414 #x0415 #x0416 #x0417 - #x0418 #x0419 #x041a #x041b #x041c #x041d #x041e #x041f - ;; #xd0 - #x0420 #x0421 #x0422 #x0423 #x0424 #x0425 #x0426 #x0427 - #x0428 #x0429 #x042a #x042b #x042c #x042d #x042e #x042f - ;; #xe0 - #x0430 #x0431 #x0432 #x0433 #x0434 #x0435 #x0436 #x0437 - #x0438 #x0439 #x043a #x043b #x043c #x043d #x043e #x043f - ;; #xf0 - #x0440 #x0441 #x0442 #x0443 #x0444 #x0445 #x0446 #x0447 - #x0448 #x0449 #x044a #x044b #x044c #x044d #x044e #x044f) - :test #'equalp) - -(define-unibyte-decoder :cp1251 (octet) - (if (< octet #x80) - octet - (svref +cp1251-to-unicode+ (the ub8 (- octet #x80))))) - -(define-constant +unicode-a0-bf-to-cp1251+ - #(#xa0 #x00 #x00 #x00 #xa4 #x00 #xa6 #xa7 ; #xa0-#xa7 - #x00 #xa9 #x00 #xab #xac #xad #xae #x00 ; #xa8-#xaf - #xb0 #xb1 #x00 #x00 #x00 #xb5 #xb6 #xb7 ; #xb0-#xb7 - #x00 #x00 #x00 #xbb #x00 #x00 #x00 #x00) ; #xb8-#xbf - :test #'equalp) - -(define-constant +unicode-0-97-to-cp1251+ - #(#x00 #xa8 #x80 #x81 #xaa #xbd #xb2 #xaf ; #x00-#x07 - #xa3 #x8a #x8c #x8e #x8d #x00 #xa1 #x8f ; #x08-#x0f - #xc0 #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 #xc7 ; #x10-#x17 - #xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #x18-#x1f - #xd0 #xd1 #xd2 #xd3 #xd4 #xd5 #xd6 #xd7 ; #x20-#x27 - #xd8 #xd9 #xda #xdb #xdc #xdd #xde #xdf ; #x28-#x2f - #xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #x30-#x37 - #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #x38-#x3f - #xf0 #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 #xf7 ; #x40-#x47 - #xf8 #xf9 #xfa #xfb #xfc #xfd #xfe #xff ; #x48-#x4f - #x00 #xb8 #x90 #x83 #xba #xbe #xb3 #xbf ; #x50-#x57 - #xbc #x9a #x9c #x9e #x9d #x00 #xa2 #x9f ; #x58-#x5f - #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 ; #x60-#x67 - #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 ; #x68-#x6f - #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 ; #x70-#x77 - #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 ; #x78-#x7f - #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 ; #x80-#x87 - #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 ; #x88-#x8f - #xa5 #xb4 #x00 #x00 #x00 #x00 #x00 #x00) ; #x90-#x97 - :test #'equalp) - -(define-constant +unicode-10-3f-to-cp1251+ - #(#x00 #x00 #x00 #x96 #x97 #x00 #x00 #x00 ; #x10-#x17 - #x91 #x92 #x82 #x00 #x93 #x94 #x84 #x00 ; #x18-#x1f - #x86 #x87 #x95 #x00 #x00 #x00 #x85 #x00 ; #x20-#x27 - #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 ; #x28-#x2f - #x89 #x00 #x00 #x00 #x00 #x00 #x00 #x00 ; #x30-#x37 - #x00 #x8b #x9b #x00 #x00 #x00 #x00 #x00) ; #x38-#x3f - :test #'equalp) - -(define-unibyte-encoder :cp1251 (code) - (cond - ((< code #x80) code) - ((and (>= code #xa0) (< code #xc0)) - (svref +unicode-a0-bf-to-cp1251+ - (the ub8 (- code #xa0)))) - ((and (>= code #x400) (< code #x498)) - (svref +unicode-0-97-to-cp1251+ - (the ub8 (- code #x400)))) - ((and (>= code #x2010) (< code #x2040)) - (svref +unicode-10-3f-to-cp1251+ - (the ub8 (- code #x2010)))) - ((= code #x20ac) #x88) - ((= code #x2116) #xb9) - ((= code #x2122) #x99) - (t (handle-error)))) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-cp1252.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-cp1252.lisp deleted file mode 100644 index cae80d8..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-cp1252.lisp +++ /dev/null @@ -1,81 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; enc-cp1252.lisp --- Implementation of the CP1252 character encoding. -;;; -;;; Copyright (C) 2011, Nicolas Martyanoff -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(in-package #:babel-encodings) - -(define-character-encoding :cp1252 - "A 8-bit, fixed-width character encoding used by Windows for Western - European languages." - :aliases '(:windows-1252) - :literal-char-code-limit 256) - -(define-constant +cp1252-to-unicode+ - #(#x20ac nil #x201a #x0192 #x201e #x2026 #x2020 #x2021 - #x02c6 #x2030 #x0160 #x2039 #x0152 nil #x017d nil - nil #x2018 #x2019 #x201c #x201d #x2022 #x2013 #x2014 - #x02dc #x2122 #x0161 #x203a #x0153 nil #x017e #x0178) - :test #'equalp) - -(define-unibyte-decoder :cp1252 (octet) - (if (and (>= octet #x80) (<= octet #x9f)) - (svref +cp1252-to-unicode+ - (the ub8 (- octet #x80))) - octet)) - -(define-constant +unicode-0152-017e-cp1252+ - #(#x8c #x9c #x00 #x00 #x00 #x00 #x00 #x00 - #x00 #x00 #x00 #x00 #x00 #x00 #x8a #x9a - #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 - #x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00 - #x00 #x00 #x00 #x00 #x00 #x00 #x9f #x00 - #x00 #x00 #x00 #x8e #x9e) - :test #'equalp) - -(define-constant +unicode-2013-203a-cp1252+ - #(#x96 #x97 #x00 #x00 #x00 #x91 #x92 #x82 - #x00 #x93 #x94 #x84 #x00 #x86 #x87 #x95 - #x00 #x00 #x00 #x85 #x00 #x00 #x00 #x00 - #x00 #x00 #x00 #x00 #x00 #x89 #x00 #x00 - #x00 #x00 #x00 #x00 #x00 #x00 #x8b #x9b) - :test #'equalp) - -(define-unibyte-encoder :cp1252 (code) - (cond - ((or (< code #x80) - (and (> code #xa0) (<= code #xff))) - code) - ((and (>= code #x0152) (<= code #x017e)) - (svref +unicode-0152-017e-cp1252+ - (the ub8 (- code #x0152)))) - ((= code #x0192) #x83) - ((= code #x02c6) #x88) - ((= code #x02dc) #x89) - ((and (>= code #x2013) (<= code #x203a)) - (svref +unicode-2013-203a-cp1252+ - (the ub8 (- code #x2013)))) - ((= code #x20ac) #x80) - ((= code #x2122) #x99) - (t (handle-error)))) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-cp437.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-cp437.lisp deleted file mode 100644 index 982ebfb..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-cp437.lisp +++ /dev/null @@ -1,207 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; enc-cp437.lisp --- Implementation of the IBM Code Page 437 -;;; -;;; Copyright (C) 2020, Nicolas Hafner -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(in-package #:babel-encodings) - -(define-character-encoding :cp437 - "An 8-bit, fixed-width character encoding from IBM." - :aliases '(:oem-us :oem-437 :pc-8 :dos-latin-us) - :literal-char-code-limit #xFF) - -(define-constant +cp437-to-unicode+ - #(#x0000 #x0001 #x0002 #x0003 #x0004 #x0005 #x0006 #x0007 - #x0008 #x0009 #x000a #x000b #x000c #x000d #x000e #x000f - #x0010 #x0011 #x0012 #x0013 #x0014 #x0015 #x0016 #x0017 - #x0018 #x0019 #x001a #x001b #x001c #x001d #x001e #x001f - #x0020 #x0021 #x0022 #x0023 #x0024 #x0025 #x0026 #x0027 - #x0028 #x0029 #x002a #x002b #x002c #x002d #x002e #x002f - #x0030 #x0031 #x0032 #x0033 #x0034 #x0035 #x0036 #x0037 - #x0038 #x0039 #x003a #x003b #x003c #x003d #x003e #x003f - #x0040 #x0041 #x0042 #x0043 #x0044 #x0045 #x0046 #x0047 - #x0048 #x0049 #x004a #x004b #x004c #x004d #x004e #x004f - #x0050 #x0051 #x0052 #x0053 #x0054 #x0055 #x0056 #x0057 - #x0058 #x0059 #x005a #x005b #x005c #x005d #x005e #x005f - #x0060 #x0061 #x0062 #x0063 #x0064 #x0065 #x0066 #x0067 - #x0068 #x0069 #x006a #x006b #x006c #x006d #x006e #x006f - #x0070 #x0071 #x0072 #x0073 #x0074 #x0075 #x0076 #x0077 - #x0078 #x0079 #x007a #x007b #x007c #x007d #x007e #x007f - #x00c7 #x00fc #x00e9 #x00e2 #x00e4 #x00e0 #x00e5 #x00e7 - #x00ea #x00eb #x00e8 #x00ef #x00ee #x00ec #x00c4 #x00c5 - #x00c9 #x00e6 #x00c6 #x00f4 #x00f6 #x00f2 #x00fb #x00f9 - #x00ff #x00d6 #x00dc #x00a2 #x00a3 #x00a5 #x20a7 #x0192 - #x00e1 #x00ed #x00f3 #x00fa #x00f1 #x00d1 #x00aa #x00ba - #x00bf #x2310 #x00ac #x00bd #x00bc #x00a1 #x00ab #x00bb - #x2591 #x2592 #x2593 #x2502 #x2524 #x2561 #x2562 #x2556 - #x2555 #x2563 #x2551 #x2557 #x255d #x255c #x255b #x2510 - #x2514 #x2534 #x252c #x251c #x2500 #x253c #x255e #x255f - #x255a #x2554 #x2569 #x2566 #x2560 #x2550 #x256c #x2567 - #x2568 #x2564 #x2565 #x2559 #x2558 #x2552 #x2553 #x256b - #x256a #x2518 #x250c #x2588 #x2584 #x258c #x2590 #x2580 - #x03b1 #x00df #x0393 #x03c0 #x03a3 #x03c3 #x00b5 #x03c4 - #x03a6 #x0398 #x03a9 #x03b4 #x221e #x03c6 #x03b5 #x2229 - #x2261 #x00b1 #x2265 #x2264 #x2320 #x2321 #x00f7 #x2248 - #x00b0 #x2219 #x00b7 #x221a #x207f #x00b2 #x25a0 #x00a0) - :test #'equalp) - -(define-unibyte-decoder :cp437 (octet) - (svref +cp437-to-unicode+ octet)) - -(define-unibyte-encoder :cp437 (code) - (if (<= code 127) - code - ;; Adjacent code point groups are too small and too many to be - ;; worth tabulating this, so we just use a case. - (case code - (#x7F #x7F) - (#xA0 #x80) - (#xA1 #x81) - (#xA2 #x82) - (#xA3 #x83) - (#xA5 #x84) - (#xAA #x85) - (#xAB #x86) - (#xAC #x87) - (#xB0 #x88) - (#xB1 #x89) - (#xB2 #x8A) - (#xB5 #x8B) - (#xB7 #x8C) - (#xBA #x8D) - (#xBB #x8E) - (#xBC #x8F) - (#xBD #x90) - (#xBF #x91) - (#xC4 #x92) - (#xC5 #x93) - (#xC6 #x94) - (#xC7 #x95) - (#xC9 #x96) - (#xD1 #x97) - (#xD6 #x98) - (#xDC #x99) - (#xDF #x9A) - (#xE0 #x9B) - (#xE1 #x9C) - (#xE2 #x9D) - (#xE4 #x9E) - (#xE5 #x9F) - (#xE6 #xA0) - (#xE7 #xA1) - (#xE8 #xA2) - (#xE9 #xA3) - (#xEA #xA4) - (#xEB #xA5) - (#xEC #xA6) - (#xED #xA7) - (#xEE #xA8) - (#xEF #xA9) - (#xF1 #xAA) - (#xF2 #xAB) - (#xF3 #xAC) - (#xF4 #xAD) - (#xF6 #xAE) - (#xF7 #xAF) - (#xF9 #xB0) - (#xFA #xB1) - (#xFB #xB2) - (#xFC #xB3) - (#xFF #xB4) - (#x192 #xB5) - (#x393 #xB6) - (#x398 #xB7) - (#x3A3 #xB8) - (#x3A6 #xB9) - (#x3A9 #xBA) - (#x3B1 #xBB) - (#x3B4 #xBC) - (#x3B5 #xBD) - (#x3C0 #xBE) - (#x3C3 #xBF) - (#x3C4 #xC0) - (#x3C6 #xC1) - (#x207F #xC2) - (#x20A7 #xC3) - (#x2219 #xC4) - (#x221A #xC5) - (#x221E #xC6) - (#x2229 #xC7) - (#x2248 #xC8) - (#x2261 #xC9) - (#x2264 #xCA) - (#x2265 #xCB) - (#x2310 #xCC) - (#x2320 #xCD) - (#x2321 #xCE) - (#x2500 #xCF) - (#x2502 #xD0) - (#x250C #xD1) - (#x2510 #xD2) - (#x2514 #xD3) - (#x2518 #xD4) - (#x251C #xD5) - (#x2524 #xD6) - (#x252C #xD7) - (#x2534 #xD8) - (#x253C #xD9) - (#x2550 #xDA) - (#x2551 #xDB) - (#x2552 #xDC) - (#x2553 #xDD) - (#x2554 #xDE) - (#x2555 #xDF) - (#x2556 #xE0) - (#x2557 #xE1) - (#x2558 #xE2) - (#x2559 #xE3) - (#x255A #xE4) - (#x255B #xE5) - (#x255C #xE6) - (#x255D #xE7) - (#x255E #xE8) - (#x255F #xE9) - (#x2560 #xEA) - (#x2561 #xEB) - (#x2562 #xEC) - (#x2563 #xED) - (#x2564 #xEE) - (#x2565 #xEF) - (#x2566 #xF0) - (#x2567 #xF1) - (#x2568 #xF2) - (#x2569 #xF3) - (#x256A #xF4) - (#x256B #xF5) - (#x256C #xF6) - (#x2580 #xF7) - (#x2584 #xF8) - (#x2588 #xF9) - (#x258C #xFA) - (#x2590 #xFB) - (#x2591 #xFC) - (#x2592 #xFD) - (#x2593 #xFE) - (#x25A0 #xFF) - (t (handle-error))))) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-ebcdic-int.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-ebcdic-int.lisp deleted file mode 100644 index aa01572..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-ebcdic-int.lisp +++ /dev/null @@ -1,49 +0,0 @@ -(in-package #:babel-encodings) - -(define-character-encoding :ebcdic-international - "An 8-bit, fixed-width character encoding from IBM.") - -(defparameter +ebcdic-int-to-unicode+ - #(0 1 2 3 156 9 134 127 151 141 142 11 12 13 14 15 16 17 18 19 157 133 8 135 - 24 25 146 143 28 29 30 31 128 129 130 65535 132 10 23 27 65535 65535 138 139 - 65535 5 6 7 65535 65535 22 65535 148 149 150 4 65535 65535 65535 155 20 21 - 65535 26 32 65535 65535 65535 65535 65535 65535 65535 65535 65535 91 46 60 - 40 43 33 38 65535 65535 65535 65535 65535 65535 65535 65535 65535 93 164 42 - 41 59 172 45 47 65535 65535 65535 65535 65535 65535 65535 65535 124 44 37 95 - 62 63 65535 65535 65535 65535 65535 65535 1102 1072 1073 96 58 35 64 39 61 - 34 1094 97 98 99 100 101 102 103 104 105 1076 1077 1092 1075 1093 1080 1081 - 106 107 108 109 110 111 112 113 114 1082 1083 1084 1085 1086 1087 1103 126 - 115 116 117 118 119 120 121 122 1088 1089 1090 1091 1078 1074 1100 1099 1079 - 1096 1101 1097 1095 1098 1070 1040 1041 1062 1044 1045 1060 1043 123 65 66 - 67 68 69 70 71 72 73 1061 1048 1049 1050 1051 1052 125 74 75 76 77 78 79 80 - 81 82 1053 1054 1055 1071 1056 1057 92 65535 83 84 85 86 87 88 89 90 1058 - 1059 1046 1042 1068 1067 48 49 50 51 52 53 54 55 56 57 1047 1064 1069 1065 - 1063 159)) - -(defparameter +unicode-upto-ac-ebcdic-int+ - #(0 1 2 3 55 45 46 47 22 5 37 11 12 13 14 15 16 17 18 19 60 61 50 38 24 25 63 - 39 28 29 30 31 64 79 127 123 0 108 80 125 77 93 92 78 107 96 75 97 240 241 - 242 243 244 245 246 247 248 249 122 94 76 126 110 111 124 193 194 195 196 - 197 198 199 200 201 209 210 211 212 213 214 215 216 217 226 227 228 229 230 - 231 232 233 74 224 90 0 109 121 129 130 131 132 133 134 135 136 137 145 146 - 147 148 149 150 151 152 153 162 163 164 165 166 167 168 169 192 106 208 161 - 7 32 33 34 0 36 21 6 23 0 0 42 43 0 9 10 27 0 0 26 0 52 53 54 8 0 0 0 59 4 - 20 0 255 0 0 0 0 91 0 0 0 0 0 0 0 95)) - -(defparameter +unicode-0410-0450-ebcdic-int+ - #(185 186 237 191 188 189 236 250 203 204 205 206 207 218 219 220 222 223 234 - 235 190 202 187 254 251 253 0 239 238 252 184 221 119 120 175 141 138 139 - 174 178 143 144 154 155 156 157 158 159 170 171 172 173 140 142 128 182 179 - 181 183 177 176 180 118 160)) - -(define-unibyte-decoder :ebcdic-international (octet) - (svref +ebcdic-int-to-unicode+ (the ub8 octet))) - -(define-unibyte-encoder :ebcdic-international (code) - (let ((result (cond - ((<= code 172) (svref +unicode-upto-ac-ebcdic-int+ code)) - ((<= #x0410 code #x0450) (svref +unicode-0410-0450-ebcdic-int+ - (- code #x0410)))))) - (prog1 result - (when (and (zerop result) (plusp code)) - (handle-error))))) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-ebcdic.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-ebcdic.lisp deleted file mode 100644 index bd3599a..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-ebcdic.lisp +++ /dev/null @@ -1,176 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; enc-ebcdic.lisp --- Localized EBCDIC variant encodings. -;;; -;;; Copyright (C) 2007, Luis Oliveira -;;; Copyright (C) 2020, Timo Myyrä -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(in-package #:babel-encodings) - -(define-character-encoding :ebcdic-us - "An alleged character set used on IBM dinosaurs." - :aliases '(:ibm-037)) - -(define-character-encoding :ebcdic-us-euro - "An alleged character set used on IBM dinosaurs using Euro sign." - :aliases '(:ibm-1140)) - -(define-character-encoding :ebcdic-fi - "A character set used on IBM mainframes in Finland/Sweden." - :aliases '(:ibm-278)) - -(define-character-encoding :ebcdic-fi-euro - "A character set used on IBM mainframes in Finland/Sweden using Euro sign." - :aliases '(:ibm-1143)) - -(define-constant +ebcdic-decode-table+ - (make-array - 256 :element-type 'ub8 :initial-contents - '(#x00 #x01 #x02 #x03 #x9c #x09 #x86 #x7f #x97 #x8d #x8e #x0b #x0c #x0d - #x0e #x0f #x10 #x11 #x12 #x13 #x9d #x85 #x08 #x87 #x18 #x19 #x92 #x8f - #x1c #x1d #x1e #x1f #x80 #x81 #x82 #x83 #x84 #x0a #x17 #x1b #x88 #x89 - #x8a #x8b #x8c #x05 #x06 #x07 #x90 #x91 #x16 #x93 #x94 #x95 #x96 #x04 - #x98 #x99 #x9a #x9b #x14 #x15 #x9e #x1a #x20 #xa0 #xe2 #xe4 #xe0 #xe1 - #xe3 #xe5 #xe7 #xf1 #xa2 #x2e #x3c #x28 #x2b #x7c #x26 #xe9 #xea #xeb - #xe8 #xed #xee #xef #xec #xdf #x21 #x24 #x2a #x29 #x3b #xac #x2d #x2f - #xc2 #xc4 #xc0 #xc1 #xc3 #xc5 #xc7 #xd1 #xa6 #x2c #x25 #x5f #x3e #x3f - #xf8 #xc9 #xca #xcb #xc8 #xcd #xce #xcf #xcc #x60 #x3a #x23 #x40 #x27 - #x3d #x22 #xd8 #x61 #x62 #x63 #x64 #x65 #x66 #x67 #x68 #x69 #xab #xbb - #xf0 #xfd #xfe #xb1 #xb0 #x6a #x6b #x6c #x6d #x6e #x6f #x70 #x71 #x72 - #xaa #xba #xe6 #xb8 #xc6 #xa4 #xb5 #x7e #x73 #x74 #x75 #x76 #x77 #x78 - #x79 #x7a #xa1 #xbf #xd0 #xdd #xde #xae #x5e #xa3 #xa5 #xb7 #xa9 #xa7 - #xb6 #xbc #xbd #xbe #x5b #x5d #xaf #xa8 #xb4 #xd7 #x7b #x41 #x42 #x43 - #x44 #x45 #x46 #x47 #x48 #x49 #xad #xf4 #xf6 #xf2 #xf3 #xf5 #x7d #x4a - #x4b #x4c #x4d #x4e #x4f #x50 #x51 #x52 #xb9 #xfb #xfc #xf9 #xfa #xff - #x5c #xf7 #x53 #x54 #x55 #x56 #x57 #x58 #x59 #x5a #xb2 #xd4 #xd6 #xd2 - #xd3 #xd5 #x30 #x31 #x32 #x33 #x34 #x35 #x36 #x37 #x38 #x39 #xb3 #xdb - #xdc #xd9 #xda #x9f)) - :test #'equalp) - -(define-constant +ebcdic-encode-table+ - (loop with rt = (make-array 256 :element-type 'ub8 :initial-element 0) - for code across +ebcdic-decode-table+ for i from 0 do - (assert (= 0 (aref rt code))) - (setf (aref rt code) i) - finally (return rt)) - :test #'equalp) - -(define-unibyte-encoder :ebcdic-us (code) - (if (>= code 256) - (handle-error) - (aref +ebcdic-encode-table+ code))) - -(define-unibyte-decoder :ebcdic-us (octet) - (aref +ebcdic-decode-table+ octet)) - -(define-unibyte-encoder :ebcdic-us-euro (code) - (if (>= code 256) - (handle-error) - (if (= code #x20ac) - #x9f - (aref +ebcdic-encode-table+ code)))) - -(define-unibyte-decoder :ebcdic-us-euro (octet) - (if (= octet #x9f) - #x20ac - (aref +ebcdic-decode-table+ octet))) - -(defun ebcdic-fi-encoder (code) - (if (>= code 256) - (handle-error) - (or (case code - (#x7b #x43) - (#x7d #x47) - (#xa7 #x4a) - (#x21 #x4f) - (#x60 #x51) - (#xa4 #x5a) - (#xc5 #x5b) - (#x5e #x5f) - (#x23 #x63) - (#x24 #x67) - (#xf6 #x6a) - (#x5c #x71) - (#xe9 #x79) - (#xc4 #x7b) - (#xd6 #x7c) - (#x5d #x9f) - (#xfc #xa1) - (#xa2 #xb0) - (#x5b #xb5) - (#xac #xba) - (#x7c #xbb) - (#xe4 #xc0) - (#xa6 #xcc) - (#xe5 #xd0) - (#x7e #xdc) - (#xc9 #xe0) - (#x40 #xec)) - (aref +ebcdic-encode-table+ code)))) - -(defun ebcdic-fi-decoder (octet) - (or (case octet - (#x43 #x7b) - (#x47 #x7d) - (#x4a #xa7) - (#x4f #x21) - (#x51 #x60) - (#x5a #xa4) - (#x5b #xc5) - (#x5f #x5e) - (#x63 #x23) - (#x67 #x24) - (#x6a #xf6) - (#x71 #x5c) - (#x79 #xe9) - (#x7b #xc4) - (#x7c #xd6) - (#x9f #x5d) - (#xa1 #xfc) - (#xb0 #xa2) - (#xb5 #x5b) - (#xba #xac) - (#xbb #x7c) - (#xc0 #xe4) - (#xcc #xa6) - (#xd0 #xe5) - (#xdc #x7e) - (#xe0 #xc9) - (#xec #x40)) - (aref +ebcdic-decode-table+ octet))) - -(define-unibyte-encoder :ebcdic-fi (code) - (ebcdic-fi-encoder code)) - -(define-unibyte-decoder :ebcdic-fi (octet) - (ebcdic-fi-decoder octet)) - -(define-unibyte-encoder :ebcdic-fi-euro (code) - (if (= code #x20ac) - #x5a - (ebcdic-fi-encoder code))) - -(define-unibyte-decoder :ebcdic-fi-euro (octet) - (if (= octet #x5a) - #x20ac - (ebcdic-fi-decoder octet))) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-gbk.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-gbk.lisp deleted file mode 100644 index 816f18c..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-gbk.lisp +++ /dev/null @@ -1,184 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; enc-gbk.lisp --- GBK encodings. -;;; -;;; Copyright (C) 2011, Li Wenpeng -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(in-package #:babel-encodings) - -;; populated in gbk-map.lisp -(defvar *gbk-unicode-mapping*) - -(defconstant +gbk2-offset+ 0) -(defconstant +gbk3-offset+ 6763) -(defconstant +gbk4-offset+ (+ 6763 6080)) -(defconstant +gbk1-offset+ 20902) -(defconstant +gbk5-offset+ (+ 20902 846)) - -(define-character-encoding :gbk - "GBK is an extension of the GB2312 character set for simplified -Chinese characters, used in the People's Republic of China." - :max-units-per-char 4 - :literal-char-code-limit #x80) - -(define-condition invalid-gbk-byte (character-decoding-error) - () - (:documentation "Signalled when an invalid GBK byte is found.")) - -(define-condition invalid-gbk-character (character-encoding-error) - () - (:documentation "Signalled when an invalid GBK character is found.")) - -(define-octet-counter :gbk (getter type) - `(lambda (seq start end max) - (declare (type ,type seq) (fixnum start end max)) - (let ((noctets 0)) - (loop for i from start below end - for u1 of-type code-point = (,getter seq i) - do (cond ((< u1 #x80) (incf noctets)) - (t (incf noctets 2))) - (when (and (plusp max) (= noctets max)) - (return (values noctets i))) - finally (return (values noctets i)))))) - -(define-code-point-counter :gbk (getter type) - `(lambda (seq start end max) - (declare (type ,type seq)) - (let (u1 (noctets 0)) - (loop with i = start - while (< i end) - do (setf u1 (,getter seq i)) - (cond - ((eq 0 (logand u1 #x80)) (incf i)) - (t (incf i 2))) - (incf noctets) - (when (and (plusp max) (= noctets max)) - (return (values noctets i))) - finally (return (values noctets i)))))) - -(define-encoder :gbk (getter src-type setter dest-type) - `(lambda (src start end dest d-start) - (declare (type ,src-type src) - (type ,dest-type dest) - (fixnum start end d-start)) - (macrolet - ((do-encoding (index) - `(let ((u1 0) (u2 0)) - (cond - ((<= +gbk2-offset+ ,index (- +gbk3-offset+ 1)) ; gbk/2 - (setf u1 (+ #xB0 (truncate (/ ,index 94)))) - (setf u2 (+ #xA1 (mod ,index 94)))) - ((<= +gbk3-offset+ ,index (- +gbk4-offset+ 1)) ; gbk/3 - (setf index (- ,index +gbk3-offset+)) - (setf u1 (+ #x81 (truncate (/ ,index 190)))) - (setf u2 (+ #x40 (mod ,index 190))) - (if (>= u2 #x7F) (incf u2))) - ((<= +gbk4-offset+ ,index (- +gbk1-offset+ 1)) ; gbk/4 - (setf index (- ,index +gbk4-offset+)) - (setf u1 (+ #xAA (truncate (/ ,index 96)))) - (setf u2 (+ #x40 (mod ,index 96))) - (if (>= u2 #x7F) (incf u2))) - ((<= +gbk1-offset+ ,index (- +gbk5-offset+ 1)) ; gbk/1 - (setf index (- ,index +gbk1-offset+)) - (setf u1 (+ #xA1 (truncate (/ ,index 94)))) - (setf u2 (+ #xA1 (mod ,index 94)))) - ((<= +gbk5-offset+ ,index (length *gbk-unicode-mapping*)) ; gbk/5 - (setf index (- ,index +gbk5-offset+)) - (setf u1 (+ #xA8 (truncate (/ ,index 96)))) - (setf u2 (+ #x40 (mod ,index 96))) - (if (>= u2 #x7F) (incf u2)))) - (values u1 u2)))) - (let ((c 0) index (noctets 0)) - (loop for i from start below end - for code of-type code-point = (,getter src i) - do (macrolet - ((handle-error (&optional (c 'character-encoding-error)) - `(encoding-error code :gbk src i +repl+ ',c))) - (setf c (code-char code)) - (cond - ((< code #x80) ; ascii - (,setter code dest noctets) - (incf noctets)) - (t ; gbk - (setf index - (position c *gbk-unicode-mapping*)) - - (if (not index) - (handle-error invalid-gbk-character)) - (multiple-value-bind (uh ul) (do-encoding index) - (,setter uh dest noctets) - (,setter ul dest (+ 1 noctets)) - (incf noctets 2))))) - finally (return (the fixnum (- noctets d-start)))))))) - -(define-decoder :gbk (getter src-type setter dest-type) - `(lambda (src start end dest d-start) - (declare (type ,src-type src) - (type ,dest-type dest)) - (let ((u1 0) (u2 0) (index 0) (tmp 0) (noctets 0)) - (loop with i = start - while (< i end) - do (macrolet - ((handle-error (&optional (c 'character-decoding-error)) - `(decoding-error #(u1 u2) :gbk src i +repl+ ',c))) - (setf u1 (,getter src i)) - (incf i) - (cond - ((eq 0 (logand u1 #x80)) - (,setter u1 dest noctets)) - (t - (setf u2 (,getter src i)) - (incf i) - (setf index - (block setter-block - (cond - ((and (<= #xB0 u1 #xF7) (<= #xA1 u2 #xFE)) - (+ +gbk2-offset+ (+ (* 94 (- u1 #xB0)) (- u2 #xA1)))) - - ((and (<= #x81 u1 #xA0) (<= #x40 u2 #xFE)) - (cond ((> u2 #x7F) (setf tmp 1)) - (t (setf tmp 0))) - (+ +gbk3-offset+ (* 190 (- u1 #x81)) (- u2 #x40 tmp))) - - ((and (<= #xAA u1 #xFE) (<= #x40 #xA0)) - (cond ((> u2 #x7F) (setf tmp 1)) - (t (setf tmp 0))) - (+ +gbk4-offset+ (* 96 (- u1 #xAA)) (- u2 #x40 tmp))) - - ((and (<= #xA1 u1 #xA9) (<= #xA1 u2 #xFE)) - (+ +gbk1-offset+ (* 94 (- u1 #xA1)) (- u2 #xA1))) - - ((and (<= #xA8 u1 #xA9) (<= #x40 #xA0)) - (cond ((> u2 #x7F) (setf tmp 1)) - (t (setf tmp 0))) - (+ +gbk5-offset+ (* 96 (- u1 #xA8)) (- u2 #x40 tmp))) - (t - (handle-error invalid-gbk-byte))))) - - (when (>= index (length *gbk-unicode-mapping*)) - (handle-error invalid-gbk-byte)) - (,setter (char-code - (elt *gbk-unicode-mapping* index)) - dest noctets))) - (incf noctets)) - finally (return (the fixnum (- noctets d-start))))))) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-iso-8859.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-iso-8859.lisp deleted file mode 100644 index aeed673..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-iso-8859.lisp +++ /dev/null @@ -1,1087 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; enc-iso-8859.lisp --- ISO-8859-* encodings. -;;; -;;; Copyright (C) 2007, Luis Oliveira -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -;;; This implementation is largely based on OpenMCL's l1-unicode.lisp -;;; Copyright (C) 2006 Clozure Associates and contributors. - -(in-package #:babel-encodings) - -;;; Typically, ISO-8859-* codes in the range #x00-#x9f map straight -;;; through, while codes #xa0-#xff select arbitrary Unicode characters -;;; that are commonly used in some locale. (Sometimes the break is at -;;; #x80 instead of #xa0). -;;; -;;; (comment from OpenMCL's ccl/level-1/l1-unicode.lisp) - -(define-character-encoding :iso-8859-1 - "An 8-bit, fixed-width character encoding in which all -character codes map to their Unicode equivalents. Intended to -support most characters used in most Western European languages." - :aliases '(:latin-1 :latin1) - :literal-char-code-limit 256) - -(define-unibyte-encoder :iso-8859-1 (code) - (if (>= code 256) - (handle-error) - code)) - -(define-unibyte-decoder :iso-8859-1 (octet) - octet) - -(define-character-encoding :iso-8859-2 - "An 8-bit, fixed-width character encoding in which codes -#x00-#x9f map to their Unicode equivalents and other codes map to -other Unicode character values. Intended to provide most -characters found in most languages used in Central/Eastern -Europe." - :aliases '(:latin-2 :latin2) - :literal-char-code-limit #xa0) - -(define-constant +unicode-00a0-0180-to-iso-8859-2+ - #(#xa0 nil nil nil #xa4 nil nil #xa7 ; #xa0-#xa7 - #xa8 nil nil nil nil #xad nil nil ; #xa8-#xaf - #xb0 nil nil nil #xb4 nil nil nil ; #xb0-#xb7 - #xb8 nil nil nil nil nil nil nil ; #xb8-#xbf - nil #xc1 #xc2 nil #xc4 nil nil #xc7 ; #xc0-#xc7 - nil #xc9 nil #xcb nil #xcd #xce nil ; #xc8-#xcf - nil nil nil #xd3 #xd4 nil #xd6 #xd7 ; #xd0-#xd7 - nil nil #xda nil #xdc #xdd nil #xdf ; #xd8-#xdf - nil #xe1 #xe2 nil #xe4 nil nil #xe7 ; #xe0-#xe7 - nil #xe9 nil #xeb nil #xed #xee nil ; #xe8-#xef - nil nil nil #xf3 #xf4 nil #xf6 #xf7 ; #xf0-#xf7 - nil nil #xfa nil #xfc #xfd nil nil ; #xf8-#xff - ;; #x0100 - nil nil #xc3 #xe3 #xa1 #xb1 #xc6 #xe6 ; #x100-#x107 - nil nil nil nil #xc8 #xe8 #xcf #xef ; #x108-#x10f - #xd0 #xf0 nil nil nil nil nil nil ; #x110-#x117 - #xca #xea #xcc #xec nil nil nil nil ; #x118-#x11f - nil nil nil nil nil nil nil nil ; #x120-#x127 - nil nil nil nil nil nil nil nil ; #x128-#x12f - nil nil nil nil nil nil nil nil ; #x130-#x137 - nil #xc5 #xe5 nil nil #xa5 #xb5 nil ; #x138-#x13f - nil #xa3 #xb3 #xd1 #xf1 nil nil #xd2 ; #x140-#x147 - #xf2 nil nil nil nil nil nil nil ; #x148-#x14f - #xd5 #xf5 nil nil #xc0 #xe0 nil nil ; #x150-#x157 - #xd8 #xf8 #xa6 #xb6 nil nil #xaa #xba ; #x158-#x15f - #xa9 #xb9 #xde #xfe #xab #xbb nil nil ; #x160-#x167 - nil nil nil nil nil nil #xd9 #xf9 ; #x168-#x16f - #xdb #xfb nil nil nil nil nil nil ; #x170-#x177 - nil #xac #xbc #xaf #xbf #xae #xbe nil) ; #x178-#x17f - :test #'equalp) - -(define-constant +unicode-02c0-02e0-to-iso-8859-2+ - #(nil nil nil nil nil nil nil #xb7 ; #x2c0-#x2c7 - nil nil nil nil nil nil nil nil ; #x2c8-#x2cf - nil nil nil nil nil nil nil nil ; #x2d0-#x2d7 - #xa2 #xff nil #xb2 nil #xbd nil nil) ; #x2d8-#x2df - :test #'equalp) - -(define-unibyte-encoder :iso-8859-2 (code) - (or (cond ((< code #xa0) code) - ((< code #x180) - (svref +unicode-00a0-0180-to-iso-8859-2+ - (the ub8 (- code #xa0)))) - ((<= #x2c0 code #x2df) - (svref +unicode-02c0-02e0-to-iso-8859-2+ - (the ub8 (- code #x2c0))))) - (handle-error))) - -(define-constant +iso-8859-2-to-unicode+ - #(;; #xa0 - #x00a0 #x0104 #x02d8 #x0141 #x00a4 #x013d #x015a #x00a7 - #x00a8 #x0160 #x015e #x0164 #x0179 #x00ad #x017d #x017b - ;; #xb0 - #x00b0 #x0105 #x02db #x0142 #x00b4 #x013e #x015b #x02c7 - #x00b8 #x0161 #x015f #x0165 #x017a #x02dd #x017e #x017c - ;; #xc0 - #x0154 #x00c1 #x00c2 #x0102 #x00c4 #x0139 #x0106 #x00c7 - #x010c #x00c9 #x0118 #x00cb #x011a #x00cd #x00ce #x010e - ;; #xd0 - #x0110 #x0143 #x0147 #x00d3 #x00d4 #x0150 #x00d6 #x00d7 - #x0158 #x016e #x00da #x0170 #x00dc #x00dd #x0162 #x00df - ;; #xe0 - #x0155 #x00e1 #x00e2 #x0103 #x00e4 #x013a #x0107 #x00e7 - #x010d #x00e9 #x0119 #x00eb #x011b #x00ed #x00ee #x010f - ;; #xf0 - #x0111 #x0144 #x0148 #x00f3 #x00f4 #x0151 #x00f6 #x00f7 - #x0159 #x016f #x00fa #x0171 #x00fc #x00fd #x0163 #x02d9) - :test #'equalp) - -(define-unibyte-decoder :iso-8859-2 (octet) - (if (< octet #xa0) - octet - (svref +iso-8859-2-to-unicode+ (the ub8 (- octet #xa0))))) - -(define-character-encoding :iso-8859-3 - "An 8-bit, fixed-width character encoding in which codes -#x00-#x9f map to their Unicode equivalents and other codes map to -other Unicode character values. Intended to provide most -characters found in most languages used in Southern Europe." - :aliases '(:latin-3 :latin3) - :literal-char-code-limit #xa0) - -(define-constant +unicode-a0-100-to-iso-8859-3+ - #(#xa0 nil nil #xa3 #xa4 nil nil #xa7 ; #xa0-#xa7 - #xa8 nil nil nil nil #xad nil nil ; #xa8-#xaf - #xb0 nil #xb2 #xb3 #xb4 #xb5 nil #xb7 ; #xb0-#xb7 - #xb8 nil nil nil nil #xbd nil nil ; #xb8-#xbf - #xc0 #xc1 #xc2 nil #xc4 nil nil #xc7 ; #xc0-#xc7 - #xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #xc8-#xcf - nil #xd1 #xd2 #xd3 #xd4 nil #xd6 #xd7 ; #xd0-#xd7 - nil #xd9 #xda #xdb #xdc nil nil #xdf ; #xd8-#xdf - #xe0 #xe1 #xe2 nil #xe4 nil nil #xe7 ; #xe0-#xe7 - #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #xe8-#xef - nil #xf1 #xf2 #xf3 #xf4 nil #xf6 #xf7 ; #xf0-#xf7 - nil #xf9 #xfa #xfb #xfc nil nil nil) ; #xf8-#xff - :test #'equalp) - -(define-constant +unicode-108-180-to-iso-8859-3+ - #(#xc6 #xe6 #xc5 #xe5 #x00 #x00 #x00 #x00 ; #x108-#x10f - nil nil nil nil nil nil nil nil ; #x110-#x117 - nil nil nil nil #xd8 #xf8 #xab #xbb ; #x118-#x11f - #xd5 #xf5 nil nil #xa6 #xb6 #xa1 #xb1 ; #x120-#x127 - nil nil nil nil nil nil nil nil ; #x128-#x12f - #xa9 #xb9 nil nil #xac #xbc nil nil ; #x130-#x137 - nil nil nil nil nil nil nil nil ; #x138-#x13f - nil nil nil nil nil nil nil nil ; #x140-#x147 - nil nil nil nil nil nil nil nil ; #x148-#x14f - nil nil nil nil nil nil nil nil ; #x150-#x157 - nil nil nil nil #xde #xfe #xaa #xba ; #x158-#x15f - nil nil nil nil nil nil nil nil ; #x160-#x167 - nil nil nil nil #xdd #xfd nil nil ; #x168-#x16f - nil nil nil nil nil nil nil nil ; #x170-#x177 - nil nil nil #xaf #xbf nil nil nil) ; #x178-#x17f - :test #'equalp) - -(define-constant +unicode-2d8-2e0-to-iso-8859-3+ - #(#xa2 #xff nil nil nil nil nil nil) ; #x2d8-#x2df - :test #'equalp) - -(define-unibyte-encoder :iso-8859-3 (code) - (or (cond ((< code #xa0) code) - ((< code #x100) - (svref +unicode-a0-100-to-iso-8859-3+ - (the ub8 (- code #xa0)))) - ((<= #x108 code #x17f) - (svref +unicode-108-180-to-iso-8859-3+ - (the ub8 (- code #x108)))) - ((<= #x2d8 code #x2df) - (svref +unicode-2d8-2e0-to-iso-8859-3+ - (the ub8 (- code #x2d8))))) - (handle-error))) - -(define-constant +iso-8859-3-to-unicode+ - #(;; #xa0 - #x00a0 #x0126 #x02d8 #x00a3 #x00a4 #xfffd #x0124 #x00a7 - #x00a8 #x0130 #x015e #x011e #x0134 #x00ad #xfffd #x017b - ;; #xb0 - #x00b0 #x0127 #x00b2 #x00b3 #x00b4 #x00b5 #x0125 #x00b7 - #x00b8 #x0131 #x015f #x011f #x0135 #x00bd #xfffd #x017c - ;; #xc0 - #x00c0 #x00c1 #x00c2 #xfffd #x00c4 #x010a #x0108 #x00c7 - #x00c8 #x00c9 #x00ca #x00cb #x00cc #x00cd #x00ce #x00cf - ;; #xd0 - #xfffd #x00d1 #x00d2 #x00d3 #x00d4 #x0120 #x00d6 #x00d7 - #x011c #x00d9 #x00da #x00db #x00dc #x016c #x015c #x00df - ;; #xe0 - #x00e0 #x00e1 #x00e2 #xfffd #x00e4 #x010b #x0109 #x00e7 - #x00e8 #x00e9 #x00ea #x00eb #x00ec #x00ed #x00ee #x00ef - ;; #xf0 - #xfffd #x00f1 #x00f2 #x00f3 #x00f4 #x0121 #x00f6 #x00f7 - #x011d #x00f9 #x00fa #x00fb #x00fc #x016d #x015d #x02d9) - :test #'equalp) - -(define-unibyte-decoder :iso-8859-3 (octet) - (if (< octet #xa0) - octet - (svref +iso-8859-3-to-unicode+ (the ub8 (- octet #xa0))))) - -(define-character-encoding :iso-8859-4 - "An 8-bit, fixed-width character encoding in which codes -#x00-#x9f map to their Unicode equivalents and other codes map to -other Unicode character values. Intended to provide most -characters found in most languages used in Northern Europe." - :aliases '(:latin-4 :latin4) - :literal-char-code-limit #xa0) - -(define-constant +unicode-a0-180-to-iso-8859-4+ - #(#xa0 nil nil nil #xa4 nil nil #xa7 ; #xa0-#xa7 - #xa8 nil nil nil nil #xad nil #xaf ; #xa8-#xaf - #xb0 nil nil nil #xb4 nil nil nil ; #xb0-#xb7 - #xb8 nil nil nil nil nil nil nil ; #xb8-#xbf - nil #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 nil ; #xc0-#xc7 - nil #xc9 nil #xcb nil #xcd #xce nil ; #xc8-#xcf - nil nil nil nil #xd4 #xd5 #xd6 #xd7 ; #xd0-#xd7 - #xd8 nil #xda #xdb #xdc nil nil #xdf ; #xd8-#xdf - nil #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 nil ; #xe0-#xe7 - nil #xe9 nil #xeb nil #xed #xee nil ; #xe8-#xef - nil nil nil nil #xf4 #xf5 #xf6 #xf7 ; #xf0-#xf7 - #xf8 nil #xfa #xfb #xfc nil nil nil ; #xf8-#xff - #xc0 #xe0 nil nil #xa1 #xb1 nil nil ; #x100-#x107 - nil nil nil nil #xc8 #xe8 nil nil ; #x108-#x10f - #xd0 #xf0 #xaa #xba nil nil #xcc #xec ; #x110-#x117 - #xca #xea nil nil nil nil nil nil ; #x118-#x11f - nil nil #xab #xbb nil nil nil nil ; #x120-#x127 - #xa5 #xb5 #xcf #xef nil nil #xc7 #xe7 ; #x128-#x12f - nil nil nil nil nil nil #xd3 #xf3 ; #x130-#x137 - #xa2 nil nil #xa6 #xb6 nil nil nil ; #x138-#x13f - nil nil nil nil nil #xd1 #xf1 nil ; #x140-#x147 - nil nil #xbd #xbf #xd2 #xf2 nil nil ; #x148-#x14f - nil nil nil nil nil nil #xa3 #xb3 ; #x150-#x157 - nil nil nil nil nil nil nil nil ; #x158-#x15f - #xa9 #xb9 nil nil nil nil #xac #xbc ; #x160-#x167 - #xdd #xfd #xde #xfe nil nil nil nil ; #x168-#x16f - nil nil #xd9 #xf9 nil nil nil nil ; #x170-#x177 - nil nil nil nil nil #xae #xbe nil) ; #x178-#x17f - :test #'equalp) - -(define-constant +unicode-2c0-2e0-to-iso-8859-4+ - #(nil nil nil nil nil nil nil #xb7 ; #x2c0-#x2c7 - nil nil nil nil nil nil nil nil ; #x2c8-#x2cf - nil nil nil nil nil nil nil nil ; #x2d0-#x2d7 - nil #xff nil #xb2 nil nil nil nil) ; #x2d8-#x2df - :test #'equalp) - -(define-unibyte-encoder :iso-8859-4 (code) - (or (cond ((< code #xa0) code) - ((< code #x180) - (svref +unicode-a0-180-to-iso-8859-4+ - (the ub8 (- code #xa0)))) - ((<= #x2c0 code #x2df) - (svref +unicode-2c0-2e0-to-iso-8859-4+ - (the ub8 (- code #x2c0))))) - (handle-error))) - -(define-constant +iso-8859-4-to-unicode+ - #(;; #xa0 - #x00a0 #x0104 #x0138 #x0156 #x00a4 #x0128 #x013b #x00a7 - #x00a8 #x0160 #x0112 #x0122 #x0166 #x00ad #x017d #x00af - ;; #xb0 - #x00b0 #x0105 #x02db #x0157 #x00b4 #x0129 #x013c #x02c7 - #x00b8 #x0161 #x0113 #x0123 #x0167 #x014a #x017e #x014b - ;; #xc0 - #x0100 #x00c1 #x00c2 #x00c3 #x00c4 #x00c5 #x00c6 #x012e - #x010c #x00c9 #x0118 #x00cb #x0116 #x00cd #x00ce #x012a - ;; #xd0 - #x0110 #x0145 #x014c #x0136 #x00d4 #x00d5 #x00d6 #x00d7 - #x00d8 #x0172 #x00da #x00db #x00dc #x0168 #x016a #x00df - ;; #xe0 - #x0101 #x00e1 #x00e2 #x00e3 #x00e4 #x00e5 #x00e6 #x012f - #x010d #x00e9 #x0119 #x00eb #x0117 #x00ed #x00ee #x012b - ;; #xf0 - #x0111 #x0146 #x014d #x0137 #x00f4 #x00f5 #x00f6 #x00f7 - #x00f8 #x0173 #x00fa #x00fb #x00fc #x0169 #x016b #x02d9) - :test #'equalp) - -(define-unibyte-decoder :iso-8859-4 (octet) - (if (< octet #xa0) - octet - (svref +iso-8859-4-to-unicode+ (the ub8 (- octet #xa0))))) - -(define-character-encoding :iso-8859-5 - "An 8-bit, fixed-width character encoding in which codes -#x00-#x9f map to their Unicode equivalents and other codes map to -other Unicode character values. Intended to provide most -characters found in the Cyrillic alphabet." - :aliases '(:cyrillic) - :literal-char-code-limit #xa0) - -(define-constant +unicode-a0-b0-to-iso-8859-5+ - #(#xa0 nil nil nil nil nil nil #xfd ; #xa0-#xa7 - nil nil nil nil nil #xad nil nil) ; #xa8-#xaf - :test #'equalp) - -(define-constant +unicode-400-460-to-iso-8859-5+ - #(nil #xa1 #xa2 #xa3 #xa4 #xa5 #xa6 #xa7 ; #x400-#x407 - #xa8 #xa9 #xaa #xab #xac nil #xae #xaf ; #x408-#x40f - #xb0 #xb1 #xb2 #xb3 #xb4 #xb5 #xb6 #xb7 ; #x410-#x417 - #xb8 #xb9 #xba #xbb #xbc #xbd #xbe #xbf ; #x418-#x41f - #xc0 #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 #xc7 ; #x420-#x427 - #xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #x428-#x42f - #xd0 #xd1 #xd2 #xd3 #xd4 #xd5 #xd6 #xd7 ; #x430-#x437 - #xd8 #xd9 #xda #xdb #xdc #xdd #xde #xdf ; #x438-#x43f - #xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #x440-#x447 - #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #x448-#x44f - nil #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 #xf7 ; #x450-#x457 - #xf8 #xf9 #xfa #xfb #xfc nil #xfe #xff) ; #x458-#x45f - :test #'equalp) - -(define-unibyte-encoder :iso-8859-5 (code) - (or (cond ((< code #xa0) code) - ((< code #xb0) - (svref +unicode-a0-b0-to-iso-8859-5+ - (the ub8 (- code #xa0)))) - ((<= #x400 code #x45f) - (svref +unicode-400-460-to-iso-8859-5+ - (the ub8 (- code #x400)))) - ;; the Numero sign - ((= code #x2116) #xf0)) - (handle-error))) - -(define-constant +iso-8859-5-to-unicode+ - #(;; #xa0 - #x00a0 #x0401 #x0402 #x0403 #x0404 #x0405 #x0406 #x0407 - #x0408 #x0409 #x040a #x040b #x040c #x00ad #x040e #x040f - ;; #xb0 - #x0410 #x0411 #x0412 #x0413 #x0414 #x0415 #x0416 #x0417 - #x0418 #x0419 #x041a #x041b #x041c #x041d #x041e #x041f - ;; #xc0 - #x0420 #x0421 #x0422 #x0423 #x0424 #x0425 #x0426 #x0427 - #x0428 #x0429 #x042a #x042b #x042c #x042d #x042e #x042f - ;; #xd0 - #x0430 #x0431 #x0432 #x0433 #x0434 #x0435 #x0436 #x0437 - #x0438 #x0439 #x043a #x043b #x043c #x043d #x043e #x043f - ;; #xe0 - #x0440 #x0441 #x0442 #x0443 #x0444 #x0445 #x0446 #x0447 - #x0448 #x0449 #x044a #x044b #x044c #x044d #x044e #x044f - ;; #xf0 - #x2116 #x0451 #x0452 #x0453 #x0454 #x0455 #x0456 #x0457 - #x0458 #x0459 #x045a #x045b #x045c #x00a7 #x045e #x045f) - :test #'equalp) - -(define-unibyte-decoder :iso-8859-5 (octet) - (if (< octet #xa0) - octet - (svref +iso-8859-5-to-unicode+ (the ub8 (- octet #xa0))))) - -(define-character-encoding :iso-8859-6 - "An 8-bit, fixed-width character encoding in which codes #x00-#x9f -map to their Unicode equivalents and other codes map to other Unicode -character values. Intended to provide most characters found in the -Arabic alphabet." - :aliases '(:arabic) - :literal-char-code-limit #xa0) - -(define-constant +unicode-a0-b0-to-iso-8859-6+ - #(#xa0 nil nil nil #xa4 nil nil nil ; #xa0-#xa7 - nil nil nil nil nil #xad nil nil) ; #xa8-#xaf - :test #'equalp) - -(define-constant +unicode-608-658-to-iso-8859-6+ - #(nil nil nil nil #xac nil nil nil ; #x608-#x60f - nil nil nil nil nil nil nil nil ; #x610-#x617 - nil nil nil #xbb nil nil nil #xbf ; #x618-#x61f - nil #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 #xc7 ; #x620-#x627 - #xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #x628-#x62f - #xd0 #xd1 #xd2 #xd3 #xd4 #xd5 #xd6 #xd7 ; #x630-#x637 - #xd8 #xd9 #xda nil nil nil nil nil ; #x638-#x63f - #xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #x640-#x647 - #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #x648-#x64f - #xf0 #xf1 #xf2 nil nil nil nil nil) ; #x650-#x657 - :test #'equalp) - -(define-unibyte-encoder :iso-8859-6 (code) - (or (cond ((< code #xa0) code) - ((< code #xb0) - (svref +unicode-a0-b0-to-iso-8859-6+ - (the ub8 (- code #xa0)))) - ((<= #x608 code #x657) - (svref +unicode-608-658-to-iso-8859-6+ - (the ub8 (- code #x608))))) - (handle-error))) - -(define-constant +iso-8859-6-to-unicode+ - #(;; #xa0 - #x00a0 #xfffd #xfffd #xfffd #x00a4 #xfffd #xfffd #xfffd - #xfffd #xfffd #xfffd #xfffd #x060c #x00ad #xfffd #xfffd - ;; #xb0 - #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd - #xfffd #xfffd #xfffd #x061b #xfffd #xfffd #xfffd #x061f - ;; #xc0 - #xfffd #x0621 #x0622 #x0623 #x0624 #x0625 #x0626 #x0627 - #x0628 #x0629 #x062a #x062b #x062c #x062d #x062e #x062f - ;; #xd0 - #x0630 #x0631 #x0632 #x0633 #x0634 #x0635 #x0636 #x0637 - #x0638 #x0639 #x063a #xfffd #xfffd #xfffd #xfffd #xfffd - ;; #xe0 - #x0640 #x0641 #x0642 #x0643 #x0644 #x0645 #x0646 #x0647 - #x0648 #x0649 #x064a #x064b #x064c #x064d #x064e #x064f - ;; #xf0 - #x0650 #x0651 #x0652 #xfffd #xfffd #xfffd #xfffd #xfffd - #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd) - :test #'equalp) - -(define-unibyte-decoder :iso-8859-6 (octet) - (if (< octet #xa0) - octet - (svref +iso-8859-6-to-unicode+ (the ub8 (- octet #xa0))))) - -(define-character-encoding :iso-8859-7 - "An 8-bit, fixed-width character encoding in which codes -#x00-#x9f map to their Unicode equivalents and other codes map to -other Unicode character values. Intended to provide most -characters found in the Greek alphabet." - :aliases '(:greek) - :literal-char-code-limit #xa0) - -(define-constant +unicode-a0-c0-to-iso-8859-7+ - #(#xa0 nil nil #xa3 nil nil #xa6 #xa7 ; #xa0-#xa7 - #xa8 #xa9 nil #xab #xac #xad nil nil ; #xa8-#xaf - #xb0 #xb1 #xb2 #xb3 nil nil nil #xb7 ; #xb0-#xb7 - nil nil nil #xbb nil #xbd nil nil) ; #xb8-#xbf - :test #'equalp) - -(define-constant +unicode-378-3d0-to-iso-8859-7+ - #(nil nil #xaa nil nil nil nil nil ; #x378-#x37f - nil nil nil nil #xb4 #xb5 #xb6 nil ; #x380-#x387 - #xb8 #xb9 #xba nil #xbc nil #xbe #xbf ; #x388-#x38f - #xc0 #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 #xc7 ; #x390-#x397 - #xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #x398-#x39f - #xd0 #xd1 nil #xd3 #xd4 #xd5 #xd6 #xd7 ; #x3a0-#x3a7 - #xd8 #xd9 #xda #xdb #xdc #xdd #xde #xdf ; #x3a8-#x3af - #xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #x3b0-#x3b7 - #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #x3b8-#x3bf - #xf0 #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 #xf7 ; #x3c0-#x3c7 - #xf8 #xf9 #xfa #xfb #xfc #xfd #xfe nil) ; #x3c8-#x3cf - :test #'equalp) - -(define-constant +unicode-2010-2020-to-iso-8859-7+ - #(nil nil nil nil nil #xaf nil nil ; #x2010-#x2017 - #xa1 #xa2 nil nil nil nil nil nil) ; #x2018-#x201f - :test #'equalp) - -(define-constant +unicode-20ac-20b0-to-iso-8859-7+ - #(#xa4 nil nil #xa5) - :test #'equalp) - -(define-unibyte-encoder :iso-8859-7 (code) - (or (cond ((< code #xa0) code) - ((< code #xc0) - (svref +unicode-a0-c0-to-iso-8859-7+ - (the ub8 (- code #xa0)))) - ((<= #x378 code #x3cf) - (svref +unicode-378-3d0-to-iso-8859-7+ - (the ub8 (- code #x378)))) - ((<= #x2010 code #x201f) - (svref +unicode-2010-2020-to-iso-8859-7+ - (the ub8 (- code #x2010)))) - ((<= #x201c code #x20af) - (svref +unicode-20ac-20b0-to-iso-8859-7+ - (the ub8 (- code #x20ac))))) - (handle-error))) - -(define-constant +iso-8859-7-to-unicode+ - #(;; #xa0 - #x00a0 #x2018 #x2019 #x00a3 #x20ac #x20af #x00a6 #x00a7 - #x00a8 #x00a9 #x037a #x00ab #x00ac #x00ad #xfffd #x2015 - ;; #xb0 - #x00b0 #x00b1 #x00b2 #x00b3 #x0384 #x0385 #x0386 #x00b7 - #x0388 #x0389 #x038a #x00bb #x038c #x00bd #x038e #x038f - ;; #xc0 - #x0390 #x0391 #x0392 #x0393 #x0394 #x0395 #x0396 #x0397 - #x0398 #x0399 #x039a #x039b #x039c #x039d #x039e #x039f - ;; #xd0 - #x03a0 #x03a1 #xfffd #x03a3 #x03a4 #x03a5 #x03a6 #x03a7 - #x03a8 #x03a9 #x03aa #x03ab #x03ac #x03ad #x03ae #x03af - ;; #xe0 - #x03b0 #x03b1 #x03b2 #x03b3 #x03b4 #x03b5 #x03b6 #x03b7 - #x03b8 #x03b9 #x03ba #x03bb #x03bc #x03bd #x03be #x03bf - ;; #xf0 - #x03c0 #x03c1 #x03c2 #x03c3 #x03c4 #x03c5 #x03c6 #x03c7 - #x03c8 #x03c9 #x03ca #x03cb #x03cc #x03cd #x03ce #xfffd) - :test #'equalp) - -(define-unibyte-decoder :iso-8859-7 (octet) - (if (< octet #xa0) - octet - (svref +iso-8859-7-to-unicode+ (the ub8 (- octet #xa0))))) - -(define-character-encoding :iso-8859-8 - "An 8-bit, fixed-width character encoding in which codes #x00-#x9f -map to their Unicode equivalents and other codes map to other Unicode -character values. Intended to provide most characters found in the -Hebrew alphabet." - :aliases '(:hebrew) - :literal-char-code-limit #xa0) - -(define-constant +unicode-a0-f8-to-iso-8859-8+ - #(#xa0 nil #xa2 #xa3 #xa4 #xa5 #xa6 #xa7 ; #xa0-#xa7 - #xa8 #xa9 nil #xab #xac #xad #xae #xaf ; #xa8-#xaf - #xb0 #xb1 #xb2 #xb3 #xb4 #xb5 #xb6 #xb7 ; #xb0-#xb7 - #xb8 #xb9 nil #xbb #xbc #xbd #xbe nil ; #xb8-#xbf - nil nil nil nil nil nil nil nil ; #xc0-#xc7 - nil nil nil nil nil nil nil nil ; #xc8-#xcf - nil nil nil nil nil nil nil #xaa ; #xd0-#xd7 - nil nil nil nil nil nil nil nil ; #xd8-#xdf - nil nil nil nil nil nil nil nil ; #xe0-#xe7 - nil nil nil nil nil nil nil nil ; #xe8-#xef - nil nil nil nil nil nil nil #xba) ; #xf0-#xf7 - :test #'equalp) - -(define-constant +unicode-5d0-5f0-to-iso-8859-8+ - #(#xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #x5d0-#x5d7 - #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #x5d8-#x5df - #xf0 #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 #xf7 ; #x5e0-#x5e7 - #xf8 #xf9 #xfa nil nil nil nil nil) ; #x5e8-#x5ef - :test #'equalp) - -(define-constant +unicode-2008-2018-to-iso-8859-8+ - #(nil nil nil nil nil nil #xfd #xfe ; #x2008-#x200f - nil nil nil nil nil nil nil #xdf) ; #x2010-#x2017 - :test #'equalp) - -(define-unibyte-encoder :iso-8859-8 (code) - (or (cond ((< code #xa0) code) - ((< code #xf8) - (svref +unicode-a0-f8-to-iso-8859-8+ - (the ub8 (- code #xa0)))) - ((<= #x5d0 code #x5ef) - (svref +unicode-5d0-5f0-to-iso-8859-8+ - (the ub8 (- code #x5d0)))) - ((<= #x2008 code #x201f) - (svref +unicode-2008-2018-to-iso-8859-8+ - (the ub8 (- code #x2008))))) - (handle-error))) - -(define-constant +iso-8859-8-to-unicode+ - #(;; #xa0 - #x00a0 #xfffd #x00a2 #x00a3 #x00a4 #x00a5 #x00a6 #x00a7 - #x00a8 #x00a9 #x00d7 #x00ab #x00ac #x00ad #x00ae #x00af - ;; #xb0 - #x00b0 #x00b1 #x00b2 #x00b3 #x00b4 #x00b5 #x00b6 #x00b7 - #x00b8 #x00b9 #x00f7 #x00bb #x00bc #x00bd #x00be #xfffd - ;; #xc0 - #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd - #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd - ;; #xd0 - #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd - #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #x2017 - ;; #xe0 - #x05d0 #x05d1 #x05d2 #x05d3 #x05d4 #x05d5 #x05d6 #x05d7 - #x05d8 #x05d9 #x05da #x05db #x05dc #x05dd #x05de #x05df - ;; #xf0 - #x05e0 #x05e1 #x05e2 #x05e3 #x05e4 #x05e5 #x05e6 #x05e7 - #x05e8 #x05e9 #x05ea #xfffd #xfffd #x200e #x200f #xfffd) - :test #'equalp) - -(define-unibyte-decoder :iso-8859-8 (octet) - (if (< octet #xa0) - octet - (svref +iso-8859-8-to-unicode+ (the ub8 (- octet #xa0))))) - -(define-character-encoding :iso-8859-9 - "An 8-bit, fixed-width character encoding in which codes -#x00-#xcf map to their Unicode equivalents and other codes map to -other Unicode character values. Intended to provide most -characters found in the Turkish alphabet." - :aliases '(:latin-5 :latin5) - :decode-literal-code-unit-limit #xd0 - :encode-literal-code-unit-limit #xa0) - -(define-constant +unicode-d0-100-to-iso-8859-9+ - #(nil #xd1 #xd2 #xd3 #xd4 #xd5 #xd6 #xd7 ; #xd0-#xd7 - #xd8 #xd9 #xda #xdb #xdc nil nil #xdf ; #xd8-#xdf - #xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #xe0-#xe7 - #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #xe8-#xef - nil #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 #xf7 ; #xf0-#xf7 - #xf8 #xf9 #xfa #xfb #xfc nil nil #xff) ; #xf8-#xff - :test #'equalp) - -(define-constant +unicode-118-160-to-iso-8859-9+ - #(nil nil nil nil nil nil #xd0 #xf0 ; #x118-#x11f - nil nil nil nil nil nil nil nil ; #x120-#x127 - nil nil nil nil nil nil nil nil ; #x128-#x12f - #xdd #xfd nil nil nil nil nil nil ; #x130-#x137 - nil nil nil nil nil nil nil nil ; #x138-#x13f - nil nil nil nil nil nil nil nil ; #x140-#x147 - nil nil nil nil nil nil nil nil ; #x148-#x14f - nil nil nil nil nil nil nil nil ; #x150-#x157 - nil nil nil nil nil nil #xde #xfe) ; #x158-#x15f - :test #'equalp) - -(define-unibyte-encoder :iso-8859-9 (code) - (or (cond ((< code #xd0) code) - ((< code #x100) - (svref +unicode-d0-100-to-iso-8859-9+ - (the ub8 (- code #xd0)))) - ((<= #x118 code #x15f) - (svref +unicode-118-160-to-iso-8859-9+ - (the ub8 (- code #x118))))) - (handle-error))) - -(define-constant +iso-8859-9-to-unicode+ - #(;; #xd0 - #x011e #x00d1 #x00d2 #x00d3 #x00d4 #x00d5 #x00d6 #x00d7 - #x00d8 #x00d9 #x00da #x00db #x00dc #x0130 #x015e #x00df - ;; #xe0 - #x00e0 #x00e1 #x00e2 #x00e3 #x00e4 #x00e5 #x00e6 #x00e7 - #x00e8 #x00e9 #x00ea #x00eb #x00ec #x00ed #x00ee #x00ef - ;; #xf0 - #x011f #x00f1 #x00f2 #x00f3 #x00f4 #x00f5 #x00f6 #x00f7 - #x00f8 #x00f9 #x00fa #x00fb #x00fc #x0131 #x015f #x00ff) - :test #'equalp) - -(define-unibyte-decoder :iso-8859-9 (octet) - (if (< octet #xd0) - octet - (svref +iso-8859-9-to-unicode+ (the ub8 (- octet #xd0))))) - -(define-character-encoding :iso-8859-10 - "An 8-bit, fixed-width character encoding in which codes -#x00-#x9f map to their Unicode equivalents and other codes map to -other Unicode character values. Intended to provide most -characters found in Nordic alphabets." - :aliases '(:latin-6 :latin6) - :literal-char-code-limit #xa0) - -(define-constant +unicode-a0-180-to-iso-8859-10+ - #(#xa0 nil nil nil nil nil nil #xa7 ; #xa0-#xa7 - nil nil nil nil nil #xad nil nil ; #xa8-#xaf - #xb0 nil nil nil nil nil nil #xb7 ; #xb0-#xb7 - nil nil nil nil nil #x2015 nil nil ; #xb8-#xbf - nil #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 nil ; #xc0-#xc7 - nil #xc9 nil #xcb nil #xcd #xce #xcf ; #xc8-#xcf - #xd0 nil nil #xd3 #xd4 #xd5 #xd6 nil ; #xd0-#xd7 - #xd8 nil #xda #xdb #xdc #xdd #xde #xdf ; #xd8-#xdf - nil #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 nil ; #xe0-#xe7 - nil #xe9 nil #xeb nil #xed #xee #xef ; #xe8-#xef - #xf0 nil nil #xf3 #xf4 #xf5 #xf6 nil ; #xf0-#xf7 - #xf8 nil #xfa #xfb #xfc #xfd #xfe nil ; #xf8-#xff - #xc0 #xe0 nil nil #xa1 #xb1 nil nil ; #x100-#x107 - nil nil nil nil #xc8 #xe8 nil nil ; #x108-#x10f - #xa9 #xb9 #xa2 #xb2 nil nil #xcc #xec ; #x110-#x117 - #xca #xea nil nil nil nil nil nil ; #x118-#x11f - nil nil #xa3 #xb3 nil nil nil nil ; #x120-#x127 - #xa5 #xb5 #xa4 #xb4 nil nil #xc7 #xe7 ; #x128-#x12f - nil nil nil nil nil nil #xa6 #xb6 ; #x130-#x137 - #xff nil nil #xa8 #xb8 nil nil nil ; #x138-#x13f - nil nil nil nil nil #xd1 #xf1 nil ; #x140-#x147 - nil nil #xaf #xbf #xd2 #xf2 nil nil ; #x148-#x14f - nil nil nil nil nil nil nil nil ; #x150-#x157 - nil nil nil nil nil nil nil nil ; #x158-#x15f - #xaa #xba nil nil nil nil #xab #xbb ; #x160-#x167 - #xd7 #xf7 #xae #xbe nil nil nil nil ; #x168-#x16f - nil nil #xd9 #xf9 nil nil nil nil ; #x170-#x177 - nil nil nil nil nil #xac #xbc nil) ; #x178-#x17f - :test #'equalp) - -(define-unibyte-encoder :iso-8859-10 (code) - (or (cond ((< code #xa0) code) - ((< code #x180) - (svref +unicode-a0-180-to-iso-8859-10+ - (the ub8 (- code #xa0)))) - ;; Horizontal bar - ((= code #x2015) #xbd)) - (handle-error))) - -(define-constant +iso-8859-10-to-unicode+ - #(;; #xa0 - #x00a0 #x0104 #x0112 #x0122 #x012a #x0128 #x0136 #x00a7 - #x013b #x0110 #x0160 #x0166 #x017d #x00ad #x016a #x014a - ;; #xb0 - #x00b0 #x0105 #x0113 #x0123 #x012b #x0129 #x0137 #x00b7 - #x013c #x0111 #x0161 #x0167 #x017e #x2015 #x016b #x014b - ;; #xc0 - #x0100 #x00c1 #x00c2 #x00c3 #x00c4 #x00c5 #x00c6 #x012e - #x010c #x00c9 #x0118 #x00cb #x0116 #x00cd #x00ce #x00cf - ;; #xd0 - #x00d0 #x0145 #x014c #x00d3 #x00d4 #x00d5 #x00d6 #x0168 - #x00d8 #x0172 #x00da #x00db #x00dc #x00dd #x00de #x00df - ;; #xe0 - #x0101 #x00e1 #x00e2 #x00e3 #x00e4 #x00e5 #x00e6 #x012f - #x010d #x00e9 #x0119 #x00eb #x0117 #x00ed #x00ee #x00ef - ;; #xf0 - #x00f0 #x0146 #x014d #x00f3 #x00f4 #x00f5 #x00f6 #x0169 - #x00f8 #x0173 #x00fa #x00fb #x00fc #x00fd #x00fe #x0138) - :test #'equalp) - -(define-unibyte-decoder :iso-8859-10 (octet) - (if (< octet #xa0) - octet - (svref +iso-8859-10-to-unicode+ (the ub8 (- octet #xa0))))) - -(define-character-encoding :iso-8859-11 - "An 8-bit, fixed-width character encoding in which codes -#x00-#x9f map to their Unicode equivalents and other codes map to -other Unicode character values. Intended to provide most -characters found the Thai alphabet." - :aliases '() - :literal-char-code-limit #xa0) - -(define-unibyte-encoder :iso-8859-11 (code) - (cond ((< code #xa1) code) - ((and (<= #xe01 code #xe5b) - (not (<= #xe3b code #xe3e)) - (not (<= #xe5c code #xe5f))) - (- code #xd60)) - (t (handle-error)))) - -(define-unibyte-decoder :iso-8859-11 (octet) - (cond ((<= octet #xa0) octet) - ((or (<= #xdb octet #xde) - (<= #xfc octet #xff)) - #xfffd) - ((<= octet #xfb) - (+ octet #x0d60)) - (t (handle-error)))) - -;;; There is no iso-8859-12 encoding. - -(define-character-encoding :iso-8859-13 - "An 8-bit, fixed-width character encoding in which codes -#x00-#x9f map to their Unicode equivalents and other codes map to -other Unicode character values. Intended to provide most -characters found in Baltic alphabets." - :aliases '() - :literal-char-code-limit #xa0) - -(define-constant +unicode-a0-180-to-iso-8859-13+ - #(#xa0 nil #xa2 #xa3 #xa4 nil #xa6 #xa7 ; #xa0-#xa7 - nil #xa9 nil #xab #xac #xad #xae nil ; #xa8-#xaf - #xb0 #xb1 #xb2 #xb3 nil #xb5 #xb6 #xb7 ; #xb0-#xb7 - nil #xb9 nil #xbb #xbc #xbd #xbe nil ; #xb8-#xbf - nil nil nil nil #xc4 #xc5 #xaf nil ; #xc0-#xc7 - nil #xc9 nil nil nil nil nil nil ; #xc8-#xcf - nil nil nil #xd3 nil #xd5 #xd6 #xd7 ; #xd0-#xd7 - #xa8 nil nil nil #xdc nil nil #xdf ; #xd8-#xdf - nil nil nil nil #xe4 #xe5 #xbf nil ; #xe0-#xe7 - nil #xe9 nil nil nil nil nil nil ; #xe8-#xef - nil nil nil #xf3 nil #xf5 #xf6 #xf7 ; #xf0-#xf7 - #xb8 nil nil nil #xfc nil nil nil ; #xf8-#xff - #xc2 #xe2 nil nil #xc0 #xe0 #xc3 #xe3 ; #x100-#x107 - nil nil nil nil #xc8 #xe8 nil nil ; #x108-#x10f - nil nil #xc7 #xe7 nil nil #xcb #xeb ; #x110-#x117 - #xc6 #xe6 nil nil nil nil nil nil ; #x118-#x11f - nil nil #xcc #xec nil nil nil nil ; #x120-#x127 - nil nil #xce #xee nil nil #xc1 #xe1 ; #x128-#x12f - nil nil nil nil nil nil #xcd #xed ; #x130-#x137 - nil nil nil #xcf #xef nil nil nil ; #x138-#x13f - nil #xd9 #xf9 #xd1 #xf1 #xd2 #xf2 nil ; #x140-#x147 - nil nil nil nil #xd4 #xf4 nil nil ; #x148-#x14f - nil nil nil nil nil nil #xaa #xba ; #x150-#x157 - nil nil #xda #xfa nil nil nil nil ; #x158-#x15f - #xd0 #xf0 nil nil nil nil nil nil ; #x160-#x167 - nil nil #xdb #xfb nil nil nil nil ; #x168-#x16f - nil nil #xd8 #xf8 nil nil nil nil ; #x170-#x177 - nil #xca #xea #xdd #xfd #xde #xfe nil) ; #x178-#x17f - :test #'equalp) - -(define-constant +unicode-2018-2020-to-iso-8859-13+ - #(nil #xff nil nil #xb4 #xa1 #xa5 nil) ; #x2018-#x201f - :test #'equalp) - -(define-unibyte-encoder :iso-8859-13 (code) - (or (cond ((< code #xa0) code) - ((< code #x180) - (svref +unicode-a0-180-to-iso-8859-13+ - (the ub8 (- code #xa0)))) - ((<= #x2018 code #x201f) - (svref +unicode-2018-2020-to-iso-8859-13+ - (the ub8 (- code #x2018))))) - (handle-error))) - -(define-constant +iso-8859-13-to-unicode+ - #(;; #xa0 - #x00a0 #x201d #x00a2 #x00a3 #x00a4 #x201e #x00a6 #x00a7 - #x00d8 #x00a9 #x0156 #x00ab #x00ac #x00ad #x00ae #x00c6 - ;; #xb0 - #x00b0 #x00b1 #x00b2 #x00b3 #x201c #x00b5 #x00b6 #x00b7 - #x00f8 #x00b9 #x0157 #x00bb #x00bc #x00bd #x00be #x00e6 - ;; #xc0 - #x0104 #x012e #x0100 #x0106 #x00c4 #x00c5 #x0118 #x0112 - #x010c #x00c9 #x0179 #x0116 #x0122 #x0136 #x012a #x013b - ;; #xd0 - #x0160 #x0143 #x0145 #x00d3 #x014c #x00d5 #x00d6 #x00d7 - #x0172 #x0141 #x015a #x016a #x00dc #x017b #x017d #x00df - ;; #xe0 - #x0105 #x012f #x0101 #x0107 #x00e4 #x00e5 #x0119 #x0113 - #x010d #x00e9 #x017a #x0117 #x0123 #x0137 #x012b #x013c - ;; #xf0 - #x0161 #x0144 #x0146 #x00f3 #x014d #x00f5 #x00f6 #x00f7 - #x0173 #x0142 #x015b #x016b #x00fc #x017c #x017e #x2019) - :test #'equalp) - -(define-unibyte-decoder :iso-8859-13 (octet) - (if (< octet #xa0) - octet - (svref +iso-8859-13-to-unicode+ (the ub8 (- octet #xa0))))) - -(define-character-encoding :iso-8859-14 - "An 8-bit, fixed-width character encoding in which codes -#x00-#x9f map to their Unicode equivalents and other codes map to -other Unicode character values. Intended to provide most -characters found in Celtic languages." - :aliases '(:latin-8 :latin8) - :literal-char-code-limit #xa0) - -(define-constant +unicode-a0-100-to-iso-8859-14+ - #(#xa0 nil nil #xa3 nil nil nil #xa7 ; #xa0-#xa7 - nil #xa9 nil nil nil #xad #xae nil ; #xa8-#xaf - nil nil nil nil nil nil #xb6 nil ; #xb0-#xb7 - nil nil nil nil nil nil nil nil ; #xb8-#xbf - #xc0 #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 #xc7 ; #xc0-#xc7 - #xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #xc8-#xcf - nil #xd1 #xd2 #xd3 #xd4 #xd5 #xd6 nil ; #xd0-#xd7 - #xd8 #xd9 #xda #xdb #xdc #xdd nil #xdf ; #xd8-#xdf - #xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #xe0-#xe7 - #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #xe8-#xef - nil #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 nil ; #xf0-#xf7 - #xf8 #xf9 #xfa #xfb #xfc #xfd nil #xff) ; #xf8-#xff - :test #'equalp) - -(define-constant +unicode-108-128-to-iso-8859-14+ - #(nil nil #xa4 #xa5 nil nil nil nil ; #x108-#x10f - nil nil nil nil nil nil nil nil ; #x110-#x117 - nil nil nil nil nil nil nil nil ; #x118-#x11f - #xb2 #xb3 nil nil nil nil nil nil) ; #x120-#x127 - :test #'equalp) - -(define-constant +unicode-170-180-to-iso-8859-14+ - #(nil nil nil nil #xd0 #xf0 #xde #xfe ; #x170-#x177 - #xaf nil nil nil nil nil nil nil) ; #x178-#x17f - :test #'equalp) - -(define-constant +unicode-1e00-1e88-to-iso-8859-14+ - #(nil nil #xa1 #xa2 nil nil nil nil ; #x1e00-#x1e07 - nil nil #xa6 #xab nil nil nil nil ; #x1e08-#x1e0f - nil nil nil nil nil nil nil nil ; #x1e10-#x1e17 - nil nil nil nil nil nil #xb0 #xb1 ; #x1e18-#x1e1f - nil nil nil nil nil nil nil nil ; #x1e20-#x1e27 - nil nil nil nil nil nil nil nil ; #x1e28-#x1e2f - nil nil nil nil nil nil nil nil ; #x1e30-#x1e37 - nil nil nil nil nil nil nil nil ; #x1e38-#x1e3f - #xb4 #xb5 nil nil nil nil nil nil ; #x1e40-#x1e47 - nil nil nil nil nil nil nil nil ; #x1e48-#x1e4f - nil nil nil nil nil nil #xb7 #xb9 ; #x1e50-#x1e57 - nil nil nil nil nil nil nil nil ; #x1e58-#x1e5f - #xbb #xbf nil nil nil nil nil nil ; #x1e60-#x1e67 - nil nil #xd7 #xf7 nil nil nil nil ; #x1e68-#x1e6f - nil nil nil nil nil nil nil nil ; #x1e70-#x1e77 - nil nil nil nil nil nil nil nil ; #x1e78-#x1e7f - #xa8 #xb8 #xaa #xba #xbd #xbe nil nil) ; #x1e80-#x1e87 - :test #'equalp) - -(define-constant +unicode-1ef0-1ef8-to-iso-8859-14+ - #(nil nil #xac #xbc nil nil nil nil) ; #x1ef0-#x1ef7 - :test #'equalp) - -(define-unibyte-encoder :iso-8859-14 (code) - (or (cond ((< code #xa0) code) - ((< code #x100) - (svref +unicode-a0-100-to-iso-8859-14+ - (the ub8 (- code #xa0)))) - ((<= #x108 code #x127) - (svref +unicode-108-128-to-iso-8859-14+ - (the ub8 (- code #x108)))) - ((<= #x170 code #x17f) - (svref +unicode-170-180-to-iso-8859-14+ - (the ub8 (- code #x170)))) - ((<= #x1e00 code #x1e87) - (svref +unicode-1e00-1e88-to-iso-8859-14+ - (the ub8 (- code #x1e00)))) - ((<= #x1ef0 code #x1ef7) - (svref +unicode-1ef0-1ef8-to-iso-8859-14+ - (the ub8 (- code #x1ef0))))) - (handle-error))) - -(define-constant +iso-8859-14-to-unicode+ - #(;; #xa0 - #x00a0 #x1e02 #x1e03 #x00a3 #x010a #x010b #x1e0a #x00a7 - #x1e80 #x00a9 #x1e82 #x1e0b #x1ef2 #x00ad #x00ae #x0178 - ;; #xb0 - #x1e1e #x1e1f #x0120 #x0121 #x1e40 #x1e41 #x00b6 #x1e56 - #x1e81 #x1e57 #x1e83 #x1e60 #x1ef3 #x1e84 #x1e85 #x1e61 - ;; #xc0 - #x00c0 #x00c1 #x00c2 #x00c3 #x00c4 #x00c5 #x00c6 #x00c7 - #x00c8 #x00c9 #x00ca #x00cb #x00cc #x00cd #x00ce #x00cf - ;; #xd0 - #x0174 #x00d1 #x00d2 #x00d3 #x00d4 #x00d5 #x00d6 #x1e6a - #x00d8 #x00d9 #x00da #x00db #x00dc #x00dd #x0176 #x00df - ;; #xe0 - #x00e0 #x00e1 #x00e2 #x00e3 #x00e4 #x00e5 #x00e6 #x00e7 - #x00e8 #x00e9 #x00ea #x00eb #x00ec #x00ed #x00ee #x00ef - ;; #xf0 - #x0175 #x00f1 #x00f2 #x00f3 #x00f4 #x00f5 #x00f6 #x1e6b - #x00f8 #x00f9 #x00fa #x00fb #x00fc #x00fd #x0177 #x00ff) - :test #'equalp) - -(define-unibyte-decoder :iso-8859-14 (octet) - (if (< octet #xa0) - octet - (svref +iso-8859-14-to-unicode+ (the ub8 (- octet #xa0))))) - -(define-character-encoding :iso-8859-15 - "An 8-bit, fixed-width character encoding in which codes -#x00-#x9f map to their Unicode equivalents and other codes map to -other Unicode character values. Intended to provide most -characters found in Western European languages (including the -Euro sign and some other characters missing from ISO-8859-1." - :aliases '(:latin-9 :latin9) - :literal-char-code-limit #xa0) - -(define-constant +unicode-a0-100-to-iso-8859-15+ - #(#xa0 #xa1 #xa2 #xa3 nil #xa5 nil #xa7 ; #xa0-#xa7 - nil #xa9 #xaa #xab #xac #xad #xae #xaf ; #xa8-#xaf - #xb0 #xb1 #xb2 #xb3 nil #xb5 #xb6 #xb7 ; #xb0-#xb7 - nil #xb9 #xba #xbb nil nil nil #xbf ; #xb8-0xbf - #xc0 #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 #xc7 ; #xc0-#xc7 - #xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #xc8-#xcf - #xd0 #xd1 #xd2 #xd3 #xd4 #xd5 #xd6 #xd7 ; #xd0-#xd7 - #xd8 #xd9 #xda #xdb #xdc #xdd #xde #xdf ; #xd8-#xdf - #xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #xe0-#xe7 - #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #xe8-#xef - #xf0 #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 #xf7 ; #xf0-#xf7 - #xf8 #xf9 #xfa #xfb #xfc #xfd #xfe #xff) ; #xf8-#xff - :test #'equalp) - -(define-constant +unicode-150-180-to-iso-8859-15+ - #(nil nil #xbc #xbd nil nil nil nil ; #x150-#x157 - nil nil nil nil nil nil nil nil ; #x158-#x15f - #xa6 #xa8 nil nil nil nil nil nil ; #x160-#x167 - nil nil nil nil nil nil nil nil ; #x168-#x16f - nil nil nil nil nil nil nil nil ; #x170-#x177 - #xbe nil nil nil nil #xb4 #xb8 nil) ; #x178-#x17f - :test #'equalp) - -(define-unibyte-encoder :iso-8859-15 (code) - (or (cond ((< code #xa0) code) - ((< code #x100) - (svref +unicode-a0-100-to-iso-8859-15+ - (the ub8 (- code #xa0)))) - ((<= #x150 code #x1f7) - (svref +unicode-150-180-to-iso-8859-15+ - (the ub8 (- code #x150)))) - ;; Euro sign - ((= code #x20ac) #xa4)) - (handle-error))) - -(define-constant +iso-8859-15-to-unicode+ - #(;; #xa0 - #x00a0 #x00a1 #x00a2 #x00a3 #x20ac #x00a5 #x0160 #x00a7 - #x0161 #x00a9 #x00aa #x00ab #x00ac #x00ad #x00ae #x00af - ;; #xb0 - #x00b0 #x00b1 #x00b2 #x00b3 #x017d #x00b5 #x00b6 #x00b7 - #x017e #x00b9 #x00ba #x00bb #x0152 #x0153 #x0178 #x00bf - ;; #xc0 - #x00c0 #x00c1 #x00c2 #x00c3 #x00c4 #x00c5 #x00c6 #x00c7 - ;; #xc8 - #x00c8 #x00c9 #x00ca #x00cb #x00cc #x00cd #x00ce #x00cf - ;; #xd0 - #x00d0 #x00d1 #x00d2 #x00d3 #x00d4 #x00d5 #x00d6 #x00d7 - ;; #xd8 - #x00d8 #x00d9 #x00da #x00db #x00dc #x00dd #x00de #x00df - ;; #xe0 - #x00e0 #x00e1 #x00e2 #x00e3 #x00e4 #x00e5 #x00e6 #x00e7 - ;; #xe8 - #x00e8 #x00e9 #x00ea #x00eb #x00ec #x00ed #x00ee #x00ef - ;; #xf0 - #x00f0 #x00f1 #x00f2 #x00f3 #x00f4 #x00f5 #x00f6 #x00f7 - ;; #xf8 - #x00f8 #x00f9 #x00fa #x00fb #x00fc #x00fd #x00fe #x00ff) - :test #'equalp) - -(define-unibyte-decoder :iso-8859-15 (octet) - (if (< octet #xa0) - octet - (svref +iso-8859-15-to-unicode+ (the ub8 (- octet #xa0))))) - -(define-character-encoding :iso-8859-16 - "An 8-bit, fixed-width character encoding in which codes -#x00-#x9f map to their Unicode equivalents and other codes map to -other Unicode character values. Intended to provide most -characters found in Southeast European languages." - :aliases '(:latin-10 :latin10) - :literal-char-code-limit #xa0) - -(define-constant +unicode-a0-180-to-iso-8859-16+ - #(#xa0 nil nil nil nil nil nil #xa7 ; #xa0-#xa7 - nil #xa9 nil #xab nil #xad nil nil ; #xa8-#xaf - #xb0 #xb1 nil nil nil nil #xb6 #xb7 ; #xb0-#xb7 - nil nil nil #xbb nil nil nil nil ; #xb8-#xbf - #xc0 #xc1 #xc2 nil #xc4 nil #xc6 #xc7 ; #xc0-#xc7 - #xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #xc8-#xcf - nil nil #xd2 #xd3 #xd4 nil #xd6 nil ; #xd0-#xd7 - nil #xd9 #xda #xdb #xdc nil nil #xdf ; #xd8-#xdf - #xe0 #xe1 #xe2 nil #xe4 nil #xe6 #xe7 ; #xe0-#xe7 - #xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #xe8-#xef - nil nil #xf2 #xf3 #xf4 nil #xf6 nil ; #xf0-#xf7 - nil #xf9 #xfa #xfb #xfc nil nil #xff ; #xf8-#xff - nil nil #xc3 #xe3 #xa1 #xa2 #xc5 #xe5 ; #x100-#x107 - nil nil nil nil #xb2 #xb9 nil nil ; #x108-#x10f - #xd0 #xf0 nil nil nil nil nil nil ; #x110-#x117 - #xdd #xfd nil nil nil nil nil nil ; #x118-#x11f - nil nil nil nil nil nil nil nil ; #x120-#x127 - nil nil nil nil nil nil nil nil ; #x128-#x12f - nil nil nil nil nil nil nil nil ; #x130-#x137 - nil nil nil nil nil nil nil nil ; #x138-#x13f - nil #xa3 #xb3 #xd1 #xf1 nil nil nil ; #x140-#x147 - nil nil nil nil nil nil nil nil ; #x148-#x14f - #xd5 #xf5 #xbc #xbd nil nil nil nil ; #x150-#x157 - nil nil #xd7 #xf7 nil nil nil nil ; #x158-#x15f - #xa6 #xa8 nil nil nil nil nil nil ; #x160-#x167 - nil nil nil nil nil nil nil nil ; #x168-#x16f - #xd8 #xf8 nil nil nil nil nil nil ; #x170-#x177 - #xbe #xac #xae #xaf #xbf #xb4 #xb8 nil) ; #x178-#x17f - :test #'equalp) - -(define-constant +unicode-218-220-to-iso-8859-16+ - #(#xaa #xba #xde #xfe nil nil nil nil) ; #x218-#x21f - :test #'equalp) - -(define-constant +unicode-2018-2020-to-iso-8859-16+ - #(nil nil nil nil nil #xb5 #xa5 nil) ; #x2018-#x201f - :test #'equalp) - -(define-unibyte-encoder :iso-8859-16 (code) - (or (cond ((< code #xa0) code) - ((< code #x180) - (svref +unicode-a0-180-to-iso-8859-16+ - (the ub8 (- code #xa0)))) - ((<= #x218 code #x21f) - (svref +unicode-218-220-to-iso-8859-16+ - (the ub8 (- code #x218)))) - ((< #x2018 code #x201f) - (svref +unicode-2018-2020-to-iso-8859-16+ - (the ub8 (- code #x2018)))) - ;; Euro sign - ((= code #x20ac) #xa4)) - (handle-error))) - -(define-constant +iso-8859-16-to-unicode+ - #(;; #xa0 - #x00a0 #x0104 #x0105 #x0141 #x20ac #x201e #x0160 #x00a7 - #x0161 #x00a9 #x0218 #x00ab #x0179 #x00ad #x017a #x017b - ;; #xb0 - #x00b0 #x00b1 #x010c #x0142 #x017d #x201d #x00b6 #x00b7 - #x017e #x010d #x0219 #x00bb #x0152 #x0153 #x0178 #x017c - ;; #xc0 - #x00c0 #x00c1 #x00c2 #x0102 #x00c4 #x0106 #x00c6 #x00c7 - #x00c8 #x00c9 #x00ca #x00cb #x00cc #x00cd #x00ce #x00cf - ;; #xd0 - #x0110 #x0143 #x00d2 #x00d3 #x00d4 #x0150 #x00d6 #x015a - #x0170 #x00d9 #x00da #x00db #x00dc #x0118 #x021a #x00df - ;; #xe0 - #x00e0 #x00e1 #x00e2 #x0103 #x00e4 #x0107 #x00e6 #x00e7 - #x00e8 #x00e9 #x00ea #x00eb #x00ec #x00ed #x00ee #x00ef - ;; #xf0 - #x0111 #x0144 #x00f2 #x00f3 #x00f4 #x0151 #x00f6 #x015b - #x0171 #x00f9 #x00fa #x00fb #x00fc #x0119 #x021b #x00ff) - :test #'equalp) - -(define-unibyte-decoder :iso-8859-16 (octet) - (if (< octet #xa0) - octet - (svref +iso-8859-16-to-unicode+ (the ub8 (- octet #xa0))))) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-jpn.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-jpn.lisp deleted file mode 100644 index 9504f89..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-jpn.lisp +++ /dev/null @@ -1,767 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; enc-jpn.lisp --- Japanese encodings. -;;; - -(in-package #:babel-encodings) - -;;;; helper functions -(defvar *eucjp-to-ucs-hash* (make-hash-table)) -(defvar *ucs-to-eucjp-hash* (make-hash-table)) -(defvar *cp932-to-ucs-hash* (make-hash-table)) -(defvar *ucs-to-cp932-hash* (make-hash-table)) - -(dolist (i `((,*cp932-only* - ,*cp932-to-ucs-hash* - ,*ucs-to-cp932-hash*) - (,*eucjp-only* - ,*eucjp-to-ucs-hash* - ,*ucs-to-eucjp-hash*) - (,*eucjp* - ,*eucjp-to-ucs-hash* - ,*ucs-to-eucjp-hash*))) - (dolist (j (first i)) - (setf (gethash (car j) (second i)) (cadr j)) - (setf (gethash (cadr j) (third i)) (car j)))) - -(flet ((euc-cp932 (x) - (let ((high (ash x -16)) - (mid (logand (ash x -8) 255)) - (low (logand x 255))) - (cond ((not (zerop high)) - nil) - ((= mid #x8e) - (logand x 255)) - ((zerop mid) - x) - ((decf mid #xa1) - (decf low #x80) - (incf low (if (zerop (logand mid 1)) #x1f #x7e)) - (incf low (if (<= #x7f low #x9d) 1 0)) - (setq mid (ash mid -1)) - (incf mid (if (<= mid #x1e) #x81 #xc1)) - (+ (ash mid 8) low)))))) - (dolist (i *eucjp*) - (let ((cp932 (euc-cp932 (first i)))) - (when cp932 - (setf (gethash cp932 *cp932-to-ucs-hash*) (second i)) - (setf (gethash (second i) *ucs-to-cp932-hash*) cp932))))) - -;ascii -(loop for i from #x00 to #x7f do - (setf (gethash i *cp932-to-ucs-hash*) i) - (setf (gethash i *eucjp-to-ucs-hash*) i) - (setf (gethash i *ucs-to-eucjp-hash*) i) - (setf (gethash i *ucs-to-cp932-hash*) i)) - -;half-width katakana -(loop for i from #xa1 to #xdf do - (setf (gethash i *cp932-to-ucs-hash*) (+ #xff61 #x-a1 i)) - (setf (gethash (+ #xff61 #x-a1 i) *ucs-to-cp932-hash*) i) - (setf (gethash (+ #x8e00 i) *eucjp-to-ucs-hash*) (+ #xff61 #x-a1 i)) - (setf (gethash (+ #xff61 #x-a1 i) *ucs-to-eucjp-hash*) (+ #x8e00 i))) - -;; This is quoted from https://support.microsoft.com/en-us/kb/170559/en-us -(let ((kb170559 "0x8790 -> U+2252 -> 0x81e0 Approximately Equal To Or The Image Of -0x8791 -> U+2261 -> 0x81df Identical To -0x8792 -> U+222b -> 0x81e7 Integral -0x8795 -> U+221a -> 0x81e3 Square Root -0x8796 -> U+22a5 -> 0x81db Up Tack -0x8797 -> U+2220 -> 0x81da Angle -0x879a -> U+2235 -> 0x81e6 Because -0x879b -> U+2229 -> 0x81bf Intersection -0x879c -> U+222a -> 0x81be Union -0xed40 -> U+7e8a -> 0xfa5c CJK Unified Ideograph -0xed41 -> U+891c -> 0xfa5d CJK Unified Ideograph -0xed42 -> U+9348 -> 0xfa5e CJK Unified Ideograph -0xed43 -> U+9288 -> 0xfa5f CJK Unified Ideograph -0xed44 -> U+84dc -> 0xfa60 CJK Unified Ideograph -0xed45 -> U+4fc9 -> 0xfa61 CJK Unified Ideograph -0xed46 -> U+70bb -> 0xfa62 CJK Unified Ideograph -0xed47 -> U+6631 -> 0xfa63 CJK Unified Ideograph -0xed48 -> U+68c8 -> 0xfa64 CJK Unified Ideograph -0xed49 -> U+92f9 -> 0xfa65 CJK Unified Ideograph -0xed4a -> U+66fb -> 0xfa66 CJK Unified Ideograph -0xed4b -> U+5f45 -> 0xfa67 CJK Unified Ideograph -0xed4c -> U+4e28 -> 0xfa68 CJK Unified Ideograph -0xed4d -> U+4ee1 -> 0xfa69 CJK Unified Ideograph -0xed4e -> U+4efc -> 0xfa6a CJK Unified Ideograph -0xed4f -> U+4f00 -> 0xfa6b CJK Unified Ideograph -0xed50 -> U+4f03 -> 0xfa6c CJK Unified Ideograph -0xed51 -> U+4f39 -> 0xfa6d CJK Unified Ideograph -0xed52 -> U+4f56 -> 0xfa6e CJK Unified Ideograph -0xed53 -> U+4f92 -> 0xfa6f CJK Unified Ideograph -0xed54 -> U+4f8a -> 0xfa70 CJK Unified Ideograph -0xed55 -> U+4f9a -> 0xfa71 CJK Unified Ideograph -0xed56 -> U+4f94 -> 0xfa72 CJK Unified Ideograph -0xed57 -> U+4fcd -> 0xfa73 CJK Unified Ideograph -0xed58 -> U+5040 -> 0xfa74 CJK Unified Ideograph -0xed59 -> U+5022 -> 0xfa75 CJK Unified Ideograph -0xed5a -> U+4fff -> 0xfa76 CJK Unified Ideograph -0xed5b -> U+501e -> 0xfa77 CJK Unified Ideograph -0xed5c -> U+5046 -> 0xfa78 CJK Unified Ideograph -0xed5d -> U+5070 -> 0xfa79 CJK Unified Ideograph -0xed5e -> U+5042 -> 0xfa7a CJK Unified Ideograph -0xed5f -> U+5094 -> 0xfa7b CJK Unified Ideograph -0xed60 -> U+50f4 -> 0xfa7c CJK Unified Ideograph -0xed61 -> U+50d8 -> 0xfa7d CJK Unified Ideograph -0xed62 -> U+514a -> 0xfa7e CJK Unified Ideograph -0xed63 -> U+5164 -> 0xfa80 CJK Unified Ideograph -0xed64 -> U+519d -> 0xfa81 CJK Unified Ideograph -0xed65 -> U+51be -> 0xfa82 CJK Unified Ideograph -0xed66 -> U+51ec -> 0xfa83 CJK Unified Ideograph -0xed67 -> U+5215 -> 0xfa84 CJK Unified Ideograph -0xed68 -> U+529c -> 0xfa85 CJK Unified Ideograph -0xed69 -> U+52a6 -> 0xfa86 CJK Unified Ideograph -0xed6a -> U+52c0 -> 0xfa87 CJK Unified Ideograph -0xed6b -> U+52db -> 0xfa88 CJK Unified Ideograph -0xed6c -> U+5300 -> 0xfa89 CJK Unified Ideograph -0xed6d -> U+5307 -> 0xfa8a CJK Unified Ideograph -0xed6e -> U+5324 -> 0xfa8b CJK Unified Ideograph -0xed6f -> U+5372 -> 0xfa8c CJK Unified Ideograph -0xed70 -> U+5393 -> 0xfa8d CJK Unified Ideograph -0xed71 -> U+53b2 -> 0xfa8e CJK Unified Ideograph -0xed72 -> U+53dd -> 0xfa8f CJK Unified Ideograph -0xed73 -> U+fa0e -> 0xfa90 CJK compatibility Ideograph -0xed74 -> U+549c -> 0xfa91 CJK Unified Ideograph -0xed75 -> U+548a -> 0xfa92 CJK Unified Ideograph -0xed76 -> U+54a9 -> 0xfa93 CJK Unified Ideograph -0xed77 -> U+54ff -> 0xfa94 CJK Unified Ideograph -0xed78 -> U+5586 -> 0xfa95 CJK Unified Ideograph -0xed79 -> U+5759 -> 0xfa96 CJK Unified Ideograph -0xed7a -> U+5765 -> 0xfa97 CJK Unified Ideograph -0xed7b -> U+57ac -> 0xfa98 CJK Unified Ideograph -0xed7c -> U+57c8 -> 0xfa99 CJK Unified Ideograph -0xed7d -> U+57c7 -> 0xfa9a CJK Unified Ideograph -0xed7e -> U+fa0f -> 0xfa9b CJK compatibility Ideograph -0xed80 -> U+fa10 -> 0xfa9c CJK compatibility Ideograph -0xed81 -> U+589e -> 0xfa9d CJK Unified Ideograph -0xed82 -> U+58b2 -> 0xfa9e CJK Unified Ideograph -0xed83 -> U+590b -> 0xfa9f CJK Unified Ideograph -0xed84 -> U+5953 -> 0xfaa0 CJK Unified Ideograph -0xed85 -> U+595b -> 0xfaa1 CJK Unified Ideograph -0xed86 -> U+595d -> 0xfaa2 CJK Unified Ideograph -0xed87 -> U+5963 -> 0xfaa3 CJK Unified Ideograph -0xed88 -> U+59a4 -> 0xfaa4 CJK Unified Ideograph -0xed89 -> U+59ba -> 0xfaa5 CJK Unified Ideograph -0xed8a -> U+5b56 -> 0xfaa6 CJK Unified Ideograph -0xed8b -> U+5bc0 -> 0xfaa7 CJK Unified Ideograph -0xed8c -> U+752f -> 0xfaa8 CJK Unified Ideograph -0xed8d -> U+5bd8 -> 0xfaa9 CJK Unified Ideograph -0xed8e -> U+5bec -> 0xfaaa CJK Unified Ideograph -0xed8f -> U+5c1e -> 0xfaab CJK Unified Ideograph -0xed90 -> U+5ca6 -> 0xfaac CJK Unified Ideograph -0xed91 -> U+5cba -> 0xfaad CJK Unified Ideograph -0xed92 -> U+5cf5 -> 0xfaae CJK Unified Ideograph -0xed93 -> U+5d27 -> 0xfaaf CJK Unified Ideograph -0xed94 -> U+5d53 -> 0xfab0 CJK Unified Ideograph -0xed95 -> U+fa11 -> 0xfab1 CJK compatibility Ideograph -0xed96 -> U+5d42 -> 0xfab2 CJK Unified Ideograph -0xed97 -> U+5d6d -> 0xfab3 CJK Unified Ideograph -0xed98 -> U+5db8 -> 0xfab4 CJK Unified Ideograph -0xed99 -> U+5db9 -> 0xfab5 CJK Unified Ideograph -0xed9a -> U+5dd0 -> 0xfab6 CJK Unified Ideograph -0xed9b -> U+5f21 -> 0xfab7 CJK Unified Ideograph -0xed9c -> U+5f34 -> 0xfab8 CJK Unified Ideograph -0xed9d -> U+5f67 -> 0xfab9 CJK Unified Ideograph -0xed9e -> U+5fb7 -> 0xfaba CJK Unified Ideograph -0xed9f -> U+5fde -> 0xfabb CJK Unified Ideograph -0xeda0 -> U+605d -> 0xfabc CJK Unified Ideograph -0xeda1 -> U+6085 -> 0xfabd CJK Unified Ideograph -0xeda2 -> U+608a -> 0xfabe CJK Unified Ideograph -0xeda3 -> U+60de -> 0xfabf CJK Unified Ideograph -0xeda4 -> U+60d5 -> 0xfac0 CJK Unified Ideograph -0xeda5 -> U+6120 -> 0xfac1 CJK Unified Ideograph -0xeda6 -> U+60f2 -> 0xfac2 CJK Unified Ideograph -0xeda7 -> U+6111 -> 0xfac3 CJK Unified Ideograph -0xeda8 -> U+6137 -> 0xfac4 CJK Unified Ideograph -0xeda9 -> U+6130 -> 0xfac5 CJK Unified Ideograph -0xedaa -> U+6198 -> 0xfac6 CJK Unified Ideograph -0xedab -> U+6213 -> 0xfac7 CJK Unified Ideograph -0xedac -> U+62a6 -> 0xfac8 CJK Unified Ideograph -0xedad -> U+63f5 -> 0xfac9 CJK Unified Ideograph -0xedae -> U+6460 -> 0xfaca CJK Unified Ideograph -0xedaf -> U+649d -> 0xfacb CJK Unified Ideograph -0xedb0 -> U+64ce -> 0xfacc CJK Unified Ideograph -0xedb1 -> U+654e -> 0xfacd CJK Unified Ideograph -0xedb2 -> U+6600 -> 0xface CJK Unified Ideograph -0xedb3 -> U+6615 -> 0xfacf CJK Unified Ideograph -0xedb4 -> U+663b -> 0xfad0 CJK Unified Ideograph -0xedb5 -> U+6609 -> 0xfad1 CJK Unified Ideograph -0xedb6 -> U+662e -> 0xfad2 CJK Unified Ideograph -0xedb7 -> U+661e -> 0xfad3 CJK Unified Ideograph -0xedb8 -> U+6624 -> 0xfad4 CJK Unified Ideograph -0xedb9 -> U+6665 -> 0xfad5 CJK Unified Ideograph -0xedba -> U+6657 -> 0xfad6 CJK Unified Ideograph -0xedbb -> U+6659 -> 0xfad7 CJK Unified Ideograph -0xedbc -> U+fa12 -> 0xfad8 CJK compatibility Ideograph -0xedbd -> U+6673 -> 0xfad9 CJK Unified Ideograph -0xedbe -> U+6699 -> 0xfada CJK Unified Ideograph -0xedbf -> U+66a0 -> 0xfadb CJK Unified Ideograph -0xedc0 -> U+66b2 -> 0xfadc CJK Unified Ideograph -0xedc1 -> U+66bf -> 0xfadd CJK Unified Ideograph -0xedc2 -> U+66fa -> 0xfade CJK Unified Ideograph -0xedc3 -> U+670e -> 0xfadf CJK Unified Ideograph -0xedc4 -> U+f929 -> 0xfae0 CJK compatibility Ideograph -0xedc5 -> U+6766 -> 0xfae1 CJK Unified Ideograph -0xedc6 -> U+67bb -> 0xfae2 CJK Unified Ideograph -0xedc7 -> U+6852 -> 0xfae3 CJK Unified Ideograph -0xedc8 -> U+67c0 -> 0xfae4 CJK Unified Ideograph -0xedc9 -> U+6801 -> 0xfae5 CJK Unified Ideograph -0xedca -> U+6844 -> 0xfae6 CJK Unified Ideograph -0xedcb -> U+68cf -> 0xfae7 CJK Unified Ideograph -0xedcc -> U+fa13 -> 0xfae8 CJK compatibility Ideograph -0xedcd -> U+6968 -> 0xfae9 CJK Unified Ideograph -0xedce -> U+fa14 -> 0xfaea CJK compatibility Ideograph -0xedcf -> U+6998 -> 0xfaeb CJK Unified Ideograph -0xedd0 -> U+69e2 -> 0xfaec CJK Unified Ideograph -0xedd1 -> U+6a30 -> 0xfaed CJK Unified Ideograph -0xedd2 -> U+6a6b -> 0xfaee CJK Unified Ideograph -0xedd3 -> U+6a46 -> 0xfaef CJK Unified Ideograph -0xedd4 -> U+6a73 -> 0xfaf0 CJK Unified Ideograph -0xedd5 -> U+6a7e -> 0xfaf1 CJK Unified Ideograph -0xedd6 -> U+6ae2 -> 0xfaf2 CJK Unified Ideograph -0xedd7 -> U+6ae4 -> 0xfaf3 CJK Unified Ideograph -0xedd8 -> U+6bd6 -> 0xfaf4 CJK Unified Ideograph -0xedd9 -> U+6c3f -> 0xfaf5 CJK Unified Ideograph -0xedda -> U+6c5c -> 0xfaf6 CJK Unified Ideograph -0xeddb -> U+6c86 -> 0xfaf7 CJK Unified Ideograph -0xeddc -> U+6c6f -> 0xfaf8 CJK Unified Ideograph -0xeddd -> U+6cda -> 0xfaf9 CJK Unified Ideograph -0xedde -> U+6d04 -> 0xfafa CJK Unified Ideograph -0xeddf -> U+6d87 -> 0xfafb CJK Unified Ideograph -0xede0 -> U+6d6f -> 0xfafc CJK Unified Ideograph -0xede1 -> U+6d96 -> 0xfb40 CJK Unified Ideograph -0xede2 -> U+6dac -> 0xfb41 CJK Unified Ideograph -0xede3 -> U+6dcf -> 0xfb42 CJK Unified Ideograph -0xede4 -> U+6df8 -> 0xfb43 CJK Unified Ideograph -0xede5 -> U+6df2 -> 0xfb44 CJK Unified Ideograph -0xede6 -> U+6dfc -> 0xfb45 CJK Unified Ideograph -0xede7 -> U+6e39 -> 0xfb46 CJK Unified Ideograph -0xede8 -> U+6e5c -> 0xfb47 CJK Unified Ideograph -0xede9 -> U+6e27 -> 0xfb48 CJK Unified Ideograph -0xedea -> U+6e3c -> 0xfb49 CJK Unified Ideograph -0xedeb -> U+6ebf -> 0xfb4a CJK Unified Ideograph -0xedec -> U+6f88 -> 0xfb4b CJK Unified Ideograph -0xeded -> U+6fb5 -> 0xfb4c CJK Unified Ideograph -0xedee -> U+6ff5 -> 0xfb4d CJK Unified Ideograph -0xedef -> U+7005 -> 0xfb4e CJK Unified Ideograph -0xedf0 -> U+7007 -> 0xfb4f CJK Unified Ideograph -0xedf1 -> U+7028 -> 0xfb50 CJK Unified Ideograph -0xedf2 -> U+7085 -> 0xfb51 CJK Unified Ideograph -0xedf3 -> U+70ab -> 0xfb52 CJK Unified Ideograph -0xedf4 -> U+710f -> 0xfb53 CJK Unified Ideograph -0xedf5 -> U+7104 -> 0xfb54 CJK Unified Ideograph -0xedf6 -> U+715c -> 0xfb55 CJK Unified Ideograph -0xedf7 -> U+7146 -> 0xfb56 CJK Unified Ideograph -0xedf8 -> U+7147 -> 0xfb57 CJK Unified Ideograph -0xedf9 -> U+fa15 -> 0xfb58 CJK compatibility Ideograph -0xedfa -> U+71c1 -> 0xfb59 CJK Unified Ideograph -0xedfb -> U+71fe -> 0xfb5a CJK Unified Ideograph -0xedfc -> U+72b1 -> 0xfb5b CJK Unified Ideograph -0xee40 -> U+72be -> 0xfb5c CJK Unified Ideograph -0xee41 -> U+7324 -> 0xfb5d CJK Unified Ideograph -0xee42 -> U+fa16 -> 0xfb5e CJK compatibility Ideograph -0xee43 -> U+7377 -> 0xfb5f CJK Unified Ideograph -0xee44 -> U+73bd -> 0xfb60 CJK Unified Ideograph -0xee45 -> U+73c9 -> 0xfb61 CJK Unified Ideograph -0xee46 -> U+73d6 -> 0xfb62 CJK Unified Ideograph -0xee47 -> U+73e3 -> 0xfb63 CJK Unified Ideograph -0xee48 -> U+73d2 -> 0xfb64 CJK Unified Ideograph -0xee49 -> U+7407 -> 0xfb65 CJK Unified Ideograph -0xee4a -> U+73f5 -> 0xfb66 CJK Unified Ideograph -0xee4b -> U+7426 -> 0xfb67 CJK Unified Ideograph -0xee4c -> U+742a -> 0xfb68 CJK Unified Ideograph -0xee4d -> U+7429 -> 0xfb69 CJK Unified Ideograph -0xee4e -> U+742e -> 0xfb6a CJK Unified Ideograph -0xee4f -> U+7462 -> 0xfb6b CJK Unified Ideograph -0xee50 -> U+7489 -> 0xfb6c CJK Unified Ideograph -0xee51 -> U+749f -> 0xfb6d CJK Unified Ideograph -0xee52 -> U+7501 -> 0xfb6e CJK Unified Ideograph -0xee53 -> U+756f -> 0xfb6f CJK Unified Ideograph -0xee54 -> U+7682 -> 0xfb70 CJK Unified Ideograph -0xee55 -> U+769c -> 0xfb71 CJK Unified Ideograph -0xee56 -> U+769e -> 0xfb72 CJK Unified Ideograph -0xee57 -> U+769b -> 0xfb73 CJK Unified Ideograph -0xee58 -> U+76a6 -> 0xfb74 CJK Unified Ideograph -0xee59 -> U+fa17 -> 0xfb75 CJK compatibility Ideograph -0xee5a -> U+7746 -> 0xfb76 CJK Unified Ideograph -0xee5b -> U+52af -> 0xfb77 CJK Unified Ideograph -0xee5c -> U+7821 -> 0xfb78 CJK Unified Ideograph -0xee5d -> U+784e -> 0xfb79 CJK Unified Ideograph -0xee5e -> U+7864 -> 0xfb7a CJK Unified Ideograph -0xee5f -> U+787a -> 0xfb7b CJK Unified Ideograph -0xee60 -> U+7930 -> 0xfb7c CJK Unified Ideograph -0xee61 -> U+fa18 -> 0xfb7d CJK compatibility Ideograph -0xee62 -> U+fa19 -> 0xfb7e CJK compatibility Ideograph -0xee63 -> U+fa1a -> 0xfb80 CJK compatibility Ideograph -0xee64 -> U+7994 -> 0xfb81 CJK Unified Ideograph -0xee65 -> U+fa1b -> 0xfb82 CJK compatibility Ideograph -0xee66 -> U+799b -> 0xfb83 CJK Unified Ideograph -0xee67 -> U+7ad1 -> 0xfb84 CJK Unified Ideograph -0xee68 -> U+7ae7 -> 0xfb85 CJK Unified Ideograph -0xee69 -> U+fa1c -> 0xfb86 CJK compatibility Ideograph -0xee6a -> U+7aeb -> 0xfb87 CJK Unified Ideograph -0xee6b -> U+7b9e -> 0xfb88 CJK Unified Ideograph -0xee6c -> U+fa1d -> 0xfb89 CJK compatibility Ideograph -0xee6d -> U+7d48 -> 0xfb8a CJK Unified Ideograph -0xee6e -> U+7d5c -> 0xfb8b CJK Unified Ideograph -0xee6f -> U+7db7 -> 0xfb8c CJK Unified Ideograph -0xee70 -> U+7da0 -> 0xfb8d CJK Unified Ideograph -0xee71 -> U+7dd6 -> 0xfb8e CJK Unified Ideograph -0xee72 -> U+7e52 -> 0xfb8f CJK Unified Ideograph -0xee73 -> U+7f47 -> 0xfb90 CJK Unified Ideograph -0xee74 -> U+7fa1 -> 0xfb91 CJK Unified Ideograph -0xee75 -> U+fa1e -> 0xfb92 CJK compatibility Ideograph -0xee76 -> U+8301 -> 0xfb93 CJK Unified Ideograph -0xee77 -> U+8362 -> 0xfb94 CJK Unified Ideograph -0xee78 -> U+837f -> 0xfb95 CJK Unified Ideograph -0xee79 -> U+83c7 -> 0xfb96 CJK Unified Ideograph -0xee7a -> U+83f6 -> 0xfb97 CJK Unified Ideograph -0xee7b -> U+8448 -> 0xfb98 CJK Unified Ideograph -0xee7c -> U+84b4 -> 0xfb99 CJK Unified Ideograph -0xee7d -> U+8553 -> 0xfb9a CJK Unified Ideograph -0xee7e -> U+8559 -> 0xfb9b CJK Unified Ideograph -0xee80 -> U+856b -> 0xfb9c CJK Unified Ideograph -0xee81 -> U+fa1f -> 0xfb9d CJK compatibility Ideograph -0xee82 -> U+85b0 -> 0xfb9e CJK Unified Ideograph -0xee83 -> U+fa20 -> 0xfb9f CJK compatibility Ideograph -0xee84 -> U+fa21 -> 0xfba0 CJK compatibility Ideograph -0xee85 -> U+8807 -> 0xfba1 CJK Unified Ideograph -0xee86 -> U+88f5 -> 0xfba2 CJK Unified Ideograph -0xee87 -> U+8a12 -> 0xfba3 CJK Unified Ideograph -0xee88 -> U+8a37 -> 0xfba4 CJK Unified Ideograph -0xee89 -> U+8a79 -> 0xfba5 CJK Unified Ideograph -0xee8a -> U+8aa7 -> 0xfba6 CJK Unified Ideograph -0xee8b -> U+8abe -> 0xfba7 CJK Unified Ideograph -0xee8c -> U+8adf -> 0xfba8 CJK Unified Ideograph -0xee8d -> U+fa22 -> 0xfba9 CJK compatibility Ideograph -0xee8e -> U+8af6 -> 0xfbaa CJK Unified Ideograph -0xee8f -> U+8b53 -> 0xfbab CJK Unified Ideograph -0xee90 -> U+8b7f -> 0xfbac CJK Unified Ideograph -0xee91 -> U+8cf0 -> 0xfbad CJK Unified Ideograph -0xee92 -> U+8cf4 -> 0xfbae CJK Unified Ideograph -0xee93 -> U+8d12 -> 0xfbaf CJK Unified Ideograph -0xee94 -> U+8d76 -> 0xfbb0 CJK Unified Ideograph -0xee95 -> U+fa23 -> 0xfbb1 CJK compatibility Ideograph -0xee96 -> U+8ecf -> 0xfbb2 CJK Unified Ideograph -0xee97 -> U+fa24 -> 0xfbb3 CJK compatibility Ideograph -0xee98 -> U+fa25 -> 0xfbb4 CJK compatibility Ideograph -0xee99 -> U+9067 -> 0xfbb5 CJK Unified Ideograph -0xee9a -> U+90de -> 0xfbb6 CJK Unified Ideograph -0xee9b -> U+fa26 -> 0xfbb7 CJK compatibility Ideograph -0xee9c -> U+9115 -> 0xfbb8 CJK Unified Ideograph -0xee9d -> U+9127 -> 0xfbb9 CJK Unified Ideograph -0xee9e -> U+91da -> 0xfbba CJK Unified Ideograph -0xee9f -> U+91d7 -> 0xfbbb CJK Unified Ideograph -0xeea0 -> U+91de -> 0xfbbc CJK Unified Ideograph -0xeea1 -> U+91ed -> 0xfbbd CJK Unified Ideograph -0xeea2 -> U+91ee -> 0xfbbe CJK Unified Ideograph -0xeea3 -> U+91e4 -> 0xfbbf CJK Unified Ideograph -0xeea4 -> U+91e5 -> 0xfbc0 CJK Unified Ideograph -0xeea5 -> U+9206 -> 0xfbc1 CJK Unified Ideograph -0xeea6 -> U+9210 -> 0xfbc2 CJK Unified Ideograph -0xeea7 -> U+920a -> 0xfbc3 CJK Unified Ideograph -0xeea8 -> U+923a -> 0xfbc4 CJK Unified Ideograph -0xeea9 -> U+9240 -> 0xfbc5 CJK Unified Ideograph -0xeeaa -> U+923c -> 0xfbc6 CJK Unified Ideograph -0xeeab -> U+924e -> 0xfbc7 CJK Unified Ideograph -0xeeac -> U+9259 -> 0xfbc8 CJK Unified Ideograph -0xeead -> U+9251 -> 0xfbc9 CJK Unified Ideograph -0xeeae -> U+9239 -> 0xfbca CJK Unified Ideograph -0xeeaf -> U+9267 -> 0xfbcb CJK Unified Ideograph -0xeeb0 -> U+92a7 -> 0xfbcc CJK Unified Ideograph -0xeeb1 -> U+9277 -> 0xfbcd CJK Unified Ideograph -0xeeb2 -> U+9278 -> 0xfbce CJK Unified Ideograph -0xeeb3 -> U+92e7 -> 0xfbcf CJK Unified Ideograph -0xeeb4 -> U+92d7 -> 0xfbd0 CJK Unified Ideograph -0xeeb5 -> U+92d9 -> 0xfbd1 CJK Unified Ideograph -0xeeb6 -> U+92d0 -> 0xfbd2 CJK Unified Ideograph -0xeeb7 -> U+fa27 -> 0xfbd3 CJK compatibility Ideograph -0xeeb8 -> U+92d5 -> 0xfbd4 CJK Unified Ideograph -0xeeb9 -> U+92e0 -> 0xfbd5 CJK Unified Ideograph -0xeeba -> U+92d3 -> 0xfbd6 CJK Unified Ideograph -0xeebb -> U+9325 -> 0xfbd7 CJK Unified Ideograph -0xeebc -> U+9321 -> 0xfbd8 CJK Unified Ideograph -0xeebd -> U+92fb -> 0xfbd9 CJK Unified Ideograph -0xeebe -> U+fa28 -> 0xfbda CJK compatibility Ideograph -0xeebf -> U+931e -> 0xfbdb CJK Unified Ideograph -0xeec0 -> U+92ff -> 0xfbdc CJK Unified Ideograph -0xeec1 -> U+931d -> 0xfbdd CJK Unified Ideograph -0xeec2 -> U+9302 -> 0xfbde CJK Unified Ideograph -0xeec3 -> U+9370 -> 0xfbdf CJK Unified Ideograph -0xeec4 -> U+9357 -> 0xfbe0 CJK Unified Ideograph -0xeec5 -> U+93a4 -> 0xfbe1 CJK Unified Ideograph -0xeec6 -> U+93c6 -> 0xfbe2 CJK Unified Ideograph -0xeec7 -> U+93de -> 0xfbe3 CJK Unified Ideograph -0xeec8 -> U+93f8 -> 0xfbe4 CJK Unified Ideograph -0xeec9 -> U+9431 -> 0xfbe5 CJK Unified Ideograph -0xeeca -> U+9445 -> 0xfbe6 CJK Unified Ideograph -0xeecb -> U+9448 -> 0xfbe7 CJK Unified Ideograph -0xeecc -> U+9592 -> 0xfbe8 CJK Unified Ideograph -0xeecd -> U+f9dc -> 0xfbe9 CJK compatibility Ideograph -0xeece -> U+fa29 -> 0xfbea CJK compatibility Ideograph -0xeecf -> U+969d -> 0xfbeb CJK Unified Ideograph -0xeed0 -> U+96af -> 0xfbec CJK Unified Ideograph -0xeed1 -> U+9733 -> 0xfbed CJK Unified Ideograph -0xeed2 -> U+973b -> 0xfbee CJK Unified Ideograph -0xeed3 -> U+9743 -> 0xfbef CJK Unified Ideograph -0xeed4 -> U+974d -> 0xfbf0 CJK Unified Ideograph -0xeed5 -> U+974f -> 0xfbf1 CJK Unified Ideograph -0xeed6 -> U+9751 -> 0xfbf2 CJK Unified Ideograph -0xeed7 -> U+9755 -> 0xfbf3 CJK Unified Ideograph -0xeed8 -> U+9857 -> 0xfbf4 CJK Unified Ideograph -0xeed9 -> U+9865 -> 0xfbf5 CJK Unified Ideograph -0xeeda -> U+fa2a -> 0xfbf6 CJK compatibility Ideograph -0xeedb -> U+fa2b -> 0xfbf7 CJK compatibility Ideograph -0xeedc -> U+9927 -> 0xfbf8 CJK Unified Ideograph -0xeedd -> U+fa2c -> 0xfbf9 CJK compatibility Ideograph -0xeede -> U+999e -> 0xfbfa CJK Unified Ideograph -0xeedf -> U+9a4e -> 0xfbfb CJK Unified Ideograph -0xeee0 -> U+9ad9 -> 0xfbfc CJK Unified Ideograph -0xeee1 -> U+9adc -> 0xfc40 CJK Unified Ideograph -0xeee2 -> U+9b75 -> 0xfc41 CJK Unified Ideograph -0xeee3 -> U+9b72 -> 0xfc42 CJK Unified Ideograph -0xeee4 -> U+9b8f -> 0xfc43 CJK Unified Ideograph -0xeee5 -> U+9bb1 -> 0xfc44 CJK Unified Ideograph -0xeee6 -> U+9bbb -> 0xfc45 CJK Unified Ideograph -0xeee7 -> U+9c00 -> 0xfc46 CJK Unified Ideograph -0xeee8 -> U+9d70 -> 0xfc47 CJK Unified Ideograph -0xeee9 -> U+9d6b -> 0xfc48 CJK Unified Ideograph -0xeeea -> U+fa2d -> 0xfc49 CJK compatibility Ideograph -0xeeeb -> U+9e19 -> 0xfc4a CJK Unified Ideograph -0xeeec -> U+9ed1 -> 0xfc4b CJK Unified Ideograph -0xeeef -> U+2170 -> 0xfa40 Small Roman Numeral One -0xeef0 -> U+2171 -> 0xfa41 Small Roman Numeral Two -0xeef1 -> U+2172 -> 0xfa42 Small Roman Numeral Three -0xeef2 -> U+2173 -> 0xfa43 Small Roman Numeral Four -0xeef3 -> U+2174 -> 0xfa44 Small Roman Numeral Five -0xeef4 -> U+2175 -> 0xfa45 Small Roman Numeral Six -0xeef5 -> U+2176 -> 0xfa46 Small Roman Numeral Seven -0xeef6 -> U+2177 -> 0xfa47 Small Roman Numeral Eight -0xeef7 -> U+2178 -> 0xfa48 Small Roman Numeral Nine -0xeef8 -> U+2179 -> 0xfa49 Small Roman Numeral Ten -0xeef9 -> U+ffe2 -> 0x81ca Fullwidth Not Sign -0xeefa -> U+ffe4 -> 0xfa55 Fullwidth Broken Bar -0xeefb -> U+ff07 -> 0xfa56 Fullwidth Apostrophe -0xeefc -> U+ff02 -> 0xfa57 Fullwidth Quotation Mark -0xfa4a -> U+2160 -> 0x8754 Roman Numeral One -0xfa4b -> U+2161 -> 0x8755 Roman Numeral Two -0xfa4c -> U+2162 -> 0x8756 Roman Numeral Three -0xfa4d -> U+2163 -> 0x8757 Roman Numeral Four -0xfa4e -> U+2164 -> 0x8758 Roman Numeral Five -0xfa4f -> U+2165 -> 0x8759 Roman Numeral Six -0xfa50 -> U+2166 -> 0x875a Roman Numeral Seven -0xfa51 -> U+2167 -> 0x875b Roman Numeral Eight -0xfa52 -> U+2168 -> 0x875c Roman Numeral Nine -0xfa53 -> U+2169 -> 0x875d Roman Numeral Ten -0xfa54 -> U+ffe2 -> 0x81ca Fullwidth Not Sign -0xfa58 -> U+3231 -> 0x878a Parenthesized Ideograph Stock -0xfa59 -> U+2116 -> 0x8782 Numero Sign -0xfa5a -> U+2121 -> 0x8784 Telephone Sign -0xfa5b -> U+2235 -> 0x81e6 Because")) - (with-input-from-string (s kb170559) - (loop for line = (read-line s nil) until (null line) - do (let ((ucs (parse-integer (subseq line 14 18) :radix 16)) - (cp932 (parse-integer (subseq line 26 30) :radix 16))) - (setf (gethash ucs *ucs-to-cp932-hash*) cp932))))) - -(defun eucjp-to-ucs (code) - (values (gethash code *eucjp-to-ucs-hash*))) - -(defun ucs-to-eucjp (code) - (values (gethash code *ucs-to-eucjp-hash*))) - -(defun cp932-to-ucs (code) - (values (gethash code *cp932-to-ucs-hash*))) - -(defun ucs-to-cp932 (code) - (values (gethash code *ucs-to-cp932-hash*))) - -;;;; EUC-JP - -(define-character-encoding :eucjp - "An 8-bit, variable-length character encoding in which -character code points in the range #x00-#x7f can be encoded in a -single octet; characters with larger code values can be encoded -in 2 to 3 bytes." - :max-units-per-char 3 - :literal-char-code-limit #x80) - - -(define-octet-counter :eucjp (getter type) - `(named-lambda eucjp-octet-counter (seq start end max) - (declare (type ,type seq) (fixnum start end max)) - (loop with noctets fixnum = 0 - for i fixnum from start below end - for code of-type code-point = (,getter seq i) - do (let* ((c (ucs-to-eucjp code)) - (new (+ (cond ((< #xffff c) 3) - ((< #xff c) 2) - (t 1)) - noctets))) - (if (and (plusp max) (> new max)) - (loop-finish) - (setq noctets new))) - finally (return (values noctets i))))) - -(define-code-point-counter :eucjp (getter type) - `(named-lambda eucjp-code-point-counter (seq start end max) - (declare (type ,type seq) (fixnum start end max)) - (loop with nchars fixnum = 0 - with i fixnum = start - while (< i end) do - (let* ((octet (,getter seq i)) - (next-i (+ i (cond ((= #x8f octet) 3) - ((or (< #xa0 octet #xff) - (= #x8e octet)) 2) - (t 1))))) - (declare (type ub8 octet) (fixnum next-i)) - (cond ((> next-i end) - ;; Should we add restarts to this error, we'll have - ;; to figure out a way to communicate with the - ;; decoder since we probably want to do something - ;; about it right here when we have a chance to - ;; change the count or something. (Like an - ;; alternative replacement character or perhaps the - ;; existence of this error so that the decoder - ;; doesn't have to check for it on every iteration - ;; like we do.) - ;; - ;; FIXME: The data for this error is not right. - (decoding-error (vector octet) :eucjp seq i - nil 'end-of-input-in-character) - (return (values (1+ nchars) end))) - (t - (setq nchars (1+ nchars) - i next-i) - (when (and (plusp max) (= nchars max)) - (return (values nchars i)))))) - finally (progn (assert (= i end)) - (return (values nchars i)))))) - -(define-encoder :eucjp (getter src-type setter dest-type) - `(named-lambda eucjp-encoder (src start end dest d-start) - (declare (type ,src-type src) - (type ,dest-type dest) - (fixnum start end d-start)) - (loop with di fixnum = d-start - for i fixnum from start below end - for code of-type code-point = (,getter src i) - for eucjp of-type code-point - = (ucs-to-eucjp code) do - (macrolet ((set-octet (offset value) - `(,',setter ,value dest (the fixnum (+ di ,offset))))) - (cond - ;; 1 octet - ((< eucjp #x100) - (set-octet 0 eucjp) - (incf di)) - ;; 2 octets - ((< eucjp #x10000) - (set-octet 0 (f-logand #xff (f-ash eucjp -8))) - (set-octet 1 (logand eucjp #xff)) - (incf di 2)) - ;; 3 octets - (t - (set-octet 0 (f-logand #xff (f-ash eucjp -16))) - (set-octet 1 (f-logand #xff (f-ash eucjp -8))) - (set-octet 2 (logand eucjp #xff)) - (incf di 3)) - )) - finally (return (the fixnum (- di d-start)))))) - - -(define-decoder :eucjp (getter src-type setter dest-type) - `(named-lambda eucjp-decoder (src start end dest d-start) - (declare (type ,src-type src) - (type ,dest-type dest) - (fixnum start end d-start)) - (let ((u2 0)) - (declare (type ub8 u2)) - (loop for di fixnum from d-start - for i fixnum from start below end - for u1 of-type ub8 = (,getter src i) do - ;; Note: CONSUME-OCTET doesn't check if I is being - ;; incremented past END. We're assuming that END has - ;; been calculated with the CODE-POINT-POINTER above that - ;; checks this. - (macrolet - ((consume-octet () - `(let ((next-i (incf i))) - (if (= next-i end) - ;; FIXME: data for this error is incomplete. - ;; and signalling this error twice - (return-from setter-block - (decoding-error nil :eucjp src i +repl+ - 'end-of-input-in-character)) - (,',getter src next-i)))) - (handle-error (n &optional (c 'character-decoding-error)) - `(decoding-error - (vector ,@(subseq '(u1 u2) 0 n)) - :eucjp src (1+ (- i ,n)) +repl+ ',c)) - (handle-error-if-icb (var n) - `(when (not (< #x7f ,var #xc0)) - (decf i) - (return-from setter-block - (handle-error ,n invalid-utf8-continuation-byte))))) - (,setter - (block setter-block - (cond - ;; 3 octets - ((= u1 #x8f) - (setq u2 (consume-octet)) - (eucjp-to-ucs (logior #x8f0000 - (f-ash u2 8) - (consume-octet)))) - ;; 2 octets - ((or (= u1 #x8e) - (< #xa0 u1 #xff)) - (eucjp-to-ucs (logior (f-ash u1 8) - (consume-octet)))) - ;; 1 octet - (t - (eucjp-to-ucs u1)))) - dest di)) - finally (return (the fixnum (- di d-start))))))) - -;;;; CP932 - -(define-character-encoding :cp932 - "An 8-bit, variable-length character encoding in which -character code points in the range #x00-#x7f can be encoded in a -single octet; characters with larger code values can be encoded -in 2 bytes." - :max-units-per-char 2 - :literal-char-code-limit #x80) - - -(define-octet-counter :cp932 (getter type) - `(named-lambda cp932-octet-counter (seq start end max) - (declare (type ,type seq) (fixnum start end max)) - (loop with noctets fixnum = 0 - for i fixnum from start below end - for code of-type code-point = (,getter seq i) - do (let* ((c (ucs-to-cp932 code)) - (new (+ (cond ((< #xff c) 2) - (t 1)) - noctets))) - (if (and (plusp max) (> new max)) - (loop-finish) - (setq noctets new))) - finally (return (values noctets i))))) - -(define-code-point-counter :cp932 (getter type) - `(named-lambda cp932-code-point-counter (seq start end max) - (declare (type ,type seq) (fixnum start end max)) - (loop with nchars fixnum = 0 - with i fixnum = start - while (< i end) do - (let* ((octet (,getter seq i)) - (next-i (+ i (cond ((or (<= #x81 octet #x9f) - (<= #xe0 octet #xfc)) - 2) - (t 1))))) - (declare (type ub8 octet) (fixnum next-i)) - (cond ((> next-i end) - ;; Should we add restarts to this error, we'll have - ;; to figure out a way to communicate with the - ;; decoder since we probably want to do something - ;; about it right here when we have a chance to - ;; change the count or something. (Like an - ;; alternative replacement character or perhaps the - ;; existence of this error so that the decoder - ;; doesn't have to check for it on every iteration - ;; like we do.) - ;; - ;; FIXME: The data for this error is not right. - (decoding-error (vector octet) :cp932 seq i - nil 'end-of-input-in-character) - (return (values (1+ nchars) end))) - (t - (setq nchars (1+ nchars) - i next-i) - (when (and (plusp max) (= nchars max)) - (return (values nchars i)))))) - finally (progn (assert (= i end)) - (return (values nchars i)))))) - -(define-encoder :cp932 (getter src-type setter dest-type) - `(named-lambda cp932-encoder (src start end dest d-start) - (declare (type ,src-type src) - (type ,dest-type dest) - (fixnum start end d-start)) - (loop with di fixnum = d-start - for i fixnum from start below end - for code of-type code-point = (,getter src i) - for cp932 of-type code-point - = (ucs-to-cp932 code) do - (macrolet ((set-octet (offset value) - `(,',setter ,value dest (the fixnum (+ di ,offset))))) - (cond - ;; 1 octet - ((< cp932 #x100) - (set-octet 0 cp932) - (incf di)) - ;; 2 octets - ((< cp932 #x10000) - (set-octet 0 (f-logand #xff (f-ash cp932 -8))) - (set-octet 1 (logand cp932 #xff)) - (incf di 2)) - ;; 3 octets - (t - (set-octet 0 (f-logand #xff (f-ash cp932 -16))) - (set-octet 1 (f-logand #xff (f-ash cp932 -8))) - (set-octet 2 (logand cp932 #xff)) - (incf di 3)) - )) - finally (return (the fixnum (- di d-start)))))) - - -(define-decoder :cp932 (getter src-type setter dest-type) - `(named-lambda cp932-decoder (src start end dest d-start) - (declare (type ,src-type src) - (type ,dest-type dest) - (fixnum start end d-start)) - (let ((u2 0)) - (declare (type ub8 u2)) - (loop for di fixnum from d-start - for i fixnum from start below end - for u1 of-type ub8 = (,getter src i) do - ;; Note: CONSUME-OCTET doesn't check if I is being - ;; incremented past END. We're assuming that END has - ;; been calculated with the CODE-POINT-POINTER above that - ;; checks this. - (macrolet - ((consume-octet () - `(let ((next-i (incf i))) - (if (= next-i end) - ;; FIXME: data for this error is incomplete. - ;; and signalling this error twice - (return-from setter-block - (decoding-error nil :cp932 src i +repl+ - 'end-of-input-in-character)) - (,',getter src next-i)))) - (handle-error (n &optional (c 'character-decoding-error)) - `(decoding-error - (vector ,@(subseq '(u1 u2) 0 n)) - :cp932 src (1+ (- i ,n)) +repl+ ',c)) - (handle-error-if-icb (var n) - `(when (not (< #x7f ,var #xc0)) - (decf i) - (return-from setter-block - (handle-error ,n invalid-utf8-continuation-byte))))) - (,setter - (block setter-block - (cond - ;; 2 octets - ((or (<= #x81 u1 #x9f) - (<= #xe0 u1 #xfc)) - (setq u2 (consume-octet)) - (cp932-to-ucs (logior (f-ash u1 8) - u2))) - ;; 1 octet - (t - (cp932-to-ucs u1)))) - dest di)) - finally (return (the fixnum (- di d-start))))))) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-koi8.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-koi8.lisp deleted file mode 100644 index 6f9f5db..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-koi8.lisp +++ /dev/null @@ -1,577 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; enc-cp1251.lisp --- Implementation of the CP1251 character encoding. -;;; -;;; Copyright (C) 2009, Andrey Moskvitin -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(in-package #:babel-encodings) - -(define-character-encoding :koi8-ru - "An 8-bit, fixed-width character Russian encoding." - :literal-char-code-limit #x80) - -(define-constant +koi8-ru-to-unicode+ - #(#x2500 #x2502 #x250C #x2510 #x2514 #x2518 #x251C #x2524 - #x252C #x2534 #x253C #x2580 #x2584 #x2588 #x258C #x2590 - #x2591 #x2592 #x2593 #x2320 #x25A0 #x2219 #x221A #x2248 - #x2264 #x2265 #x00A0 #x2321 #x00B0 #x00B2 #x00B7 #x00F7 - #x2550 #x2551 #x2552 #x0451 #x0454 #x2554 #x0456 #x0457 - #x2557 #x2558 #x2559 #x255A #x255B #x0491 #x045E #x255E - #x255F #x2560 #x2561 #x0401 #x0404 #x2563 #x0406 #x0407 - #x2566 #x2567 #x2568 #x2569 #x256A #x0490 #x040E #x00A9 - #x044E #x0430 #x0431 #x0446 #x0434 #x0435 #x0444 #x0433 - #x0445 #x0438 #x0439 #x043A #x043B #x043C #x043D #x043E - #x043F #x044F #x0440 #x0441 #x0442 #x0443 #x0436 #x0432 - #x044C #x044B #x0437 #x0448 #x044D #x0449 #x0447 #x044A - #x042E #x0410 #x0411 #x0426 #x0414 #x0415 #x0424 #x0413 - #x0425 #x0418 #x0419 #x041A #x041B #x041C #x041D #x041E - #x041F #x042F #x0420 #x0421 #x0422 #x0423 #x0416 #x0412 - #x042C #x042B #x0417 #x0428 #x042D #x0429 #x0427 #x042A) - :test #'equalp) - -(define-unibyte-decoder :koi8-ru (octet) - (if (< octet #x80) - octet - (svref +koi8-ru-to-unicode+ (the ub8 (- octet #x80))))) - -(define-constant +unicode-04->koi8-ru+ - #(#x7f #x79 #x78 #x7c #x60 #x71 #x41 #x42 #x57 #x47 #x44 #x45 #x56 #x5a - #x49 #x4a #x4b #x4c #x4d #x4e #x4f #x50 #x52 #x53 #x54 #x55 #x46 #x48 - #x43 #x5e #x5b #x5d #x5f #x59 #x58 #x5c #x40 #x51 nil #x23 nil nil #x24 - nil #x26 #x27 nil nil nil nil nil nil #x2e nil nil nil nil nil nil nil - nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil - nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil - nil nil nil nil nil nil #x3d #x2d) - :test 'equalp) - -(define-unibyte-encoder :koi8-ru (code) - (or (and (< code #x80) code) - (let ((hi (ldb (byte 8 8) code)) - (lo (ldb (byte 8 0) code))) - (case hi - (#x4 - (case lo - (#x1 #xb3) - (#x4 #xb4) - (#x6 #xb6) - (#x7 #xb7) - (#xe #xbe) - (#x10 #xe1) - (#x11 #xe2) - (#x12 #xf7) - (#x13 #xe7) - (#x14 #xe4) - (#x15 #xe5) - (#x16 #xf6) - (#x17 #xfa) - (#x18 #xe9) - (#x19 #xea) - (#x1a #xeb) - (#x1b #xec) - (#x1c #xed) - (#x1d #xee) - (#x1e #xef) - (#x1f #xf0) - (#x20 #xf2) - (#x21 #xf3) - (#x22 #xf4) - (#x23 #xf5) - (#x24 #xe6) - (#x25 #xe8) - (#x26 #xe3) - (#x27 #xfe) - (#x28 #xfb) - (#x29 #xfd) - (#x2a #xff) - (#x2b #xf9) - (#x2c #xf8) - (#x2d #xfc) - (#x2e #xe0) - (#x2f #xf1) - (#x30 #xc1) - (#x31 #xc2) - (#x32 #xd7) - (#x33 #xc7) - (#x34 #xc4) - (#x35 #xc5) - (#x36 #xd6) - (#x37 #xda) - (#x38 #xc9) - (#x39 #xca) - (#x3a #xcb) - (#x3b #xcc) - (#x3c #xcd) - (#x3d #xce) - (#x3e #xcf) - (#x3f #xd0) - (#x40 #xd2) - (#x41 #xd3) - (#x42 #xd4) - (#x43 #xd5) - (#x44 #xc6) - (#x45 #xc8) - (#x46 #xc3) - (#x47 #xde) - (#x48 #xdb) - (#x49 #xdd) - (#x4a #xdf) - (#x4b #xd9) - (#x4c #xd8) - (#x4d #xdc) - (#x4e #xc0) - (#x4f #xd1) - (#x51 #xa3) - (#x54 #xa4) - (#x56 #xa6) - (#x57 #xa7) - (#x5e #xae) - (#x90 #xbd) - (#x91 #xad))) - (#x0 - (case lo - (#xa0 #x9a) - (#xa9 #xbf) - (#xb0 #x9c) - (#xb2 #x9d) - (#xb7 #x9e) - (#xf7 #x9f))) - (#x22 (case lo (#x19 #x95) (#x1a #x96) (#x48 #x97) (#x64 #x98) (#x65 #x99))) - (#x23 (case lo (#x20 #x93) (#x21 #x9b))) - (#x25 - (case lo - (#x0 #x80) - (#x2 #x81) - (#xc #x82) - (#x10 #x83) - (#x14 #x84) - (#x18 #x85) - (#x1c #x86) - (#x24 #x87) - (#x2c #x88) - (#x34 #x89) - (#x3c #x8a) - (#x50 #xa0) - (#x51 #xa1) - (#x52 #xa2) - (#x54 #xa5) - (#x57 #xa8) - (#x58 #xa9) - (#x59 #xaa) - (#x5a #xab) - (#x5b #xac) - (#x5e #xaf) - (#x5f #xb0) - (#x60 #xb1) - (#x61 #xb2) - (#x63 #xb5) - (#x66 #xb8) - (#x67 #xb9) - (#x68 #xba) - (#x69 #xbb) - (#x6a #xbc) - (#x80 #x8b) - (#x84 #x8c) - (#x88 #x8d) - (#x8c #x8e) - (#x90 #x8f) - (#x91 #x90) - (#x92 #x91) - (#x93 #x92) - (#xa0 #x94))))) - (handle-error))) - -(define-character-encoding :koi8-r - "An 8-bit, fixed-width character Russian encoding." - :literal-char-code-limit #x80) - -(define-constant +koi8-r-to-unicode+ - #(#x2500 #x2502 #x250C #x2510 #x2514 #x2518 #x251C #x2524 - #x252C #x2534 #x253C #x2580 #x2584 #x2588 #x258C #x2590 - #x2591 #x2592 #x2593 #x2320 #x25A0 #x2219 #x221A #x2248 - #x2264 #x2265 #x00A0 #x2321 #x00B0 #x00B2 #x00B7 #x00F7 - #x2550 #x2551 #x2552 #x0451 #x2553 #x2554 #x2555 #x2556 - #x2557 #x2558 #x2559 #x255A #x255B #x255C #x255D #x255E - #x255F #x2560 #x2561 #x0401 #x2562 #x2563 #x2564 #x2565 - #x2566 #x2567 #x2568 #x2569 #x256A #x256B #x256C #x00A9 - #x044E #x0430 #x0431 #x0446 #x0434 #x0435 #x0444 #x0433 - #x0445 #x0438 #x0439 #x043A #x043B #x043C #x043D #x043E - #x043F #x044F #x0440 #x0441 #x0442 #x0443 #x0436 #x0432 - #x044C #x044B #x0437 #x0448 #x044D #x0449 #x0447 #x044A - #x042E #x0410 #x0411 #x0426 #x0414 #x0415 #x0424 #x0413 - #x0425 #x0418 #x0419 #x041A #x041B #x041C #x041D #x041E - #x041F #x042F #x0420 #x0421 #x0422 #x0423 #x0416 #x0412 - #x042C #x042B #x0417 #x0428 #x042D #x0429 #x0427 #x042A) - :test #'equalp) - -(define-unibyte-decoder :koi8-r (octet) - (if (< octet #x80) - octet - (svref +koi8-r-to-unicode+ (the ub8 (- octet #x80))))) - -(define-constant +unicode-x04->koi8-r+ - #(nil #x33 nil nil nil nil nil nil nil nil nil nil nil nil nil nil #x61 - #x62 #x77 #x67 #x64 #x65 #x76 #x7a #x69 #x6a #x6b #x6c #x6d #x6e #x6f - #x70 #x72 #x73 #x74 #x75 #x66 #x68 #x63 #x7e #x7b #x7d #x7f #x79 #x78 - #x7c #x60 #x71 #x41 #x42 #x57 #x47 #x44 #x45 #x56 #x5a #x49 #x4a #x4b - #x4c #x4d #x4e #x4f #x50 #x52 #x53 #x54 #x55 #x46 #x48 #x43 #x5e #x5b - #x5d #x5f #x59 #x58 #x5c #x40 #x51 nil #x23) - :test 'equalp) - -(define-constant +unicode-x25->koi8-r+ - #(#x0 nil #x1 nil nil nil nil nil nil nil nil nil #x2 nil nil nil #x3 nil - nil nil #x4 nil nil nil #x5 nil nil nil #x6 nil nil nil nil nil nil nil - #x7 nil nil nil nil nil nil nil #x8 nil nil nil nil nil nil nil #x9 nil - nil nil nil nil nil nil #xa nil nil nil nil nil nil nil nil nil nil nil - nil nil nil nil nil nil nil nil #x20 #x21 #x22 #x24 #x25 #x26 #x27 #x28 - #x29 #x2a #x2b #x2c #x2d #x2e #x2f #x30 #x31 #x32 #x34 #x35 #x36 #x37 - #x38 #x39 #x3a #x3b #x3c #x3d #x3e nil nil nil nil nil nil nil nil nil - nil nil nil nil nil nil nil nil nil nil #xb nil nil nil #xc nil nil nil - #xd nil nil nil #xe nil nil nil #xf #x10 #x11 #x12 nil nil nil nil nil - nil nil nil nil nil nil nil #x14) - :test 'equalp) - -(define-unibyte-encoder :koi8-r (code) - (or (and (< code #x80) code) - (let ((hi (ldb (byte 8 8) code)) - (lo (ldb (byte 8 0) code))) - (case hi - (#x4 - (case lo - (#x1 #xb3) - (#x10 #xe1) - (#x11 #xe2) - (#x12 #xf7) - (#x13 #xe7) - (#x14 #xe4) - (#x15 #xe5) - (#x16 #xf6) - (#x17 #xfa) - (#x18 #xe9) - (#x19 #xea) - (#x1a #xeb) - (#x1b #xec) - (#x1c #xed) - (#x1d #xee) - (#x1e #xef) - (#x1f #xf0) - (#x20 #xf2) - (#x21 #xf3) - (#x22 #xf4) - (#x23 #xf5) - (#x24 #xe6) - (#x25 #xe8) - (#x26 #xe3) - (#x27 #xfe) - (#x28 #xfb) - (#x29 #xfd) - (#x2a #xff) - (#x2b #xf9) - (#x2c #xf8) - (#x2d #xfc) - (#x2e #xe0) - (#x2f #xf1) - (#x30 #xc1) - (#x31 #xc2) - (#x32 #xd7) - (#x33 #xc7) - (#x34 #xc4) - (#x35 #xc5) - (#x36 #xd6) - (#x37 #xda) - (#x38 #xc9) - (#x39 #xca) - (#x3a #xcb) - (#x3b #xcc) - (#x3c #xcd) - (#x3d #xce) - (#x3e #xcf) - (#x3f #xd0) - (#x40 #xd2) - (#x41 #xd3) - (#x42 #xd4) - (#x43 #xd5) - (#x44 #xc6) - (#x45 #xc8) - (#x46 #xc3) - (#x47 #xde) - (#x48 #xdb) - (#x49 #xdd) - (#x4a #xdf) - (#x4b #xd9) - (#x4c #xd8) - (#x4d #xdc) - (#x4e #xc0) - (#x4f #xd1) - (#x51 #xa3))) - (#x0 - (case lo - (#xa0 #x9a) - (#xa9 #xbf) - (#xb0 #x9c) - (#xb2 #x9d) - (#xb7 #x9e) - (#xf7 #x9f))) - (#x22 (case lo (#x19 #x95) (#x1a #x96) (#x48 #x97) (#x64 #x98) (#x65 #x99))) - (#x23 (case lo (#x20 #x93) (#x21 #x9b))) - (#x25 - (case lo - (#x0 #x80) - (#x2 #x81) - (#xc #x82) - (#x10 #x83) - (#x14 #x84) - (#x18 #x85) - (#x1c #x86) - (#x24 #x87) - (#x2c #x88) - (#x34 #x89) - (#x3c #x8a) - (#x50 #xa0) - (#x51 #xa1) - (#x52 #xa2) - (#x53 #xa4) - (#x54 #xa5) - (#x55 #xa6) - (#x56 #xa7) - (#x57 #xa8) - (#x58 #xa9) - (#x59 #xaa) - (#x5a #xab) - (#x5b #xac) - (#x5c #xad) - (#x5d #xae) - (#x5e #xaf) - (#x5f #xb0) - (#x60 #xb1) - (#x61 #xb2) - (#x62 #xb4) - (#x63 #xb5) - (#x64 #xb6) - (#x65 #xb7) - (#x66 #xb8) - (#x67 #xb9) - (#x68 #xba) - (#x69 #xbb) - (#x6a #xbc) - (#x6b #xbd) - (#x6c #xbe) - (#x80 #x8b) - (#x84 #x8c) - (#x88 #x8d) - (#x8c #x8e) - (#x90 #x8f) - (#x91 #x90) - (#x92 #x91) - (#x93 #x92) - (#xa0 #x94))))) - (handle-error))) - -(define-character-encoding :koi8-u - "An 8-bit, fixed-width character Ukranian encoding." - :literal-char-code-limit #x80) - -(define-constant +koi8-u-to-unicode+ - #(#x2500 #x2502 #x250C #x2510 #x2514 #x2518 #x251C #x2524 - #x252C #x2534 #x253C #x2580 #x2584 #x2588 #x258C #x2590 - #x2591 #x2592 #x2593 #x2320 #x25A0 #x2219 #x221A #x2248 - #x2264 #x2265 #x00A0 #x2321 #x00B0 #x00B2 #x00B7 #x00F7 - #x2550 #x2551 #x2552 #x0451 #x0454 #x2554 #x0456 #x0457 - #x2557 #x2558 #x2559 #x255A #x255B #x0491 #x255D #x255E - #x255F #x2560 #x2561 #x0401 #x0404 #x2563 #x0406 #x0407 - #x2566 #x2567 #x2568 #x2569 #x256A #x0490 #x256C #x00A9 - #x044E #x0430 #x0431 #x0446 #x0434 #x0435 #x0444 #x0433 - #x0445 #x0438 #x0439 #x043A #x043B #x043C #x043D #x043E - #x043F #x044F #x0440 #x0441 #x0442 #x0443 #x0436 #x0432 - #x044C #x044B #x0437 #x0448 #x044D #x0449 #x0447 #x044A - #x042E #x0410 #x0411 #x0426 #x0414 #x0415 #x0424 #x0413 - #x0425 #x0418 #x0419 #x041A #x041B #x041C #x041D #x041E - #x041F #x042F #x0420 #x0421 #x0422 #x0423 #x0416 #x0412 - #x042C #x042B #x0417 #x0428 #x042D #x0429 #x0427 #x042A ) - :test #'equalp) - -(define-unibyte-decoder :koi8-u (octet) - (if (< octet #x80) - octet - (svref +koi8-u-to-unicode+ (the ub8 (- octet #x80))))) - -(define-constant +unicode-x04->koi8-u+ - #(nil #x33 nil nil #x34 nil #x36 #x37 nil nil nil nil nil nil nil nil #x61 - #x62 #x77 #x67 #x64 #x65 #x76 #x7a #x69 #x6a #x6b #x6c #x6d #x6e #x6f - #x70 #x72 #x73 #x74 #x75 #x66 #x68 #x63 #x7e #x7b #x7d #x7f #x79 #x78 - #x7c #x60 #x71 #x41 #x42 #x57 #x47 #x44 #x45 #x56 #x5a #x49 #x4a #x4b - #x4c #x4d #x4e #x4f #x50 #x52 #x53 #x54 #x55 #x46 #x48 #x43 #x5e #x5b - #x5d #x5f #x59 #x58 #x5c #x40 #x51 nil #x23 nil nil #x24 nil #x26 #x27 - nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil - nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil - nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil - nil nil #x3d #x2d) - :test 'equalp) - -(define-constant +unicode-x25->koi8-u+ - #(#x0 nil #x1 nil nil nil nil nil nil nil nil nil #x2 nil nil nil #x3 nil - nil nil #x4 nil nil nil #x5 nil nil nil #x6 nil nil nil nil nil nil nil - #x7 nil nil nil nil nil nil nil #x8 nil nil nil nil nil nil nil #x9 nil - nil nil nil nil nil nil #xa nil nil nil nil nil nil nil nil nil nil nil - nil nil nil nil nil nil nil nil #x20 #x21 #x22 nil #x25 nil nil #x28 - #x29 #x2a #x2b #x2c nil #x2e #x2f #x30 #x31 #x32 nil #x35 nil nil #x38 - #x39 #x3a #x3b #x3c nil #x3e nil nil nil nil nil nil nil nil nil nil nil - nil nil nil nil nil nil nil nil #xb nil nil nil #xc nil nil nil #xd nil - nil nil #xe nil nil nil #xf #x10 #x11 #x12 nil nil nil nil nil nil nil - nil nil nil nil nil #x14) - :test 'equalp) - -(define-unibyte-encoder :koi8-u (code) - (or (and (< code #x80) code) - (let ((hi (ldb (byte 8 8) code)) - (lo (ldb (byte 8 0) code))) - (case hi - (#x4 - (case lo - (#x1 #xb3) - (#x4 #xb4) - (#x6 #xb6) - (#x7 #xb7) - (#x10 #xe1) - (#x11 #xe2) - (#x12 #xf7) - (#x13 #xe7) - (#x14 #xe4) - (#x15 #xe5) - (#x16 #xf6) - (#x17 #xfa) - (#x18 #xe9) - (#x19 #xea) - (#x1a #xeb) - (#x1b #xec) - (#x1c #xed) - (#x1d #xee) - (#x1e #xef) - (#x1f #xf0) - (#x20 #xf2) - (#x21 #xf3) - (#x22 #xf4) - (#x23 #xf5) - (#x24 #xe6) - (#x25 #xe8) - (#x26 #xe3) - (#x27 #xfe) - (#x28 #xfb) - (#x29 #xfd) - (#x2a #xff) - (#x2b #xf9) - (#x2c #xf8) - (#x2d #xfc) - (#x2e #xe0) - (#x2f #xf1) - (#x30 #xc1) - (#x31 #xc2) - (#x32 #xd7) - (#x33 #xc7) - (#x34 #xc4) - (#x35 #xc5) - (#x36 #xd6) - (#x37 #xda) - (#x38 #xc9) - (#x39 #xca) - (#x3a #xcb) - (#x3b #xcc) - (#x3c #xcd) - (#x3d #xce) - (#x3e #xcf) - (#x3f #xd0) - (#x40 #xd2) - (#x41 #xd3) - (#x42 #xd4) - (#x43 #xd5) - (#x44 #xc6) - (#x45 #xc8) - (#x46 #xc3) - (#x47 #xde) - (#x48 #xdb) - (#x49 #xdd) - (#x4a #xdf) - (#x4b #xd9) - (#x4c #xd8) - (#x4d #xdc) - (#x4e #xc0) - (#x4f #xd1) - (#x51 #xa3) - (#x54 #xa4) - (#x56 #xa6) - (#x57 #xa7) - (#x90 #xbd) - (#x91 #xad))) - (#x0 - (case lo - (#xa0 #x9a) - (#xa9 #xbf) - (#xb0 #x9c) - (#xb2 #x9d) - (#xb7 #x9e) - (#xf7 #x9f))) - (#x22 (case lo (#x19 #x95) (#x1a #x96) (#x48 #x97) (#x64 #x98) (#x65 #x99))) - (#x23 (case lo (#x20 #x93) (#x21 #x9b))) - (#x25 - (case lo - (#x0 #x80) - (#x2 #x81) - (#xc #x82) - (#x10 #x83) - (#x14 #x84) - (#x18 #x85) - (#x1c #x86) - (#x24 #x87) - (#x2c #x88) - (#x34 #x89) - (#x3c #x8a) - (#x50 #xa0) - (#x51 #xa1) - (#x52 #xa2) - (#x54 #xa5) - (#x57 #xa8) - (#x58 #xa9) - (#x59 #xaa) - (#x5a #xab) - (#x5b #xac) - (#x5d #xae) - (#x5e #xaf) - (#x5f #xb0) - (#x60 #xb1) - (#x61 #xb2) - (#x63 #xb5) - (#x66 #xb8) - (#x67 #xb9) - (#x68 #xba) - (#x69 #xbb) - (#x6a #xbc) - (#x6c #xbe) - (#x80 #x8b) - (#x84 #x8c) - (#x88 #x8d) - (#x8c #x8e) - (#x90 #x8f) - (#x91 #x90) - (#x92 #x91) - (#x93 #x92) - (#xa0 #x94))))) - (handle-error))) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-unicode.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-unicode.lisp deleted file mode 100644 index f4e4ecf..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-unicode.lisp +++ /dev/null @@ -1,881 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; enc-unicode.lisp --- Unicode encodings. -;;; -;;; Copyright (C) 2007, Luis Oliveira -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -;;; This implementation is largely based on OpenMCL's l1-unicode.lisp -;;; Copyright (C) 2006 Clozure Associates and contributors. - -(in-package #:babel-encodings) - -(eval-when (:compile-toplevel :load-toplevel :execute) - (defconstant +repl+ #xfffd "Unicode replacement character code point.") - (defconstant +byte-order-mark-code+ #xfeff) - (defconstant +swapped-byte-order-mark-code+ #xfffe) - (defconstant +swapped-byte-order-mark-code-32+ #xfffe0000)) - -;;; Some convenience macros adding FIXNUM declarations. -(defmacro f-ash (integer count) `(the fixnum (ash ,integer ,count))) -(defmacro f-logior (&rest integers) `(the fixnum (logior ,@integers))) -(defmacro f-logand (&rest integers) `(the fixnum (logand ,@integers))) -(defmacro f-logxor (&rest integers) `(the fixnum (logxor ,@integers))) - -;;;; UTF-8 - -(define-character-encoding :utf-8 - "An 8-bit, variable-length character encoding in which -character code points in the range #x00-#x7f can be encoded in a -single octet; characters with larger code values can be encoded -in 2 to 4 bytes." - :max-units-per-char 4 - :literal-char-code-limit #x80 - :bom-encoding #(#xef #xbb #xbf) - :default-replacement #xfffd) - -(define-condition invalid-utf8-starter-byte (character-decoding-error) - () - (:documentation "Signalled when an invalid UTF-8 starter byte is found.")) - -(define-condition invalid-utf8-continuation-byte (character-decoding-error) - () - (:documentation - "Signalled when an invalid UTF-8 continuation byte is found.")) - -(define-condition overlong-utf8-sequence (character-decoding-error) - () - (:documentation "Signalled upon overlong UTF-8 sequences.")) - -(define-octet-counter :utf-8 (getter type) - `(named-lambda utf-8-octet-counter (seq start end max) - (declare (type ,type seq) (fixnum start end max)) - (loop with noctets fixnum = 0 - for i fixnum from start below end - for code of-type code-point = (,getter seq i) do - (let ((new (+ (cond ((< code #x80) 1) - ((< code #x800) 2) - ((< code #x10000) 3) - (t 4)) - noctets))) - (if (and (plusp max) (> new max)) - (loop-finish) - (setq noctets new))) - finally (return (values noctets i))))) - -(define-code-point-counter :utf-8 (getter type) - `(named-lambda utf-8-code-point-counter (seq start end max) - (declare (type ,type seq) (fixnum start end max)) - (loop with nchars fixnum = 0 - with i fixnum = start - while (< i end) do - ;; check for invalid continuation bytes - (macrolet ((invalid-cb-p (n) - `(and (< (+ i ,n) end) - (not (< #x7f (,',getter seq (+ i ,n)) #xc0))))) - ;; wrote this code with LET instead of FOR because CLISP's - ;; LOOP doesn't like WHILE clauses before FOR clauses. - (let* ((octet (,getter seq i)) - (next-i (+ i (cond ((or (< octet #xc0) (invalid-cb-p 1)) 1) - ((or (< octet #xe0) (invalid-cb-p 2)) 2) - ((or (< octet #xf0) (invalid-cb-p 3)) 3) - ((or (< octet #xf8) (invalid-cb-p 4)) 4) - ((or (< octet #xfc) (invalid-cb-p 5)) 5) - (t 6))))) - (declare (type ub8 octet) (fixnum next-i)) - (cond - ((> next-i end) - ;; Should we add restarts to this error, we'll have - ;; to figure out a way to communicate with the - ;; decoder since we probably want to do something - ;; about it right here when we have a chance to - ;; change the count or something. (Like an - ;; alternative replacement character or perhaps the - ;; existence of this error so that the decoder - ;; doesn't have to check for it on every iteration - ;; like we do.) - ;; - ;; FIXME: The data for this error is not right. - (decoding-error (vector octet) :utf-8 seq i - nil 'end-of-input-in-character) - (return (values (1+ nchars) end))) - (t - (setq nchars (1+ nchars) - i next-i) - (when (and (plusp max) (= nchars max)) - (return (values nchars i))))))) - finally (progn - (assert (= i end)) - (return (values nchars i)))))) - -(define-encoder :utf-8 (getter src-type setter dest-type) - `(named-lambda utf-8-encoder (src start end dest d-start) - (declare (type ,src-type src) - (type ,dest-type dest) - (fixnum start end d-start)) - (loop with di fixnum = d-start - for i fixnum from start below end - for code of-type code-point = (,getter src i) do - (macrolet ((set-octet (offset value) - `(,',setter ,value dest (the fixnum (+ di ,offset))))) - (cond - ;; 1 octet - ((< code #x80) - (set-octet 0 code) - (incf di)) - ;; 2 octets - ((< code #x800) - (set-octet 0 (logior #xc0 (f-ash code -6))) - (set-octet 1 (logior #x80 (f-logand code #x3f))) - (incf di 2)) - ;; 3 octets - ((< code #x10000) - (set-octet 0 (logior #xe0 (f-ash code -12))) - (set-octet 1 (logior #x80 (f-logand #x3f (f-ash code -6)))) - (set-octet 2 (logior #x80 (f-logand code #x3f))) - (incf di 3)) - ;; 4 octets - (t - (set-octet 0 (logior #xf0 (f-logand #x07 (f-ash code -18)))) - (set-octet 1 (logior #x80 (f-logand #x3f (f-ash code -12)))) - (set-octet 2 (logior #x80 (f-logand #x3f (f-ash code -6)))) - (set-octet 3 (logior #x80 (logand code #x3f))) - (incf di 4)))) - finally (return (the fixnum (- di d-start)))))) - -(define-decoder :utf-8 (getter src-type setter dest-type) - `(named-lambda utf-8-decoder (src start end dest d-start) - (declare (type ,src-type src) - (type ,dest-type dest) - (fixnum start end d-start)) - (let ((u2 0) (u3 0) (u4 0) (u5 0) (u6 0)) - (declare (type ub8 u2 u3 u4 u5 u6)) - (loop for di fixnum from d-start - for i fixnum from start below end - for u1 of-type ub8 = (,getter src i) do - ;; Note: CONSUME-OCTET doesn't check if I is being - ;; incremented past END. We're assuming that END has - ;; been calculated with the CODE-POINT-POINTER above that - ;; checks this. - (macrolet - ((consume-octet () - `(let ((next-i (incf i))) - (if (= next-i end) - ;; FIXME: data for this error is incomplete. - ;; and signalling this error twice - (return-from setter-block - (decoding-error nil :utf-8 src i +repl+ - 'end-of-input-in-character)) - (,',getter src next-i)))) - (handle-error (n &optional (c 'character-decoding-error)) - `(decoding-error - (vector ,@(subseq '(u1 u2 u3 u4 u5 u6) 0 n)) - :utf-8 src (1+ (- i ,n)) +repl+ ',c)) - (handle-error-if-icb (var n) - `(when (not (< #x7f ,var #xc0)) - (decf i) - (return-from setter-block - (handle-error ,n invalid-utf8-continuation-byte))))) - (,setter - (block setter-block - (cond - ((< u1 #x80) u1) ; 1 octet - ((< u1 #xc0) - (handle-error 1 invalid-utf8-starter-byte)) - (t - (setq u2 (consume-octet)) - (handle-error-if-icb u2 1) - (cond - ((< u1 #xc2) - (handle-error 2 overlong-utf8-sequence)) - ((< u1 #xe0) ; 2 octets - (logior (f-ash (f-logand #x1f u1) 6) - (f-logxor u2 #x80))) - (t - (setq u3 (consume-octet)) - (handle-error-if-icb u3 2) - (cond - ((and (= u1 #xe0) (< u2 #xa0)) - (handle-error 3 overlong-utf8-sequence)) - ((< u1 #xf0) ; 3 octets - (let ((start (f-logior (f-ash (f-logand u1 #x0f) 12) - (f-ash (f-logand u2 #x3f) 6)))) - (if (<= #xd800 start #xdfc0) - (handle-error 3 character-out-of-range) - (logior start (f-logand u3 #x3f))))) - (t ; 4 octets - (setq u4 (consume-octet)) - (handle-error-if-icb u4 3) - (cond - ((and (= u1 #xf0) (< u2 #x90)) - (handle-error 4 overlong-utf8-sequence)) - ((< u1 #xf8) - (if (or (> u1 #xf4) (and (= u1 #xf4) (> u2 #x8f))) - (handle-error 4 character-out-of-range) - (f-logior (f-ash (f-logand u1 7) 18) - (f-ash (f-logxor u2 #x80) 12) - (f-ash (f-logxor u3 #x80) 6) - (f-logxor u4 #x80)))) - ;; from here on we'll be getting either - ;; invalid continuation bytes or overlong - ;; 5-byte or 6-byte sequences. - (t - (setq u5 (consume-octet)) - (handle-error-if-icb u5 4) - (cond - ((and (= u1 #xf8) (< u2 #x88)) - (handle-error 5 overlong-utf8-sequence)) - ((< u1 #xfc) - (handle-error 5 character-out-of-range)) - (t - (setq u6 (consume-octet)) - (handle-error-if-icb u6 5) - (cond - ((and (= u1 #xfc) (< u2 #x84)) - (handle-error 6 overlong-utf8-sequence)) - (t - (handle-error 6 character-out-of-range) - ))))))))))))) - dest di)) - finally (return (the fixnum (- di d-start))))))) - -;;;; UTF-8B - -;;; The following excerpt from a linux-utf8 message by Markus Kuhn is -;;; the closest thing to a UTF-8B specification: -;;; -;;; -;;; -;;; "D) Emit a malformed UTF-16 sequence for every byte in a malformed -;;; UTF-8 sequence -;;; -;;; All the previous options for converting malformed UTF-8 sequences -;;; to UTF-16 destroy information. This can be highly undesirable in -;;; applications such as text file editors, where guaranteed binary -;;; transparency is a desireable feature. (E.g., I frequently edit -;;; executable code or graphic files with the Emacs text editor and I -;;; hate the idea that my editor might automatically make U+FFFD -;;; substitutions at locations that I haven't even edited when I save -;;; the file again.) -;;; -;;; I therefore suggested 1999-11-02 on the unicode@xxxxxxxxxxx -;;; mailing list the following approach. Instead of using U+FFFD, -;;; simply encode malformed UTF-8 sequences as malformed UTF-16 -;;; sequences. Malformed UTF-8 sequences consist excludively of the -;;; bytes 0x80 - 0xff, and each of these bytes can be represented -;;; using a 16-bit value from the UTF-16 low-half surrogate zone -;;; U+DC80 to U+DCFF. Thus, the overlong "K" (U+004B) 0xc1 0x8b from -;;; the above example would be represented in UTF-16 as U+DCC1 -;;; U+DC8B. If we simply make sure that every UTF-8 encoded surrogate -;;; character is also treated like a malformed sequence, then there -;;; is no way that a single high-half surrogate could precede the -;;; encoded malformed sequence and cause a valid UTF-16 sequence to -;;; emerge. -;;; -;;; This way 100% binary transparent UTF-8 -> UTF-16 -> UTF-8 -;;; round-trip compatibility can be achieved quite easily. -;;; -;;; On an output device, a lonely low-half surrogate character should -;;; be treated just like a character outside the adopted subset of -;;; representable characters, that is for the end user, the display -;;; would look exactly like with semantics B), i.e. one symbol per -;;; byte of a malformed sequence. However in contrast to semantics -;;; B), no information is thrown away, and a cut&paste in an editor -;;; or terminal emulator will be guaranteed to reconstruct the -;;; original byte sequence. This should greatly reduce the incidence -;;; of accidental corruption of binary data by UTF-8 -> UTF-16 -> -;;; UTF-8 conversion round trips." - -(define-character-encoding :utf-8b - "An 8-bit, variable-length character encoding in which -character code points in the range #x00-#x7f can be encoded in a -single octet; characters with larger code values can be encoded -in 2 to 4 bytes. Invalid UTF-8 sequences are encoded with #xDCXX -code points for each invalid byte." - :max-units-per-char 4 - :literal-char-code-limit #x80 - :bom-encoding #(#xef #xbb #xbf) - :default-replacement nil) - -;;; TODO: reuse the :UTF-8 octet counter through a simple macro. -(define-octet-counter :utf-8b (getter type) - `(named-lambda utf-8b-octet-counter (seq start end max) - (declare (type ,type seq) (fixnum start end max)) - (loop with noctets fixnum = 0 - for i fixnum from start below end - for code of-type code-point = (,getter seq i) do - (let ((new (+ (cond ((< code #x80) 1) - ((< code #x800) 2) - ((<= #xdc80 code #xdcff) 1) - ((< code #x10000) 3) - (t 4)) - noctets))) - (if (and (plusp max) (> new max)) - (loop-finish) - (setq noctets new))) - finally (return (values noctets i))))) - -(define-code-point-counter :utf-8b (getter type) - `(named-lambda utf-8b-code-point-counter (seq start end max) - (declare (type ,type seq) (fixnum start end max)) - (loop with nchars fixnum = 0 - with i fixnum = start - while (< i end) do - ;; wrote this code with LET instead of FOR because CLISP's - ;; LOOP doesn't like WHILE clauses before FOR clauses. - (let* ((octet (,getter seq i)) - (noctets (cond ((< octet #x80) 1) - ((< octet #xe0) 2) - ((< octet #xf0) 3) - (t 4)))) - (declare (type ub8 octet) (fixnum noctets)) - (cond - ((> (+ i noctets) end) - ;; If this error is suppressed these last few bytes - ;; will be encoded as raw bytes later. - (decoding-error (vector octet) :utf-8 seq i - nil 'end-of-input-in-character) - (return (values (+ nchars (- end i)) end))) - (t - ;; FIXME: clean this mess up. - (let* ((u1 octet) - (u2 (if (>= noctets 2) (,getter seq (1+ i)) 0)) - (u3 (if (>= noctets 3) (,getter seq (+ i 2)) 0)) - (u4 (if (= noctets 4) (,getter seq (+ i 3)) 0)) - (inc (or (and (> noctets 1) - (< u1 #xc2)) - (and (= noctets 2) - (not (logior u2 #x40))) - (and (= noctets 3) - (not (and (< (f-logxor u2 #x80) #x40) - (< (f-logxor u3 #x80) #x40) - (or (>= u1 #xe1) (>= u2 #xa0)) - (or (/= u1 #xed) (< u2 #xa0) (> u2 #xbf))))) - (and (= noctets 4) - (not - (and (< (f-logxor u2 #x80) #x40) - (< (f-logxor u3 #x80) #x40) - (< (f-logxor u4 #x80) #x40) - (or (>= u1 #xf1) (>= u2 #x90)))))))) - (let ((new-nchars (if inc (+ nchars noctets) (1+ nchars)))) - (when (and (plusp max) (> new-nchars max)) - (return (values nchars i))) - (incf i noctets) - (setq nchars new-nchars)))))) - finally (progn - (assert (= i end)) - (return (values nchars i)))))) - -;;; TODO: reuse the :UTF-8 encoder with through a simple macro. -(define-encoder :utf-8b (getter src-type setter dest-type) - `(named-lambda utf-8b-encoder (src start end dest d-start) - (declare (type ,src-type src) - (type ,dest-type dest) - (fixnum start end d-start)) - (loop with di fixnum = d-start - for i fixnum from start below end - for code of-type code-point = (,getter src i) do - (macrolet ((set-octet (offset value) - `(,',setter ,value dest (the fixnum (+ di ,offset))))) - (cond - ;; 1 octet - ((< code #x80) - (set-octet 0 code) - (incf di)) - ;; 2 octets - ((< code #x800) - (set-octet 0 (logior #xc0 (f-ash code -6))) - (set-octet 1 (logior #x80 (f-logand code #x3f))) - (incf di 2)) - ;; 1 octet (invalid octet) - ((<= #xdc80 code #xdcff) - (set-octet 0 (f-logand code #xff)) - (incf di)) - ;; 3 octets - ((< code #x10000) - (set-octet 0 (logior #xe0 (f-ash code -12))) - (set-octet 1 (logior #x80 (f-logand #x3f (f-ash code -6)))) - (set-octet 2 (logior #x80 (f-logand code #x3f))) - (incf di 3)) - ;; 4 octets - (t - (set-octet 0 (logior #xf0 (f-logand #x07 (f-ash code -18)))) - (set-octet 1 (logior #x80 (f-logand #x3f (f-ash code -12)))) - (set-octet 2 (logior #x80 (f-logand #x3f (f-ash code -6)))) - (set-octet 3 (logand #x3f code)) - (incf di 4)))) - finally (return (the fixnum (- di d-start)))))) - -(define-decoder :utf-8b (getter src-type setter dest-type) - `(named-lambda utf-8b-decoder (src start end dest d-start) - (declare (type ,src-type src) - (type ,dest-type dest) - (fixnum start end d-start)) - (let ((u2 0) (u3 0) (u4 0)) - (declare (type ub8 u2 u3 u4)) - (loop for di fixnum from d-start - for i fixnum from start below end - for u1 of-type ub8 = (,getter src i) do - ;; Unlike the UTF-8 version, this version of - ;; CONSUME-OCTET needs to check if I is being incremented - ;; past END because we might have trailing binary - ;; garbage. - (macrolet - ((consume-octet (n) - `(if (= i (1- end)) - (encode-raw-octets ,n) - (,',getter src (incf i)))) - (encode-raw-octets (n) - `(progn - ,@(loop for i below n and var in '(u1 u2 u3 u4) - collect `(,',setter (logior #xdc00 ,var) dest di) - unless (= i (1- n)) - collect '(incf di)) - (return-from set-body)))) - (block set-body - (,setter (cond - ((< u1 #x80) ; 1 octet - u1) - ((>= u1 #xc2) - (setq u2 (consume-octet 1)) - (cond - ((< u1 #xe0) ; 2 octets - (if (< (f-logxor u2 #x80) #x40) - (logior (f-ash (f-logand #x1f u1) 6) - (f-logxor u2 #x80)) - (encode-raw-octets 2))) - (t - (setq u3 (consume-octet 2)) - (cond - ((< u1 #xf0) ; 3 octets - (if (and (< (f-logxor u2 #x80) #x40) - (< (f-logxor u3 #x80) #x40) - (or (>= u1 #xe1) (>= u2 #xa0))) - (let ((start (f-logior (f-ash (f-logand u1 #x0f) 12) - (f-ash (f-logand u2 #x3f) 6)))) - (if (<= #xd800 start #xdfc0) - (encode-raw-octets 3) - (logior start (f-logand u3 #x3f)))) - (encode-raw-octets 3))) - (t ; 4 octets - (setq u4 (consume-octet 3)) - (if (and (< (f-logxor u2 #x80) #x40) - (< (f-logxor u3 #x80) #x40) - (< (f-logxor u4 #x80) #x40) - (or (>= u1 #xf1) (>= u2 #x90))) - (logior - (f-logior (f-ash (f-logand u1 7) 18) - (f-ash (f-logxor u2 #x80) 12)) - (f-logior (f-ash (f-logxor u3 #x80) 6) - (f-logxor u4 #x80))) - (encode-raw-octets 4))))))) - (t (encode-raw-octets 1))) - dest di))) - finally (return (the fixnum (- di d-start))))))) - -;;;; UTF-16 - -;;; TODO: add a way to pass some info at compile-time telling us that, -;;; for example, the maximum code-point will always be < #x10000 in -;;; which case we could simply return (* 2 (- end start)). -(defmacro utf16-octet-counter (getter type) - `(named-lambda utf-16-octet-counter (seq start end max) - (declare (type ,type seq) (fixnum start end max)) - (loop with noctets fixnum = 0 - for i fixnum from start below end - for code of-type code-point = (,getter seq i) - do (let ((new (the fixnum (+ (if (< code #x10000) 2 4) noctets)))) - (if (and (plusp max) (> new max)) - (loop-finish) - (setq noctets new))) - finally (return (values noctets i))))) - -(defmacro utf-16-combine-surrogate-pairs (u1 u2) - `(the (unsigned-byte 21) - (+ #x10000 - (the (unsigned-byte 20) - (logior - (the (unsigned-byte 20) - (ash (the (unsigned-byte 10) (- ,u1 #xd800)) 10)) - (the (unsigned-byte 10) - (- ,u2 #xdc00))))))) - -(defmacro define-utf-16 (name &optional endianness) - (check-type endianness (or null (eql :be) (eql :le))) - (check-type name keyword) - (let ((swap-var (gensym "SWAP")) - (code-point-counter-name - (format-symbol t '#:~a-code-point-counter (string name))) - (encoder-name (format-symbol t '#:~a-encoder (string name))) - (decoder-name (format-symbol t '#:~a-decoder (string name)))) - (labels ((make-bom-check-form (end start getter seq) - (if (null endianness) - ``((,',swap-var - (when (> ,,end ,,start) - (case (,,getter ,,seq ,,start 2 :ne) - (#.+byte-order-mark-code+ (incf ,,start 2) nil) - (#.+swapped-byte-order-mark-code+ (incf ,,start 2) t) - (t #+little-endian t))))) - '())) - (make-getter-form (getter src i) - (case endianness - (:le ``(,,getter ,,src ,,i 2 :le)) - (:be ``(,,getter ,,src ,,i 2 :be)) - (t ``(if ,',swap-var - (,,getter ,,src ,,i 2 :re) - (,,getter ,,src ,,i 2 :ne))))) - (make-setter-form (setter code dest di) - (case endianness - (:be ``(,,setter ,,code ,,dest ,,di 2 :be)) - (:le ``(,,setter ,,code ,,dest ,,di 2 :le)) - (t ``(,,setter ,,code ,,dest ,,di 2 :ne))))) - `(progn - (define-octet-counter ,name (getter type) - `(utf16-octet-counter ,getter ,type)) - (define-code-point-counter ,name (getter type) - `(named-lambda ,',code-point-counter-name (seq start end max) - (declare (type ,type seq) (fixnum start end max)) - (let* ,,(make-bom-check-form ''end ''start 'getter ''seq) - (loop with count fixnum = 0 - with i fixnum = start - while (<= i (- end 2)) do - (let* ((code ,,(make-getter-form 'getter ''seq ''i)) - (next-i (+ i (if (or (< code #xd800) (>= code #xdc00)) - 2 - 4)))) - (declare (type (unsigned-byte 16) code) (fixnum next-i)) - (cond - ((> next-i end) - (decoding-error - (vector (,getter seq i) (,getter seq (1+ i))) - ,',name seq i nil 'end-of-input-in-character) - (return (values count i))) - (t - (setq i next-i - count (1+ count)) - (when (and (plusp max) (= count max)) - (return (values count i)))))) - finally (progn - (assert (= i end)) - (return (values count i))))))) - (define-encoder ,name (getter src-type setter dest-type) - `(named-lambda ,',encoder-name (src start end dest d-start) - (declare (type ,src-type src) - (type ,dest-type dest) - (fixnum start end d-start)) - (loop with di fixnum = d-start - for i fixnum from start below end - for code of-type code-point = (,getter src i) - for high-bits fixnum = (- code #x10000) do - (cond ((< high-bits 0) - ,,(make-setter-form 'setter ''code ''dest ''di) - (incf di 2)) - (t - ,,(make-setter-form - 'setter ''(logior #xd800 (f-ash high-bits -10)) - ''dest ''di) - ,,(make-setter-form - 'setter ''(logior #xdc00 (f-logand high-bits #x3ff)) - ''dest ''(+ di 2)) - (incf di 4))) - finally (return (the fixnum (- di d-start)))))) - (define-decoder ,name (getter src-type setter dest-type) - `(named-lambda ,',decoder-name (src start end dest d-start) - (declare (type ,src-type src) - (type ,dest-type dest) - (fixnum start end d-start)) - (let ,,(make-bom-check-form ''end ''start 'getter ''src) - (loop with i fixnum = start - for di fixnum from d-start - until (= i end) do - (let ((u1 ,,(make-getter-form 'getter ''src ''i))) - (declare (type (unsigned-byte 16) u1)) - (incf i 2) - (,setter (cond - ((or (< u1 #xd800) (>= u1 #xe000)) ; 2 octets - u1) - ((< u1 #xdc00) ; 4 octets - (let ((u2 ,,(make-getter-form 'getter ''src ''i))) - (declare (type (unsigned-byte 16) u2)) - (incf i 2) - (if (and (>= u2 #xdc00) (< u2 #xe000)) - (utf-16-combine-surrogate-pairs u1 u2) - (decoding-error - (vector (,getter src (- i 4)) - (,getter src (- i 3)) - (,getter src (- i 2)) - (,getter src (- i 1))) - ,',name src i +repl+)))) - (t - (decoding-error (vector (,getter src (- i 2)) - (,getter src (- i 1))) - ,',name src i +repl+))) - dest di)) - finally (return (the fixnum (- di d-start))))))) - ',name)))) - -(define-character-encoding :utf-16 - "A 16-bit, variable-length encoding in which characters with -code points less than #x10000 can be encoded in a single 16-bit -word and characters with larger codes can be encoded in a pair of -16-bit words. The endianness of the encoded data is indicated by -the endianness of a byte-order-mark character (#\u+feff) -prepended to the data; in the absence of such a character on -input, the data is assumed to be in big-endian order. Output is -written in native byte-order with a leading byte-order mark." - :max-units-per-char 2 - :code-unit-size 16 - :native-endianness t ; not necessarily true when decoding - :decode-literal-code-unit-limit #xd800 - :encode-literal-code-unit-limit #x10000 - :use-bom #+big-endian :utf-16be #+little-endian :utf-16le - :bom-encoding #+big-endian #(#xfe #xff) #+little-endian #(#xff #xfe) - :nul-encoding #(0 0) - :default-replacement #xfffd - :ambiguous #+little-endian t #+big-endian nil) - -(define-utf-16 :utf-16) - -(define-character-encoding :utf-16le - "A 16-bit, variable-length encoding in which characters with -code points less than #x10000 can be encoded in a single 16-bit -word and characters with larger codes can be encoded in a pair of -16-bit words. The data is assumed to be in little-endian order. Output is -written in little-endian byte-order without a leading byte-order mark." - :aliases '(:utf-16/le) - :max-units-per-char 2 - :code-unit-size 16 - :native-endianness #+little-endian t #+big-endian nil - :decode-literal-code-unit-limit #xd800 - :encode-literal-code-unit-limit #x10000 - :nul-encoding #(0 0) - :default-replacement #xfffd) - -(define-utf-16 :utf-16le :le) - -(define-character-encoding :utf-16be - "A 16-bit, variable-length encoding in which characters with -code points less than #x10000 can be encoded in a single 16-bit -word and characters with larger codes can be encoded in a pair of -16-bit words. The data is assumed to be in big-endian order. Output is -written in big-endian byte-order without a leading byte-order mark." - :aliases '(:utf-16/be) - :max-units-per-char 2 - :code-unit-size 16 - :native-endianness #+little-endian nil #+big-endian t - :decode-literal-code-unit-limit #xd800 - :encode-literal-code-unit-limit #x10000 - :nul-encoding #(0 0) - :default-replacement #xfffd) - -(define-utf-16 :utf-16be :be) - -(defmacro define-ucs (name bytes &optional endianness (limit #x110000)) - (check-type name keyword) - (check-type bytes (or (eql 2) (eql 4))) - (check-type endianness (or null (eql :le) (eql :be))) - (let ((swap-var (gensym "SWAP")) - (code-point-counter-name - (format-symbol t '#:~a-code-point-counter (string name))) - (encoder-name - (format-symbol t '#:~a-encoder (string name))) - (decoder-name - (format-symbol t '#:~a-decoder (string name)))) - (labels ((make-bom-check-form (end start getter src) - (if (null endianness) - ``(when (not (zerop (- ,,end ,,start))) - (case (,,getter ,,src 0 ,',bytes :ne) - (#.+byte-order-mark-code+ - (incf ,,start ,',bytes) nil) - (#.+swapped-byte-order-mark-code-32+ - (incf ,,start ,',bytes) t) - (t #+little-endian t))) - '())) - (make-setter-form (setter code dest di) - ``(,,setter ,,code ,,dest ,,di ,',bytes - ,',(or endianness :ne))) - (make-getter-form (getter src i) - (if (null endianness) - ``(if ,',swap-var - (,,getter ,,src ,,i ,',bytes :re) - (,,getter ,,src ,,i ,',bytes :ne)) - ``(,,getter ,,src ,,i ,',bytes ,',endianness)))) - `(progn - (define-code-point-counter ,name (getter type) - `(named-lambda ,',code-point-counter-name (seq start end max) - (declare (type ,type seq) (fixnum start end max)) - ;; check for bom - ,,(make-bom-check-form ''end ''start 'getter ''seq) - (multiple-value-bind (count rem) - (floor (- end start) ,',bytes) - (cond - ((and (plusp max) (> count max)) - (values max (the fixnum (+ start (* ,',bytes max))))) - (t - ;; check for incomplete last character - (unless (zerop rem) - (let ((vector (make-array ,',bytes :fill-pointer 0))) - (dotimes (i rem) - (vector-push (,getter seq (+ i (- end rem))) vector)) - (decoding-error vector ,',name seq (the fixnum (- end rem)) nil - 'end-of-input-in-character) - (decf end rem))) - (values count end)))))) - (define-encoder ,name (getter src-type setter dest-type) - `(named-lambda ,',encoder-name (src start end dest d-start) - (declare (type ,src-type src) - (type ,dest-type dest) - (fixnum start end d-start)) - (loop for i fixnum from start below end - and di fixnum from d-start by ,',bytes - for code of-type code-point = (,getter src i) - do (if (>= code ,',limit) - (encoding-error code ,',name src i +repl+) - ,,(make-setter-form 'setter ''code ''dest ''di)) - finally (return (the fixnum (- di d-start)))))) - (define-decoder ,name (getter src-type setter dest-type) - `(named-lambda ,',decoder-name (src start end dest d-start) - (declare (type ,src-type src) - (type ,dest-type dest) - (fixnum start end d-start)) - (let ((,',swap-var ,,(make-bom-check-form ''end ''start 'getter ''src))) - (declare (ignorable ,',swap-var)) - (loop for i fixnum from start below end by ,',bytes - and di from d-start - do (,setter (let ((unit ,,(make-getter-form 'getter ''src ''i))) - (if (>= unit ,',limit) - (decoding-error - (vector (,getter src i) - (,getter src (+ i 1)) - ,@,(if (= bytes 4) - ``((,getter src (+ i 2)) - (,getter src (+ i 3))))) - ,',name src i +repl+ - 'character-out-of-range) - unit)) - dest di) - finally (return (the fixnum (- di d-start))))))) - ',name)))) - -;;;; UTF-32 - -(define-character-encoding :utf-32 - "A 32-bit, fixed-length encoding in which all Unicode -characters can be encoded in a single 32-bit word. The -endianness of the encoded data is indicated by the endianness of -a byte-order-mark character (#\u+feff) prepended to the data; in -the absence of such a character on input, input data is assumed -to be in big-endian order. Output is written in native byte -order with a leading byte-order mark." - :aliases '(:ucs-4) - :max-units-per-char 1 - :code-unit-size 32 - :native-endianness t ; not necessarily true when decoding - :literal-char-code-limit #x110000 - :use-bom #+little-endian :utf-32le #+big-endian :utf-32be - :bom-encoding - #+big-endian #(#x00 #x00 #xfe #xff) - #+little-endian #(#xff #xfe #x00 #x00) - :nul-encoding #(0 0 0 0) - :ambiguous #+little-endian t #+big-endian nil) - -(define-ucs :utf-32 4) - -(define-character-encoding :utf-32le - "A 32-bit, fixed-length encoding in which all Unicode -characters can be encoded in a single 32-bit word. Input data is assumed -to be in little-endian order. Output is also written in little-endian byte -order without a leading byte-order mark." - :max-units-per-char 1 - :code-unit-size 32 - :aliases '(:utf-32/le :ucs-4le :ucs-4/le) - :native-endianness #+little-endian t #+big-endian nil - :literal-char-code-limit #x110000 - :nul-encoding #(0 0 0 0)) - -(define-ucs :utf-32le 4 :le) - -(define-character-encoding :utf-32be - "A 32-bit, fixed-length encoding in which all Unicode -characters can be encoded in a single 32-bit word. Input data is assumed -to be in big-endian order. Output is also written in big-endian byte -order without a leading byte-order mark." - :max-units-per-char 1 - :code-unit-size 32 - :aliases '(:utf-32/be :ucs-4be :ucs-4/be) - :native-endianness #+little-endian nil #+big-endian t - :literal-char-code-limit #x110000 - :nul-encoding #(0 0 0 0)) - -(define-ucs :utf-32be 4 :be) - -;; UCS-2 - -(define-character-encoding :ucs-2 - "A 16-bit, fixed-length encoding in which all Unicode -characters can be encoded in a single 16-bit word. The -endianness of the encoded data is indicated by the endianness of -a byte-order-mark character (#\u+feff) prepended to the data; in -the absence of such a character on input, input data is assumed -to be in big-endian order. Output is written in native byte -order with a leading byte-order mark." - :aliases '(:ucs-2) - :max-units-per-char 1 - :code-unit-size 16 - :native-endianness t ; not necessarily true when decoding - :literal-char-code-limit #x10000 - :use-bom #+little-endian :ucs-2le #+big-endian :ucs-2be - :bom-encoding - #+big-endian #(#xfe #xff) - #+little-endian #(#xff #xfe) - :nul-encoding #(0 0) - :ambiguous #+little-endian t #+big-endian nil) - -(define-ucs :ucs-2 2 nil #x10000) - -(define-character-encoding :ucs-2le - "A 16-bit, fixed-length encoding in which all Unicode -characters can be encoded in a single 16-bit word. Input data is assumed -to be in little-endian order. Output is also written in little-endian byte -order without a leading byte-order mark." - :max-units-per-char 1 - :code-unit-size 16 - :aliases '(:ucs-2/le) - :native-endianness #+little-endian t #+big-endian nil - :literal-char-code-limit #x10000 - :nul-encoding #(0 0)) - -(define-ucs :ucs-2le 2 :le #x10000) - -(define-character-encoding :ucs-2be - "A 16-bit, fixed-length encoding in which all Unicode -characters can be encoded in a single 16-bit word. Input data is assumed -to be in big-endian order. Output is also written in big-endian byte -order without a leading byte-order mark." - :max-units-per-char 1 - :code-unit-size 16 - :aliases '(:ucs-2/be) - :native-endianness #+little-endian nil #+big-endian t - :literal-char-code-limit #x10000 - :nul-encoding #(0 0)) - -(define-ucs :ucs-2be 2 :be #x10000) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/encodings.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/encodings.lisp deleted file mode 100644 index da2c66b..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/encodings.lisp +++ /dev/null @@ -1,503 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; encodings.lisp --- Character encodings and mappings. -;;; -;;; Copyright (C) 2007, Luis Oliveira -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(in-package #:babel-encodings) - -;;;; Character Encodings - -(defclass character-encoding () - ((name :initarg :name :reader enc-name - :initform (error "Must specify a NAME for this character encoding.")) - ;; Most of these documentation strings are taken from OpenMCL. - (documentation - :initarg :documentation :reader enc-documentation :initform nil) - ;; A non-exhaustive list of aliases for the encoding. - (aliases :initarg :aliases :initform nil :reader enc-aliases) - ;; Specified in bits. Usually 8, 16 or 32. - (code-unit-size - :initarg :code-unit-size :reader enc-code-unit-size :initform 8) - (max-units-per-char - :initarg :max-units-per-char :reader enc-max-units-per-char :initform 1) - ;; If NIL, it is necessary to swap 16- and 32-bit units. - (native-endianness - :initarg :native-endianness :reader enc-native-endianness :initform t) - ;; Code units less than this value map to themselves on input. - (decode-literal-code-unit-limit - :initarg :decode-literal-code-unit-limit :initform 0 - :reader enc-decode-literal-code-unit-limit) - ;; Code points less than this value map to themselves on output. - (encode-literal-code-unit-limit - :initarg :encode-literal-code-unit-limit :initform 0 - :reader enc-encode-literal-code-unit-limit) - ;; Defines whether it is necessary to prepend a byte-order-mark to - ;; determine the endianness. - (use-bom :initarg :use-bom :initform nil :reader enc-use-bom) - ;; How the byte-order-mark should be encoded, specified as a - ;; sequence of octets. NIL if it cannot be encoded. - (bom-encoding - :initarg :bom-encoding :reader enc-bom-encoding :initform nil) - ;; How should NUL be encoded, specified as sequence of octets. - (nul-encoding - :initarg :nul-encoding :reader enc-nul-encoding :initform #(0)) - ;; Preferred replacement character code point. - (default-replacement - :initarg :default-replacement :reader enc-default-replacement - :initform #x1a) - ;; Does VALID-STRING => OCTETS => STRING2 guarantee a valid - ;; STRING2? UTF-{16,32} on little-endian plaforms don't because - ;; they assume different endianness on each direction. - (ambiguous - :initarg :ambiguous :reader ambiguous-encoding-p :initform nil))) - -;;; I'm too lazy to write all the identical limits twice. -(defmethod initialize-instance :after ((enc character-encoding) - &key literal-char-code-limit) - (when literal-char-code-limit - (setf (slot-value enc 'encode-literal-code-unit-limit) - literal-char-code-limit) - (setf (slot-value enc 'decode-literal-code-unit-limit) - literal-char-code-limit))) - -#-(and) -(defmethod describe-object ((enc character-encoding) s) - "Prints out the name, aliases and documentation slots of a -character encoding object." - (with-slots (name aliases documentation) enc - (format s "~&~S" name) - (when aliases - (format s " [Aliases:~{ ~S~}]" aliases)) - (format s "~&~A~%~%" documentation)) - (call-next-method)) - -(defvar *supported-character-encodings* nil) - -(defun list-character-encodings () - "List of keyword symbols denoting supported character -encodings. This list does not include aliases." - *supported-character-encodings*) - -(defvar *character-encodings* (make-hash-table :test 'eq)) - -(defvar *default-character-encoding* :utf-8 - "Special variable used to determine the default character -encoding.") - -(defun get-character-encoding (name) - "Lookups the character encoding denoted by the keyword symbol -NAME. Signals an error if one is not found. If NAME is already -a CHARACTER-ENCONDING object, it is returned unmodified." - (when (typep name 'character-encoding) - (return-from get-character-encoding name)) - (when (eq name :default) - (setq name *default-character-encoding*)) - (or (gethash name *character-encodings*) - (error "Unknown character encoding: ~S" name))) - -(defmethod ambiguous-encoding-p ((encoding symbol)) - (ambiguous-encoding-p (get-character-encoding encoding))) - -(defun notice-character-encoding (enc) - (pushnew (enc-name enc) *supported-character-encodings*) - (dolist (kw (cons (enc-name enc) (enc-aliases enc))) - (setf (gethash kw *character-encodings*) enc)) - (enc-name enc)) - -(defmacro define-character-encoding (name docstring &body options) - `(notice-character-encoding - (make-instance 'character-encoding :name ,name ,@options - :documentation ,docstring))) - -;;;; Mappings - -;;; TODO: describe what mappings are - -(defun make-fixed-width-counter (getter type &optional (unit-size-in-bits 8)) - (declare (ignore getter type)) - (check-type unit-size-in-bits positive-fixnum) - (let ((unit-size-in-bytes (/ unit-size-in-bits 8))) - `(named-lambda fixed-width-counter (seq start end max) - (declare (ignore seq) (fixnum start end max)) - ;; XXX: the result can be bigger than a fixnum when (> unit-size - ;; 1) and we don't want that to happen. Possible solution: signal - ;; a warning (hmm, make that an actual error) and truncate. - (if (plusp max) - (let ((count (the fixnum (min (floor max ,unit-size-in-bytes) - (the fixnum (- end start)))))) - (values (the fixnum (* count ,unit-size-in-bytes)) - (the fixnum (+ start count)))) - (values (the fixnum (* (the fixnum (- end start)) - ,unit-size-in-bytes)) - (the fixnum end)))))) - -;;; Useful to develop new encodings incrementally starting with octet -;;; and code-unit counters. -(defun make-dummy-coder (sg st ds dt) - (declare (ignore sg st ds dt)) - `(named-lambda dummy-coder (src s e dest i) - (declare (ignore src s e dest i)) - (error "this encoder/decoder hasn't been implemented yet"))) - -;;; TODO: document here -;;; -;;; ENCODER -- (lambda (src-getter src-type dest-setter dest-type) ...) -;;; DECODER -- (lambda (src-getter src-type dest-setter dest-type) ...) -;;; -;;; OCTET-COUNTER -- (lambda (getter type) ...) -;;; CODE-POINT-COUNTER -- (lambda (getter type) ...) -(defclass abstract-mapping () - ((encoder-factory :accessor encoder-factory :initform 'make-dummy-coder) - (decoder-factory :accessor decoder-factory :initform 'make-dummy-coder) - (octet-counter-factory :accessor octet-counter-factory - :initform 'make-fixed-width-counter) - (code-point-counter-factory :accessor code-point-counter-factory - :initform 'make-fixed-width-counter))) - -;;; TODO: document these -;;; -;;; ENCODER -- (lambda (src start end dest d-start) ...) -;;; DECODER -- (lambda (src start end dest d-start) ...) -;;; -;;; OCTET-COUNTER -- (lambda (seq start end max-octets) ...) -;;; CODE-POINT-COUNTER -- (lambda (seq start end max-chars) ...) -;;; => N-CHARS NEW-END -;;; (important: describe NEW-END) -(defclass concrete-mapping () - ((encoder :accessor encoder) - (decoder :accessor decoder) - (octet-counter :accessor octet-counter) - (code-point-counter :accessor code-point-counter))) - -(defparameter *abstract-mappings* (make-hash-table :test 'eq)) - -(defun get-abstract-mapping (encoding) - (gethash encoding *abstract-mappings*)) - -(defun (setf get-abstract-mapping) (value encoding) - (setf (gethash encoding *abstract-mappings*) value)) - -(defun %register-mapping-part (encoding slot-name fn) - (let ((mapping (get-abstract-mapping encoding))) - (unless mapping - (setq mapping (make-instance 'abstract-mapping)) - (setf (get-abstract-mapping encoding) mapping)) - (setf (slot-value mapping slot-name) fn))) - -;;; See enc-*.lisp for example usages of these 4 macros. - -(defmacro define-encoder (encoding (sa st da dt) &body body) - `(%register-mapping-part ,encoding 'encoder-factory - (named-lambda encoder (,sa ,st ,da ,dt) - ,@body))) - -(defmacro define-decoder (encoding (sa st da dt) &body body) - `(%register-mapping-part ,encoding 'decoder-factory - (named-lambda decoder (,sa ,st ,da ,dt) - ,@body))) - -(defmacro define-octet-counter (encoding (acc type) &body body) - `(%register-mapping-part ,encoding 'octet-counter-factory - (named-lambda octet-counter-factory (,acc ,type) - ,@body))) - -(defmacro define-code-point-counter (encoding (acc type) &body body) - `(%register-mapping-part ,encoding 'code-point-counter-factory - (named-lambda code-point-counter (,acc ,type) - ,@body))) - -(defun instantiate-encoder (encoding am octet-seq-getter octet-seq-type - code-point-seq-setter code-point-seq-type) - (declare (ignore encoding)) - (funcall (encoder-factory am) - octet-seq-getter - octet-seq-type - code-point-seq-setter - code-point-seq-type)) - -(defun instantiate-decoder (encoding am octet-seq-getter octet-seq-type - code-point-seq-setter code-point-seq-type) - (declare (ignore encoding)) - (funcall (decoder-factory am) - octet-seq-getter - octet-seq-type - code-point-seq-setter - code-point-seq-type)) - -(defun instantiate-code-point-counter (encoding am octet-seq-getter - octet-seq-type) - (declare (ignore encoding)) - (funcall (code-point-counter-factory am) - octet-seq-getter - octet-seq-type)) - -(defun instantiate-octet-counter (encoding am code-point-seq-getter - code-point-seq-type) - (if (= 1 (enc-max-units-per-char encoding)) - (make-fixed-width-counter code-point-seq-getter code-point-seq-type - (enc-code-unit-size encoding)) - (funcall (octet-counter-factory am) - code-point-seq-getter - code-point-seq-type))) - -;;; Expands into code generated by the available abstract mappings -;;; that will be compiled into concrete mappings. This is used in -;;; e.g. strings.lisp to define mappings between strings and -;;; (unsigned-byte 8) vectors. -;;; -;;; For each encoding funcall the abstract mappings at macro-expansion -;;; time with the src/dest accessors and types to generate the -;;; appropriate code for the concrete mappings. These functions are -;;; then saved in their respective slots of the CONCRETE-MAPPING -;;; object. -(defmacro instantiate-concrete-mappings - (&key (encodings (hash-table-keys *abstract-mappings*)) - (optimize '((speed 3) (debug 0) (compilation-speed 0))) - octet-seq-getter octet-seq-setter octet-seq-type - code-point-seq-getter code-point-seq-setter code-point-seq-type - (instantiate-decoders t)) - `(let ((ht (make-hash-table :test 'eq))) - (declare (optimize ,@optimize) - #+sbcl (sb-ext:muffle-conditions sb-ext:compiler-note)) - (flet ((notice-mapping (encoding-name cm) - (let* ((encoding (get-character-encoding encoding-name)) - (aliases (enc-aliases encoding))) - (dolist (kw (cons (enc-name encoding) aliases)) - (setf (gethash kw ht) cm))))) - ,@(loop for encoding-name in encodings - for encoding = (get-character-encoding encoding-name) - for am = (gethash encoding-name *abstract-mappings*) - collect - `(let ((cm (make-instance 'concrete-mapping))) - (setf (encoder cm) - ,(instantiate-encoder encoding am - code-point-seq-getter - code-point-seq-type - octet-seq-setter - octet-seq-type)) - ,(when instantiate-decoders - `(progn - (setf (decoder cm) - ,(instantiate-decoder encoding am - octet-seq-getter - octet-seq-type - code-point-seq-setter - code-point-seq-type)) - (setf (code-point-counter cm) - ,(instantiate-code-point-counter - encoding am octet-seq-getter octet-seq-type)))) - (setf (octet-counter cm) - ,(instantiate-octet-counter encoding am - code-point-seq-getter - code-point-seq-type)) - (notice-mapping ,encoding-name cm)))) - ht)) - -;;; debugging stuff - -#-(and) -(defun pprint-instantiate-concrete-mappings - (&key (encodings (hash-table-keys *abstract-mappings*)) - (optimize '((debug 3) (safety 3))) - (octet-seq-setter 'ub-set) (octet-seq-getter 'ub-get) - (octet-seq-type '(simple-array (unsigned-byte 8) (*))) - (code-point-seq-setter 'string-set) - (code-point-seq-getter 'string-get) - (code-point-seq-type 'simple-unicode-string)) - (let ((encodings (ensure-list encodings)) - (*package* (find-package :babel-encodings)) - (*print-case* :downcase)) - (pprint - (macroexpand - `(instantiate-concrete-mappings - :encodings ,encodings - :optimize ,optimize - :octet-seq-getter ,octet-seq-getter - :octet-seq-setter ,octet-seq-setter - :octet-seq-type ,octet-seq-type - :code-point-seq-getter ,code-point-seq-getter - :code-point-seq-setter ,code-point-seq-setter - :code-point-seq-type ,code-point-seq-type)))) - (values)) - -;;;; Utilities used in enc-*.lisp - -(defconstant +default-substitution-code-point+ #x1a - "Default ASCII substitution character code point used in case of an encoding/decoding error.") - -;;; We're converting between objects of the (UNSIGNED-BYTE 8) and -;;; (MOD #x110000) types which are aliased here to UB8 and CODE-POINT -;;; for convenience. -(deftype ub8 () '(unsigned-byte 8)) -(deftype code-point () '(mod #x110000)) - -;;; Utility macro around DEFINE-ENCODER that takes care of most of the -;;; work need to deal with an 8-bit, fixed-width character encoding. -;;; -;;; BODY will be inside a loop and its return value will placed in the -;;; destination buffer. BODY will be surounded by lexical BLOCK which -;;; will have the ENCODING's name, usually a keyword. It handles all -;;; sorts of type declarations. -;;; -;;; See enc-ascii.lisp for a simple usage example. -(defmacro define-unibyte-encoder (encoding (code) &body body) - (with-unique-names (s-getter s-type d-setter d-type - src start end dest d-start i di) - `(define-encoder ,encoding (,s-getter ,s-type ,d-setter ,d-type) - `(named-lambda ,',(symbolicate encoding '#:-unibyte-encoder) - (,',src ,',start ,',end ,',dest ,',d-start) - (declare (type ,,s-type ,',src) - (type ,,d-type ,',dest) - (fixnum ,',start ,',end ,',d-start)) - (loop for ,',i fixnum from ,',start below ,',end - and ,',di fixnum from ,',d-start do - (,,d-setter - (macrolet - ;; this should probably be a function... - ((handle-error (&optional (c ''character-encoding-error)) - `(encoding-error - ,',',code ,',',encoding ,',',src ,',',i - +default-substitution-code-point+ ,c))) - (let ((,',code (,,s-getter ,',src ,',i))) - (declare (type code-point ,',code)) - (block ,',encoding ,@',body))) - ,',dest ,',di) - finally (return (the fixnum (- ,',di ,',d-start)))))))) - -;;; The decoder version of the above macro. -(defmacro define-unibyte-decoder (encoding (octet) &body body) - (with-unique-names (s-getter s-type d-setter d-type - src start end dest d-start i di) - `(define-decoder ,encoding (,s-getter ,s-type ,d-setter ,d-type) - `(named-lambda ,',(symbolicate encoding '#:-unibyte-encoder) - (,',src ,',start ,',end ,',dest ,',d-start) - (declare (type ,,s-type ,',src) - (type ,,d-type ,',dest) - (fixnum ,',start ,',end ,',d-start)) - (loop for ,',i fixnum from ,',start below ,',end - and ,',di fixnum from ,',d-start do - (,,d-setter - (macrolet - ;; this should probably be a function... - ((handle-error (&optional (c ''character-decoding-error)) - `(decoding-error - (vector ,',',octet) ,',',encoding ,',',src ,',',i - +default-substitution-code-point+ ,c))) - (let ((,',octet (,,s-getter ,',src ,',i))) - (declare (type ub8 ,',octet)) - (block ,',encoding ,@',body))) - ,',dest ,',di) - finally (return (the fixnum (- ,',di ,',d-start)))))))) - -;;;; Error Conditions -;;; -;;; For now, we don't define any actual restarts. The only mechanism -;;; for "restarting" a coding error is the -;;; *SUPPRESS-CHARACTER-CODING-ERRORS* special variable which, when -;;; bound to T (the default), suppresses any error and uses a default -;;; replacement character instead. -;;; -;;; If it turns out that other more options are necessary, possible -;;; alternative approaches include: -;;; -;;; a) use a *REPLACEMENT-CHARACTER* special variable that lets us -;;; pick our own replacement character. The encoder must do -;;; additional work to check if this is character is encodable. -;;; -;;; b) offer a restart to pick a replacement character. Same -;;; problem as above. -;;; -;;; Both approaches pose encoding problems when dealing with a -;;; variable-width encodings because different replacement characters -;;; will need different numbers of octets. This is not a problem for -;;; UTF but will be a problem for the CJK charsets. Approach (a) is -;;; nevertheless easier since the replacement character is known in -;;; advance and therefore the octet-counter can account for it. -;;; -;;; For more complex restarts like SBCL's -- that'll let you specify -;;; _several_ replacement characters for a single character error -- -;;; will probably need extra support code outside the encoder/decoder -;;; (i.e. in the string-to-octets function, for example) since the -;;; encoders/decoders deal with pre-allocated fixed-length buffers. -;;; -;;; SBCL has ASCII-specific (MALFORMED-ASCII) and UTF8-specific -;;; errors. Why? Do we want to add some of those too? - -;;; FIXME: We used to deal with this with an extra ERRORP argument for -;;; encoders, decoders, etc... Still undecided on the best way to do -;;; it. We could also use a simple restart instead of this... -;;; -;;; In any case, this is not for the users to bind and it's not -;;; exported from the BABEL package. -(defvar *suppress-character-coding-errors* nil - "If non-NIL, encoding or decoding errors are suppressed and the -the current character encoding's default replacement character is -used.") - -;;; All of Babel's error conditions are subtypes of -;;; CHARACTER-CODING-ERROR. This error hierarchy is based on SBCL's. -(define-condition character-coding-error (error) - ((buffer :initarg :buffer :reader character-coding-error-buffer) - (position :initarg :position :reader character-coding-error-position) - (encoding :initarg :encoding :reader character-coding-error-encoding))) - -(define-condition character-encoding-error (character-coding-error) - ((code :initarg :code :reader character-encoding-error-code)) - (:report (lambda (c s) - (format s "Unable to encode character code point ~A as ~S." - (character-encoding-error-code c) - (character-coding-error-encoding c))))) - -(declaim (inline encoding-error)) -(defun encoding-error (code enc buf pos &optional - (sub +default-substitution-code-point+) - (e 'character-encoding-error)) - (unless *suppress-character-coding-errors* - (error e :encoding enc :buffer buf :position pos :code code)) - sub) - -(define-condition character-decoding-error (character-coding-error) - ((octets :initarg :octets :reader character-decoding-error-octets)) - (:report (lambda (c s) - (format s "Illegal ~S character starting at position ~D." - (character-coding-error-encoding c) - (character-coding-error-position c))))) - -(define-condition end-of-input-in-character (character-decoding-error) - () - (:documentation "Signalled by DECODERs or CODE-POINT-COUNTERs -of variable-width character encodings.")) - -(define-condition character-out-of-range (character-decoding-error) - () - (:documentation - "Signalled when the character being decoded is out of range.")) - -(declaim (inline decoding-error)) -(defun decoding-error (octets enc buf pos &optional - (sub +default-substitution-code-point+) - (e 'character-decoding-error)) - (unless *suppress-character-coding-errors* - (error e :octets octets :encoding enc :buffer buf :position pos)) - sub) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/external-format.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/external-format.lisp deleted file mode 100644 index 62bb919..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/external-format.lisp +++ /dev/null @@ -1,88 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; external-format.lisp --- External format classes and functions. -;;; -;;; Copyright (C) 2007, Luis Oliveira -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(in-package #:babel) - -(defvar *default-eol-style* - #+windows :crlf - #-windows :lf - "The end-of-line style used by external formats if none is -explicitly given. Depends on the OS the code is compiled on.") - -(deftype eol-style () - "Possible end-of-line styles." - '(member :cr :lf :crlf)) - -(defclass external-format () - ((encoding :initarg :encoding :reader external-format-encoding - :type character-encoding) - (eol-style :initarg :eol-style :reader external-format-eol-style - :type eol-style :initform *default-eol-style*)) - (:documentation - "An EXTERNAL-FORMAT consists in a combination of a Babel -CHARACTER-ENCODING and an end-of-line style.")) - -(defmethod print-object ((ef external-format) stream) - (print-unreadable-object (ef stream :type t :identity t) - (format stream "~A ~A" - (enc-name (external-format-encoding ef)) - (external-format-eol-style ef)))) - -;;; This interface is still somewhat sketchy. The rest of Babel -;;; doesn't really understand external formats, for instance. -(defun make-external-format (encoding &key (eol-style *default-eol-style*)) - (check-type eol-style eol-style) - (make-instance 'external-format - :encoding (get-character-encoding encoding) - :eol-style eol-style)) - -(defun ensure-external-format (thing) - (etypecase thing - (external-format thing) - (character-encoding (make-instance 'external-format :encoding thing)) - (symbol (make-external-format thing)) - (list (apply #'make-external-format thing)))) - -(defun external-format-equal (ef1 ef2) - (and (eq (external-format-encoding ef1) (external-format-encoding ef2)) - (eq (external-format-eol-style ef1) (external-format-eol-style ef2)))) - -(declaim (inline lookup-mapping)) -(defun lookup-mapping (ht encoding) - "HT should be an hashtable created by -INSTANTIATE-CONCRETE-MAPPINGS. ENCODING should be either an -external format, an encoding object or a keyword symbol -denoting a character encoding name or one of its aliases." - (or (etypecase encoding - (keyword - (gethash encoding ht)) - (babel-encodings::concrete-mapping - encoding) - (character-encoding - (gethash (enc-name encoding) ht)) - (external-format - (gethash (enc-name (external-format-encoding encoding)) ht))) - (error "~S is not a valid encoding designator" encoding))) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/gbk-map.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/gbk-map.lisp deleted file mode 100644 index 5b7eb4f..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/gbk-map.lisp +++ /dev/null @@ -1,2226 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; gbk-map.lisp --- GBK encoding map. -;;; -;;; Copyright (C) 2011, Li Wenpeng -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(in-package #:babel-encodings) - -(defparameter *gbk-unicode-mapping* - (map 'babel:unicode-string - #'code-char - '(#x554A #x963F #x57C3 #x6328 #x54CE #x5509 #x54C0 #x7691 #x764C #x853C - #x77EE #x827E #x788D #x7231 #x9698 #x978D #x6C28 #x5B89 #x4FFA #x6309 - #x6697 #x5CB8 #x80FA #x6848 #x80AE #x6602 #x76CE #x51F9 #x6556 #x71AC - #x7FF1 #x8884 #x50B2 #x5965 #x61CA #x6FB3 #x82AD #x634C #x6252 #x53ED - #x5427 #x7B06 #x516B #x75A4 #x5DF4 #x62D4 #x8DCB #x9776 #x628A #x8019 - #x575D #x9738 #x7F62 #x7238 #x767D #x67CF #x767E #x6446 #x4F70 #x8D25 - #x62DC #x7A17 #x6591 #x73ED #x642C #x6273 #x822C #x9881 #x677F #x7248 - #x626E #x62CC #x4F34 #x74E3 #x534A #x529E #x7ECA #x90A6 #x5E2E #x6886 - #x699C #x8180 #x7ED1 #x68D2 #x78C5 #x868C #x9551 #x508D #x8C24 #x82DE - #x80DE #x5305 #x8912 #x5265 #x8584 #x96F9 #x4FDD #x5821 #x9971 #x5B9D - #x62B1 #x62A5 #x66B4 #x8C79 #x9C8D #x7206 #x676F #x7891 #x60B2 #x5351 - #x5317 #x8F88 #x80CC #x8D1D #x94A1 #x500D #x72C8 #x5907 #x60EB #x7119 - #x88AB #x5954 #x82EF #x672C #x7B28 #x5D29 #x7EF7 #x752D #x6CF5 #x8E66 - #x8FF8 #x903C #x9F3B #x6BD4 #x9119 #x7B14 #x5F7C #x78A7 #x84D6 #x853D - #x6BD5 #x6BD9 #x6BD6 #x5E01 #x5E87 #x75F9 #x95ED #x655D #x5F0A #x5FC5 - #x8F9F #x58C1 #x81C2 #x907F #x965B #x97AD #x8FB9 #x7F16 #x8D2C #x6241 - #x4FBF #x53D8 #x535E #x8FA8 #x8FA9 #x8FAB #x904D #x6807 #x5F6A #x8198 - #x8868 #x9CD6 #x618B #x522B #x762A #x5F6C #x658C #x6FD2 #x6EE8 #x5BBE - #x6448 #x5175 #x51B0 #x67C4 #x4E19 #x79C9 #x997C #x70B3 #x75C5 #x5E76 - #x73BB #x83E0 #x64AD #x62E8 #x94B5 #x6CE2 #x535A #x52C3 #x640F #x94C2 - #x7B94 #x4F2F #x5E1B #x8236 #x8116 #x818A #x6E24 #x6CCA #x9A73 #x6355 - #x535C #x54FA #x8865 #x57E0 #x4E0D #x5E03 #x6B65 #x7C3F #x90E8 #x6016 - #x64E6 #x731C #x88C1 #x6750 #x624D #x8D22 #x776C #x8E29 #x91C7 #x5F69 - #x83DC #x8521 #x9910 #x53C2 #x8695 #x6B8B #x60ED #x60E8 #x707F #x82CD - #x8231 #x4ED3 #x6CA7 #x85CF #x64CD #x7CD9 #x69FD #x66F9 #x8349 #x5395 - #x7B56 #x4FA7 #x518C #x6D4B #x5C42 #x8E6D #x63D2 #x53C9 #x832C #x8336 - #x67E5 #x78B4 #x643D #x5BDF #x5C94 #x5DEE #x8BE7 #x62C6 #x67F4 #x8C7A - #x6400 #x63BA #x8749 #x998B #x8C17 #x7F20 #x94F2 #x4EA7 #x9610 #x98A4 - #x660C #x7316 #x573A #x5C1D #x5E38 #x957F #x507F #x80A0 #x5382 #x655E - #x7545 #x5531 #x5021 #x8D85 #x6284 #x949E #x671D #x5632 #x6F6E #x5DE2 - #x5435 #x7092 #x8F66 #x626F #x64A4 #x63A3 #x5F7B #x6F88 #x90F4 #x81E3 - #x8FB0 #x5C18 #x6668 #x5FF1 #x6C89 #x9648 #x8D81 #x886C #x6491 #x79F0 - #x57CE #x6A59 #x6210 #x5448 #x4E58 #x7A0B #x60E9 #x6F84 #x8BDA #x627F - #x901E #x9A8B #x79E4 #x5403 #x75F4 #x6301 #x5319 #x6C60 #x8FDF #x5F1B - #x9A70 #x803B #x9F7F #x4F88 #x5C3A #x8D64 #x7FC5 #x65A5 #x70BD #x5145 - #x51B2 #x866B #x5D07 #x5BA0 #x62BD #x916C #x7574 #x8E0C #x7A20 #x6101 - #x7B79 #x4EC7 #x7EF8 #x7785 #x4E11 #x81ED #x521D #x51FA #x6A71 #x53A8 - #x8E87 #x9504 #x96CF #x6EC1 #x9664 #x695A #x7840 #x50A8 #x77D7 #x6410 - #x89E6 #x5904 #x63E3 #x5DDD #x7A7F #x693D #x4F20 #x8239 #x5598 #x4E32 - #x75AE #x7A97 #x5E62 #x5E8A #x95EF #x521B #x5439 #x708A #x6376 #x9524 - #x5782 #x6625 #x693F #x9187 #x5507 #x6DF3 #x7EAF #x8822 #x6233 #x7EF0 - #x75B5 #x8328 #x78C1 #x96CC #x8F9E #x6148 #x74F7 #x8BCD #x6B64 #x523A - #x8D50 #x6B21 #x806A #x8471 #x56F1 #x5306 #x4ECE #x4E1B #x51D1 #x7C97 - #x918B #x7C07 #x4FC3 #x8E7F #x7BE1 #x7A9C #x6467 #x5D14 #x50AC #x8106 - #x7601 #x7CB9 #x6DEC #x7FE0 #x6751 #x5B58 #x5BF8 #x78CB #x64AE #x6413 - #x63AA #x632B #x9519 #x642D #x8FBE #x7B54 #x7629 #x6253 #x5927 #x5446 - #x6B79 #x50A3 #x6234 #x5E26 #x6B86 #x4EE3 #x8D37 #x888B #x5F85 #x902E - #x6020 #x803D #x62C5 #x4E39 #x5355 #x90F8 #x63B8 #x80C6 #x65E6 #x6C2E - #x4F46 #x60EE #x6DE1 #x8BDE #x5F39 #x86CB #x5F53 #x6321 #x515A #x8361 - #x6863 #x5200 #x6363 #x8E48 #x5012 #x5C9B #x7977 #x5BFC #x5230 #x7A3B - #x60BC #x9053 #x76D7 #x5FB7 #x5F97 #x7684 #x8E6C #x706F #x767B #x7B49 - #x77AA #x51F3 #x9093 #x5824 #x4F4E #x6EF4 #x8FEA #x654C #x7B1B #x72C4 - #x6DA4 #x7FDF #x5AE1 #x62B5 #x5E95 #x5730 #x8482 #x7B2C #x5E1D #x5F1F - #x9012 #x7F14 #x98A0 #x6382 #x6EC7 #x7898 #x70B9 #x5178 #x975B #x57AB - #x7535 #x4F43 #x7538 #x5E97 #x60E6 #x5960 #x6DC0 #x6BBF #x7889 #x53FC - #x96D5 #x51CB #x5201 #x6389 #x540A #x9493 #x8C03 #x8DCC #x7239 #x789F - #x8776 #x8FED #x8C0D #x53E0 #x4E01 #x76EF #x53EE #x9489 #x9876 #x9F0E - #x952D #x5B9A #x8BA2 #x4E22 #x4E1C #x51AC #x8463 #x61C2 #x52A8 #x680B - #x4F97 #x606B #x51BB #x6D1E #x515C #x6296 #x6597 #x9661 #x8C46 #x9017 - #x75D8 #x90FD #x7763 #x6BD2 #x728A #x72EC #x8BFB #x5835 #x7779 #x8D4C - #x675C #x9540 #x809A #x5EA6 #x6E21 #x5992 #x7AEF #x77ED #x953B #x6BB5 - #x65AD #x7F0E #x5806 #x5151 #x961F #x5BF9 #x58A9 #x5428 #x8E72 #x6566 - #x987F #x56E4 #x949D #x76FE #x9041 #x6387 #x54C6 #x591A #x593A #x579B - #x8EB2 #x6735 #x8DFA #x8235 #x5241 #x60F0 #x5815 #x86FE #x5CE8 #x9E45 - #x4FC4 #x989D #x8BB9 #x5A25 #x6076 #x5384 #x627C #x904F #x9102 #x997F - #x6069 #x800C #x513F #x8033 #x5C14 #x9975 #x6D31 #x4E8C #x8D30 #x53D1 - #x7F5A #x7B4F #x4F10 #x4E4F #x9600 #x6CD5 #x73D0 #x85E9 #x5E06 #x756A - #x7FFB #x6A0A #x77FE #x9492 #x7E41 #x51E1 #x70E6 #x53CD #x8FD4 #x8303 - #x8D29 #x72AF #x996D #x6CDB #x574A #x82B3 #x65B9 #x80AA #x623F #x9632 - #x59A8 #x4EFF #x8BBF #x7EBA #x653E #x83F2 #x975E #x5561 #x98DE #x80A5 - #x532A #x8BFD #x5420 #x80BA #x5E9F #x6CB8 #x8D39 #x82AC #x915A #x5429 - #x6C1B #x5206 #x7EB7 #x575F #x711A #x6C7E #x7C89 #x594B #x4EFD #x5FFF - #x6124 #x7CAA #x4E30 #x5C01 #x67AB #x8702 #x5CF0 #x950B #x98CE #x75AF - #x70FD #x9022 #x51AF #x7F1D #x8BBD #x5949 #x51E4 #x4F5B #x5426 #x592B - #x6577 #x80A4 #x5B75 #x6276 #x62C2 #x8F90 #x5E45 #x6C1F #x7B26 #x4F0F - #x4FD8 #x670D #x6D6E #x6DAA #x798F #x88B1 #x5F17 #x752B #x629A #x8F85 - #x4FEF #x91DC #x65A7 #x812F #x8151 #x5E9C #x8150 #x8D74 #x526F #x8986 - #x8D4B #x590D #x5085 #x4ED8 #x961C #x7236 #x8179 #x8D1F #x5BCC #x8BA3 - #x9644 #x5987 #x7F1A #x5490 #x5676 #x560E #x8BE5 #x6539 #x6982 #x9499 - #x76D6 #x6E89 #x5E72 #x7518 #x6746 #x67D1 #x7AFF #x809D #x8D76 #x611F - #x79C6 #x6562 #x8D63 #x5188 #x521A #x94A2 #x7F38 #x809B #x7EB2 #x5C97 - #x6E2F #x6760 #x7BD9 #x768B #x9AD8 #x818F #x7F94 #x7CD5 #x641E #x9550 - #x7A3F #x544A #x54E5 #x6B4C #x6401 #x6208 #x9E3D #x80F3 #x7599 #x5272 - #x9769 #x845B #x683C #x86E4 #x9601 #x9694 #x94EC #x4E2A #x5404 #x7ED9 - #x6839 #x8DDF #x8015 #x66F4 #x5E9A #x7FB9 #x57C2 #x803F #x6897 #x5DE5 - #x653B #x529F #x606D #x9F9A #x4F9B #x8EAC #x516C #x5BAB #x5F13 #x5DE9 - #x6C5E #x62F1 #x8D21 #x5171 #x94A9 #x52FE #x6C9F #x82DF #x72D7 #x57A2 - #x6784 #x8D2D #x591F #x8F9C #x83C7 #x5495 #x7B8D #x4F30 #x6CBD #x5B64 - #x59D1 #x9F13 #x53E4 #x86CA #x9AA8 #x8C37 #x80A1 #x6545 #x987E #x56FA - #x96C7 #x522E #x74DC #x5250 #x5BE1 #x6302 #x8902 #x4E56 #x62D0 #x602A - #x68FA #x5173 #x5B98 #x51A0 #x89C2 #x7BA1 #x9986 #x7F50 #x60EF #x704C - #x8D2F #x5149 #x5E7F #x901B #x7470 #x89C4 #x572D #x7845 #x5F52 #x9F9F - #x95FA #x8F68 #x9B3C #x8BE1 #x7678 #x6842 #x67DC #x8DEA #x8D35 #x523D - #x8F8A #x6EDA #x68CD #x9505 #x90ED #x56FD #x679C #x88F9 #x8FC7 #x54C8 - #x9AB8 #x5B69 #x6D77 #x6C26 #x4EA5 #x5BB3 #x9A87 #x9163 #x61A8 #x90AF - #x97E9 #x542B #x6DB5 #x5BD2 #x51FD #x558A #x7F55 #x7FF0 #x64BC #x634D - #x65F1 #x61BE #x608D #x710A #x6C57 #x6C49 #x592F #x676D #x822A #x58D5 - #x568E #x8C6A #x6BEB #x90DD #x597D #x8017 #x53F7 #x6D69 #x5475 #x559D - #x8377 #x83CF #x6838 #x79BE #x548C #x4F55 #x5408 #x76D2 #x8C89 #x9602 - #x6CB3 #x6DB8 #x8D6B #x8910 #x9E64 #x8D3A #x563F #x9ED1 #x75D5 #x5F88 - #x72E0 #x6068 #x54FC #x4EA8 #x6A2A #x8861 #x6052 #x8F70 #x54C4 #x70D8 - #x8679 #x9E3F #x6D2A #x5B8F #x5F18 #x7EA2 #x5589 #x4FAF #x7334 #x543C - #x539A #x5019 #x540E #x547C #x4E4E #x5FFD #x745A #x58F6 #x846B #x80E1 - #x8774 #x72D0 #x7CCA #x6E56 #x5F27 #x864E #x552C #x62A4 #x4E92 #x6CAA - #x6237 #x82B1 #x54D7 #x534E #x733E #x6ED1 #x753B #x5212 #x5316 #x8BDD - #x69D0 #x5F8A #x6000 #x6DEE #x574F #x6B22 #x73AF #x6853 #x8FD8 #x7F13 - #x6362 #x60A3 #x5524 #x75EA #x8C62 #x7115 #x6DA3 #x5BA6 #x5E7B #x8352 - #x614C #x9EC4 #x78FA #x8757 #x7C27 #x7687 #x51F0 #x60F6 #x714C #x6643 - #x5E4C #x604D #x8C0E #x7070 #x6325 #x8F89 #x5FBD #x6062 #x86D4 #x56DE - #x6BC1 #x6094 #x6167 #x5349 #x60E0 #x6666 #x8D3F #x79FD #x4F1A #x70E9 - #x6C47 #x8BB3 #x8BF2 #x7ED8 #x8364 #x660F #x5A5A #x9B42 #x6D51 #x6DF7 - #x8C41 #x6D3B #x4F19 #x706B #x83B7 #x6216 #x60D1 #x970D #x8D27 #x7978 - #x51FB #x573E #x57FA #x673A #x7578 #x7A3D #x79EF #x7B95 #x808C #x9965 - #x8FF9 #x6FC0 #x8BA5 #x9E21 #x59EC #x7EE9 #x7F09 #x5409 #x6781 #x68D8 - #x8F91 #x7C4D #x96C6 #x53CA #x6025 #x75BE #x6C72 #x5373 #x5AC9 #x7EA7 - #x6324 #x51E0 #x810A #x5DF1 #x84DF #x6280 #x5180 #x5B63 #x4F0E #x796D - #x5242 #x60B8 #x6D4E #x5BC4 #x5BC2 #x8BA1 #x8BB0 #x65E2 #x5FCC #x9645 - #x5993 #x7EE7 #x7EAA #x5609 #x67B7 #x5939 #x4F73 #x5BB6 #x52A0 #x835A - #x988A #x8D3E #x7532 #x94BE #x5047 #x7A3C #x4EF7 #x67B6 #x9A7E #x5AC1 - #x6B7C #x76D1 #x575A #x5C16 #x7B3A #x95F4 #x714E #x517C #x80A9 #x8270 - #x5978 #x7F04 #x8327 #x68C0 #x67EC #x78B1 #x7877 #x62E3 #x6361 #x7B80 - #x4FED #x526A #x51CF #x8350 #x69DB #x9274 #x8DF5 #x8D31 #x89C1 #x952E - #x7BAD #x4EF6 #x5065 #x8230 #x5251 #x996F #x6E10 #x6E85 #x6DA7 #x5EFA - #x50F5 #x59DC #x5C06 #x6D46 #x6C5F #x7586 #x848B #x6868 #x5956 #x8BB2 - #x5320 #x9171 #x964D #x8549 #x6912 #x7901 #x7126 #x80F6 #x4EA4 #x90CA - #x6D47 #x9A84 #x5A07 #x56BC #x6405 #x94F0 #x77EB #x4FA5 #x811A #x72E1 - #x89D2 #x997A #x7F34 #x7EDE #x527F #x6559 #x9175 #x8F7F #x8F83 #x53EB - #x7A96 #x63ED #x63A5 #x7686 #x79F8 #x8857 #x9636 #x622A #x52AB #x8282 - #x6854 #x6770 #x6377 #x776B #x7AED #x6D01 #x7ED3 #x89E3 #x59D0 #x6212 - #x85C9 #x82A5 #x754C #x501F #x4ECB #x75A5 #x8BEB #x5C4A #x5DFE #x7B4B - #x65A4 #x91D1 #x4ECA #x6D25 #x895F #x7D27 #x9526 #x4EC5 #x8C28 #x8FDB - #x9773 #x664B #x7981 #x8FD1 #x70EC #x6D78 #x5C3D #x52B2 #x8346 #x5162 - #x830E #x775B #x6676 #x9CB8 #x4EAC #x60CA #x7CBE #x7CB3 #x7ECF #x4E95 - #x8B66 #x666F #x9888 #x9759 #x5883 #x656C #x955C #x5F84 #x75C9 #x9756 - #x7ADF #x7ADE #x51C0 #x70AF #x7A98 #x63EA #x7A76 #x7EA0 #x7396 #x97ED - #x4E45 #x7078 #x4E5D #x9152 #x53A9 #x6551 #x65E7 #x81FC #x8205 #x548E - #x5C31 #x759A #x97A0 #x62D8 #x72D9 #x75BD #x5C45 #x9A79 #x83CA #x5C40 - #x5480 #x77E9 #x4E3E #x6CAE #x805A #x62D2 #x636E #x5DE8 #x5177 #x8DDD - #x8E1E #x952F #x4FF1 #x53E5 #x60E7 #x70AC #x5267 #x6350 #x9E43 #x5A1F - #x5026 #x7737 #x5377 #x7EE2 #x6485 #x652B #x6289 #x6398 #x5014 #x7235 - #x89C9 #x51B3 #x8BC0 #x7EDD #x5747 #x83CC #x94A7 #x519B #x541B #x5CFB - #x4FCA #x7AE3 #x6D5A #x90E1 #x9A8F #x5580 #x5496 #x5361 #x54AF #x5F00 - #x63E9 #x6977 #x51EF #x6168 #x520A #x582A #x52D8 #x574E #x780D #x770B - #x5EB7 #x6177 #x7CE0 #x625B #x6297 #x4EA2 #x7095 #x8003 #x62F7 #x70E4 - #x9760 #x5777 #x82DB #x67EF #x68F5 #x78D5 #x9897 #x79D1 #x58F3 #x54B3 - #x53EF #x6E34 #x514B #x523B #x5BA2 #x8BFE #x80AF #x5543 #x57A6 #x6073 - #x5751 #x542D #x7A7A #x6050 #x5B54 #x63A7 #x62A0 #x53E3 #x6263 #x5BC7 - #x67AF #x54ED #x7A9F #x82E6 #x9177 #x5E93 #x88E4 #x5938 #x57AE #x630E - #x8DE8 #x80EF #x5757 #x7B77 #x4FA9 #x5FEB #x5BBD #x6B3E #x5321 #x7B50 - #x72C2 #x6846 #x77FF #x7736 #x65F7 #x51B5 #x4E8F #x76D4 #x5CBF #x7AA5 - #x8475 #x594E #x9B41 #x5080 #x9988 #x6127 #x6E83 #x5764 #x6606 #x6346 - #x56F0 #x62EC #x6269 #x5ED3 #x9614 #x5783 #x62C9 #x5587 #x8721 #x814A - #x8FA3 #x5566 #x83B1 #x6765 #x8D56 #x84DD #x5A6A #x680F #x62E6 #x7BEE - #x9611 #x5170 #x6F9C #x8C30 #x63FD #x89C8 #x61D2 #x7F06 #x70C2 #x6EE5 - #x7405 #x6994 #x72FC #x5ECA #x90CE #x6717 #x6D6A #x635E #x52B3 #x7262 - #x8001 #x4F6C #x59E5 #x916A #x70D9 #x6D9D #x52D2 #x4E50 #x96F7 #x956D - #x857E #x78CA #x7D2F #x5121 #x5792 #x64C2 #x808B #x7C7B #x6CEA #x68F1 - #x695E #x51B7 #x5398 #x68A8 #x7281 #x9ECE #x7BF1 #x72F8 #x79BB #x6F13 - #x7406 #x674E #x91CC #x9CA4 #x793C #x8389 #x8354 #x540F #x6817 #x4E3D - #x5389 #x52B1 #x783E #x5386 #x5229 #x5088 #x4F8B #x4FD0 #x75E2 #x7ACB - #x7C92 #x6CA5 #x96B6 #x529B #x7483 #x54E9 #x4FE9 #x8054 #x83B2 #x8FDE - #x9570 #x5EC9 #x601C #x6D9F #x5E18 #x655B #x8138 #x94FE #x604B #x70BC - #x7EC3 #x7CAE #x51C9 #x6881 #x7CB1 #x826F #x4E24 #x8F86 #x91CF #x667E - #x4EAE #x8C05 #x64A9 #x804A #x50DA #x7597 #x71CE #x5BE5 #x8FBD #x6F66 - #x4E86 #x6482 #x9563 #x5ED6 #x6599 #x5217 #x88C2 #x70C8 #x52A3 #x730E - #x7433 #x6797 #x78F7 #x9716 #x4E34 #x90BB #x9CDE #x6DCB #x51DB #x8D41 - #x541D #x62CE #x73B2 #x83F1 #x96F6 #x9F84 #x94C3 #x4F36 #x7F9A #x51CC - #x7075 #x9675 #x5CAD #x9886 #x53E6 #x4EE4 #x6E9C #x7409 #x69B4 #x786B - #x998F #x7559 #x5218 #x7624 #x6D41 #x67F3 #x516D #x9F99 #x804B #x5499 - #x7B3C #x7ABF #x9686 #x5784 #x62E2 #x9647 #x697C #x5A04 #x6402 #x7BD3 - #x6F0F #x964B #x82A6 #x5362 #x9885 #x5E90 #x7089 #x63B3 #x5364 #x864F - #x9C81 #x9E93 #x788C #x9732 #x8DEF #x8D42 #x9E7F #x6F5E #x7984 #x5F55 - #x9646 #x622E #x9A74 #x5415 #x94DD #x4FA3 #x65C5 #x5C65 #x5C61 #x7F15 - #x8651 #x6C2F #x5F8B #x7387 #x6EE4 #x7EFF #x5CE6 #x631B #x5B6A #x6EE6 - #x5375 #x4E71 #x63A0 #x7565 #x62A1 #x8F6E #x4F26 #x4ED1 #x6CA6 #x7EB6 - #x8BBA #x841D #x87BA #x7F57 #x903B #x9523 #x7BA9 #x9AA1 #x88F8 #x843D - #x6D1B #x9A86 #x7EDC #x5988 #x9EBB #x739B #x7801 #x8682 #x9A6C #x9A82 - #x561B #x5417 #x57CB #x4E70 #x9EA6 #x5356 #x8FC8 #x8109 #x7792 #x9992 - #x86EE #x6EE1 #x8513 #x66FC #x6162 #x6F2B #x8C29 #x8292 #x832B #x76F2 - #x6C13 #x5FD9 #x83BD #x732B #x8305 #x951A #x6BDB #x77DB #x94C6 #x536F - #x8302 #x5192 #x5E3D #x8C8C #x8D38 #x4E48 #x73AB #x679A #x6885 #x9176 - #x9709 #x7164 #x6CA1 #x7709 #x5A92 #x9541 #x6BCF #x7F8E #x6627 #x5BD0 - #x59B9 #x5A9A #x95E8 #x95F7 #x4EEC #x840C #x8499 #x6AAC #x76DF #x9530 - #x731B #x68A6 #x5B5F #x772F #x919A #x9761 #x7CDC #x8FF7 #x8C1C #x5F25 - #x7C73 #x79D8 #x89C5 #x6CCC #x871C #x5BC6 #x5E42 #x68C9 #x7720 #x7EF5 - #x5195 #x514D #x52C9 #x5A29 #x7F05 #x9762 #x82D7 #x63CF #x7784 #x85D0 - #x79D2 #x6E3A #x5E99 #x5999 #x8511 #x706D #x6C11 #x62BF #x76BF #x654F - #x60AF #x95FD #x660E #x879F #x9E23 #x94ED #x540D #x547D #x8C2C #x6478 - #x6479 #x8611 #x6A21 #x819C #x78E8 #x6469 #x9B54 #x62B9 #x672B #x83AB - #x58A8 #x9ED8 #x6CAB #x6F20 #x5BDE #x964C #x8C0B #x725F #x67D0 #x62C7 - #x7261 #x4EA9 #x59C6 #x6BCD #x5893 #x66AE #x5E55 #x52DF #x6155 #x6728 - #x76EE #x7766 #x7267 #x7A46 #x62FF #x54EA #x5450 #x94A0 #x90A3 #x5A1C - #x7EB3 #x6C16 #x4E43 #x5976 #x8010 #x5948 #x5357 #x7537 #x96BE #x56CA - #x6320 #x8111 #x607C #x95F9 #x6DD6 #x5462 #x9981 #x5185 #x5AE9 #x80FD - #x59AE #x9713 #x502A #x6CE5 #x5C3C #x62DF #x4F60 #x533F #x817B #x9006 - #x6EBA #x852B #x62C8 #x5E74 #x78BE #x64B5 #x637B #x5FF5 #x5A18 #x917F - #x9E1F #x5C3F #x634F #x8042 #x5B7D #x556E #x954A #x954D #x6D85 #x60A8 - #x67E0 #x72DE #x51DD #x5B81 #x62E7 #x6CDE #x725B #x626D #x94AE #x7EBD - #x8113 #x6D53 #x519C #x5F04 #x5974 #x52AA #x6012 #x5973 #x6696 #x8650 - #x759F #x632A #x61E6 #x7CEF #x8BFA #x54E6 #x6B27 #x9E25 #x6BB4 #x85D5 - #x5455 #x5076 #x6CA4 #x556A #x8DB4 #x722C #x5E15 #x6015 #x7436 #x62CD - #x6392 #x724C #x5F98 #x6E43 #x6D3E #x6500 #x6F58 #x76D8 #x78D0 #x76FC - #x7554 #x5224 #x53DB #x4E53 #x5E9E #x65C1 #x802A #x80D6 #x629B #x5486 - #x5228 #x70AE #x888D #x8DD1 #x6CE1 #x5478 #x80DA #x57F9 #x88F4 #x8D54 - #x966A #x914D #x4F69 #x6C9B #x55B7 #x76C6 #x7830 #x62A8 #x70F9 #x6F8E - #x5F6D #x84EC #x68DA #x787C #x7BF7 #x81A8 #x670B #x9E4F #x6367 #x78B0 - #x576F #x7812 #x9739 #x6279 #x62AB #x5288 #x7435 #x6BD7 #x5564 #x813E - #x75B2 #x76AE #x5339 #x75DE #x50FB #x5C41 #x8B6C #x7BC7 #x504F #x7247 - #x9A97 #x98D8 #x6F02 #x74E2 #x7968 #x6487 #x77A5 #x62FC #x9891 #x8D2B - #x54C1 #x8058 #x4E52 #x576A #x82F9 #x840D #x5E73 #x51ED #x74F6 #x8BC4 - #x5C4F #x5761 #x6CFC #x9887 #x5A46 #x7834 #x9B44 #x8FEB #x7C95 #x5256 - #x6251 #x94FA #x4EC6 #x8386 #x8461 #x83E9 #x84B2 #x57D4 #x6734 #x5703 - #x666E #x6D66 #x8C31 #x66DD #x7011 #x671F #x6B3A #x6816 #x621A #x59BB - #x4E03 #x51C4 #x6F06 #x67D2 #x6C8F #x5176 #x68CB #x5947 #x6B67 #x7566 - #x5D0E #x8110 #x9F50 #x65D7 #x7948 #x7941 #x9A91 #x8D77 #x5C82 #x4E5E - #x4F01 #x542F #x5951 #x780C #x5668 #x6C14 #x8FC4 #x5F03 #x6C7D #x6CE3 - #x8BAB #x6390 #x6070 #x6D3D #x7275 #x6266 #x948E #x94C5 #x5343 #x8FC1 - #x7B7E #x4EDF #x8C26 #x4E7E #x9ED4 #x94B1 #x94B3 #x524D #x6F5C #x9063 - #x6D45 #x8C34 #x5811 #x5D4C #x6B20 #x6B49 #x67AA #x545B #x8154 #x7F8C - #x5899 #x8537 #x5F3A #x62A2 #x6A47 #x9539 #x6572 #x6084 #x6865 #x77A7 - #x4E54 #x4FA8 #x5DE7 #x9798 #x64AC #x7FD8 #x5CED #x4FCF #x7A8D #x5207 - #x8304 #x4E14 #x602F #x7A83 #x94A6 #x4FB5 #x4EB2 #x79E6 #x7434 #x52E4 - #x82B9 #x64D2 #x79BD #x5BDD #x6C81 #x9752 #x8F7B #x6C22 #x503E #x537F - #x6E05 #x64CE #x6674 #x6C30 #x60C5 #x9877 #x8BF7 #x5E86 #x743C #x7A77 - #x79CB #x4E18 #x90B1 #x7403 #x6C42 #x56DA #x914B #x6CC5 #x8D8B #x533A - #x86C6 #x66F2 #x8EAF #x5C48 #x9A71 #x6E20 #x53D6 #x5A36 #x9F8B #x8DA3 - #x53BB #x5708 #x98A7 #x6743 #x919B #x6CC9 #x5168 #x75CA #x62F3 #x72AC - #x5238 #x529D #x7F3A #x7094 #x7638 #x5374 #x9E4A #x69B7 #x786E #x96C0 - #x88D9 #x7FA4 #x7136 #x71C3 #x5189 #x67D3 #x74E4 #x58E4 #x6518 #x56B7 - #x8BA9 #x9976 #x6270 #x7ED5 #x60F9 #x70ED #x58EC #x4EC1 #x4EBA #x5FCD - #x97E7 #x4EFB #x8BA4 #x5203 #x598A #x7EAB #x6254 #x4ECD #x65E5 #x620E - #x8338 #x84C9 #x8363 #x878D #x7194 #x6EB6 #x5BB9 #x7ED2 #x5197 #x63C9 - #x67D4 #x8089 #x8339 #x8815 #x5112 #x5B7A #x5982 #x8FB1 #x4E73 #x6C5D - #x5165 #x8925 #x8F6F #x962E #x854A #x745E #x9510 #x95F0 #x6DA6 #x82E5 - #x5F31 #x6492 #x6D12 #x8428 #x816E #x9CC3 #x585E #x8D5B #x4E09 #x53C1 - #x4F1E #x6563 #x6851 #x55D3 #x4E27 #x6414 #x9A9A #x626B #x5AC2 #x745F - #x8272 #x6DA9 #x68EE #x50E7 #x838E #x7802 #x6740 #x5239 #x6C99 #x7EB1 - #x50BB #x5565 #x715E #x7B5B #x6652 #x73CA #x82EB #x6749 #x5C71 #x5220 - #x717D #x886B #x95EA #x9655 #x64C5 #x8D61 #x81B3 #x5584 #x6C55 #x6247 - #x7F2E #x5892 #x4F24 #x5546 #x8D4F #x664C #x4E0A #x5C1A #x88F3 #x68A2 - #x634E #x7A0D #x70E7 #x828D #x52FA #x97F6 #x5C11 #x54E8 #x90B5 #x7ECD - #x5962 #x8D4A #x86C7 #x820C #x820D #x8D66 #x6444 #x5C04 #x6151 #x6D89 - #x793E #x8BBE #x7837 #x7533 #x547B #x4F38 #x8EAB #x6DF1 #x5A20 #x7EC5 - #x795E #x6C88 #x5BA1 #x5A76 #x751A #x80BE #x614E #x6E17 #x58F0 #x751F - #x7525 #x7272 #x5347 #x7EF3 #x7701 #x76DB #x5269 #x80DC #x5723 #x5E08 - #x5931 #x72EE #x65BD #x6E7F #x8BD7 #x5C38 #x8671 #x5341 #x77F3 #x62FE - #x65F6 #x4EC0 #x98DF #x8680 #x5B9E #x8BC6 #x53F2 #x77E2 #x4F7F #x5C4E - #x9A76 #x59CB #x5F0F #x793A #x58EB #x4E16 #x67FF #x4E8B #x62ED #x8A93 - #x901D #x52BF #x662F #x55DC #x566C #x9002 #x4ED5 #x4F8D #x91CA #x9970 - #x6C0F #x5E02 #x6043 #x5BA4 #x89C6 #x8BD5 #x6536 #x624B #x9996 #x5B88 - #x5BFF #x6388 #x552E #x53D7 #x7626 #x517D #x852C #x67A2 #x68B3 #x6B8A - #x6292 #x8F93 #x53D4 #x8212 #x6DD1 #x758F #x4E66 #x8D4E #x5B70 #x719F - #x85AF #x6691 #x66D9 #x7F72 #x8700 #x9ECD #x9F20 #x5C5E #x672F #x8FF0 - #x6811 #x675F #x620D #x7AD6 #x5885 #x5EB6 #x6570 #x6F31 #x6055 #x5237 - #x800D #x6454 #x8870 #x7529 #x5E05 #x6813 #x62F4 #x971C #x53CC #x723D - #x8C01 #x6C34 #x7761 #x7A0E #x542E #x77AC #x987A #x821C #x8BF4 #x7855 - #x6714 #x70C1 #x65AF #x6495 #x5636 #x601D #x79C1 #x53F8 #x4E1D #x6B7B - #x8086 #x5BFA #x55E3 #x56DB #x4F3A #x4F3C #x9972 #x5DF3 #x677E #x8038 - #x6002 #x9882 #x9001 #x5B8B #x8BBC #x8BF5 #x641C #x8258 #x64DE #x55FD - #x82CF #x9165 #x4FD7 #x7D20 #x901F #x7C9F #x50F3 #x5851 #x6EAF #x5BBF - #x8BC9 #x8083 #x9178 #x849C #x7B97 #x867D #x968B #x968F #x7EE5 #x9AD3 - #x788E #x5C81 #x7A57 #x9042 #x96A7 #x795F #x5B59 #x635F #x7B0B #x84D1 - #x68AD #x5506 #x7F29 #x7410 #x7D22 #x9501 #x6240 #x584C #x4ED6 #x5B83 - #x5979 #x5854 #x736D #x631E #x8E4B #x8E0F #x80CE #x82D4 #x62AC #x53F0 - #x6CF0 #x915E #x592A #x6001 #x6C70 #x574D #x644A #x8D2A #x762B #x6EE9 - #x575B #x6A80 #x75F0 #x6F6D #x8C2D #x8C08 #x5766 #x6BEF #x8892 #x78B3 - #x63A2 #x53F9 #x70AD #x6C64 #x5858 #x642A #x5802 #x68E0 #x819B #x5510 - #x7CD6 #x5018 #x8EBA #x6DCC #x8D9F #x70EB #x638F #x6D9B #x6ED4 #x7EE6 - #x8404 #x6843 #x9003 #x6DD8 #x9676 #x8BA8 #x5957 #x7279 #x85E4 #x817E - #x75BC #x8A8A #x68AF #x5254 #x8E22 #x9511 #x63D0 #x9898 #x8E44 #x557C - #x4F53 #x66FF #x568F #x60D5 #x6D95 #x5243 #x5C49 #x5929 #x6DFB #x586B - #x7530 #x751C #x606C #x8214 #x8146 #x6311 #x6761 #x8FE2 #x773A #x8DF3 - #x8D34 #x94C1 #x5E16 #x5385 #x542C #x70C3 #x6C40 #x5EF7 #x505C #x4EAD - #x5EAD #x633A #x8247 #x901A #x6850 #x916E #x77B3 #x540C #x94DC #x5F64 - #x7AE5 #x6876 #x6345 #x7B52 #x7EDF #x75DB #x5077 #x6295 #x5934 #x900F - #x51F8 #x79C3 #x7A81 #x56FE #x5F92 #x9014 #x6D82 #x5C60 #x571F #x5410 - #x5154 #x6E4D #x56E2 #x63A8 #x9893 #x817F #x8715 #x892A #x9000 #x541E - #x5C6F #x81C0 #x62D6 #x6258 #x8131 #x9E35 #x9640 #x9A6E #x9A7C #x692D - #x59A5 #x62D3 #x553E #x6316 #x54C7 #x86D9 #x6D3C #x5A03 #x74E6 #x889C - #x6B6A #x5916 #x8C4C #x5F2F #x6E7E #x73A9 #x987D #x4E38 #x70F7 #x5B8C - #x7897 #x633D #x665A #x7696 #x60CB #x5B9B #x5A49 #x4E07 #x8155 #x6C6A - #x738B #x4EA1 #x6789 #x7F51 #x5F80 #x65FA #x671B #x5FD8 #x5984 #x5A01 - #x5DCD #x5FAE #x5371 #x97E6 #x8FDD #x6845 #x56F4 #x552F #x60DF #x4E3A - #x6F4D #x7EF4 #x82C7 #x840E #x59D4 #x4F1F #x4F2A #x5C3E #x7EAC #x672A - #x851A #x5473 #x754F #x80C3 #x5582 #x9B4F #x4F4D #x6E2D #x8C13 #x5C09 - #x6170 #x536B #x761F #x6E29 #x868A #x6587 #x95FB #x7EB9 #x543B #x7A33 - #x7D0A #x95EE #x55E1 #x7FC1 #x74EE #x631D #x8717 #x6DA1 #x7A9D #x6211 - #x65A1 #x5367 #x63E1 #x6C83 #x5DEB #x545C #x94A8 #x4E4C #x6C61 #x8BEC - #x5C4B #x65E0 #x829C #x68A7 #x543E #x5434 #x6BCB #x6B66 #x4E94 #x6342 - #x5348 #x821E #x4F0D #x4FAE #x575E #x620A #x96FE #x6664 #x7269 #x52FF - #x52A1 #x609F #x8BEF #x6614 #x7199 #x6790 #x897F #x7852 #x77FD #x6670 - #x563B #x5438 #x9521 #x727A #x7A00 #x606F #x5E0C #x6089 #x819D #x5915 - #x60DC #x7184 #x70EF #x6EAA #x6C50 #x7280 #x6A84 #x88AD #x5E2D #x4E60 - #x5AB3 #x559C #x94E3 #x6D17 #x7CFB #x9699 #x620F #x7EC6 #x778E #x867E - #x5323 #x971E #x8F96 #x6687 #x5CE1 #x4FA0 #x72ED #x4E0B #x53A6 #x590F - #x5413 #x6380 #x9528 #x5148 #x4ED9 #x9C9C #x7EA4 #x54B8 #x8D24 #x8854 - #x8237 #x95F2 #x6D8E #x5F26 #x5ACC #x663E #x9669 #x73B0 #x732E #x53BF - #x817A #x9985 #x7FA1 #x5BAA #x9677 #x9650 #x7EBF #x76F8 #x53A2 #x9576 - #x9999 #x7BB1 #x8944 #x6E58 #x4E61 #x7FD4 #x7965 #x8BE6 #x60F3 #x54CD - #x4EAB #x9879 #x5DF7 #x6A61 #x50CF #x5411 #x8C61 #x8427 #x785D #x9704 - #x524A #x54EE #x56A3 #x9500 #x6D88 #x5BB5 #x6DC6 #x6653 #x5C0F #x5B5D - #x6821 #x8096 #x5578 #x7B11 #x6548 #x6954 #x4E9B #x6B47 #x874E #x978B - #x534F #x631F #x643A #x90AA #x659C #x80C1 #x8C10 #x5199 #x68B0 #x5378 - #x87F9 #x61C8 #x6CC4 #x6CFB #x8C22 #x5C51 #x85AA #x82AF #x950C #x6B23 - #x8F9B #x65B0 #x5FFB #x5FC3 #x4FE1 #x8845 #x661F #x8165 #x7329 #x60FA - #x5174 #x5211 #x578B #x5F62 #x90A2 #x884C #x9192 #x5E78 #x674F #x6027 - #x59D3 #x5144 #x51F6 #x80F8 #x5308 #x6C79 #x96C4 #x718A #x4F11 #x4FEE - #x7F9E #x673D #x55C5 #x9508 #x79C0 #x8896 #x7EE3 #x589F #x620C #x9700 - #x865A #x5618 #x987B #x5F90 #x8BB8 #x84C4 #x9157 #x53D9 #x65ED #x5E8F - #x755C #x6064 #x7D6E #x5A7F #x7EEA #x7EED #x8F69 #x55A7 #x5BA3 #x60AC - #x65CB #x7384 #x9009 #x7663 #x7729 #x7EDA #x9774 #x859B #x5B66 #x7A74 - #x96EA #x8840 #x52CB #x718F #x5FAA #x65EC #x8BE2 #x5BFB #x9A6F #x5DE1 - #x6B89 #x6C5B #x8BAD #x8BAF #x900A #x8FC5 #x538B #x62BC #x9E26 #x9E2D - #x5440 #x4E2B #x82BD #x7259 #x869C #x5D16 #x8859 #x6DAF #x96C5 #x54D1 - #x4E9A #x8BB6 #x7109 #x54BD #x9609 #x70DF #x6DF9 #x76D0 #x4E25 #x7814 - #x8712 #x5CA9 #x5EF6 #x8A00 #x989C #x960E #x708E #x6CBF #x5944 #x63A9 - #x773C #x884D #x6F14 #x8273 #x5830 #x71D5 #x538C #x781A #x96C1 #x5501 - #x5F66 #x7130 #x5BB4 #x8C1A #x9A8C #x6B83 #x592E #x9E2F #x79E7 #x6768 - #x626C #x4F6F #x75A1 #x7F8A #x6D0B #x9633 #x6C27 #x4EF0 #x75D2 #x517B - #x6837 #x6F3E #x9080 #x8170 #x5996 #x7476 #x6447 #x5C27 #x9065 #x7A91 - #x8C23 #x59DA #x54AC #x8200 #x836F #x8981 #x8000 #x6930 #x564E #x8036 - #x7237 #x91CE #x51B6 #x4E5F #x9875 #x6396 #x4E1A #x53F6 #x66F3 #x814B - #x591C #x6DB2 #x4E00 #x58F9 #x533B #x63D6 #x94F1 #x4F9D #x4F0A #x8863 - #x9890 #x5937 #x9057 #x79FB #x4EEA #x80F0 #x7591 #x6C82 #x5B9C #x59E8 - #x5F5D #x6905 #x8681 #x501A #x5DF2 #x4E59 #x77E3 #x4EE5 #x827A #x6291 - #x6613 #x9091 #x5C79 #x4EBF #x5F79 #x81C6 #x9038 #x8084 #x75AB #x4EA6 - #x88D4 #x610F #x6BC5 #x5FC6 #x4E49 #x76CA #x6EA2 #x8BE3 #x8BAE #x8C0A - #x8BD1 #x5F02 #x7FFC #x7FCC #x7ECE #x8335 #x836B #x56E0 #x6BB7 #x97F3 - #x9634 #x59FB #x541F #x94F6 #x6DEB #x5BC5 #x996E #x5C39 #x5F15 #x9690 - #x5370 #x82F1 #x6A31 #x5A74 #x9E70 #x5E94 #x7F28 #x83B9 #x8424 #x8425 - #x8367 #x8747 #x8FCE #x8D62 #x76C8 #x5F71 #x9896 #x786C #x6620 #x54DF - #x62E5 #x4F63 #x81C3 #x75C8 #x5EB8 #x96CD #x8E0A #x86F9 #x548F #x6CF3 - #x6D8C #x6C38 #x607F #x52C7 #x7528 #x5E7D #x4F18 #x60A0 #x5FE7 #x5C24 - #x7531 #x90AE #x94C0 #x72B9 #x6CB9 #x6E38 #x9149 #x6709 #x53CB #x53F3 - #x4F51 #x91C9 #x8BF1 #x53C8 #x5E7C #x8FC2 #x6DE4 #x4E8E #x76C2 #x6986 - #x865E #x611A #x8206 #x4F59 #x4FDE #x903E #x9C7C #x6109 #x6E1D #x6E14 - #x9685 #x4E88 #x5A31 #x96E8 #x4E0E #x5C7F #x79B9 #x5B87 #x8BED #x7FBD - #x7389 #x57DF #x828B #x90C1 #x5401 #x9047 #x55BB #x5CEA #x5FA1 #x6108 - #x6B32 #x72F1 #x80B2 #x8A89 #x6D74 #x5BD3 #x88D5 #x9884 #x8C6B #x9A6D - #x9E33 #x6E0A #x51A4 #x5143 #x57A3 #x8881 #x539F #x63F4 #x8F95 #x56ED - #x5458 #x5706 #x733F #x6E90 #x7F18 #x8FDC #x82D1 #x613F #x6028 #x9662 - #x66F0 #x7EA6 #x8D8A #x8DC3 #x94A5 #x5CB3 #x7CA4 #x6708 #x60A6 #x9605 - #x8018 #x4E91 #x90E7 #x5300 #x9668 #x5141 #x8FD0 #x8574 #x915D #x6655 - #x97F5 #x5B55 #x531D #x7838 #x6742 #x683D #x54C9 #x707E #x5BB0 #x8F7D - #x518D #x5728 #x54B1 #x6512 #x6682 #x8D5E #x8D43 #x810F #x846C #x906D - #x7CDF #x51FF #x85FB #x67A3 #x65E9 #x6FA1 #x86A4 #x8E81 #x566A #x9020 - #x7682 #x7076 #x71E5 #x8D23 #x62E9 #x5219 #x6CFD #x8D3C #x600E #x589E - #x618E #x66FE #x8D60 #x624E #x55B3 #x6E23 #x672D #x8F67 #x94E1 #x95F8 - #x7728 #x6805 #x69A8 #x548B #x4E4D #x70B8 #x8BC8 #x6458 #x658B #x5B85 - #x7A84 #x503A #x5BE8 #x77BB #x6BE1 #x8A79 #x7C98 #x6CBE #x76CF #x65A9 - #x8F97 #x5D2D #x5C55 #x8638 #x6808 #x5360 #x6218 #x7AD9 #x6E5B #x7EFD - #x6A1F #x7AE0 #x5F70 #x6F33 #x5F20 #x638C #x6DA8 #x6756 #x4E08 #x5E10 - #x8D26 #x4ED7 #x80C0 #x7634 #x969C #x62DB #x662D #x627E #x6CBC #x8D75 - #x7167 #x7F69 #x5146 #x8087 #x53EC #x906E #x6298 #x54F2 #x86F0 #x8F99 - #x8005 #x9517 #x8517 #x8FD9 #x6D59 #x73CD #x659F #x771F #x7504 #x7827 - #x81FB #x8D1E #x9488 #x4FA6 #x6795 #x75B9 #x8BCA #x9707 #x632F #x9547 - #x9635 #x84B8 #x6323 #x7741 #x5F81 #x72F0 #x4E89 #x6014 #x6574 #x62EF - #x6B63 #x653F #x5E27 #x75C7 #x90D1 #x8BC1 #x829D #x679D #x652F #x5431 - #x8718 #x77E5 #x80A2 #x8102 #x6C41 #x4E4B #x7EC7 #x804C #x76F4 #x690D - #x6B96 #x6267 #x503C #x4F84 #x5740 #x6307 #x6B62 #x8DBE #x53EA #x65E8 - #x7EB8 #x5FD7 #x631A #x63B7 #x81F3 #x81F4 #x7F6E #x5E1C #x5CD9 #x5236 - #x667A #x79E9 #x7A1A #x8D28 #x7099 #x75D4 #x6EDE #x6CBB #x7A92 #x4E2D - #x76C5 #x5FE0 #x949F #x8877 #x7EC8 #x79CD #x80BF #x91CD #x4EF2 #x4F17 - #x821F #x5468 #x5DDE #x6D32 #x8BCC #x7CA5 #x8F74 #x8098 #x5E1A #x5492 - #x76B1 #x5B99 #x663C #x9AA4 #x73E0 #x682A #x86DB #x6731 #x732A #x8BF8 - #x8BDB #x9010 #x7AF9 #x70DB #x716E #x62C4 #x77A9 #x5631 #x4E3B #x8457 - #x67F1 #x52A9 #x86C0 #x8D2E #x94F8 #x7B51 #x4F4F #x6CE8 #x795D #x9A7B - #x6293 #x722A #x62FD #x4E13 #x7816 #x8F6C #x64B0 #x8D5A #x7BC6 #x6869 - #x5E84 #x88C5 #x5986 #x649E #x58EE #x72B6 #x690E #x9525 #x8FFD #x8D58 - #x5760 #x7F00 #x8C06 #x51C6 #x6349 #x62D9 #x5353 #x684C #x7422 #x8301 - #x914C #x5544 #x7740 #x707C #x6D4A #x5179 #x54A8 #x8D44 #x59FF #x6ECB - #x6DC4 #x5B5C #x7D2B #x4ED4 #x7C7D #x6ED3 #x5B50 #x81EA #x6E0D #x5B57 - #x9B03 #x68D5 #x8E2A #x5B97 #x7EFC #x603B #x7EB5 #x90B9 #x8D70 #x594F - #x63CD #x79DF #x8DB3 #x5352 #x65CF #x7956 #x8BC5 #x963B #x7EC4 #x94BB - #x7E82 #x5634 #x9189 #x6700 #x7F6A #x5C0A #x9075 #x6628 #x5DE6 #x4F50 - #x67DE #x505A #x4F5C #x5750 #x5EA7 #x4E8D #x4E0C #x5140 #x4E10 #x5EFF - #x5345 #x4E15 #x4E98 #x4E1E #x9B32 #x5B6C #x5669 #x4E28 #x79BA #x4E3F - #x5315 #x4E47 #x592D #x723B #x536E #x6C10 #x56DF #x80E4 #x9997 #x6BD3 - #x777E #x9F17 #x4E36 #x4E9F #x9F10 #x4E5C #x4E69 #x4E93 #x8288 #x5B5B - #x556C #x560F #x4EC4 #x538D #x539D #x53A3 #x53A5 #x53AE #x9765 #x8D5D - #x531A #x53F5 #x5326 #x532E #x533E #x8D5C #x5366 #x5363 #x5202 #x5208 - #x520E #x522D #x5233 #x523F #x5240 #x524C #x525E #x5261 #x525C #x84AF - #x527D #x5282 #x5281 #x5290 #x5293 #x5182 #x7F54 #x4EBB #x4EC3 #x4EC9 - #x4EC2 #x4EE8 #x4EE1 #x4EEB #x4EDE #x4F1B #x4EF3 #x4F22 #x4F64 #x4EF5 - #x4F25 #x4F27 #x4F09 #x4F2B #x4F5E #x4F67 #x6538 #x4F5A #x4F5D #x4F5F - #x4F57 #x4F32 #x4F3D #x4F76 #x4F74 #x4F91 #x4F89 #x4F83 #x4F8F #x4F7E - #x4F7B #x4FAA #x4F7C #x4FAC #x4F94 #x4FE6 #x4FE8 #x4FEA #x4FC5 #x4FDA - #x4FE3 #x4FDC #x4FD1 #x4FDF #x4FF8 #x5029 #x504C #x4FF3 #x502C #x500F - #x502E #x502D #x4FFE #x501C #x500C #x5025 #x5028 #x507E #x5043 #x5055 - #x5048 #x504E #x506C #x507B #x50A5 #x50A7 #x50A9 #x50BA #x50D6 #x5106 - #x50ED #x50EC #x50E6 #x50EE #x5107 #x510B #x4EDD #x6C3D #x4F58 #x4F65 - #x4FCE #x9FA0 #x6C46 #x7C74 #x516E #x5DFD #x9EC9 #x9998 #x5181 #x5914 - #x52F9 #x530D #x8A07 #x5310 #x51EB #x5919 #x5155 #x4EA0 #x5156 #x4EB3 - #x886E #x88A4 #x4EB5 #x8114 #x88D2 #x7980 #x5B34 #x8803 #x7FB8 #x51AB - #x51B1 #x51BD #x51BC #x51C7 #x5196 #x51A2 #x51A5 #x8BA0 #x8BA6 #x8BA7 - #x8BAA #x8BB4 #x8BB5 #x8BB7 #x8BC2 #x8BC3 #x8BCB #x8BCF #x8BCE #x8BD2 - #x8BD3 #x8BD4 #x8BD6 #x8BD8 #x8BD9 #x8BDC #x8BDF #x8BE0 #x8BE4 #x8BE8 - #x8BE9 #x8BEE #x8BF0 #x8BF3 #x8BF6 #x8BF9 #x8BFC #x8BFF #x8C00 #x8C02 - #x8C04 #x8C07 #x8C0C #x8C0F #x8C11 #x8C12 #x8C14 #x8C15 #x8C16 #x8C19 - #x8C1B #x8C18 #x8C1D #x8C1F #x8C20 #x8C21 #x8C25 #x8C27 #x8C2A #x8C2B - #x8C2E #x8C2F #x8C32 #x8C33 #x8C35 #x8C36 #x5369 #x537A #x961D #x9622 - #x9621 #x9631 #x962A #x963D #x963C #x9642 #x9649 #x9654 #x965F #x9667 - #x966C #x9672 #x9674 #x9688 #x968D #x9697 #x96B0 #x9097 #x909B #x909D - #x9099 #x90AC #x90A1 #x90B4 #x90B3 #x90B6 #x90BA #x90B8 #x90B0 #x90CF - #x90C5 #x90BE #x90D0 #x90C4 #x90C7 #x90D3 #x90E6 #x90E2 #x90DC #x90D7 - #x90DB #x90EB #x90EF #x90FE #x9104 #x9122 #x911E #x9123 #x9131 #x912F - #x9139 #x9143 #x9146 #x520D #x5942 #x52A2 #x52AC #x52AD #x52BE #x54FF - #x52D0 #x52D6 #x52F0 #x53DF #x71EE #x77CD #x5EF4 #x51F5 #x51FC #x9B2F - #x53B6 #x5F01 #x755A #x5DEF #x574C #x57A9 #x57A1 #x587E #x58BC #x58C5 - #x58D1 #x5729 #x572C #x572A #x5733 #x5739 #x572E #x572F #x575C #x573B - #x5742 #x5769 #x5785 #x576B #x5786 #x577C #x577B #x5768 #x576D #x5776 - #x5773 #x57AD #x57A4 #x578C #x57B2 #x57CF #x57A7 #x57B4 #x5793 #x57A0 - #x57D5 #x57D8 #x57DA #x57D9 #x57D2 #x57B8 #x57F4 #x57EF #x57F8 #x57E4 - #x57DD #x580B #x580D #x57FD #x57ED #x5800 #x581E #x5819 #x5844 #x5820 - #x5865 #x586C #x5881 #x5889 #x589A #x5880 #x99A8 #x9F19 #x61FF #x8279 - #x827D #x827F #x828F #x828A #x82A8 #x8284 #x828E #x8291 #x8297 #x8299 - #x82AB #x82B8 #x82BE #x82B0 #x82C8 #x82CA #x82E3 #x8298 #x82B7 #x82AE - #x82CB #x82CC #x82C1 #x82A9 #x82B4 #x82A1 #x82AA #x829F #x82C4 #x82CE - #x82A4 #x82E1 #x8309 #x82F7 #x82E4 #x830F #x8307 #x82DC #x82F4 #x82D2 - #x82D8 #x830C #x82FB #x82D3 #x8311 #x831A #x8306 #x8314 #x8315 #x82E0 - #x82D5 #x831C #x8351 #x835B #x835C #x8308 #x8392 #x833C #x8334 #x8331 - #x839B #x835E #x832F #x834F #x8347 #x8343 #x835F #x8340 #x8317 #x8360 - #x832D #x833A #x8333 #x8366 #x8365 #x8368 #x831B #x8369 #x836C #x836A - #x836D #x836E #x83B0 #x8378 #x83B3 #x83B4 #x83A0 #x83AA #x8393 #x839C - #x8385 #x837C #x83B6 #x83A9 #x837D #x83B8 #x837B #x8398 #x839E #x83A8 - #x83BA #x83BC #x83C1 #x8401 #x83E5 #x83D8 #x5807 #x8418 #x840B #x83DD - #x83FD #x83D6 #x841C #x8438 #x8411 #x8406 #x83D4 #x83DF #x840F #x8403 - #x83F8 #x83F9 #x83EA #x83C5 #x83C0 #x8426 #x83F0 #x83E1 #x845C #x8451 - #x845A #x8459 #x8473 #x8487 #x8488 #x847A #x8489 #x8478 #x843C #x8446 - #x8469 #x8476 #x848C #x848E #x8431 #x846D #x84C1 #x84CD #x84D0 #x84E6 - #x84BD #x84D3 #x84CA #x84BF #x84BA #x84E0 #x84A1 #x84B9 #x84B4 #x8497 - #x84E5 #x84E3 #x850C #x750D #x8538 #x84F0 #x8539 #x851F #x853A #x8556 - #x853B #x84FF #x84FC #x8559 #x8548 #x8568 #x8564 #x855E #x857A #x77A2 - #x8543 #x8572 #x857B #x85A4 #x85A8 #x8587 #x858F #x8579 #x85AE #x859C - #x8585 #x85B9 #x85B7 #x85B0 #x85D3 #x85C1 #x85DC #x85FF #x8627 #x8605 - #x8629 #x8616 #x863C #x5EFE #x5F08 #x593C #x5941 #x8037 #x5955 #x595A - #x5958 #x530F #x5C22 #x5C25 #x5C2C #x5C34 #x624C #x626A #x629F #x62BB - #x62CA #x62DA #x62D7 #x62EE #x6322 #x62F6 #x6339 #x634B #x6343 #x63AD - #x63F6 #x6371 #x637A #x638E #x63B4 #x636D #x63AC #x638A #x6369 #x63AE - #x63BC #x63F2 #x63F8 #x63E0 #x63FF #x63C4 #x63DE #x63CE #x6452 #x63C6 - #x63BE #x6445 #x6441 #x640B #x641B #x6420 #x640C #x6426 #x6421 #x645E - #x6484 #x646D #x6496 #x647A #x64B7 #x64B8 #x6499 #x64BA #x64C0 #x64D0 - #x64D7 #x64E4 #x64E2 #x6509 #x6525 #x652E #x5F0B #x5FD2 #x7519 #x5F11 - #x535F #x53F1 #x53FD #x53E9 #x53E8 #x53FB #x5412 #x5416 #x5406 #x544B - #x5452 #x5453 #x5454 #x5456 #x5443 #x5421 #x5457 #x5459 #x5423 #x5432 - #x5482 #x5494 #x5477 #x5471 #x5464 #x549A #x549B #x5484 #x5476 #x5466 - #x549D #x54D0 #x54AD #x54C2 #x54B4 #x54D2 #x54A7 #x54A6 #x54D3 #x54D4 - #x5472 #x54A3 #x54D5 #x54BB #x54BF #x54CC #x54D9 #x54DA #x54DC #x54A9 - #x54AA #x54A4 #x54DD #x54CF #x54DE #x551B #x54E7 #x5520 #x54FD #x5514 - #x54F3 #x5522 #x5523 #x550F #x5511 #x5527 #x552A #x5567 #x558F #x55B5 - #x5549 #x556D #x5541 #x5555 #x553F #x5550 #x553C #x5537 #x5556 #x5575 - #x5576 #x5577 #x5533 #x5530 #x555C #x558B #x55D2 #x5583 #x55B1 #x55B9 - #x5588 #x5581 #x559F #x557E #x55D6 #x5591 #x557B #x55DF #x55BD #x55BE - #x5594 #x5599 #x55EA #x55F7 #x55C9 #x561F #x55D1 #x55EB #x55EC #x55D4 - #x55E6 #x55DD #x55C4 #x55EF #x55E5 #x55F2 #x55F3 #x55CC #x55CD #x55E8 - #x55F5 #x55E4 #x8F94 #x561E #x5608 #x560C #x5601 #x5624 #x5623 #x55FE - #x5600 #x5627 #x562D #x5658 #x5639 #x5657 #x562C #x564D #x5662 #x5659 - #x565C #x564C #x5654 #x5686 #x5664 #x5671 #x566B #x567B #x567C #x5685 - #x5693 #x56AF #x56D4 #x56D7 #x56DD #x56E1 #x56F5 #x56EB #x56F9 #x56FF - #x5704 #x570A #x5709 #x571C #x5E0F #x5E19 #x5E14 #x5E11 #x5E31 #x5E3B - #x5E3C #x5E37 #x5E44 #x5E54 #x5E5B #x5E5E #x5E61 #x5C8C #x5C7A #x5C8D - #x5C90 #x5C96 #x5C88 #x5C98 #x5C99 #x5C91 #x5C9A #x5C9C #x5CB5 #x5CA2 - #x5CBD #x5CAC #x5CAB #x5CB1 #x5CA3 #x5CC1 #x5CB7 #x5CC4 #x5CD2 #x5CE4 - #x5CCB #x5CE5 #x5D02 #x5D03 #x5D27 #x5D26 #x5D2E #x5D24 #x5D1E #x5D06 - #x5D1B #x5D58 #x5D3E #x5D34 #x5D3D #x5D6C #x5D5B #x5D6F #x5D5D #x5D6B - #x5D4B #x5D4A #x5D69 #x5D74 #x5D82 #x5D99 #x5D9D #x8C73 #x5DB7 #x5DC5 - #x5F73 #x5F77 #x5F82 #x5F87 #x5F89 #x5F8C #x5F95 #x5F99 #x5F9C #x5FA8 - #x5FAD #x5FB5 #x5FBC #x8862 #x5F61 #x72AD #x72B0 #x72B4 #x72B7 #x72B8 - #x72C3 #x72C1 #x72CE #x72CD #x72D2 #x72E8 #x72EF #x72E9 #x72F2 #x72F4 - #x72F7 #x7301 #x72F3 #x7303 #x72FA #x72FB #x7317 #x7313 #x7321 #x730A - #x731E #x731D #x7315 #x7322 #x7339 #x7325 #x732C #x7338 #x7331 #x7350 - #x734D #x7357 #x7360 #x736C #x736F #x737E #x821B #x5925 #x98E7 #x5924 - #x5902 #x9963 #x9967 #x9968 #x9969 #x996A #x996B #x996C #x9974 #x9977 - #x997D #x9980 #x9984 #x9987 #x998A #x998D #x9990 #x9991 #x9993 #x9994 - #x9995 #x5E80 #x5E91 #x5E8B #x5E96 #x5EA5 #x5EA0 #x5EB9 #x5EB5 #x5EBE - #x5EB3 #x8D53 #x5ED2 #x5ED1 #x5EDB #x5EE8 #x5EEA #x81BA #x5FC4 #x5FC9 - #x5FD6 #x5FCF #x6003 #x5FEE #x6004 #x5FE1 #x5FE4 #x5FFE #x6005 #x6006 - #x5FEA #x5FED #x5FF8 #x6019 #x6035 #x6026 #x601B #x600F #x600D #x6029 - #x602B #x600A #x603F #x6021 #x6078 #x6079 #x607B #x607A #x6042 #x606A - #x607D #x6096 #x609A #x60AD #x609D #x6083 #x6092 #x608C #x609B #x60EC - #x60BB #x60B1 #x60DD #x60D8 #x60C6 #x60DA #x60B4 #x6120 #x6126 #x6115 - #x6123 #x60F4 #x6100 #x610E #x612B #x614A #x6175 #x61AC #x6194 #x61A7 - #x61B7 #x61D4 #x61F5 #x5FDD #x96B3 #x95E9 #x95EB #x95F1 #x95F3 #x95F5 - #x95F6 #x95FC #x95FE #x9603 #x9604 #x9606 #x9608 #x960A #x960B #x960C - #x960D #x960F #x9612 #x9615 #x9616 #x9617 #x9619 #x961A #x4E2C #x723F - #x6215 #x6C35 #x6C54 #x6C5C #x6C4A #x6CA3 #x6C85 #x6C90 #x6C94 #x6C8C - #x6C68 #x6C69 #x6C74 #x6C76 #x6C86 #x6CA9 #x6CD0 #x6CD4 #x6CAD #x6CF7 - #x6CF8 #x6CF1 #x6CD7 #x6CB2 #x6CE0 #x6CD6 #x6CFA #x6CEB #x6CEE #x6CB1 - #x6CD3 #x6CEF #x6CFE #x6D39 #x6D27 #x6D0C #x6D43 #x6D48 #x6D07 #x6D04 - #x6D19 #x6D0E #x6D2B #x6D4D #x6D2E #x6D35 #x6D1A #x6D4F #x6D52 #x6D54 - #x6D33 #x6D91 #x6D6F #x6D9E #x6DA0 #x6D5E #x6D93 #x6D94 #x6D5C #x6D60 - #x6D7C #x6D63 #x6E1A #x6DC7 #x6DC5 #x6DDE #x6E0E #x6DBF #x6DE0 #x6E11 - #x6DE6 #x6DDD #x6DD9 #x6E16 #x6DAB #x6E0C #x6DAE #x6E2B #x6E6E #x6E4E - #x6E6B #x6EB2 #x6E5F #x6E86 #x6E53 #x6E54 #x6E32 #x6E25 #x6E44 #x6EDF - #x6EB1 #x6E98 #x6EE0 #x6F2D #x6EE2 #x6EA5 #x6EA7 #x6EBD #x6EBB #x6EB7 - #x6ED7 #x6EB4 #x6ECF #x6E8F #x6EC2 #x6E9F #x6F62 #x6F46 #x6F47 #x6F24 - #x6F15 #x6EF9 #x6F2F #x6F36 #x6F4B #x6F74 #x6F2A #x6F09 #x6F29 #x6F89 - #x6F8D #x6F8C #x6F78 #x6F72 #x6F7C #x6F7A #x6FD1 #x6FC9 #x6FA7 #x6FB9 - #x6FB6 #x6FC2 #x6FE1 #x6FEE #x6FDE #x6FE0 #x6FEF #x701A #x7023 #x701B - #x7039 #x7035 #x704F #x705E #x5B80 #x5B84 #x5B95 #x5B93 #x5BA5 #x5BB8 - #x752F #x9A9E #x6434 #x5BE4 #x5BEE #x8930 #x5BF0 #x8E47 #x8B07 #x8FB6 - #x8FD3 #x8FD5 #x8FE5 #x8FEE #x8FE4 #x8FE9 #x8FE6 #x8FF3 #x8FE8 #x9005 - #x9004 #x900B #x9026 #x9011 #x900D #x9016 #x9021 #x9035 #x9036 #x902D - #x902F #x9044 #x9051 #x9052 #x9050 #x9068 #x9058 #x9062 #x905B #x66B9 - #x9074 #x907D #x9082 #x9088 #x9083 #x908B #x5F50 #x5F57 #x5F56 #x5F58 - #x5C3B #x54AB #x5C50 #x5C59 #x5B71 #x5C63 #x5C66 #x7FBC #x5F2A #x5F29 - #x5F2D #x8274 #x5F3C #x9B3B #x5C6E #x5981 #x5983 #x598D #x59A9 #x59AA - #x59A3 #x5997 #x59CA #x59AB #x599E #x59A4 #x59D2 #x59B2 #x59AF #x59D7 - #x59BE #x5A05 #x5A06 #x59DD #x5A08 #x59E3 #x59D8 #x59F9 #x5A0C #x5A09 - #x5A32 #x5A34 #x5A11 #x5A23 #x5A13 #x5A40 #x5A67 #x5A4A #x5A55 #x5A3C - #x5A62 #x5A75 #x80EC #x5AAA #x5A9B #x5A77 #x5A7A #x5ABE #x5AEB #x5AB2 - #x5AD2 #x5AD4 #x5AB8 #x5AE0 #x5AE3 #x5AF1 #x5AD6 #x5AE6 #x5AD8 #x5ADC - #x5B09 #x5B17 #x5B16 #x5B32 #x5B37 #x5B40 #x5C15 #x5C1C #x5B5A #x5B65 - #x5B73 #x5B51 #x5B53 #x5B62 #x9A75 #x9A77 #x9A78 #x9A7A #x9A7F #x9A7D - #x9A80 #x9A81 #x9A85 #x9A88 #x9A8A #x9A90 #x9A92 #x9A93 #x9A96 #x9A98 - #x9A9B #x9A9C #x9A9D #x9A9F #x9AA0 #x9AA2 #x9AA3 #x9AA5 #x9AA7 #x7E9F - #x7EA1 #x7EA3 #x7EA5 #x7EA8 #x7EA9 #x7EAD #x7EB0 #x7EBE #x7EC0 #x7EC1 - #x7EC2 #x7EC9 #x7ECB #x7ECC #x7ED0 #x7ED4 #x7ED7 #x7EDB #x7EE0 #x7EE1 - #x7EE8 #x7EEB #x7EEE #x7EEF #x7EF1 #x7EF2 #x7F0D #x7EF6 #x7EFA #x7EFB - #x7EFE #x7F01 #x7F02 #x7F03 #x7F07 #x7F08 #x7F0B #x7F0C #x7F0F #x7F11 - #x7F12 #x7F17 #x7F19 #x7F1C #x7F1B #x7F1F #x7F21 #x7F22 #x7F23 #x7F24 - #x7F25 #x7F26 #x7F27 #x7F2A #x7F2B #x7F2C #x7F2D #x7F2F #x7F30 #x7F31 - #x7F32 #x7F33 #x7F35 #x5E7A #x757F #x5DDB #x753E #x9095 #x738E #x7391 - #x73AE #x73A2 #x739F #x73CF #x73C2 #x73D1 #x73B7 #x73B3 #x73C0 #x73C9 - #x73C8 #x73E5 #x73D9 #x987C #x740A #x73E9 #x73E7 #x73DE #x73BA #x73F2 - #x740F #x742A #x745B #x7426 #x7425 #x7428 #x7430 #x742E #x742C #x741B - #x741A #x7441 #x745C #x7457 #x7455 #x7459 #x7477 #x746D #x747E #x749C - #x748E #x7480 #x7481 #x7487 #x748B #x749E #x74A8 #x74A9 #x7490 #x74A7 - #x74D2 #x74BA #x97EA #x97EB #x97EC #x674C #x6753 #x675E #x6748 #x6769 - #x67A5 #x6787 #x676A #x6773 #x6798 #x67A7 #x6775 #x67A8 #x679E #x67AD - #x678B #x6777 #x677C #x67F0 #x6809 #x67D8 #x680A #x67E9 #x67B0 #x680C - #x67D9 #x67B5 #x67DA #x67B3 #x67DD #x6800 #x67C3 #x67B8 #x67E2 #x680E - #x67C1 #x67FD #x6832 #x6833 #x6860 #x6861 #x684E #x6862 #x6844 #x6864 - #x6883 #x681D #x6855 #x6866 #x6841 #x6867 #x6840 #x683E #x684A #x6849 - #x6829 #x68B5 #x688F #x6874 #x6877 #x6893 #x686B #x68C2 #x696E #x68FC - #x691F #x6920 #x68F9 #x6924 #x68F0 #x690B #x6901 #x6957 #x68E3 #x6910 - #x6971 #x6939 #x6960 #x6942 #x695D #x6984 #x696B #x6980 #x6998 #x6978 - #x6934 #x69CC #x6987 #x6988 #x69CE #x6989 #x6966 #x6963 #x6979 #x699B - #x69A7 #x69BB #x69AB #x69AD #x69D4 #x69B1 #x69C1 #x69CA #x69DF #x6995 - #x69E0 #x698D #x69FF #x6A2F #x69ED #x6A17 #x6A18 #x6A65 #x69F2 #x6A44 - #x6A3E #x6AA0 #x6A50 #x6A5B #x6A35 #x6A8E #x6A79 #x6A3D #x6A28 #x6A58 - #x6A7C #x6A91 #x6A90 #x6AA9 #x6A97 #x6AAB #x7337 #x7352 #x6B81 #x6B82 - #x6B87 #x6B84 #x6B92 #x6B93 #x6B8D #x6B9A #x6B9B #x6BA1 #x6BAA #x8F6B - #x8F6D #x8F71 #x8F72 #x8F73 #x8F75 #x8F76 #x8F78 #x8F77 #x8F79 #x8F7A - #x8F7C #x8F7E #x8F81 #x8F82 #x8F84 #x8F87 #x8F8B #x8F8D #x8F8E #x8F8F - #x8F98 #x8F9A #x8ECE #x620B #x6217 #x621B #x621F #x6222 #x6221 #x6225 - #x6224 #x622C #x81E7 #x74EF #x74F4 #x74FF #x750F #x7511 #x7513 #x6534 - #x65EE #x65EF #x65F0 #x660A #x6619 #x6772 #x6603 #x6615 #x6600 #x7085 - #x66F7 #x661D #x6634 #x6631 #x6636 #x6635 #x8006 #x665F #x6654 #x6641 - #x664F #x6656 #x6661 #x6657 #x6677 #x6684 #x668C #x66A7 #x669D #x66BE - #x66DB #x66DC #x66E6 #x66E9 #x8D32 #x8D33 #x8D36 #x8D3B #x8D3D #x8D40 - #x8D45 #x8D46 #x8D48 #x8D49 #x8D47 #x8D4D #x8D55 #x8D59 #x89C7 #x89CA - #x89CB #x89CC #x89CE #x89CF #x89D0 #x89D1 #x726E #x729F #x725D #x7266 - #x726F #x727E #x727F #x7284 #x728B #x728D #x728F #x7292 #x6308 #x6332 - #x63B0 #x643F #x64D8 #x8004 #x6BEA #x6BF3 #x6BFD #x6BF5 #x6BF9 #x6C05 - #x6C07 #x6C06 #x6C0D #x6C15 #x6C18 #x6C19 #x6C1A #x6C21 #x6C29 #x6C24 - #x6C2A #x6C32 #x6535 #x6555 #x656B #x724D #x7252 #x7256 #x7230 #x8662 - #x5216 #x809F #x809C #x8093 #x80BC #x670A #x80BD #x80B1 #x80AB #x80AD - #x80B4 #x80B7 #x80E7 #x80E8 #x80E9 #x80EA #x80DB #x80C2 #x80C4 #x80D9 - #x80CD #x80D7 #x6710 #x80DD #x80EB #x80F1 #x80F4 #x80ED #x810D #x810E - #x80F2 #x80FC #x6715 #x8112 #x8C5A #x8136 #x811E #x812C #x8118 #x8132 - #x8148 #x814C #x8153 #x8174 #x8159 #x815A #x8171 #x8160 #x8169 #x817C - #x817D #x816D #x8167 #x584D #x5AB5 #x8188 #x8182 #x8191 #x6ED5 #x81A3 - #x81AA #x81CC #x6726 #x81CA #x81BB #x81C1 #x81A6 #x6B24 #x6B37 #x6B39 - #x6B43 #x6B46 #x6B59 #x98D1 #x98D2 #x98D3 #x98D5 #x98D9 #x98DA #x6BB3 - #x5F40 #x6BC2 #x89F3 #x6590 #x9F51 #x6593 #x65BC #x65C6 #x65C4 #x65C3 - #x65CC #x65CE #x65D2 #x65D6 #x7080 #x709C #x7096 #x709D #x70BB #x70C0 - #x70B7 #x70AB #x70B1 #x70E8 #x70CA #x7110 #x7113 #x7116 #x712F #x7131 - #x7173 #x715C #x7168 #x7145 #x7172 #x714A #x7178 #x717A #x7198 #x71B3 - #x71B5 #x71A8 #x71A0 #x71E0 #x71D4 #x71E7 #x71F9 #x721D #x7228 #x706C - #x7118 #x7166 #x71B9 #x623E #x623D #x6243 #x6248 #x6249 #x793B #x7940 - #x7946 #x7949 #x795B #x795C #x7953 #x795A #x7962 #x7957 #x7960 #x796F - #x7967 #x797A #x7985 #x798A #x799A #x79A7 #x79B3 #x5FD1 #x5FD0 #x603C - #x605D #x605A #x6067 #x6041 #x6059 #x6063 #x60AB #x6106 #x610D #x615D - #x61A9 #x619D #x61CB #x61D1 #x6206 #x8080 #x807F #x6C93 #x6CF6 #x6DFC - #x77F6 #x77F8 #x7800 #x7809 #x7817 #x7818 #x7811 #x65AB #x782D #x781C - #x781D #x7839 #x783A #x783B #x781F #x783C #x7825 #x782C #x7823 #x7829 - #x784E #x786D #x7856 #x7857 #x7826 #x7850 #x7847 #x784C #x786A #x789B - #x7893 #x789A #x7887 #x789C #x78A1 #x78A3 #x78B2 #x78B9 #x78A5 #x78D4 - #x78D9 #x78C9 #x78EC #x78F2 #x7905 #x78F4 #x7913 #x7924 #x791E #x7934 - #x9F9B #x9EF9 #x9EFB #x9EFC #x76F1 #x7704 #x770D #x76F9 #x7707 #x7708 - #x771A #x7722 #x7719 #x772D #x7726 #x7735 #x7738 #x7750 #x7751 #x7747 - #x7743 #x775A #x7768 #x7762 #x7765 #x777F #x778D #x777D #x7780 #x778C - #x7791 #x779F #x77A0 #x77B0 #x77B5 #x77BD #x753A #x7540 #x754E #x754B - #x7548 #x755B #x7572 #x7579 #x7583 #x7F58 #x7F61 #x7F5F #x8A48 #x7F68 - #x7F74 #x7F71 #x7F79 #x7F81 #x7F7E #x76CD #x76E5 #x8832 #x9485 #x9486 - #x9487 #x948B #x948A #x948C #x948D #x948F #x9490 #x9494 #x9497 #x9495 - #x949A #x949B #x949C #x94A3 #x94A4 #x94AB #x94AA #x94AD #x94AC #x94AF - #x94B0 #x94B2 #x94B4 #x94B6 #x94B7 #x94B8 #x94B9 #x94BA #x94BC #x94BD - #x94BF #x94C4 #x94C8 #x94C9 #x94CA #x94CB #x94CC #x94CD #x94CE #x94D0 - #x94D1 #x94D2 #x94D5 #x94D6 #x94D7 #x94D9 #x94D8 #x94DB #x94DE #x94DF - #x94E0 #x94E2 #x94E4 #x94E5 #x94E7 #x94E8 #x94EA #x94E9 #x94EB #x94EE - #x94EF #x94F3 #x94F4 #x94F5 #x94F7 #x94F9 #x94FC #x94FD #x94FF #x9503 - #x9502 #x9506 #x9507 #x9509 #x950A #x950D #x950E #x950F #x9512 #x9513 - #x9514 #x9515 #x9516 #x9518 #x951B #x951D #x951E #x951F #x9522 #x952A - #x952B #x9529 #x952C #x9531 #x9532 #x9534 #x9536 #x9537 #x9538 #x953C - #x953E #x953F #x9542 #x9535 #x9544 #x9545 #x9546 #x9549 #x954C #x954E - #x954F #x9552 #x9553 #x9554 #x9556 #x9557 #x9558 #x9559 #x955B #x955E - #x955F #x955D #x9561 #x9562 #x9564 #x9565 #x9566 #x9567 #x9568 #x9569 - #x956A #x956B #x956C #x956F #x9571 #x9572 #x9573 #x953A #x77E7 #x77EC - #x96C9 #x79D5 #x79ED #x79E3 #x79EB #x7A06 #x5D47 #x7A03 #x7A02 #x7A1E - #x7A14 #x7A39 #x7A37 #x7A51 #x9ECF #x99A5 #x7A70 #x7688 #x768E #x7693 - #x7699 #x76A4 #x74DE #x74E0 #x752C #x9E20 #x9E22 #x9E28 #x9E29 #x9E2A - #x9E2B #x9E2C #x9E32 #x9E31 #x9E36 #x9E38 #x9E37 #x9E39 #x9E3A #x9E3E - #x9E41 #x9E42 #x9E44 #x9E46 #x9E47 #x9E48 #x9E49 #x9E4B #x9E4C #x9E4E - #x9E51 #x9E55 #x9E57 #x9E5A #x9E5B #x9E5C #x9E5E #x9E63 #x9E66 #x9E67 - #x9E68 #x9E69 #x9E6A #x9E6B #x9E6C #x9E71 #x9E6D #x9E73 #x7592 #x7594 - #x7596 #x75A0 #x759D #x75AC #x75A3 #x75B3 #x75B4 #x75B8 #x75C4 #x75B1 - #x75B0 #x75C3 #x75C2 #x75D6 #x75CD #x75E3 #x75E8 #x75E6 #x75E4 #x75EB - #x75E7 #x7603 #x75F1 #x75FC #x75FF #x7610 #x7600 #x7605 #x760C #x7617 - #x760A #x7625 #x7618 #x7615 #x7619 #x761B #x763C #x7622 #x7620 #x7640 - #x762D #x7630 #x763F #x7635 #x7643 #x763E #x7633 #x764D #x765E #x7654 - #x765C #x7656 #x766B #x766F #x7FCA #x7AE6 #x7A78 #x7A79 #x7A80 #x7A86 - #x7A88 #x7A95 #x7AA6 #x7AA0 #x7AAC #x7AA8 #x7AAD #x7AB3 #x8864 #x8869 - #x8872 #x887D #x887F #x8882 #x88A2 #x88C6 #x88B7 #x88BC #x88C9 #x88E2 - #x88CE #x88E3 #x88E5 #x88F1 #x891A #x88FC #x88E8 #x88FE #x88F0 #x8921 - #x8919 #x8913 #x891B #x890A #x8934 #x892B #x8936 #x8941 #x8966 #x897B - #x758B #x80E5 #x76B2 #x76B4 #x77DC #x8012 #x8014 #x8016 #x801C #x8020 - #x8022 #x8025 #x8026 #x8027 #x8029 #x8028 #x8031 #x800B #x8035 #x8043 - #x8046 #x804D #x8052 #x8069 #x8071 #x8983 #x9878 #x9880 #x9883 #x9889 - #x988C #x988D #x988F #x9894 #x989A #x989B #x989E #x989F #x98A1 #x98A2 - #x98A5 #x98A6 #x864D #x8654 #x866C #x866E #x867F #x867A #x867C #x867B - #x86A8 #x868D #x868B #x86AC #x869D #x86A7 #x86A3 #x86AA #x8693 #x86A9 - #x86B6 #x86C4 #x86B5 #x86CE #x86B0 #x86BA #x86B1 #x86AF #x86C9 #x86CF - #x86B4 #x86E9 #x86F1 #x86F2 #x86ED #x86F3 #x86D0 #x8713 #x86DE #x86F4 - #x86DF #x86D8 #x86D1 #x8703 #x8707 #x86F8 #x8708 #x870A #x870D #x8709 - #x8723 #x873B #x871E #x8725 #x872E #x871A #x873E #x8748 #x8734 #x8731 - #x8729 #x8737 #x873F #x8782 #x8722 #x877D #x877E #x877B #x8760 #x8770 - #x874C #x876E #x878B #x8753 #x8763 #x877C #x8764 #x8759 #x8765 #x8793 - #x87AF #x87A8 #x87D2 #x87C6 #x8788 #x8785 #x87AD #x8797 #x8783 #x87AB - #x87E5 #x87AC #x87B5 #x87B3 #x87CB #x87D3 #x87BD #x87D1 #x87C0 #x87CA - #x87DB #x87EA #x87E0 #x87EE #x8816 #x8813 #x87FE #x880A #x881B #x8821 - #x8839 #x883C #x7F36 #x7F42 #x7F44 #x7F45 #x8210 #x7AFA #x7AFD #x7B08 - #x7B03 #x7B04 #x7B15 #x7B0A #x7B2B #x7B0F #x7B47 #x7B38 #x7B2A #x7B19 - #x7B2E #x7B31 #x7B20 #x7B25 #x7B24 #x7B33 #x7B3E #x7B1E #x7B58 #x7B5A - #x7B45 #x7B75 #x7B4C #x7B5D #x7B60 #x7B6E #x7B7B #x7B62 #x7B72 #x7B71 - #x7B90 #x7BA6 #x7BA7 #x7BB8 #x7BAC #x7B9D #x7BA8 #x7B85 #x7BAA #x7B9C - #x7BA2 #x7BAB #x7BB4 #x7BD1 #x7BC1 #x7BCC #x7BDD #x7BDA #x7BE5 #x7BE6 - #x7BEA #x7C0C #x7BFE #x7BFC #x7C0F #x7C16 #x7C0B #x7C1F #x7C2A #x7C26 - #x7C38 #x7C41 #x7C40 #x81FE #x8201 #x8202 #x8204 #x81EC #x8844 #x8221 - #x8222 #x8223 #x822D #x822F #x8228 #x822B #x8238 #x823B #x8233 #x8234 - #x823E #x8244 #x8249 #x824B #x824F #x825A #x825F #x8268 #x887E #x8885 - #x8888 #x88D8 #x88DF #x895E #x7F9D #x7F9F #x7FA7 #x7FAF #x7FB0 #x7FB2 - #x7C7C #x6549 #x7C91 #x7C9D #x7C9C #x7C9E #x7CA2 #x7CB2 #x7CBC #x7CBD - #x7CC1 #x7CC7 #x7CCC #x7CCD #x7CC8 #x7CC5 #x7CD7 #x7CE8 #x826E #x66A8 - #x7FBF #x7FCE #x7FD5 #x7FE5 #x7FE1 #x7FE6 #x7FE9 #x7FEE #x7FF3 #x7CF8 - #x7D77 #x7DA6 #x7DAE #x7E47 #x7E9B #x9EB8 #x9EB4 #x8D73 #x8D84 #x8D94 - #x8D91 #x8DB1 #x8D67 #x8D6D #x8C47 #x8C49 #x914A #x9150 #x914E #x914F - #x9164 #x9162 #x9161 #x9170 #x9169 #x916F #x917D #x917E #x9172 #x9174 - #x9179 #x918C #x9185 #x9190 #x918D #x9191 #x91A2 #x91A3 #x91AA #x91AD - #x91AE #x91AF #x91B5 #x91B4 #x91BA #x8C55 #x9E7E #x8DB8 #x8DEB #x8E05 - #x8E59 #x8E69 #x8DB5 #x8DBF #x8DBC #x8DBA #x8DC4 #x8DD6 #x8DD7 #x8DDA - #x8DDE #x8DCE #x8DCF #x8DDB #x8DC6 #x8DEC #x8DF7 #x8DF8 #x8DE3 #x8DF9 - #x8DFB #x8DE4 #x8E09 #x8DFD #x8E14 #x8E1D #x8E1F #x8E2C #x8E2E #x8E23 - #x8E2F #x8E3A #x8E40 #x8E39 #x8E35 #x8E3D #x8E31 #x8E49 #x8E41 #x8E42 - #x8E51 #x8E52 #x8E4A #x8E70 #x8E76 #x8E7C #x8E6F #x8E74 #x8E85 #x8E8F - #x8E94 #x8E90 #x8E9C #x8E9E #x8C78 #x8C82 #x8C8A #x8C85 #x8C98 #x8C94 - #x659B #x89D6 #x89DE #x89DA #x89DC #x89E5 #x89EB #x89EF #x8A3E #x8B26 - #x9753 #x96E9 #x96F3 #x96EF #x9706 #x9701 #x9708 #x970F #x970E #x972A - #x972D #x9730 #x973E #x9F80 #x9F83 #x9F85 #x9F86 #x9F87 #x9F88 #x9F89 - #x9F8A #x9F8C #x9EFE #x9F0B #x9F0D #x96B9 #x96BC #x96BD #x96CE #x96D2 - #x77BF #x96E0 #x928E #x92AE #x92C8 #x933E #x936A #x93CA #x938F #x943E - #x946B #x9C7F #x9C82 #x9C85 #x9C86 #x9C87 #x9C88 #x7A23 #x9C8B #x9C8E - #x9C90 #x9C91 #x9C92 #x9C94 #x9C95 #x9C9A #x9C9B #x9C9E #x9C9F #x9CA0 - #x9CA1 #x9CA2 #x9CA3 #x9CA5 #x9CA6 #x9CA7 #x9CA8 #x9CA9 #x9CAB #x9CAD - #x9CAE #x9CB0 #x9CB1 #x9CB2 #x9CB3 #x9CB4 #x9CB5 #x9CB6 #x9CB7 #x9CBA - #x9CBB #x9CBC #x9CBD #x9CC4 #x9CC5 #x9CC6 #x9CC7 #x9CCA #x9CCB #x9CCC - #x9CCD #x9CCE #x9CCF #x9CD0 #x9CD3 #x9CD4 #x9CD5 #x9CD7 #x9CD8 #x9CD9 - #x9CDC #x9CDD #x9CDF #x9CE2 #x977C #x9785 #x9791 #x9792 #x9794 #x97AF - #x97AB #x97A3 #x97B2 #x97B4 #x9AB1 #x9AB0 #x9AB7 #x9E58 #x9AB6 #x9ABA - #x9ABC #x9AC1 #x9AC0 #x9AC5 #x9AC2 #x9ACB #x9ACC #x9AD1 #x9B45 #x9B43 - #x9B47 #x9B49 #x9B48 #x9B4D #x9B51 #x98E8 #x990D #x992E #x9955 #x9954 - #x9ADF #x9AE1 #x9AE6 #x9AEF #x9AEB #x9AFB #x9AED #x9AF9 #x9B08 #x9B0F - #x9B13 #x9B1F #x9B23 #x9EBD #x9EBE #x7E3B #x9E82 #x9E87 #x9E88 #x9E8B - #x9E92 #x93D6 #x9E9D #x9E9F #x9EDB #x9EDC #x9EDD #x9EE0 #x9EDF #x9EE2 - #x9EE9 #x9EE7 #x9EE5 #x9EEA #x9EEF #x9F22 #x9F2C #x9F2F #x9F39 #x9F37 - #x9F3D #x9F3E #x9F44 #x4E02 #x4E04 #x4E05 #x4E06 #x4E0F #x4E12 #x4E17 - #x4E1F #x4E20 #x4E21 #x4E23 #x4E26 #x4E29 #x4E2E #x4E2F #x4E31 #x4E33 - #x4E35 #x4E37 #x4E3C #x4E40 #x4E41 #x4E42 #x4E44 #x4E46 #x4E4A #x4E51 - #x4E55 #x4E57 #x4E5A #x4E5B #x4E62 #x4E63 #x4E64 #x4E65 #x4E67 #x4E68 - #x4E6A #x4E6B #x4E6C #x4E6D #x4E6E #x4E6F #x4E72 #x4E74 #x4E75 #x4E76 - #x4E77 #x4E78 #x4E79 #x4E7A #x4E7B #x4E7C #x4E7D #x4E7F #x4E80 #x4E81 - #x4E82 #x4E83 #x4E84 #x4E85 #x4E87 #x4E8A #x4E90 #x4E96 #x4E97 #x4E99 - #x4E9C #x4E9D #x4E9E #x4EA3 #x4EAA #x4EAF #x4EB0 #x4EB1 #x4EB4 #x4EB6 - #x4EB7 #x4EB8 #x4EB9 #x4EBC #x4EBD #x4EBE #x4EC8 #x4ECC #x4ECF #x4ED0 - #x4ED2 #x4EDA #x4EDB #x4EDC #x4EE0 #x4EE2 #x4EE6 #x4EE7 #x4EE9 #x4EED - #x4EEE #x4EEF #x4EF1 #x4EF4 #x4EF8 #x4EF9 #x4EFA #x4EFC #x4EFE #x4F00 - #x4F02 #x4F03 #x4F04 #x4F05 #x4F06 #x4F07 #x4F08 #x4F0B #x4F0C #x4F12 - #x4F13 #x4F14 #x4F15 #x4F16 #x4F1C #x4F1D #x4F21 #x4F23 #x4F28 #x4F29 - #x4F2C #x4F2D #x4F2E #x4F31 #x4F33 #x4F35 #x4F37 #x4F39 #x4F3B #x4F3E - #x4F3F #x4F40 #x4F41 #x4F42 #x4F44 #x4F45 #x4F47 #x4F48 #x4F49 #x4F4A - #x4F4B #x4F4C #x4F52 #x4F54 #x4F56 #x4F61 #x4F62 #x4F66 #x4F68 #x4F6A - #x4F6B #x4F6D #x4F6E #x4F71 #x4F72 #x4F75 #x4F77 #x4F78 #x4F79 #x4F7A - #x4F7D #x4F80 #x4F81 #x4F82 #x4F85 #x4F86 #x4F87 #x4F8A #x4F8C #x4F8E - #x4F90 #x4F92 #x4F93 #x4F95 #x4F96 #x4F98 #x4F99 #x4F9A #x4F9C #x4F9E - #x4F9F #x4FA1 #x4FA2 #x4FA4 #x4FAB #x4FAD #x4FB0 #x4FB1 #x4FB2 #x4FB3 - #x4FB4 #x4FB6 #x4FB7 #x4FB8 #x4FB9 #x4FBA #x4FBB #x4FBC #x4FBD #x4FBE - #x4FC0 #x4FC1 #x4FC2 #x4FC6 #x4FC7 #x4FC8 #x4FC9 #x4FCB #x4FCC #x4FCD - #x4FD2 #x4FD3 #x4FD4 #x4FD5 #x4FD6 #x4FD9 #x4FDB #x4FE0 #x4FE2 #x4FE4 - #x4FE5 #x4FE7 #x4FEB #x4FEC #x4FF0 #x4FF2 #x4FF4 #x4FF5 #x4FF6 #x4FF7 - #x4FF9 #x4FFB #x4FFC #x4FFD #x4FFF #x5000 #x5001 #x5002 #x5003 #x5004 - #x5005 #x5006 #x5007 #x5008 #x5009 #x500A #x500B #x500E #x5010 #x5011 - #x5013 #x5015 #x5016 #x5017 #x501B #x501D #x501E #x5020 #x5022 #x5023 - #x5024 #x5027 #x502B #x502F #x5030 #x5031 #x5032 #x5033 #x5034 #x5035 - #x5036 #x5037 #x5038 #x5039 #x503B #x503D #x503F #x5040 #x5041 #x5042 - #x5044 #x5045 #x5046 #x5049 #x504A #x504B #x504D #x5050 #x5051 #x5052 - #x5053 #x5054 #x5056 #x5057 #x5058 #x5059 #x505B #x505D #x505E #x505F - #x5060 #x5061 #x5062 #x5063 #x5064 #x5066 #x5067 #x5068 #x5069 #x506A - #x506B #x506D #x506E #x506F #x5070 #x5071 #x5072 #x5073 #x5074 #x5075 - #x5078 #x5079 #x507A #x507C #x507D #x5081 #x5082 #x5083 #x5084 #x5086 - #x5087 #x5089 #x508A #x508B #x508C #x508E #x508F #x5090 #x5091 #x5092 - #x5093 #x5094 #x5095 #x5096 #x5097 #x5098 #x5099 #x509A #x509B #x509C - #x509D #x509E #x509F #x50A0 #x50A1 #x50A2 #x50A4 #x50A6 #x50AA #x50AB - #x50AD #x50AE #x50AF #x50B0 #x50B1 #x50B3 #x50B4 #x50B5 #x50B6 #x50B7 - #x50B8 #x50B9 #x50BC #x50BD #x50BE #x50BF #x50C0 #x50C1 #x50C2 #x50C3 - #x50C4 #x50C5 #x50C6 #x50C7 #x50C8 #x50C9 #x50CA #x50CB #x50CC #x50CD - #x50CE #x50D0 #x50D1 #x50D2 #x50D3 #x50D4 #x50D5 #x50D7 #x50D8 #x50D9 - #x50DB #x50DC #x50DD #x50DE #x50DF #x50E0 #x50E1 #x50E2 #x50E3 #x50E4 - #x50E5 #x50E8 #x50E9 #x50EA #x50EB #x50EF #x50F0 #x50F1 #x50F2 #x50F4 - #x50F6 #x50F7 #x50F8 #x50F9 #x50FA #x50FC #x50FD #x50FE #x50FF #x5100 - #x5101 #x5102 #x5103 #x5104 #x5105 #x5108 #x5109 #x510A #x510C #x510D - #x510E #x510F #x5110 #x5111 #x5113 #x5114 #x5115 #x5116 #x5117 #x5118 - #x5119 #x511A #x511B #x511C #x511D #x511E #x511F #x5120 #x5122 #x5123 - #x5124 #x5125 #x5126 #x5127 #x5128 #x5129 #x512A #x512B #x512C #x512D - #x512E #x512F #x5130 #x5131 #x5132 #x5133 #x5134 #x5135 #x5136 #x5137 - #x5138 #x5139 #x513A #x513B #x513C #x513D #x513E #x5142 #x5147 #x514A - #x514C #x514E #x514F #x5150 #x5152 #x5153 #x5157 #x5158 #x5159 #x515B - #x515D #x515E #x515F #x5160 #x5161 #x5163 #x5164 #x5166 #x5167 #x5169 - #x516A #x516F #x5172 #x517A #x517E #x517F #x5183 #x5184 #x5186 #x5187 - #x518A #x518B #x518E #x518F #x5190 #x5191 #x5193 #x5194 #x5198 #x519A - #x519D #x519E #x519F #x51A1 #x51A3 #x51A6 #x51A7 #x51A8 #x51A9 #x51AA - #x51AD #x51AE #x51B4 #x51B8 #x51B9 #x51BA #x51BE #x51BF #x51C1 #x51C2 - #x51C3 #x51C5 #x51C8 #x51CA #x51CD #x51CE #x51D0 #x51D2 #x51D3 #x51D4 - #x51D5 #x51D6 #x51D7 #x51D8 #x51D9 #x51DA #x51DC #x51DE #x51DF #x51E2 - #x51E3 #x51E5 #x51E6 #x51E7 #x51E8 #x51E9 #x51EA #x51EC #x51EE #x51F1 - #x51F2 #x51F4 #x51F7 #x51FE #x5204 #x5205 #x5209 #x520B #x520C #x520F - #x5210 #x5213 #x5214 #x5215 #x521C #x521E #x521F #x5221 #x5222 #x5223 - #x5225 #x5226 #x5227 #x522A #x522C #x522F #x5231 #x5232 #x5234 #x5235 - #x523C #x523E #x5244 #x5245 #x5246 #x5247 #x5248 #x5249 #x524B #x524E - #x524F #x5252 #x5253 #x5255 #x5257 #x5258 #x5259 #x525A #x525B #x525D - #x525F #x5260 #x5262 #x5263 #x5264 #x5266 #x5268 #x526B #x526C #x526D - #x526E #x5270 #x5271 #x5273 #x5274 #x5275 #x5276 #x5277 #x5278 #x5279 - #x527A #x527B #x527C #x527E #x5280 #x5283 #x5284 #x5285 #x5286 #x5287 - #x5289 #x528A #x528B #x528C #x528D #x528E #x528F #x5291 #x5292 #x5294 - #x5295 #x5296 #x5297 #x5298 #x5299 #x529A #x529C #x52A4 #x52A5 #x52A6 - #x52A7 #x52AE #x52AF #x52B0 #x52B4 #x52B5 #x52B6 #x52B7 #x52B8 #x52B9 - #x52BA #x52BB #x52BC #x52BD #x52C0 #x52C1 #x52C2 #x52C4 #x52C5 #x52C6 - #x52C8 #x52CA #x52CC #x52CD #x52CE #x52CF #x52D1 #x52D3 #x52D4 #x52D5 - #x52D7 #x52D9 #x52DA #x52DB #x52DC #x52DD #x52DE #x52E0 #x52E1 #x52E2 - #x52E3 #x52E5 #x52E6 #x52E7 #x52E8 #x52E9 #x52EA #x52EB #x52EC #x52ED - #x52EE #x52EF #x52F1 #x52F2 #x52F3 #x52F4 #x52F5 #x52F6 #x52F7 #x52F8 - #x52FB #x52FC #x52FD #x5301 #x5302 #x5303 #x5304 #x5307 #x5309 #x530A - #x530B #x530C #x530E #x5311 #x5312 #x5313 #x5314 #x5318 #x531B #x531C - #x531E #x531F #x5322 #x5324 #x5325 #x5327 #x5328 #x5329 #x532B #x532C - #x532D #x532F #x5330 #x5331 #x5332 #x5333 #x5334 #x5335 #x5336 #x5337 - #x5338 #x533C #x533D #x5340 #x5342 #x5344 #x5346 #x534B #x534C #x534D - #x5350 #x5354 #x5358 #x5359 #x535B #x535D #x5365 #x5368 #x536A #x536C - #x536D #x5372 #x5376 #x5379 #x537B #x537C #x537D #x537E #x5380 #x5381 - #x5383 #x5387 #x5388 #x538A #x538E #x538F #x5390 #x5391 #x5392 #x5393 - #x5394 #x5396 #x5397 #x5399 #x539B #x539C #x539E #x53A0 #x53A1 #x53A4 - #x53A7 #x53AA #x53AB #x53AC #x53AD #x53AF #x53B0 #x53B1 #x53B2 #x53B3 - #x53B4 #x53B5 #x53B7 #x53B8 #x53B9 #x53BA #x53BC #x53BD #x53BE #x53C0 - #x53C3 #x53C4 #x53C5 #x53C6 #x53C7 #x53CE #x53CF #x53D0 #x53D2 #x53D3 - #x53D5 #x53DA #x53DC #x53DD #x53DE #x53E1 #x53E2 #x53E7 #x53F4 #x53FA - #x53FE #x53FF #x5400 #x5402 #x5405 #x5407 #x540B #x5414 #x5418 #x5419 - #x541A #x541C #x5422 #x5424 #x5425 #x542A #x5430 #x5433 #x5436 #x5437 - #x543A #x543D #x543F #x5441 #x5442 #x5444 #x5445 #x5447 #x5449 #x544C - #x544D #x544E #x544F #x5451 #x545A #x545D #x545E #x545F #x5460 #x5461 - #x5463 #x5465 #x5467 #x5469 #x546A #x546B #x546C #x546D #x546E #x546F - #x5470 #x5474 #x5479 #x547A #x547E #x547F #x5481 #x5483 #x5485 #x5487 - #x5488 #x5489 #x548A #x548D #x5491 #x5493 #x5497 #x5498 #x549C #x549E - #x549F #x54A0 #x54A1 #x54A2 #x54A5 #x54AE #x54B0 #x54B2 #x54B5 #x54B6 - #x54B7 #x54B9 #x54BA #x54BC #x54BE #x54C3 #x54C5 #x54CA #x54CB #x54D6 - #x54D8 #x54DB #x54E0 #x54E1 #x54E2 #x54E3 #x54E4 #x54EB #x54EC #x54EF - #x54F0 #x54F1 #x54F4 #x54F5 #x54F6 #x54F7 #x54F8 #x54F9 #x54FB #x54FE - #x5500 #x5502 #x5503 #x5504 #x5505 #x5508 #x550A #x550B #x550C #x550D - #x550E #x5512 #x5513 #x5515 #x5516 #x5517 #x5518 #x5519 #x551A #x551C - #x551D #x551E #x551F #x5521 #x5525 #x5526 #x5528 #x5529 #x552B #x552D - #x5532 #x5534 #x5535 #x5536 #x5538 #x5539 #x553A #x553B #x553D #x5540 - #x5542 #x5545 #x5547 #x5548 #x554B #x554C #x554D #x554E #x554F #x5551 - #x5552 #x5553 #x5554 #x5557 #x5558 #x5559 #x555A #x555B #x555D #x555E - #x555F #x5560 #x5562 #x5563 #x5568 #x5569 #x556B #x556F #x5570 #x5571 - #x5572 #x5573 #x5574 #x5579 #x557A #x557D #x557F #x5585 #x5586 #x558C - #x558D #x558E #x5590 #x5592 #x5593 #x5595 #x5596 #x5597 #x559A #x559B - #x559E #x55A0 #x55A1 #x55A2 #x55A3 #x55A4 #x55A5 #x55A6 #x55A8 #x55A9 - #x55AA #x55AB #x55AC #x55AD #x55AE #x55AF #x55B0 #x55B2 #x55B4 #x55B6 - #x55B8 #x55BA #x55BC #x55BF #x55C0 #x55C1 #x55C2 #x55C3 #x55C6 #x55C7 - #x55C8 #x55CA #x55CB #x55CE #x55CF #x55D0 #x55D5 #x55D7 #x55D8 #x55D9 - #x55DA #x55DB #x55DE #x55E0 #x55E2 #x55E7 #x55E9 #x55ED #x55EE #x55F0 - #x55F1 #x55F4 #x55F6 #x55F8 #x55F9 #x55FA #x55FB #x55FC #x55FF #x5602 - #x5603 #x5604 #x5605 #x5606 #x5607 #x560A #x560B #x560D #x5610 #x5611 - #x5612 #x5613 #x5614 #x5615 #x5616 #x5617 #x5619 #x561A #x561C #x561D - #x5620 #x5621 #x5622 #x5625 #x5626 #x5628 #x5629 #x562A #x562B #x562E - #x562F #x5630 #x5633 #x5635 #x5637 #x5638 #x563A #x563C #x563D #x563E - #x5640 #x5641 #x5642 #x5643 #x5644 #x5645 #x5646 #x5647 #x5648 #x5649 - #x564A #x564B #x564F #x5650 #x5651 #x5652 #x5653 #x5655 #x5656 #x565A - #x565B #x565D #x565E #x565F #x5660 #x5661 #x5663 #x5665 #x5666 #x5667 - #x566D #x566E #x566F #x5670 #x5672 #x5673 #x5674 #x5675 #x5677 #x5678 - #x5679 #x567A #x567D #x567E #x567F #x5680 #x5681 #x5682 #x5683 #x5684 - #x5687 #x5688 #x5689 #x568A #x568B #x568C #x568D #x5690 #x5691 #x5692 - #x5694 #x5695 #x5696 #x5697 #x5698 #x5699 #x569A #x569B #x569C #x569D - #x569E #x569F #x56A0 #x56A1 #x56A2 #x56A4 #x56A5 #x56A6 #x56A7 #x56A8 - #x56A9 #x56AA #x56AB #x56AC #x56AD #x56AE #x56B0 #x56B1 #x56B2 #x56B3 - #x56B4 #x56B5 #x56B6 #x56B8 #x56B9 #x56BA #x56BB #x56BD #x56BE #x56BF - #x56C0 #x56C1 #x56C2 #x56C3 #x56C4 #x56C5 #x56C6 #x56C7 #x56C8 #x56C9 - #x56CB #x56CC #x56CD #x56CE #x56CF #x56D0 #x56D1 #x56D2 #x56D3 #x56D5 - #x56D6 #x56D8 #x56D9 #x56DC #x56E3 #x56E5 #x56E6 #x56E7 #x56E8 #x56E9 - #x56EA #x56EC #x56EE #x56EF #x56F2 #x56F3 #x56F6 #x56F7 #x56F8 #x56FB - #x56FC #x5700 #x5701 #x5702 #x5705 #x5707 #x570B #x570C #x570D #x570E - #x570F #x5710 #x5711 #x5712 #x5713 #x5714 #x5715 #x5716 #x5717 #x5718 - #x5719 #x571A #x571B #x571D #x571E #x5720 #x5721 #x5722 #x5724 #x5725 - #x5726 #x5727 #x572B #x5731 #x5732 #x5734 #x5735 #x5736 #x5737 #x5738 - #x573C #x573D #x573F #x5741 #x5743 #x5744 #x5745 #x5746 #x5748 #x5749 - #x574B #x5752 #x5753 #x5754 #x5755 #x5756 #x5758 #x5759 #x5762 #x5763 - #x5765 #x5767 #x576C #x576E #x5770 #x5771 #x5772 #x5774 #x5775 #x5778 - #x5779 #x577A #x577D #x577E #x577F #x5780 #x5781 #x5787 #x5788 #x5789 - #x578A #x578D #x578E #x578F #x5790 #x5791 #x5794 #x5795 #x5796 #x5797 - #x5798 #x5799 #x579A #x579C #x579D #x579E #x579F #x57A5 #x57A8 #x57AA - #x57AC #x57AF #x57B0 #x57B1 #x57B3 #x57B5 #x57B6 #x57B7 #x57B9 #x57BA - #x57BB #x57BC #x57BD #x57BE #x57BF #x57C0 #x57C1 #x57C4 #x57C5 #x57C6 - #x57C7 #x57C8 #x57C9 #x57CA #x57CC #x57CD #x57D0 #x57D1 #x57D3 #x57D6 - #x57D7 #x57DB #x57DC #x57DE #x57E1 #x57E2 #x57E3 #x57E5 #x57E6 #x57E7 - #x57E8 #x57E9 #x57EA #x57EB #x57EC #x57EE #x57F0 #x57F1 #x57F2 #x57F3 - #x57F5 #x57F6 #x57F7 #x57FB #x57FC #x57FE #x57FF #x5801 #x5803 #x5804 - #x5805 #x5808 #x5809 #x580A #x580C #x580E #x580F #x5810 #x5812 #x5813 - #x5814 #x5816 #x5817 #x5818 #x581A #x581B #x581C #x581D #x581F #x5822 - #x5823 #x5825 #x5826 #x5827 #x5828 #x5829 #x582B #x582C #x582D #x582E - #x582F #x5831 #x5832 #x5833 #x5834 #x5836 #x5837 #x5838 #x5839 #x583A - #x583B #x583C #x583D #x583E #x583F #x5840 #x5841 #x5842 #x5843 #x5845 - #x5846 #x5847 #x5848 #x5849 #x584A #x584B #x584E #x584F #x5850 #x5852 - #x5853 #x5855 #x5856 #x5857 #x5859 #x585A #x585B #x585C #x585D #x585F - #x5860 #x5861 #x5862 #x5863 #x5864 #x5866 #x5867 #x5868 #x5869 #x586A - #x586D #x586E #x586F #x5870 #x5871 #x5872 #x5873 #x5874 #x5875 #x5876 - #x5877 #x5878 #x5879 #x587A #x587B #x587C #x587D #x587F #x5882 #x5884 - #x5886 #x5887 #x5888 #x588A #x588B #x588C #x588D #x588E #x588F #x5890 - #x5891 #x5894 #x5895 #x5896 #x5897 #x5898 #x589B #x589C #x589D #x58A0 - #x58A1 #x58A2 #x58A3 #x58A4 #x58A5 #x58A6 #x58A7 #x58AA #x58AB #x58AC - #x58AD #x58AE #x58AF #x58B0 #x58B1 #x58B2 #x58B3 #x58B4 #x58B5 #x58B6 - #x58B7 #x58B8 #x58B9 #x58BA #x58BB #x58BD #x58BE #x58BF #x58C0 #x58C2 - #x58C3 #x58C4 #x58C6 #x58C7 #x58C8 #x58C9 #x58CA #x58CB #x58CC #x58CD - #x58CE #x58CF #x58D0 #x58D2 #x58D3 #x58D4 #x58D6 #x58D7 #x58D8 #x58D9 - #x58DA #x58DB #x58DC #x58DD #x58DE #x58DF #x58E0 #x58E1 #x58E2 #x58E3 - #x58E5 #x58E6 #x58E7 #x58E8 #x58E9 #x58EA #x58ED #x58EF #x58F1 #x58F2 - #x58F4 #x58F5 #x58F7 #x58F8 #x58FA #x58FB #x58FC #x58FD #x58FE #x58FF - #x5900 #x5901 #x5903 #x5905 #x5906 #x5908 #x5909 #x590A #x590B #x590C - #x590E #x5910 #x5911 #x5912 #x5913 #x5917 #x5918 #x591B #x591D #x591E - #x5920 #x5921 #x5922 #x5923 #x5926 #x5928 #x592C #x5930 #x5932 #x5933 - #x5935 #x5936 #x593B #x593D #x593E #x593F #x5940 #x5943 #x5945 #x5946 - #x594A #x594C #x594D #x5950 #x5952 #x5953 #x5959 #x595B #x595C #x595D - #x595E #x595F #x5961 #x5963 #x5964 #x5966 #x5967 #x5968 #x5969 #x596A - #x596B #x596C #x596D #x596E #x596F #x5970 #x5971 #x5972 #x5975 #x5977 - #x597A #x597B #x597C #x597E #x597F #x5980 #x5985 #x5989 #x598B #x598C - #x598E #x598F #x5990 #x5991 #x5994 #x5995 #x5998 #x599A #x599B #x599C - #x599D #x599F #x59A0 #x59A1 #x59A2 #x59A6 #x59A7 #x59AC #x59AD #x59B0 - #x59B1 #x59B3 #x59B4 #x59B5 #x59B6 #x59B7 #x59B8 #x59BA #x59BC #x59BD - #x59BF #x59C0 #x59C1 #x59C2 #x59C3 #x59C4 #x59C5 #x59C7 #x59C8 #x59C9 - #x59CC #x59CD #x59CE #x59CF #x59D5 #x59D6 #x59D9 #x59DB #x59DE #x59DF - #x59E0 #x59E1 #x59E2 #x59E4 #x59E6 #x59E7 #x59E9 #x59EA #x59EB #x59ED - #x59EE #x59EF #x59F0 #x59F1 #x59F2 #x59F3 #x59F4 #x59F5 #x59F6 #x59F7 - #x59F8 #x59FA #x59FC #x59FD #x59FE #x5A00 #x5A02 #x5A0A #x5A0B #x5A0D - #x5A0E #x5A0F #x5A10 #x5A12 #x5A14 #x5A15 #x5A16 #x5A17 #x5A19 #x5A1A - #x5A1B #x5A1D #x5A1E #x5A21 #x5A22 #x5A24 #x5A26 #x5A27 #x5A28 #x5A2A - #x5A2B #x5A2C #x5A2D #x5A2E #x5A2F #x5A30 #x5A33 #x5A35 #x5A37 #x5A38 - #x5A39 #x5A3A #x5A3B #x5A3D #x5A3E #x5A3F #x5A41 #x5A42 #x5A43 #x5A44 - #x5A45 #x5A47 #x5A48 #x5A4B #x5A4C #x5A4D #x5A4E #x5A4F #x5A50 #x5A51 - #x5A52 #x5A53 #x5A54 #x5A56 #x5A57 #x5A58 #x5A59 #x5A5B #x5A5C #x5A5D - #x5A5E #x5A5F #x5A60 #x5A61 #x5A63 #x5A64 #x5A65 #x5A66 #x5A68 #x5A69 - #x5A6B #x5A6C #x5A6D #x5A6E #x5A6F #x5A70 #x5A71 #x5A72 #x5A73 #x5A78 - #x5A79 #x5A7B #x5A7C #x5A7D #x5A7E #x5A80 #x5A81 #x5A82 #x5A83 #x5A84 - #x5A85 #x5A86 #x5A87 #x5A88 #x5A89 #x5A8A #x5A8B #x5A8C #x5A8D #x5A8E - #x5A8F #x5A90 #x5A91 #x5A93 #x5A94 #x5A95 #x5A96 #x5A97 #x5A98 #x5A99 - #x5A9C #x5A9D #x5A9E #x5A9F #x5AA0 #x5AA1 #x5AA2 #x5AA3 #x5AA4 #x5AA5 - #x5AA6 #x5AA7 #x5AA8 #x5AA9 #x5AAB #x5AAC #x5AAD #x5AAE #x5AAF #x5AB0 - #x5AB1 #x5AB4 #x5AB6 #x5AB7 #x5AB9 #x5ABA #x5ABB #x5ABC #x5ABD #x5ABF - #x5AC0 #x5AC3 #x5AC4 #x5AC5 #x5AC6 #x5AC7 #x5AC8 #x5ACA #x5ACB #x5ACD - #x5ACE #x5ACF #x5AD0 #x5AD1 #x5AD3 #x5AD5 #x5AD7 #x5AD9 #x5ADA #x5ADB - #x5ADD #x5ADE #x5ADF #x5AE2 #x5AE4 #x5AE5 #x5AE7 #x5AE8 #x5AEA #x5AEC - #x5AED #x5AEE #x5AEF #x5AF0 #x5AF2 #x5AF3 #x5AF4 #x5AF5 #x5AF6 #x5AF7 - #x5AF8 #x5AF9 #x5AFA #x5AFB #x5AFC #x5AFD #x5AFE #x5AFF #x5B00 #x5B01 - #x5B02 #x5B03 #x5B04 #x5B05 #x5B06 #x5B07 #x5B08 #x5B0A #x5B0B #x5B0C - #x5B0D #x5B0E #x5B0F #x5B10 #x5B11 #x5B12 #x5B13 #x5B14 #x5B15 #x5B18 - #x5B19 #x5B1A #x5B1B #x5B1C #x5B1D #x5B1E #x5B1F #x5B20 #x5B21 #x5B22 - #x5B23 #x5B24 #x5B25 #x5B26 #x5B27 #x5B28 #x5B29 #x5B2A #x5B2B #x5B2C - #x5B2D #x5B2E #x5B2F #x5B30 #x5B31 #x5B33 #x5B35 #x5B36 #x5B38 #x5B39 - #x5B3A #x5B3B #x5B3C #x5B3D #x5B3E #x5B3F #x5B41 #x5B42 #x5B43 #x5B44 - #x5B45 #x5B46 #x5B47 #x5B48 #x5B49 #x5B4A #x5B4B #x5B4C #x5B4D #x5B4E - #x5B4F #x5B52 #x5B56 #x5B5E #x5B60 #x5B61 #x5B67 #x5B68 #x5B6B #x5B6D - #x5B6E #x5B6F #x5B72 #x5B74 #x5B76 #x5B77 #x5B78 #x5B79 #x5B7B #x5B7C - #x5B7E #x5B7F #x5B82 #x5B86 #x5B8A #x5B8D #x5B8E #x5B90 #x5B91 #x5B92 - #x5B94 #x5B96 #x5B9F #x5BA7 #x5BA8 #x5BA9 #x5BAC #x5BAD #x5BAE #x5BAF - #x5BB1 #x5BB2 #x5BB7 #x5BBA #x5BBB #x5BBC #x5BC0 #x5BC1 #x5BC3 #x5BC8 - #x5BC9 #x5BCA #x5BCB #x5BCD #x5BCE #x5BCF #x5BD1 #x5BD4 #x5BD5 #x5BD6 - #x5BD7 #x5BD8 #x5BD9 #x5BDA #x5BDB #x5BDC #x5BE0 #x5BE2 #x5BE3 #x5BE6 - #x5BE7 #x5BE9 #x5BEA #x5BEB #x5BEC #x5BED #x5BEF #x5BF1 #x5BF2 #x5BF3 - #x5BF4 #x5BF5 #x5BF6 #x5BF7 #x5BFD #x5BFE #x5C00 #x5C02 #x5C03 #x5C05 - #x5C07 #x5C08 #x5C0B #x5C0C #x5C0D #x5C0E #x5C10 #x5C12 #x5C13 #x5C17 - #x5C19 #x5C1B #x5C1E #x5C1F #x5C20 #x5C21 #x5C23 #x5C26 #x5C28 #x5C29 - #x5C2A #x5C2B #x5C2D #x5C2E #x5C2F #x5C30 #x5C32 #x5C33 #x5C35 #x5C36 - #x5C37 #x5C43 #x5C44 #x5C46 #x5C47 #x5C4C #x5C4D #x5C52 #x5C53 #x5C54 - #x5C56 #x5C57 #x5C58 #x5C5A #x5C5B #x5C5C #x5C5D #x5C5F #x5C62 #x5C64 - #x5C67 #x5C68 #x5C69 #x5C6A #x5C6B #x5C6C #x5C6D #x5C70 #x5C72 #x5C73 - #x5C74 #x5C75 #x5C76 #x5C77 #x5C78 #x5C7B #x5C7C #x5C7D #x5C7E #x5C80 - #x5C83 #x5C84 #x5C85 #x5C86 #x5C87 #x5C89 #x5C8A #x5C8B #x5C8E #x5C8F - #x5C92 #x5C93 #x5C95 #x5C9D #x5C9E #x5C9F #x5CA0 #x5CA1 #x5CA4 #x5CA5 - #x5CA6 #x5CA7 #x5CA8 #x5CAA #x5CAE #x5CAF #x5CB0 #x5CB2 #x5CB4 #x5CB6 - #x5CB9 #x5CBA #x5CBB #x5CBC #x5CBE #x5CC0 #x5CC2 #x5CC3 #x5CC5 #x5CC6 - #x5CC7 #x5CC8 #x5CC9 #x5CCA #x5CCC #x5CCD #x5CCE #x5CCF #x5CD0 #x5CD1 - #x5CD3 #x5CD4 #x5CD5 #x5CD6 #x5CD7 #x5CD8 #x5CDA #x5CDB #x5CDC #x5CDD - #x5CDE #x5CDF #x5CE0 #x5CE2 #x5CE3 #x5CE7 #x5CE9 #x5CEB #x5CEC #x5CEE - #x5CEF #x5CF1 #x5CF2 #x5CF3 #x5CF4 #x5CF5 #x5CF6 #x5CF7 #x5CF8 #x5CF9 - #x5CFA #x5CFC #x5CFD #x5CFE #x5CFF #x5D00 #x5D01 #x5D04 #x5D05 #x5D08 - #x5D09 #x5D0A #x5D0B #x5D0C #x5D0D #x5D0F #x5D10 #x5D11 #x5D12 #x5D13 - #x5D15 #x5D17 #x5D18 #x5D19 #x5D1A #x5D1C #x5D1D #x5D1F #x5D20 #x5D21 - #x5D22 #x5D23 #x5D25 #x5D28 #x5D2A #x5D2B #x5D2C #x5D2F #x5D30 #x5D31 - #x5D32 #x5D33 #x5D35 #x5D36 #x5D37 #x5D38 #x5D39 #x5D3A #x5D3B #x5D3C - #x5D3F #x5D40 #x5D41 #x5D42 #x5D43 #x5D44 #x5D45 #x5D46 #x5D48 #x5D49 - #x5D4D #x5D4E #x5D4F #x5D50 #x5D51 #x5D52 #x5D53 #x5D54 #x5D55 #x5D56 - #x5D57 #x5D59 #x5D5A #x5D5C #x5D5E #x5D5F #x5D60 #x5D61 #x5D62 #x5D63 - #x5D64 #x5D65 #x5D66 #x5D67 #x5D68 #x5D6A #x5D6D #x5D6E #x5D70 #x5D71 - #x5D72 #x5D73 #x5D75 #x5D76 #x5D77 #x5D78 #x5D79 #x5D7A #x5D7B #x5D7C - #x5D7D #x5D7E #x5D7F #x5D80 #x5D81 #x5D83 #x5D84 #x5D85 #x5D86 #x5D87 - #x5D88 #x5D89 #x5D8A #x5D8B #x5D8C #x5D8D #x5D8E #x5D8F #x5D90 #x5D91 - #x5D92 #x5D93 #x5D94 #x5D95 #x5D96 #x5D97 #x5D98 #x5D9A #x5D9B #x5D9C - #x5D9E #x5D9F #x5DA0 #x5DA1 #x5DA2 #x5DA3 #x5DA4 #x5DA5 #x5DA6 #x5DA7 - #x5DA8 #x5DA9 #x5DAA #x5DAB #x5DAC #x5DAD #x5DAE #x5DAF #x5DB0 #x5DB1 - #x5DB2 #x5DB3 #x5DB4 #x5DB5 #x5DB6 #x5DB8 #x5DB9 #x5DBA #x5DBB #x5DBC - #x5DBD #x5DBE #x5DBF #x5DC0 #x5DC1 #x5DC2 #x5DC3 #x5DC4 #x5DC6 #x5DC7 - #x5DC8 #x5DC9 #x5DCA #x5DCB #x5DCC #x5DCE #x5DCF #x5DD0 #x5DD1 #x5DD2 - #x5DD3 #x5DD4 #x5DD5 #x5DD6 #x5DD7 #x5DD8 #x5DD9 #x5DDA #x5DDC #x5DDF - #x5DE0 #x5DE3 #x5DE4 #x5DEA #x5DEC #x5DED #x5DF0 #x5DF5 #x5DF6 #x5DF8 - #x5DF9 #x5DFA #x5DFB #x5DFC #x5DFF #x5E00 #x5E04 #x5E07 #x5E09 #x5E0A - #x5E0B #x5E0D #x5E0E #x5E12 #x5E13 #x5E17 #x5E1E #x5E1F #x5E20 #x5E21 - #x5E22 #x5E23 #x5E24 #x5E25 #x5E28 #x5E29 #x5E2A #x5E2B #x5E2C #x5E2F - #x5E30 #x5E32 #x5E33 #x5E34 #x5E35 #x5E36 #x5E39 #x5E3A #x5E3E #x5E3F - #x5E40 #x5E41 #x5E43 #x5E46 #x5E47 #x5E48 #x5E49 #x5E4A #x5E4B #x5E4D - #x5E4E #x5E4F #x5E50 #x5E51 #x5E52 #x5E53 #x5E56 #x5E57 #x5E58 #x5E59 - #x5E5A #x5E5C #x5E5D #x5E5F #x5E60 #x5E63 #x5E64 #x5E65 #x5E66 #x5E67 - #x5E68 #x5E69 #x5E6A #x5E6B #x5E6C #x5E6D #x5E6E #x5E6F #x5E70 #x5E71 - #x5E75 #x5E77 #x5E79 #x5E7E #x5E81 #x5E82 #x5E83 #x5E85 #x5E88 #x5E89 - #x5E8C #x5E8D #x5E8E #x5E92 #x5E98 #x5E9B #x5E9D #x5EA1 #x5EA2 #x5EA3 - #x5EA4 #x5EA8 #x5EA9 #x5EAA #x5EAB #x5EAC #x5EAE #x5EAF #x5EB0 #x5EB1 - #x5EB2 #x5EB4 #x5EBA #x5EBB #x5EBC #x5EBD #x5EBF #x5EC0 #x5EC1 #x5EC2 - #x5EC3 #x5EC4 #x5EC5 #x5EC6 #x5EC7 #x5EC8 #x5ECB #x5ECC #x5ECD #x5ECE - #x5ECF #x5ED0 #x5ED4 #x5ED5 #x5ED7 #x5ED8 #x5ED9 #x5EDA #x5EDC #x5EDD - #x5EDE #x5EDF #x5EE0 #x5EE1 #x5EE2 #x5EE3 #x5EE4 #x5EE5 #x5EE6 #x5EE7 - #x5EE9 #x5EEB #x5EEC #x5EED #x5EEE #x5EEF #x5EF0 #x5EF1 #x5EF2 #x5EF3 - #x5EF5 #x5EF8 #x5EF9 #x5EFB #x5EFC #x5EFD #x5F05 #x5F06 #x5F07 #x5F09 - #x5F0C #x5F0D #x5F0E #x5F10 #x5F12 #x5F14 #x5F16 #x5F19 #x5F1A #x5F1C - #x5F1D #x5F1E #x5F21 #x5F22 #x5F23 #x5F24 #x5F28 #x5F2B #x5F2C #x5F2E - #x5F30 #x5F32 #x5F33 #x5F34 #x5F35 #x5F36 #x5F37 #x5F38 #x5F3B #x5F3D - #x5F3E #x5F3F #x5F41 #x5F42 #x5F43 #x5F44 #x5F45 #x5F46 #x5F47 #x5F48 - #x5F49 #x5F4A #x5F4B #x5F4C #x5F4D #x5F4E #x5F4F #x5F51 #x5F54 #x5F59 - #x5F5A #x5F5B #x5F5C #x5F5E #x5F5F #x5F60 #x5F63 #x5F65 #x5F67 #x5F68 - #x5F6B #x5F6E #x5F6F #x5F72 #x5F74 #x5F75 #x5F76 #x5F78 #x5F7A #x5F7D - #x5F7E #x5F7F #x5F83 #x5F86 #x5F8D #x5F8E #x5F8F #x5F91 #x5F93 #x5F94 - #x5F96 #x5F9A #x5F9B #x5F9D #x5F9E #x5F9F #x5FA0 #x5FA2 #x5FA3 #x5FA4 - #x5FA5 #x5FA6 #x5FA7 #x5FA9 #x5FAB #x5FAC #x5FAF #x5FB0 #x5FB1 #x5FB2 - #x5FB3 #x5FB4 #x5FB6 #x5FB8 #x5FB9 #x5FBA #x5FBB #x5FBE #x5FBF #x5FC0 - #x5FC1 #x5FC2 #x5FC7 #x5FC8 #x5FCA #x5FCB #x5FCE #x5FD3 #x5FD4 #x5FD5 - #x5FDA #x5FDB #x5FDC #x5FDE #x5FDF #x5FE2 #x5FE3 #x5FE5 #x5FE6 #x5FE8 - #x5FE9 #x5FEC #x5FEF #x5FF0 #x5FF2 #x5FF3 #x5FF4 #x5FF6 #x5FF7 #x5FF9 - #x5FFA #x5FFC #x6007 #x6008 #x6009 #x600B #x600C #x6010 #x6011 #x6013 - #x6017 #x6018 #x601A #x601E #x601F #x6022 #x6023 #x6024 #x602C #x602D - #x602E #x6030 #x6031 #x6032 #x6033 #x6034 #x6036 #x6037 #x6038 #x6039 - #x603A #x603D #x603E #x6040 #x6044 #x6045 #x6046 #x6047 #x6048 #x6049 - #x604A #x604C #x604E #x604F #x6051 #x6053 #x6054 #x6056 #x6057 #x6058 - #x605B #x605C #x605E #x605F #x6060 #x6061 #x6065 #x6066 #x606E #x6071 - #x6072 #x6074 #x6075 #x6077 #x607E #x6080 #x6081 #x6082 #x6085 #x6086 - #x6087 #x6088 #x608A #x608B #x608E #x608F #x6090 #x6091 #x6093 #x6095 - #x6097 #x6098 #x6099 #x609C #x609E #x60A1 #x60A2 #x60A4 #x60A5 #x60A7 - #x60A9 #x60AA #x60AE #x60B0 #x60B3 #x60B5 #x60B6 #x60B7 #x60B9 #x60BA - #x60BD #x60BE #x60BF #x60C0 #x60C1 #x60C2 #x60C3 #x60C4 #x60C7 #x60C8 - #x60C9 #x60CC #x60CD #x60CE #x60CF #x60D0 #x60D2 #x60D3 #x60D4 #x60D6 - #x60D7 #x60D9 #x60DB #x60DE #x60E1 #x60E2 #x60E3 #x60E4 #x60E5 #x60EA - #x60F1 #x60F2 #x60F5 #x60F7 #x60F8 #x60FB #x60FC #x60FD #x60FE #x60FF - #x6102 #x6103 #x6104 #x6105 #x6107 #x610A #x610B #x610C #x6110 #x6111 - #x6112 #x6113 #x6114 #x6116 #x6117 #x6118 #x6119 #x611B #x611C #x611D - #x611E #x6121 #x6122 #x6125 #x6128 #x6129 #x612A #x612C #x612D #x612E - #x612F #x6130 #x6131 #x6132 #x6133 #x6134 #x6135 #x6136 #x6137 #x6138 - #x6139 #x613A #x613B #x613C #x613D #x613E #x6140 #x6141 #x6142 #x6143 - #x6144 #x6145 #x6146 #x6147 #x6149 #x614B #x614D #x614F #x6150 #x6152 - #x6153 #x6154 #x6156 #x6157 #x6158 #x6159 #x615A #x615B #x615C #x615E - #x615F #x6160 #x6161 #x6163 #x6164 #x6165 #x6166 #x6169 #x616A #x616B - #x616C #x616D #x616E #x616F #x6171 #x6172 #x6173 #x6174 #x6176 #x6178 - #x6179 #x617A #x617B #x617C #x617D #x617E #x617F #x6180 #x6181 #x6182 - #x6183 #x6184 #x6185 #x6186 #x6187 #x6188 #x6189 #x618A #x618C #x618D - #x618F #x6190 #x6191 #x6192 #x6193 #x6195 #x6196 #x6197 #x6198 #x6199 - #x619A #x619B #x619C #x619E #x619F #x61A0 #x61A1 #x61A2 #x61A3 #x61A4 - #x61A5 #x61A6 #x61AA #x61AB #x61AD #x61AE #x61AF #x61B0 #x61B1 #x61B2 - #x61B3 #x61B4 #x61B5 #x61B6 #x61B8 #x61B9 #x61BA #x61BB #x61BC #x61BD - #x61BF #x61C0 #x61C1 #x61C3 #x61C4 #x61C5 #x61C6 #x61C7 #x61C9 #x61CC - #x61CD #x61CE #x61CF #x61D0 #x61D3 #x61D5 #x61D6 #x61D7 #x61D8 #x61D9 - #x61DA #x61DB #x61DC #x61DD #x61DE #x61DF #x61E0 #x61E1 #x61E2 #x61E3 - #x61E4 #x61E5 #x61E7 #x61E8 #x61E9 #x61EA #x61EB #x61EC #x61ED #x61EE - #x61EF #x61F0 #x61F1 #x61F2 #x61F3 #x61F4 #x61F6 #x61F7 #x61F8 #x61F9 - #x61FA #x61FB #x61FC #x61FD #x61FE #x6200 #x6201 #x6202 #x6203 #x6204 - #x6205 #x6207 #x6209 #x6213 #x6214 #x6219 #x621C #x621D #x621E #x6220 - #x6223 #x6226 #x6227 #x6228 #x6229 #x622B #x622D #x622F #x6230 #x6231 - #x6232 #x6235 #x6236 #x6238 #x6239 #x623A #x623B #x623C #x6242 #x6244 - #x6245 #x6246 #x624A #x624F #x6250 #x6255 #x6256 #x6257 #x6259 #x625A - #x625C #x625D #x625E #x625F #x6260 #x6261 #x6262 #x6264 #x6265 #x6268 - #x6271 #x6272 #x6274 #x6275 #x6277 #x6278 #x627A #x627B #x627D #x6281 - #x6282 #x6283 #x6285 #x6286 #x6287 #x6288 #x628B #x628C #x628D #x628E - #x628F #x6290 #x6294 #x6299 #x629C #x629D #x629E #x62A3 #x62A6 #x62A7 - #x62A9 #x62AA #x62AD #x62AE #x62AF #x62B0 #x62B2 #x62B3 #x62B4 #x62B6 - #x62B7 #x62B8 #x62BA #x62BE #x62C0 #x62C1 #x62C3 #x62CB #x62CF #x62D1 - #x62D5 #x62DD #x62DE #x62E0 #x62E1 #x62E4 #x62EA #x62EB #x62F0 #x62F2 - #x62F5 #x62F8 #x62F9 #x62FA #x62FB #x6300 #x6303 #x6304 #x6305 #x6306 - #x630A #x630B #x630C #x630D #x630F #x6310 #x6312 #x6313 #x6314 #x6315 - #x6317 #x6318 #x6319 #x631C #x6326 #x6327 #x6329 #x632C #x632D #x632E - #x6330 #x6331 #x6333 #x6334 #x6335 #x6336 #x6337 #x6338 #x633B #x633C - #x633E #x633F #x6340 #x6341 #x6344 #x6347 #x6348 #x634A #x6351 #x6352 - #x6353 #x6354 #x6356 #x6357 #x6358 #x6359 #x635A #x635B #x635C #x635D - #x6360 #x6364 #x6365 #x6366 #x6368 #x636A #x636B #x636C #x636F #x6370 - #x6372 #x6373 #x6374 #x6375 #x6378 #x6379 #x637C #x637D #x637E #x637F - #x6381 #x6383 #x6384 #x6385 #x6386 #x638B #x638D #x6391 #x6393 #x6394 - #x6395 #x6397 #x6399 #x639A #x639B #x639C #x639D #x639E #x639F #x63A1 - #x63A4 #x63A6 #x63AB #x63AF #x63B1 #x63B2 #x63B5 #x63B6 #x63B9 #x63BB - #x63BD #x63BF #x63C0 #x63C1 #x63C2 #x63C3 #x63C5 #x63C7 #x63C8 #x63CA - #x63CB #x63CC #x63D1 #x63D3 #x63D4 #x63D5 #x63D7 #x63D8 #x63D9 #x63DA - #x63DB #x63DC #x63DD #x63DF #x63E2 #x63E4 #x63E5 #x63E6 #x63E7 #x63E8 - #x63EB #x63EC #x63EE #x63EF #x63F0 #x63F1 #x63F3 #x63F5 #x63F7 #x63F9 - #x63FA #x63FB #x63FC #x63FE #x6403 #x6404 #x6406 #x6407 #x6408 #x6409 - #x640A #x640D #x640E #x6411 #x6412 #x6415 #x6416 #x6417 #x6418 #x6419 - #x641A #x641D #x641F #x6422 #x6423 #x6424 #x6425 #x6427 #x6428 #x6429 - #x642B #x642E #x642F #x6430 #x6431 #x6432 #x6433 #x6435 #x6436 #x6437 - #x6438 #x6439 #x643B #x643C #x643E #x6440 #x6442 #x6443 #x6449 #x644B - #x644C #x644D #x644E #x644F #x6450 #x6451 #x6453 #x6455 #x6456 #x6457 - #x6459 #x645A #x645B #x645C #x645D #x645F #x6460 #x6461 #x6462 #x6463 - #x6464 #x6465 #x6466 #x6468 #x646A #x646B #x646C #x646E #x646F #x6470 - #x6471 #x6472 #x6473 #x6474 #x6475 #x6476 #x6477 #x647B #x647C #x647D - #x647E #x647F #x6480 #x6481 #x6483 #x6486 #x6488 #x6489 #x648A #x648B - #x648C #x648D #x648E #x648F #x6490 #x6493 #x6494 #x6497 #x6498 #x649A - #x649B #x649C #x649D #x649F #x64A0 #x64A1 #x64A2 #x64A3 #x64A5 #x64A6 - #x64A7 #x64A8 #x64AA #x64AB #x64AF #x64B1 #x64B2 #x64B3 #x64B4 #x64B6 - #x64B9 #x64BB #x64BD #x64BE #x64BF #x64C1 #x64C3 #x64C4 #x64C6 #x64C7 - #x64C8 #x64C9 #x64CA #x64CB #x64CC #x64CF #x64D1 #x64D3 #x64D4 #x64D5 - #x64D6 #x64D9 #x64DA #x64DB #x64DC #x64DD #x64DF #x64E0 #x64E1 #x64E3 - #x64E5 #x64E7 #x64E8 #x64E9 #x64EA #x64EB #x64EC #x64ED #x64EE #x64EF - #x64F0 #x64F1 #x64F2 #x64F3 #x64F4 #x64F5 #x64F6 #x64F7 #x64F8 #x64F9 - #x64FA #x64FB #x64FC #x64FD #x64FE #x64FF #x6501 #x6502 #x6503 #x6504 - #x6505 #x6506 #x6507 #x6508 #x650A #x650B #x650C #x650D #x650E #x650F - #x6510 #x6511 #x6513 #x6514 #x6515 #x6516 #x6517 #x6519 #x651A #x651B - #x651C #x651D #x651E #x651F #x6520 #x6521 #x6522 #x6523 #x6524 #x6526 - #x6527 #x6528 #x6529 #x652A #x652C #x652D #x6530 #x6531 #x6532 #x6533 - #x6537 #x653A #x653C #x653D #x6540 #x6541 #x6542 #x6543 #x6544 #x6546 - #x6547 #x654A #x654B #x654D #x654E #x6550 #x6552 #x6553 #x6554 #x6557 - #x6558 #x655A #x655C #x655F #x6560 #x6561 #x6564 #x6565 #x6567 #x6568 - #x6569 #x656A #x656D #x656E #x656F #x6571 #x6573 #x6575 #x6576 #x6578 - #x6579 #x657A #x657B #x657C #x657D #x657E #x657F #x6580 #x6581 #x6582 - #x6583 #x6584 #x6585 #x6586 #x6588 #x6589 #x658A #x658D #x658E #x658F - #x6592 #x6594 #x6595 #x6596 #x6598 #x659A #x659D #x659E #x65A0 #x65A2 - #x65A3 #x65A6 #x65A8 #x65AA #x65AC #x65AE #x65B1 #x65B2 #x65B3 #x65B4 - #x65B5 #x65B6 #x65B7 #x65B8 #x65BA #x65BB #x65BE #x65BF #x65C0 #x65C2 - #x65C7 #x65C8 #x65C9 #x65CA #x65CD #x65D0 #x65D1 #x65D3 #x65D4 #x65D5 - #x65D8 #x65D9 #x65DA #x65DB #x65DC #x65DD #x65DE #x65DF #x65E1 #x65E3 - #x65E4 #x65EA #x65EB #x65F2 #x65F3 #x65F4 #x65F5 #x65F8 #x65F9 #x65FB - #x65FC #x65FD #x65FE #x65FF #x6601 #x6604 #x6605 #x6607 #x6608 #x6609 - #x660B #x660D #x6610 #x6611 #x6612 #x6616 #x6617 #x6618 #x661A #x661B - #x661C #x661E #x6621 #x6622 #x6623 #x6624 #x6626 #x6629 #x662A #x662B - #x662C #x662E #x6630 #x6632 #x6633 #x6637 #x6638 #x6639 #x663A #x663B - #x663D #x663F #x6640 #x6642 #x6644 #x6645 #x6646 #x6647 #x6648 #x6649 - #x664A #x664D #x664E #x6650 #x6651 #x6658 #x6659 #x665B #x665C #x665D - #x665E #x6660 #x6662 #x6663 #x6665 #x6667 #x6669 #x666A #x666B #x666C - #x666D #x6671 #x6672 #x6673 #x6675 #x6678 #x6679 #x667B #x667C #x667D - #x667F #x6680 #x6681 #x6683 #x6685 #x6686 #x6688 #x6689 #x668A #x668B - #x668D #x668E #x668F #x6690 #x6692 #x6693 #x6694 #x6695 #x6698 #x6699 - #x669A #x669B #x669C #x669E #x669F #x66A0 #x66A1 #x66A2 #x66A3 #x66A4 - #x66A5 #x66A6 #x66A9 #x66AA #x66AB #x66AC #x66AD #x66AF #x66B0 #x66B1 - #x66B2 #x66B3 #x66B5 #x66B6 #x66B7 #x66B8 #x66BA #x66BB #x66BC #x66BD - #x66BF #x66C0 #x66C1 #x66C2 #x66C3 #x66C4 #x66C5 #x66C6 #x66C7 #x66C8 - #x66C9 #x66CA #x66CB #x66CC #x66CD #x66CE #x66CF #x66D0 #x66D1 #x66D2 - #x66D3 #x66D4 #x66D5 #x66D6 #x66D7 #x66D8 #x66DA #x66DE #x66DF #x66E0 - #x66E1 #x66E2 #x66E3 #x66E4 #x66E5 #x66E7 #x66E8 #x66EA #x66EB #x66EC - #x66ED #x66EE #x66EF #x66F1 #x66F5 #x66F6 #x66F8 #x66FA #x66FB #x66FD - #x6701 #x6702 #x6703 #x6704 #x6705 #x6706 #x6707 #x670C #x670E #x670F - #x6711 #x6712 #x6713 #x6716 #x6718 #x6719 #x671A #x671C #x671E #x6720 - #x6721 #x6722 #x6723 #x6724 #x6725 #x6727 #x6729 #x672E #x6730 #x6732 - #x6733 #x6736 #x6737 #x6738 #x6739 #x673B #x673C #x673E #x673F #x6741 - #x6744 #x6745 #x6747 #x674A #x674B #x674D #x6752 #x6754 #x6755 #x6757 - #x6758 #x6759 #x675A #x675B #x675D #x6762 #x6763 #x6764 #x6766 #x6767 - #x676B #x676C #x676E #x6771 #x6774 #x6776 #x6778 #x6779 #x677A #x677B - #x677D #x6780 #x6782 #x6783 #x6785 #x6786 #x6788 #x678A #x678C #x678D - #x678E #x678F #x6791 #x6792 #x6793 #x6794 #x6796 #x6799 #x679B #x679F - #x67A0 #x67A1 #x67A4 #x67A6 #x67A9 #x67AC #x67AE #x67B1 #x67B2 #x67B4 - #x67B9 #x67BA #x67BB #x67BC #x67BD #x67BE #x67BF #x67C0 #x67C2 #x67C5 - #x67C6 #x67C7 #x67C8 #x67C9 #x67CA #x67CB #x67CC #x67CD #x67CE #x67D5 - #x67D6 #x67D7 #x67DB #x67DF #x67E1 #x67E3 #x67E4 #x67E6 #x67E7 #x67E8 - #x67EA #x67EB #x67ED #x67EE #x67F2 #x67F5 #x67F6 #x67F7 #x67F8 #x67F9 - #x67FA #x67FB #x67FC #x67FE #x6801 #x6802 #x6803 #x6804 #x6806 #x680D - #x6810 #x6812 #x6814 #x6815 #x6818 #x6819 #x681A #x681B #x681C #x681E - #x681F #x6820 #x6822 #x6823 #x6824 #x6825 #x6826 #x6827 #x6828 #x682B - #x682C #x682D #x682E #x682F #x6830 #x6831 #x6834 #x6835 #x6836 #x683A - #x683B #x683F #x6847 #x684B #x684D #x684F #x6852 #x6856 #x6857 #x6858 - #x6859 #x685A #x685B #x685C #x685D #x685E #x685F #x686A #x686C #x686D - #x686E #x686F #x6870 #x6871 #x6872 #x6873 #x6875 #x6878 #x6879 #x687A - #x687B #x687C #x687D #x687E #x687F #x6880 #x6882 #x6884 #x6887 #x6888 - #x6889 #x688A #x688B #x688C #x688D #x688E #x6890 #x6891 #x6892 #x6894 - #x6895 #x6896 #x6898 #x6899 #x689A #x689B #x689C #x689D #x689E #x689F - #x68A0 #x68A1 #x68A3 #x68A4 #x68A5 #x68A9 #x68AA #x68AB #x68AC #x68AE - #x68B1 #x68B2 #x68B4 #x68B6 #x68B7 #x68B8 #x68B9 #x68BA #x68BB #x68BC - #x68BD #x68BE #x68BF #x68C1 #x68C3 #x68C4 #x68C5 #x68C6 #x68C7 #x68C8 - #x68CA #x68CC #x68CE #x68CF #x68D0 #x68D1 #x68D3 #x68D4 #x68D6 #x68D7 - #x68D9 #x68DB #x68DC #x68DD #x68DE #x68DF #x68E1 #x68E2 #x68E4 #x68E5 - #x68E6 #x68E7 #x68E8 #x68E9 #x68EA #x68EB #x68EC #x68ED #x68EF #x68F2 - #x68F3 #x68F4 #x68F6 #x68F7 #x68F8 #x68FB #x68FD #x68FE #x68FF #x6900 - #x6902 #x6903 #x6904 #x6906 #x6907 #x6908 #x6909 #x690A #x690C #x690F - #x6911 #x6913 #x6914 #x6915 #x6916 #x6917 #x6918 #x6919 #x691A #x691B - #x691C #x691D #x691E #x6921 #x6922 #x6923 #x6925 #x6926 #x6927 #x6928 - #x6929 #x692A #x692B #x692C #x692E #x692F #x6931 #x6932 #x6933 #x6935 - #x6936 #x6937 #x6938 #x693A #x693B #x693C #x693E #x6940 #x6941 #x6943 - #x6944 #x6945 #x6946 #x6947 #x6948 #x6949 #x694A #x694B #x694C #x694D - #x694E #x694F #x6950 #x6951 #x6952 #x6953 #x6955 #x6956 #x6958 #x6959 - #x695B #x695C #x695F #x6961 #x6962 #x6964 #x6965 #x6967 #x6968 #x6969 - #x696A #x696C #x696D #x696F #x6970 #x6972 #x6973 #x6974 #x6975 #x6976 - #x697A #x697B #x697D #x697E #x697F #x6981 #x6983 #x6985 #x698A #x698B - #x698C #x698E #x698F #x6990 #x6991 #x6992 #x6993 #x6996 #x6997 #x6999 - #x699A #x699D #x699E #x699F #x69A0 #x69A1 #x69A2 #x69A3 #x69A4 #x69A5 - #x69A6 #x69A9 #x69AA #x69AC #x69AE #x69AF #x69B0 #x69B2 #x69B3 #x69B5 - #x69B6 #x69B8 #x69B9 #x69BA #x69BC #x69BD #x69BE #x69BF #x69C0 #x69C2 - #x69C3 #x69C4 #x69C5 #x69C6 #x69C7 #x69C8 #x69C9 #x69CB #x69CD #x69CF - #x69D1 #x69D2 #x69D3 #x69D5 #x69D6 #x69D7 #x69D8 #x69D9 #x69DA #x69DC - #x69DD #x69DE #x69E1 #x69E2 #x69E3 #x69E4 #x69E5 #x69E6 #x69E7 #x69E8 - #x69E9 #x69EA #x69EB #x69EC #x69EE #x69EF #x69F0 #x69F1 #x69F3 #x69F4 - #x69F5 #x69F6 #x69F7 #x69F8 #x69F9 #x69FA #x69FB #x69FC #x69FE #x6A00 - #x6A01 #x6A02 #x6A03 #x6A04 #x6A05 #x6A06 #x6A07 #x6A08 #x6A09 #x6A0B - #x6A0C #x6A0D #x6A0E #x6A0F #x6A10 #x6A11 #x6A12 #x6A13 #x6A14 #x6A15 - #x6A16 #x6A19 #x6A1A #x6A1B #x6A1C #x6A1D #x6A1E #x6A20 #x6A22 #x6A23 - #x6A24 #x6A25 #x6A26 #x6A27 #x6A29 #x6A2B #x6A2C #x6A2D #x6A2E #x6A30 - #x6A32 #x6A33 #x6A34 #x6A36 #x6A37 #x6A38 #x6A39 #x6A3A #x6A3B #x6A3C - #x6A3F #x6A40 #x6A41 #x6A42 #x6A43 #x6A45 #x6A46 #x6A48 #x6A49 #x6A4A - #x6A4B #x6A4C #x6A4D #x6A4E #x6A4F #x6A51 #x6A52 #x6A53 #x6A54 #x6A55 - #x6A56 #x6A57 #x6A5A #x6A5C #x6A5D #x6A5E #x6A5F #x6A60 #x6A62 #x6A63 - #x6A64 #x6A66 #x6A67 #x6A68 #x6A69 #x6A6A #x6A6B #x6A6C #x6A6D #x6A6E - #x6A6F #x6A70 #x6A72 #x6A73 #x6A74 #x6A75 #x6A76 #x6A77 #x6A78 #x6A7A - #x6A7B #x6A7D #x6A7E #x6A7F #x6A81 #x6A82 #x6A83 #x6A85 #x6A86 #x6A87 - #x6A88 #x6A89 #x6A8A #x6A8B #x6A8C #x6A8D #x6A8F #x6A92 #x6A93 #x6A94 - #x6A95 #x6A96 #x6A98 #x6A99 #x6A9A #x6A9B #x6A9C #x6A9D #x6A9E #x6A9F - #x6AA1 #x6AA2 #x6AA3 #x6AA4 #x6AA5 #x6AA6 #x6AA7 #x6AA8 #x6AAA #x6AAD - #x6AAE #x6AAF #x6AB0 #x6AB1 #x6AB2 #x6AB3 #x6AB4 #x6AB5 #x6AB6 #x6AB7 - #x6AB8 #x6AB9 #x6ABA #x6ABB #x6ABC #x6ABD #x6ABE #x6ABF #x6AC0 #x6AC1 - #x6AC2 #x6AC3 #x6AC4 #x6AC5 #x6AC6 #x6AC7 #x6AC8 #x6AC9 #x6ACA #x6ACB - #x6ACC #x6ACD #x6ACE #x6ACF #x6AD0 #x6AD1 #x6AD2 #x6AD3 #x6AD4 #x6AD5 - #x6AD6 #x6AD7 #x6AD8 #x6AD9 #x6ADA #x6ADB #x6ADC #x6ADD #x6ADE #x6ADF - #x6AE0 #x6AE1 #x6AE2 #x6AE3 #x6AE4 #x6AE5 #x6AE6 #x6AE7 #x6AE8 #x6AE9 - #x6AEA #x6AEB #x6AEC #x6AED #x6AEE #x6AEF #x6AF0 #x6AF1 #x6AF2 #x6AF3 - #x6AF4 #x6AF5 #x6AF6 #x6AF7 #x6AF8 #x6AF9 #x6AFA #x6AFB #x6AFC #x6AFD - #x6AFE #x6AFF #x6B00 #x6B01 #x6B02 #x6B03 #x6B04 #x6B05 #x6B06 #x6B07 - #x6B08 #x6B09 #x6B0A #x6B0B #x6B0C #x6B0D #x6B0E #x6B0F #x6B10 #x6B11 - #x6B12 #x6B13 #x6B14 #x6B15 #x6B16 #x6B17 #x6B18 #x6B19 #x6B1A #x6B1B - #x6B1C #x6B1D #x6B1E #x6B1F #x6B25 #x6B26 #x6B28 #x6B29 #x6B2A #x6B2B - #x6B2C #x6B2D #x6B2E #x6B2F #x6B30 #x6B31 #x6B33 #x6B34 #x6B35 #x6B36 - #x6B38 #x6B3B #x6B3C #x6B3D #x6B3F #x6B40 #x6B41 #x6B42 #x6B44 #x6B45 - #x6B48 #x6B4A #x6B4B #x6B4D #x6B4E #x6B4F #x6B50 #x6B51 #x6B52 #x6B53 - #x6B54 #x6B55 #x6B56 #x6B57 #x6B58 #x6B5A #x6B5B #x6B5C #x6B5D #x6B5E - #x6B5F #x6B60 #x6B61 #x6B68 #x6B69 #x6B6B #x6B6C #x6B6D #x6B6E #x6B6F - #x6B70 #x6B71 #x6B72 #x6B73 #x6B74 #x6B75 #x6B76 #x6B77 #x6B78 #x6B7A - #x6B7D #x6B7E #x6B7F #x6B80 #x6B85 #x6B88 #x6B8C #x6B8E #x6B8F #x6B90 - #x6B91 #x6B94 #x6B95 #x6B97 #x6B98 #x6B99 #x6B9C #x6B9D #x6B9E #x6B9F - #x6BA0 #x6BA2 #x6BA3 #x6BA4 #x6BA5 #x6BA6 #x6BA7 #x6BA8 #x6BA9 #x6BAB - #x6BAC #x6BAD #x6BAE #x6BAF #x6BB0 #x6BB1 #x6BB2 #x6BB6 #x6BB8 #x6BB9 - #x6BBA #x6BBB #x6BBC #x6BBD #x6BBE #x6BC0 #x6BC3 #x6BC4 #x6BC6 #x6BC7 - #x6BC8 #x6BC9 #x6BCA #x6BCC #x6BCE #x6BD0 #x6BD1 #x6BD8 #x6BDA #x6BDC - #x6BDD #x6BDE #x6BDF #x6BE0 #x6BE2 #x6BE3 #x6BE4 #x6BE5 #x6BE6 #x6BE7 - #x6BE8 #x6BE9 #x6BEC #x6BED #x6BEE #x6BF0 #x6BF1 #x6BF2 #x6BF4 #x6BF6 - #x6BF7 #x6BF8 #x6BFA #x6BFB #x6BFC #x6BFE #x6BFF #x6C00 #x6C01 #x6C02 - #x6C03 #x6C04 #x6C08 #x6C09 #x6C0A #x6C0B #x6C0C #x6C0E #x6C12 #x6C17 - #x6C1C #x6C1D #x6C1E #x6C20 #x6C23 #x6C25 #x6C2B #x6C2C #x6C2D #x6C31 - #x6C33 #x6C36 #x6C37 #x6C39 #x6C3A #x6C3B #x6C3C #x6C3E #x6C3F #x6C43 - #x6C44 #x6C45 #x6C48 #x6C4B #x6C4C #x6C4D #x6C4E #x6C4F #x6C51 #x6C52 - #x6C53 #x6C56 #x6C58 #x6C59 #x6C5A #x6C62 #x6C63 #x6C65 #x6C66 #x6C67 - #x6C6B #x6C6C #x6C6D #x6C6E #x6C6F #x6C71 #x6C73 #x6C75 #x6C77 #x6C78 - #x6C7A #x6C7B #x6C7C #x6C7F #x6C80 #x6C84 #x6C87 #x6C8A #x6C8B #x6C8D - #x6C8E #x6C91 #x6C92 #x6C95 #x6C96 #x6C97 #x6C98 #x6C9A #x6C9C #x6C9D - #x6C9E #x6CA0 #x6CA2 #x6CA8 #x6CAC #x6CAF #x6CB0 #x6CB4 #x6CB5 #x6CB6 - #x6CB7 #x6CBA #x6CC0 #x6CC1 #x6CC2 #x6CC3 #x6CC6 #x6CC7 #x6CC8 #x6CCB - #x6CCD #x6CCE #x6CCF #x6CD1 #x6CD2 #x6CD8 #x6CD9 #x6CDA #x6CDC #x6CDD - #x6CDF #x6CE4 #x6CE6 #x6CE7 #x6CE9 #x6CEC #x6CED #x6CF2 #x6CF4 #x6CF9 - #x6CFF #x6D00 #x6D02 #x6D03 #x6D05 #x6D06 #x6D08 #x6D09 #x6D0A #x6D0D - #x6D0F #x6D10 #x6D11 #x6D13 #x6D14 #x6D15 #x6D16 #x6D18 #x6D1C #x6D1D - #x6D1F #x6D20 #x6D21 #x6D22 #x6D23 #x6D24 #x6D26 #x6D28 #x6D29 #x6D2C - #x6D2D #x6D2F #x6D30 #x6D34 #x6D36 #x6D37 #x6D38 #x6D3A #x6D3F #x6D40 - #x6D42 #x6D44 #x6D49 #x6D4C #x6D50 #x6D55 #x6D56 #x6D57 #x6D58 #x6D5B - #x6D5D #x6D5F #x6D61 #x6D62 #x6D64 #x6D65 #x6D67 #x6D68 #x6D6B #x6D6C - #x6D6D #x6D70 #x6D71 #x6D72 #x6D73 #x6D75 #x6D76 #x6D79 #x6D7A #x6D7B - #x6D7D #x6D7E #x6D7F #x6D80 #x6D81 #x6D83 #x6D84 #x6D86 #x6D87 #x6D8A - #x6D8B #x6D8D #x6D8F #x6D90 #x6D92 #x6D96 #x6D97 #x6D98 #x6D99 #x6D9A - #x6D9C #x6DA2 #x6DA5 #x6DAC #x6DAD #x6DB0 #x6DB1 #x6DB3 #x6DB4 #x6DB6 - #x6DB7 #x6DB9 #x6DBA #x6DBB #x6DBC #x6DBD #x6DBE #x6DC1 #x6DC2 #x6DC3 - #x6DC8 #x6DC9 #x6DCA #x6DCD #x6DCE #x6DCF #x6DD0 #x6DD2 #x6DD3 #x6DD4 - #x6DD5 #x6DD7 #x6DDA #x6DDB #x6DDC #x6DDF #x6DE2 #x6DE3 #x6DE5 #x6DE7 - #x6DE8 #x6DE9 #x6DEA #x6DED #x6DEF #x6DF0 #x6DF2 #x6DF4 #x6DF5 #x6DF6 - #x6DF8 #x6DFA #x6DFD #x6DFE #x6DFF #x6E00 #x6E01 #x6E02 #x6E03 #x6E04 - #x6E06 #x6E07 #x6E08 #x6E09 #x6E0B #x6E0F #x6E12 #x6E13 #x6E15 #x6E18 - #x6E19 #x6E1B #x6E1C #x6E1E #x6E1F #x6E22 #x6E26 #x6E27 #x6E28 #x6E2A - #x6E2C #x6E2E #x6E30 #x6E31 #x6E33 #x6E35 #x6E36 #x6E37 #x6E39 #x6E3B - #x6E3C #x6E3D #x6E3E #x6E3F #x6E40 #x6E41 #x6E42 #x6E45 #x6E46 #x6E47 - #x6E48 #x6E49 #x6E4A #x6E4B #x6E4C #x6E4F #x6E50 #x6E51 #x6E52 #x6E55 - #x6E57 #x6E59 #x6E5A #x6E5C #x6E5D #x6E5E #x6E60 #x6E61 #x6E62 #x6E63 - #x6E64 #x6E65 #x6E66 #x6E67 #x6E68 #x6E69 #x6E6A #x6E6C #x6E6D #x6E6F - #x6E70 #x6E71 #x6E72 #x6E73 #x6E74 #x6E75 #x6E76 #x6E77 #x6E78 #x6E79 - #x6E7A #x6E7B #x6E7C #x6E7D #x6E80 #x6E81 #x6E82 #x6E84 #x6E87 #x6E88 - #x6E8A #x6E8B #x6E8C #x6E8D #x6E8E #x6E91 #x6E92 #x6E93 #x6E94 #x6E95 - #x6E96 #x6E97 #x6E99 #x6E9A #x6E9B #x6E9D #x6E9E #x6EA0 #x6EA1 #x6EA3 - #x6EA4 #x6EA6 #x6EA8 #x6EA9 #x6EAB #x6EAC #x6EAD #x6EAE #x6EB0 #x6EB3 - #x6EB5 #x6EB8 #x6EB9 #x6EBC #x6EBE #x6EBF #x6EC0 #x6EC3 #x6EC4 #x6EC5 - #x6EC6 #x6EC8 #x6EC9 #x6ECA #x6ECC #x6ECD #x6ECE #x6ED0 #x6ED2 #x6ED6 - #x6ED8 #x6ED9 #x6EDB #x6EDC #x6EDD #x6EE3 #x6EE7 #x6EEA #x6EEB #x6EEC - #x6EED #x6EEE #x6EEF #x6EF0 #x6EF1 #x6EF2 #x6EF3 #x6EF5 #x6EF6 #x6EF7 - #x6EF8 #x6EFA #x6EFB #x6EFC #x6EFD #x6EFE #x6EFF #x6F00 #x6F01 #x6F03 - #x6F04 #x6F05 #x6F07 #x6F08 #x6F0A #x6F0B #x6F0C #x6F0D #x6F0E #x6F10 - #x6F11 #x6F12 #x6F16 #x6F17 #x6F18 #x6F19 #x6F1A #x6F1B #x6F1C #x6F1D - #x6F1E #x6F1F #x6F21 #x6F22 #x6F23 #x6F25 #x6F26 #x6F27 #x6F28 #x6F2C - #x6F2E #x6F30 #x6F32 #x6F34 #x6F35 #x6F37 #x6F38 #x6F39 #x6F3A #x6F3B - #x6F3C #x6F3D #x6F3F #x6F40 #x6F41 #x6F42 #x6F43 #x6F44 #x6F45 #x6F48 - #x6F49 #x6F4A #x6F4C #x6F4E #x6F4F #x6F50 #x6F51 #x6F52 #x6F53 #x6F54 - #x6F55 #x6F56 #x6F57 #x6F59 #x6F5A #x6F5B #x6F5D #x6F5F #x6F60 #x6F61 - #x6F63 #x6F64 #x6F65 #x6F67 #x6F68 #x6F69 #x6F6A #x6F6B #x6F6C #x6F6F - #x6F70 #x6F71 #x6F73 #x6F75 #x6F76 #x6F77 #x6F79 #x6F7B #x6F7D #x6F7E - #x6F7F #x6F80 #x6F81 #x6F82 #x6F83 #x6F85 #x6F86 #x6F87 #x6F8A #x6F8B - #x6F8F #x6F90 #x6F91 #x6F92 #x6F93 #x6F94 #x6F95 #x6F96 #x6F97 #x6F98 - #x6F99 #x6F9A #x6F9B #x6F9D #x6F9E #x6F9F #x6FA0 #x6FA2 #x6FA3 #x6FA4 - #x6FA5 #x6FA6 #x6FA8 #x6FA9 #x6FAA #x6FAB #x6FAC #x6FAD #x6FAE #x6FAF - #x6FB0 #x6FB1 #x6FB2 #x6FB4 #x6FB5 #x6FB7 #x6FB8 #x6FBA #x6FBB #x6FBC - #x6FBD #x6FBE #x6FBF #x6FC1 #x6FC3 #x6FC4 #x6FC5 #x6FC6 #x6FC7 #x6FC8 - #x6FCA #x6FCB #x6FCC #x6FCD #x6FCE #x6FCF #x6FD0 #x6FD3 #x6FD4 #x6FD5 - #x6FD6 #x6FD7 #x6FD8 #x6FD9 #x6FDA #x6FDB #x6FDC #x6FDD #x6FDF #x6FE2 - #x6FE3 #x6FE4 #x6FE5 #x6FE6 #x6FE7 #x6FE8 #x6FE9 #x6FEA #x6FEB #x6FEC - #x6FED #x6FF0 #x6FF1 #x6FF2 #x6FF3 #x6FF4 #x6FF5 #x6FF6 #x6FF7 #x6FF8 - #x6FF9 #x6FFA #x6FFB #x6FFC #x6FFD #x6FFE #x6FFF #x7000 #x7001 #x7002 - #x7003 #x7004 #x7005 #x7006 #x7007 #x7008 #x7009 #x700A #x700B #x700C - #x700D #x700E #x700F #x7010 #x7012 #x7013 #x7014 #x7015 #x7016 #x7017 - #x7018 #x7019 #x701C #x701D #x701E #x701F #x7020 #x7021 #x7022 #x7024 - #x7025 #x7026 #x7027 #x7028 #x7029 #x702A #x702B #x702C #x702D #x702E - #x702F #x7030 #x7031 #x7032 #x7033 #x7034 #x7036 #x7037 #x7038 #x703A - #x703B #x703C #x703D #x703E #x703F #x7040 #x7041 #x7042 #x7043 #x7044 - #x7045 #x7046 #x7047 #x7048 #x7049 #x704A #x704B #x704D #x704E #x7050 - #x7051 #x7052 #x7053 #x7054 #x7055 #x7056 #x7057 #x7058 #x7059 #x705A - #x705B #x705C #x705D #x705F #x7060 #x7061 #x7062 #x7063 #x7064 #x7065 - #x7066 #x7067 #x7068 #x7069 #x706A #x706E #x7071 #x7072 #x7073 #x7074 - #x7077 #x7079 #x707A #x707B #x707D #x7081 #x7082 #x7083 #x7084 #x7086 - #x7087 #x7088 #x708B #x708C #x708D #x708F #x7090 #x7091 #x7093 #x7097 - #x7098 #x709A #x709B #x709E #x709F #x70A0 #x70A1 #x70A2 #x70A3 #x70A4 - #x70A5 #x70A6 #x70A7 #x70A8 #x70A9 #x70AA #x70B0 #x70B2 #x70B4 #x70B5 - #x70B6 #x70BA #x70BE #x70BF #x70C4 #x70C5 #x70C6 #x70C7 #x70C9 #x70CB - #x70CC #x70CD #x70CE #x70CF #x70D0 #x70D1 #x70D2 #x70D3 #x70D4 #x70D5 - #x70D6 #x70D7 #x70DA #x70DC #x70DD #x70DE #x70E0 #x70E1 #x70E2 #x70E3 - #x70E5 #x70EA #x70EE #x70F0 #x70F1 #x70F2 #x70F3 #x70F4 #x70F5 #x70F6 - #x70F8 #x70FA #x70FB #x70FC #x70FE #x70FF #x7100 #x7101 #x7102 #x7103 - #x7104 #x7105 #x7106 #x7107 #x7108 #x710B #x710C #x710D #x710E #x710F - #x7111 #x7112 #x7114 #x7117 #x711B #x711C #x711D #x711E #x711F #x7120 - #x7121 #x7122 #x7123 #x7124 #x7125 #x7127 #x7128 #x7129 #x712A #x712B - #x712C #x712D #x712E #x7132 #x7133 #x7134 #x7135 #x7137 #x7138 #x7139 - #x713A #x713B #x713C #x713D #x713E #x713F #x7140 #x7141 #x7142 #x7143 - #x7144 #x7146 #x7147 #x7148 #x7149 #x714B #x714D #x714F #x7150 #x7151 - #x7152 #x7153 #x7154 #x7155 #x7156 #x7157 #x7158 #x7159 #x715A #x715B - #x715D #x715F #x7160 #x7161 #x7162 #x7163 #x7165 #x7169 #x716A #x716B - #x716C #x716D #x716F #x7170 #x7171 #x7174 #x7175 #x7176 #x7177 #x7179 - #x717B #x717C #x717E #x717F #x7180 #x7181 #x7182 #x7183 #x7185 #x7186 - #x7187 #x7188 #x7189 #x718B #x718C #x718D #x718E #x7190 #x7191 #x7192 - #x7193 #x7195 #x7196 #x7197 #x719A #x719B #x719C #x719D #x719E #x71A1 - #x71A2 #x71A3 #x71A4 #x71A5 #x71A6 #x71A7 #x71A9 #x71AA #x71AB #x71AD - #x71AE #x71AF #x71B0 #x71B1 #x71B2 #x71B4 #x71B6 #x71B7 #x71B8 #x71BA - #x71BB #x71BC #x71BD #x71BE #x71BF #x71C0 #x71C1 #x71C2 #x71C4 #x71C5 - #x71C6 #x71C7 #x71C8 #x71C9 #x71CA #x71CB #x71CC #x71CD #x71CF #x71D0 - #x71D1 #x71D2 #x71D3 #x71D6 #x71D7 #x71D8 #x71D9 #x71DA #x71DB #x71DC - #x71DD #x71DE #x71DF #x71E1 #x71E2 #x71E3 #x71E4 #x71E6 #x71E8 #x71E9 - #x71EA #x71EB #x71EC #x71ED #x71EF #x71F0 #x71F1 #x71F2 #x71F3 #x71F4 - #x71F5 #x71F6 #x71F7 #x71F8 #x71FA #x71FB #x71FC #x71FD #x71FE #x71FF - #x7200 #x7201 #x7202 #x7203 #x7204 #x7205 #x7207 #x7208 #x7209 #x720A - #x720B #x720C #x720D #x720E #x720F #x7210 #x7211 #x7212 #x7213 #x7214 - #x7215 #x7216 #x7217 #x7218 #x7219 #x721A #x721B #x721C #x721E #x721F - #x7220 #x7221 #x7222 #x7223 #x7224 #x7225 #x7226 #x7227 #x7229 #x722B - #x722D #x722E #x722F #x7232 #x7233 #x7234 #x723A #x723C #x723E #x7240 - #x7241 #x7242 #x7243 #x7244 #x7245 #x7246 #x7249 #x724A #x724B #x724E - #x724F #x7250 #x7251 #x7253 #x7254 #x7255 #x7257 #x7258 #x725A #x725C - #x725E #x7260 #x7263 #x7264 #x7265 #x7268 #x726A #x726B #x726C #x726D - #x7270 #x7271 #x7273 #x7274 #x7276 #x7277 #x7278 #x727B #x727C #x727D - #x7282 #x7283 #x7285 #x7286 #x7287 #x7288 #x7289 #x728C #x728E #x7290 - #x7291 #x7293 #x7294 #x7295 #x7296 #x7297 #x7298 #x7299 #x729A #x729B - #x729C #x729D #x729E #x72A0 #x72A1 #x72A2 #x72A3 #x72A4 #x72A5 #x72A6 - #x72A7 #x72A8 #x72A9 #x72AA #x72AB #x72AE #x72B1 #x72B2 #x72B3 #x72B5 - #x72BA #x72BB #x72BC #x72BD #x72BE #x72BF #x72C0 #x72C5 #x72C6 #x72C7 - #x72C9 #x72CA #x72CB #x72CC #x72CF #x72D1 #x72D3 #x72D4 #x72D5 #x72D6 - #x72D8 #x72DA #x72DB #x72DC #x72DD #x72DF #x72E2 #x72E3 #x72E4 #x72E5 - #x72E6 #x72E7 #x72EA #x72EB #x72F5 #x72F6 #x72F9 #x72FD #x72FE #x72FF - #x7300 #x7302 #x7304 #x7305 #x7306 #x7307 #x7308 #x7309 #x730B #x730C - #x730D #x730F #x7310 #x7311 #x7312 #x7314 #x7318 #x7319 #x731A #x731F - #x7320 #x7323 #x7324 #x7326 #x7327 #x7328 #x732D #x732F #x7330 #x7332 - #x7333 #x7335 #x7336 #x733A #x733B #x733C #x733D #x7340 #x7341 #x7342 - #x7343 #x7344 #x7345 #x7346 #x7347 #x7348 #x7349 #x734A #x734B #x734C - #x734E #x734F #x7351 #x7353 #x7354 #x7355 #x7356 #x7358 #x7359 #x735A - #x735B #x735C #x735D #x735E #x735F #x7361 #x7362 #x7363 #x7364 #x7365 - #x7366 #x7367 #x7368 #x7369 #x736A #x736B #x736E #x7370 #x7371 #x7372 - #x7373 #x7374 #x7375 #x7376 #x7377 #x7378 #x7379 #x737A #x737B #x737C - #x737D #x737F #x7380 #x7381 #x7382 #x7383 #x7385 #x7386 #x7388 #x738A - #x738C #x738D #x738F #x7390 #x7392 #x7393 #x7394 #x7395 #x7397 #x7398 - #x7399 #x739A #x739C #x739D #x739E #x73A0 #x73A1 #x73A3 #x73A4 #x73A5 - #x73A6 #x73A7 #x73A8 #x73AA #x73AC #x73AD #x73B1 #x73B4 #x73B5 #x73B6 - #x73B8 #x73B9 #x73BC #x73BD #x73BE #x73BF #x73C1 #x73C3 #x73C4 #x73C5 - #x73C6 #x73C7 #x73CB #x73CC #x73CE #x73D2 #x73D3 #x73D4 #x73D5 #x73D6 - #x73D7 #x73D8 #x73DA #x73DB #x73DC #x73DD #x73DF #x73E1 #x73E2 #x73E3 - #x73E4 #x73E6 #x73E8 #x73EA #x73EB #x73EC #x73EE #x73EF #x73F0 #x73F1 - #x73F3 #x73F4 #x73F5 #x73F6 #x73F7 #x73F8 #x73F9 #x73FA #x73FB #x73FC - #x73FD #x73FE #x73FF #x7400 #x7401 #x7402 #x7404 #x7407 #x7408 #x740B - #x740C #x740D #x740E #x7411 #x7412 #x7413 #x7414 #x7415 #x7416 #x7417 - #x7418 #x7419 #x741C #x741D #x741E #x741F #x7420 #x7421 #x7423 #x7424 - #x7427 #x7429 #x742B #x742D #x742F #x7431 #x7432 #x7437 #x7438 #x7439 - #x743A #x743B #x743D #x743E #x743F #x7440 #x7442 #x7443 #x7444 #x7445 - #x7446 #x7447 #x7448 #x7449 #x744A #x744B #x744C #x744D #x744E #x744F - #x7450 #x7451 #x7452 #x7453 #x7454 #x7456 #x7458 #x745D #x7460 #x7461 - #x7462 #x7463 #x7464 #x7465 #x7466 #x7467 #x7468 #x7469 #x746A #x746B - #x746C #x746E #x746F #x7471 #x7472 #x7473 #x7474 #x7475 #x7478 #x7479 - #x747A #x747B #x747C #x747D #x747F #x7482 #x7484 #x7485 #x7486 #x7488 - #x7489 #x748A #x748C #x748D #x748F #x7491 #x7492 #x7493 #x7494 #x7495 - #x7496 #x7497 #x7498 #x7499 #x749A #x749B #x749D #x749F #x74A0 #x74A1 - #x74A2 #x74A3 #x74A4 #x74A5 #x74A6 #x74AA #x74AB #x74AC #x74AD #x74AE - #x74AF #x74B0 #x74B1 #x74B2 #x74B3 #x74B4 #x74B5 #x74B6 #x74B7 #x74B8 - #x74B9 #x74BB #x74BC #x74BD #x74BE #x74BF #x74C0 #x74C1 #x74C2 #x74C3 - #x74C4 #x74C5 #x74C6 #x74C7 #x74C8 #x74C9 #x74CA #x74CB #x74CC #x74CD - #x74CE #x74CF #x74D0 #x74D1 #x74D3 #x74D4 #x74D5 #x74D6 #x74D7 #x74D8 - #x74D9 #x74DA #x74DB #x74DD #x74DF #x74E1 #x74E5 #x74E7 #x74E8 #x74E9 - #x74EA #x74EB #x74EC #x74ED #x74F0 #x74F1 #x74F2 #x74F3 #x74F5 #x74F8 - #x74F9 #x74FA #x74FB #x74FC #x74FD #x74FE #x7500 #x7501 #x7502 #x7503 - #x7505 #x7506 #x7507 #x7508 #x7509 #x750A #x750B #x750C #x750E #x7510 - #x7512 #x7514 #x7515 #x7516 #x7517 #x751B #x751D #x751E #x7520 #x7521 - #x7522 #x7523 #x7524 #x7526 #x7527 #x752A #x752E #x7534 #x7536 #x7539 - #x753C #x753D #x753F #x7541 #x7542 #x7543 #x7544 #x7546 #x7547 #x7549 - #x754A #x754D #x7550 #x7551 #x7552 #x7553 #x7555 #x7556 #x7557 #x7558 - #x755D #x755E #x755F #x7560 #x7561 #x7562 #x7563 #x7564 #x7567 #x7568 - #x7569 #x756B #x756C #x756D #x756E #x756F #x7570 #x7571 #x7573 #x7575 - #x7576 #x7577 #x757A #x757B #x757C #x757D #x757E #x7580 #x7581 #x7582 - #x7584 #x7585 #x7587 #x7588 #x7589 #x758A #x758C #x758D #x758E #x7590 - #x7593 #x7595 #x7598 #x759B #x759C #x759E #x75A2 #x75A6 #x75A7 #x75A8 - #x75A9 #x75AA #x75AD #x75B6 #x75B7 #x75BA #x75BB #x75BF #x75C0 #x75C1 - #x75C6 #x75CB #x75CC #x75CE #x75CF #x75D0 #x75D1 #x75D3 #x75D7 #x75D9 - #x75DA #x75DC #x75DD #x75DF #x75E0 #x75E1 #x75E5 #x75E9 #x75EC #x75ED - #x75EE #x75EF #x75F2 #x75F3 #x75F5 #x75F6 #x75F7 #x75F8 #x75FA #x75FB - #x75FD #x75FE #x7602 #x7604 #x7606 #x7607 #x7608 #x7609 #x760B #x760D - #x760E #x760F #x7611 #x7612 #x7613 #x7614 #x7616 #x761A #x761C #x761D - #x761E #x7621 #x7623 #x7627 #x7628 #x762C #x762E #x762F #x7631 #x7632 - #x7636 #x7637 #x7639 #x763A #x763B #x763D #x7641 #x7642 #x7644 #x7645 - #x7646 #x7647 #x7648 #x7649 #x764A #x764B #x764E #x764F #x7650 #x7651 - #x7652 #x7653 #x7655 #x7657 #x7658 #x7659 #x765A #x765B #x765D #x765F - #x7660 #x7661 #x7662 #x7664 #x7665 #x7666 #x7667 #x7668 #x7669 #x766A - #x766C #x766D #x766E #x7670 #x7671 #x7672 #x7673 #x7674 #x7675 #x7676 - #x7677 #x7679 #x767A #x767C #x767F #x7680 #x7681 #x7683 #x7685 #x7689 - #x768A #x768C #x768D #x768F #x7690 #x7692 #x7694 #x7695 #x7697 #x7698 - #x769A #x769B #x769C #x769D #x769E #x769F #x76A0 #x76A1 #x76A2 #x76A3 - #x76A5 #x76A6 #x76A7 #x76A8 #x76A9 #x76AA #x76AB #x76AC #x76AD #x76AF - #x76B0 #x76B3 #x76B5 #x76B6 #x76B7 #x76B8 #x76B9 #x76BA #x76BB #x76BC - #x76BD #x76BE #x76C0 #x76C1 #x76C3 #x76C4 #x76C7 #x76C9 #x76CB #x76CC - #x76D3 #x76D5 #x76D9 #x76DA #x76DC #x76DD #x76DE #x76E0 #x76E1 #x76E2 - #x76E3 #x76E4 #x76E6 #x76E7 #x76E8 #x76E9 #x76EA #x76EB #x76EC #x76ED - #x76F0 #x76F3 #x76F5 #x76F6 #x76F7 #x76FA #x76FB #x76FD #x76FF #x7700 - #x7702 #x7703 #x7705 #x7706 #x770A #x770C #x770E #x770F #x7710 #x7711 - #x7712 #x7713 #x7714 #x7715 #x7716 #x7717 #x7718 #x771B #x771C #x771D - #x771E #x7721 #x7723 #x7724 #x7725 #x7727 #x772A #x772B #x772C #x772E - #x7730 #x7731 #x7732 #x7733 #x7734 #x7739 #x773B #x773D #x773E #x773F - #x7742 #x7744 #x7745 #x7746 #x7748 #x7749 #x774A #x774B #x774C #x774D - #x774E #x774F #x7752 #x7753 #x7754 #x7755 #x7756 #x7757 #x7758 #x7759 - #x775C #x775D #x775E #x775F #x7760 #x7764 #x7767 #x7769 #x776A #x776D - #x776E #x776F #x7770 #x7771 #x7772 #x7773 #x7774 #x7775 #x7776 #x7777 - #x7778 #x777A #x777B #x777C #x7781 #x7782 #x7783 #x7786 #x7787 #x7788 - #x7789 #x778A #x778B #x778F #x7790 #x7793 #x7794 #x7795 #x7796 #x7797 - #x7798 #x7799 #x779A #x779B #x779C #x779D #x779E #x77A1 #x77A3 #x77A4 - #x77A6 #x77A8 #x77AB #x77AD #x77AE #x77AF #x77B1 #x77B2 #x77B4 #x77B6 - #x77B7 #x77B8 #x77B9 #x77BA #x77BC #x77BE #x77C0 #x77C1 #x77C2 #x77C3 - #x77C4 #x77C5 #x77C6 #x77C7 #x77C8 #x77C9 #x77CA #x77CB #x77CC #x77CE - #x77CF #x77D0 #x77D1 #x77D2 #x77D3 #x77D4 #x77D5 #x77D6 #x77D8 #x77D9 - #x77DA #x77DD #x77DE #x77DF #x77E0 #x77E1 #x77E4 #x77E6 #x77E8 #x77EA - #x77EF #x77F0 #x77F1 #x77F2 #x77F4 #x77F5 #x77F7 #x77F9 #x77FA #x77FB - #x77FC #x7803 #x7804 #x7805 #x7806 #x7807 #x7808 #x780A #x780B #x780E - #x780F #x7810 #x7813 #x7815 #x7819 #x781B #x781E #x7820 #x7821 #x7822 - #x7824 #x7828 #x782A #x782B #x782E #x782F #x7831 #x7832 #x7833 #x7835 - #x7836 #x783D #x783F #x7841 #x7842 #x7843 #x7844 #x7846 #x7848 #x7849 - #x784A #x784B #x784D #x784F #x7851 #x7853 #x7854 #x7858 #x7859 #x785A - #x785B #x785C #x785E #x785F #x7860 #x7861 #x7862 #x7863 #x7864 #x7865 - #x7866 #x7867 #x7868 #x7869 #x786F #x7870 #x7871 #x7872 #x7873 #x7874 - #x7875 #x7876 #x7878 #x7879 #x787A #x787B #x787D #x787E #x787F #x7880 - #x7881 #x7882 #x7883 #x7884 #x7885 #x7886 #x7888 #x788A #x788B #x788F - #x7890 #x7892 #x7894 #x7895 #x7896 #x7899 #x789D #x789E #x78A0 #x78A2 - #x78A4 #x78A6 #x78A8 #x78A9 #x78AA #x78AB #x78AC #x78AD #x78AE #x78AF - #x78B5 #x78B6 #x78B7 #x78B8 #x78BA #x78BB #x78BC #x78BD #x78BF #x78C0 - #x78C2 #x78C3 #x78C4 #x78C6 #x78C7 #x78C8 #x78CC #x78CD #x78CE #x78CF - #x78D1 #x78D2 #x78D3 #x78D6 #x78D7 #x78D8 #x78DA #x78DB #x78DC #x78DD - #x78DE #x78DF #x78E0 #x78E1 #x78E2 #x78E3 #x78E4 #x78E5 #x78E6 #x78E7 - #x78E9 #x78EA #x78EB #x78ED #x78EE #x78EF #x78F0 #x78F1 #x78F3 #x78F5 - #x78F6 #x78F8 #x78F9 #x78FB #x78FC #x78FD #x78FE #x78FF #x7900 #x7902 - #x7903 #x7904 #x7906 #x7907 #x7908 #x7909 #x790A #x790B #x790C #x790D - #x790E #x790F #x7910 #x7911 #x7912 #x7914 #x7915 #x7916 #x7917 #x7918 - #x7919 #x791A #x791B #x791C #x791D #x791F #x7920 #x7921 #x7922 #x7923 - #x7925 #x7926 #x7927 #x7928 #x7929 #x792A #x792B #x792C #x792D #x792E - #x792F #x7930 #x7931 #x7932 #x7933 #x7935 #x7936 #x7937 #x7938 #x7939 - #x793D #x793F #x7942 #x7943 #x7944 #x7945 #x7947 #x794A #x794B #x794C - #x794D #x794E #x794F #x7950 #x7951 #x7952 #x7954 #x7955 #x7958 #x7959 - #x7961 #x7963 #x7964 #x7966 #x7969 #x796A #x796B #x796C #x796E #x7970 - #x7971 #x7972 #x7973 #x7974 #x7975 #x7976 #x7979 #x797B #x797C #x797D - #x797E #x797F #x7982 #x7983 #x7986 #x7987 #x7988 #x7989 #x798B #x798C - #x798D #x798E #x7990 #x7991 #x7992 #x7993 #x7994 #x7995 #x7996 #x7997 - #x7998 #x7999 #x799B #x799C #x799D #x799E #x799F #x79A0 #x79A1 #x79A2 - #x79A3 #x79A4 #x79A5 #x79A6 #x79A8 #x79A9 #x79AA #x79AB #x79AC #x79AD - #x79AE #x79AF #x79B0 #x79B1 #x79B2 #x79B4 #x79B5 #x79B6 #x79B7 #x79B8 - #x79BC #x79BF #x79C2 #x79C4 #x79C5 #x79C7 #x79C8 #x79CA #x79CC #x79CE - #x79CF #x79D0 #x79D3 #x79D4 #x79D6 #x79D7 #x79D9 #x79DA #x79DB #x79DC - #x79DD #x79DE #x79E0 #x79E1 #x79E2 #x79E5 #x79E8 #x79EA #x79EC #x79EE - #x79F1 #x79F2 #x79F3 #x79F4 #x79F5 #x79F6 #x79F7 #x79F9 #x79FA #x79FC - #x79FE #x79FF #x7A01 #x7A04 #x7A05 #x7A07 #x7A08 #x7A09 #x7A0A #x7A0C - #x7A0F #x7A10 #x7A11 #x7A12 #x7A13 #x7A15 #x7A16 #x7A18 #x7A19 #x7A1B - #x7A1C #x7A1D #x7A1F #x7A21 #x7A22 #x7A24 #x7A25 #x7A26 #x7A27 #x7A28 - #x7A29 #x7A2A #x7A2B #x7A2C #x7A2D #x7A2E #x7A2F #x7A30 #x7A31 #x7A32 - #x7A34 #x7A35 #x7A36 #x7A38 #x7A3A #x7A3E #x7A40 #x7A41 #x7A42 #x7A43 - #x7A44 #x7A45 #x7A47 #x7A48 #x7A49 #x7A4A #x7A4B #x7A4C #x7A4D #x7A4E - #x7A4F #x7A50 #x7A52 #x7A53 #x7A54 #x7A55 #x7A56 #x7A58 #x7A59 #x7A5A - #x7A5B #x7A5C #x7A5D #x7A5E #x7A5F #x7A60 #x7A61 #x7A62 #x7A63 #x7A64 - #x7A65 #x7A66 #x7A67 #x7A68 #x7A69 #x7A6A #x7A6B #x7A6C #x7A6D #x7A6E - #x7A6F #x7A71 #x7A72 #x7A73 #x7A75 #x7A7B #x7A7C #x7A7D #x7A7E #x7A82 - #x7A85 #x7A87 #x7A89 #x7A8A #x7A8B #x7A8C #x7A8E #x7A8F #x7A90 #x7A93 - #x7A94 #x7A99 #x7A9A #x7A9B #x7A9E #x7AA1 #x7AA2 #x7AA3 #x7AA4 #x7AA7 - #x7AA9 #x7AAA #x7AAB #x7AAE #x7AAF #x7AB0 #x7AB1 #x7AB2 #x7AB4 #x7AB5 - #x7AB6 #x7AB7 #x7AB8 #x7AB9 #x7ABA #x7ABB #x7ABC #x7ABD #x7ABE #x7AC0 - #x7AC1 #x7AC2 #x7AC3 #x7AC4 #x7AC5 #x7AC6 #x7AC7 #x7AC8 #x7AC9 #x7ACA - #x7ACC #x7ACD #x7ACE #x7ACF #x7AD0 #x7AD1 #x7AD2 #x7AD3 #x7AD4 #x7AD5 - #x7AD7 #x7AD8 #x7ADA #x7ADB #x7ADC #x7ADD #x7AE1 #x7AE2 #x7AE4 #x7AE7 - #x7AE8 #x7AE9 #x7AEA #x7AEB #x7AEC #x7AEE #x7AF0 #x7AF1 #x7AF2 #x7AF3 - #x7AF4 #x7AF5 #x7AF6 #x7AF7 #x7AF8 #x7AFB #x7AFC #x7AFE #x7B00 #x7B01 - #x7B02 #x7B05 #x7B07 #x7B09 #x7B0C #x7B0D #x7B0E #x7B10 #x7B12 #x7B13 - #x7B16 #x7B17 #x7B18 #x7B1A #x7B1C #x7B1D #x7B1F #x7B21 #x7B22 #x7B23 - #x7B27 #x7B29 #x7B2D #x7B2F #x7B30 #x7B32 #x7B34 #x7B35 #x7B36 #x7B37 - #x7B39 #x7B3B #x7B3D #x7B3F #x7B40 #x7B41 #x7B42 #x7B43 #x7B44 #x7B46 - #x7B48 #x7B4A #x7B4D #x7B4E #x7B53 #x7B55 #x7B57 #x7B59 #x7B5C #x7B5E - #x7B5F #x7B61 #x7B63 #x7B64 #x7B65 #x7B66 #x7B67 #x7B68 #x7B69 #x7B6A - #x7B6B #x7B6C #x7B6D #x7B6F #x7B70 #x7B73 #x7B74 #x7B76 #x7B78 #x7B7A - #x7B7C #x7B7D #x7B7F #x7B81 #x7B82 #x7B83 #x7B84 #x7B86 #x7B87 #x7B88 - #x7B89 #x7B8A #x7B8B #x7B8C #x7B8E #x7B8F #x7B91 #x7B92 #x7B93 #x7B96 - #x7B98 #x7B99 #x7B9A #x7B9B #x7B9E #x7B9F #x7BA0 #x7BA3 #x7BA4 #x7BA5 - #x7BAE #x7BAF #x7BB0 #x7BB2 #x7BB3 #x7BB5 #x7BB6 #x7BB7 #x7BB9 #x7BBA - #x7BBB #x7BBC #x7BBD #x7BBE #x7BBF #x7BC0 #x7BC2 #x7BC3 #x7BC4 #x7BC5 - #x7BC8 #x7BC9 #x7BCA #x7BCB #x7BCD #x7BCE #x7BCF #x7BD0 #x7BD2 #x7BD4 - #x7BD5 #x7BD6 #x7BD7 #x7BD8 #x7BDB #x7BDC #x7BDE #x7BDF #x7BE0 #x7BE2 - #x7BE3 #x7BE4 #x7BE7 #x7BE8 #x7BE9 #x7BEB #x7BEC #x7BED #x7BEF #x7BF0 - #x7BF2 #x7BF3 #x7BF4 #x7BF5 #x7BF6 #x7BF8 #x7BF9 #x7BFA #x7BFB #x7BFD - #x7BFF #x7C00 #x7C01 #x7C02 #x7C03 #x7C04 #x7C05 #x7C06 #x7C08 #x7C09 - #x7C0A #x7C0D #x7C0E #x7C10 #x7C11 #x7C12 #x7C13 #x7C14 #x7C15 #x7C17 - #x7C18 #x7C19 #x7C1A #x7C1B #x7C1C #x7C1D #x7C1E #x7C20 #x7C21 #x7C22 - #x7C23 #x7C24 #x7C25 #x7C28 #x7C29 #x7C2B #x7C2C #x7C2D #x7C2E #x7C2F - #x7C30 #x7C31 #x7C32 #x7C33 #x7C34 #x7C35 #x7C36 #x7C37 #x7C39 #x7C3A - #x7C3B #x7C3C #x7C3D #x7C3E #x7C42 #x7C43 #x7C44 #x7C45 #x7C46 #x7C47 - #x7C48 #x7C49 #x7C4A #x7C4B #x7C4C #x7C4E #x7C4F #x7C50 #x7C51 #x7C52 - #x7C53 #x7C54 #x7C55 #x7C56 #x7C57 #x7C58 #x7C59 #x7C5A #x7C5B #x7C5C - #x7C5D #x7C5E #x7C5F #x7C60 #x7C61 #x7C62 #x7C63 #x7C64 #x7C65 #x7C66 - #x7C67 #x7C68 #x7C69 #x7C6A #x7C6B #x7C6C #x7C6D #x7C6E #x7C6F #x7C70 - #x7C71 #x7C72 #x7C75 #x7C76 #x7C77 #x7C78 #x7C79 #x7C7A #x7C7E #x7C7F - #x7C80 #x7C81 #x7C82 #x7C83 #x7C84 #x7C85 #x7C86 #x7C87 #x7C88 #x7C8A - #x7C8B #x7C8C #x7C8D #x7C8E #x7C8F #x7C90 #x7C93 #x7C94 #x7C96 #x7C99 - #x7C9A #x7C9B #x7CA0 #x7CA1 #x7CA3 #x7CA6 #x7CA7 #x7CA8 #x7CA9 #x7CAB - #x7CAC #x7CAD #x7CAF #x7CB0 #x7CB4 #x7CB5 #x7CB6 #x7CB7 #x7CB8 #x7CBA - #x7CBB #x7CBF #x7CC0 #x7CC2 #x7CC3 #x7CC4 #x7CC6 #x7CC9 #x7CCB #x7CCE - #x7CCF #x7CD0 #x7CD1 #x7CD2 #x7CD3 #x7CD4 #x7CD8 #x7CDA #x7CDB #x7CDD - #x7CDE #x7CE1 #x7CE2 #x7CE3 #x7CE4 #x7CE5 #x7CE6 #x7CE7 #x7CE9 #x7CEA - #x7CEB #x7CEC #x7CED #x7CEE #x7CF0 #x7CF1 #x7CF2 #x7CF3 #x7CF4 #x7CF5 - #x7CF6 #x7CF7 #x7CF9 #x7CFA #x7CFC #x7CFD #x7CFE #x7CFF #x7D00 #x7D01 - #x7D02 #x7D03 #x7D04 #x7D05 #x7D06 #x7D07 #x7D08 #x7D09 #x7D0B #x7D0C - #x7D0D #x7D0E #x7D0F #x7D10 #x7D11 #x7D12 #x7D13 #x7D14 #x7D15 #x7D16 - #x7D17 #x7D18 #x7D19 #x7D1A #x7D1B #x7D1C #x7D1D #x7D1E #x7D1F #x7D21 - #x7D23 #x7D24 #x7D25 #x7D26 #x7D28 #x7D29 #x7D2A #x7D2C #x7D2D #x7D2E - #x7D30 #x7D31 #x7D32 #x7D33 #x7D34 #x7D35 #x7D36 #x7D37 #x7D38 #x7D39 - #x7D3A #x7D3B #x7D3C #x7D3D #x7D3E #x7D3F #x7D40 #x7D41 #x7D42 #x7D43 - #x7D44 #x7D45 #x7D46 #x7D47 #x7D48 #x7D49 #x7D4A #x7D4B #x7D4C #x7D4D - #x7D4E #x7D4F #x7D50 #x7D51 #x7D52 #x7D53 #x7D54 #x7D55 #x7D56 #x7D57 - #x7D58 #x7D59 #x7D5A #x7D5B #x7D5C #x7D5D #x7D5E #x7D5F #x7D60 #x7D61 - #x7D62 #x7D63 #x7D64 #x7D65 #x7D66 #x7D67 #x7D68 #x7D69 #x7D6A #x7D6B - #x7D6C #x7D6D #x7D6F #x7D70 #x7D71 #x7D72 #x7D73 #x7D74 #x7D75 #x7D76 - #x7D78 #x7D79 #x7D7A #x7D7B #x7D7C #x7D7D #x7D7E #x7D7F #x7D80 #x7D81 - #x7D82 #x7D83 #x7D84 #x7D85 #x7D86 #x7D87 #x7D88 #x7D89 #x7D8A #x7D8B - #x7D8C #x7D8D #x7D8E #x7D8F #x7D90 #x7D91 #x7D92 #x7D93 #x7D94 #x7D95 - #x7D96 #x7D97 #x7D98 #x7D99 #x7D9A #x7D9B #x7D9C #x7D9D #x7D9E #x7D9F - #x7DA0 #x7DA1 #x7DA2 #x7DA3 #x7DA4 #x7DA5 #x7DA7 #x7DA8 #x7DA9 #x7DAA - #x7DAB #x7DAC #x7DAD #x7DAF #x7DB0 #x7DB1 #x7DB2 #x7DB3 #x7DB4 #x7DB5 - #x7DB6 #x7DB7 #x7DB8 #x7DB9 #x7DBA #x7DBB #x7DBC #x7DBD #x7DBE #x7DBF - #x7DC0 #x7DC1 #x7DC2 #x7DC3 #x7DC4 #x7DC5 #x7DC6 #x7DC7 #x7DC8 #x7DC9 - #x7DCA #x7DCB #x7DCC #x7DCD #x7DCE #x7DCF #x7DD0 #x7DD1 #x7DD2 #x7DD3 - #x7DD4 #x7DD5 #x7DD6 #x7DD7 #x7DD8 #x7DD9 #x7DDA #x7DDB #x7DDC #x7DDD - #x7DDE #x7DDF #x7DE0 #x7DE1 #x7DE2 #x7DE3 #x7DE4 #x7DE5 #x7DE6 #x7DE7 - #x7DE8 #x7DE9 #x7DEA #x7DEB #x7DEC #x7DED #x7DEE #x7DEF #x7DF0 #x7DF1 - #x7DF2 #x7DF3 #x7DF4 #x7DF5 #x7DF6 #x7DF7 #x7DF8 #x7DF9 #x7DFA #x7DFB - #x7DFC #x7DFD #x7DFE #x7DFF #x7E00 #x7E01 #x7E02 #x7E03 #x7E04 #x7E05 - #x7E06 #x7E07 #x7E08 #x7E09 #x7E0A #x7E0B #x7E0C #x7E0D #x7E0E #x7E0F - #x7E10 #x7E11 #x7E12 #x7E13 #x7E14 #x7E15 #x7E16 #x7E17 #x7E18 #x7E19 - #x7E1A #x7E1B #x7E1C #x7E1D #x7E1E #x7E1F #x7E20 #x7E21 #x7E22 #x7E23 - #x7E24 #x7E25 #x7E26 #x7E27 #x7E28 #x7E29 #x7E2A #x7E2B #x7E2C #x7E2D - #x7E2E #x7E2F #x7E30 #x7E31 #x7E32 #x7E33 #x7E34 #x7E35 #x7E36 #x7E37 - #x7E38 #x7E39 #x7E3A #x7E3C #x7E3D #x7E3E #x7E3F #x7E40 #x7E42 #x7E43 - #x7E44 #x7E45 #x7E46 #x7E48 #x7E49 #x7E4A #x7E4B #x7E4C #x7E4D #x7E4E - #x7E4F #x7E50 #x7E51 #x7E52 #x7E53 #x7E54 #x7E55 #x7E56 #x7E57 #x7E58 - #x7E59 #x7E5A #x7E5B #x7E5C #x7E5D #x7E5E #x7E5F #x7E60 #x7E61 #x7E62 - #x7E63 #x7E64 #x7E65 #x7E66 #x7E67 #x7E68 #x7E69 #x7E6A #x7E6B #x7E6C - #x7E6D #x7E6E #x7E6F #x7E70 #x7E71 #x7E72 #x7E73 #x7E74 #x7E75 #x7E76 - #x7E77 #x7E78 #x7E79 #x7E7A #x7E7B #x7E7C #x7E7D #x7E7E #x7E7F #x7E80 - #x7E81 #x7E83 #x7E84 #x7E85 #x7E86 #x7E87 #x7E88 #x7E89 #x7E8A #x7E8B - #x7E8C #x7E8D #x7E8E #x7E8F #x7E90 #x7E91 #x7E92 #x7E93 #x7E94 #x7E95 - #x7E96 #x7E97 #x7E98 #x7E99 #x7E9A #x7E9C #x7E9D #x7E9E #x7EAE #x7EB4 - #x7EBB #x7EBC #x7ED6 #x7EE4 #x7EEC #x7EF9 #x7F0A #x7F10 #x7F1E #x7F37 - #x7F39 #x7F3B #x7F3C #x7F3D #x7F3E #x7F3F #x7F40 #x7F41 #x7F43 #x7F46 - #x7F47 #x7F48 #x7F49 #x7F4A #x7F4B #x7F4C #x7F4D #x7F4E #x7F4F #x7F52 - #x7F53 #x7F56 #x7F59 #x7F5B #x7F5C #x7F5D #x7F5E #x7F60 #x7F63 #x7F64 - #x7F65 #x7F66 #x7F67 #x7F6B #x7F6C #x7F6D #x7F6F #x7F70 #x7F73 #x7F75 - #x7F76 #x7F77 #x7F78 #x7F7A #x7F7B #x7F7C #x7F7D #x7F7F #x7F80 #x7F82 - #x7F83 #x7F84 #x7F85 #x7F86 #x7F87 #x7F88 #x7F89 #x7F8B #x7F8D #x7F8F - #x7F90 #x7F91 #x7F92 #x7F93 #x7F95 #x7F96 #x7F97 #x7F98 #x7F99 #x7F9B - #x7F9C #x7FA0 #x7FA2 #x7FA3 #x7FA5 #x7FA6 #x7FA8 #x7FA9 #x7FAA #x7FAB - #x7FAC #x7FAD #x7FAE #x7FB1 #x7FB3 #x7FB4 #x7FB5 #x7FB6 #x7FB7 #x7FBA - #x7FBB #x7FBE #x7FC0 #x7FC2 #x7FC3 #x7FC4 #x7FC6 #x7FC7 #x7FC8 #x7FC9 - #x7FCB #x7FCD #x7FCF #x7FD0 #x7FD1 #x7FD2 #x7FD3 #x7FD6 #x7FD7 #x7FD9 - #x7FDA #x7FDB #x7FDC #x7FDD #x7FDE #x7FE2 #x7FE3 #x7FE4 #x7FE7 #x7FE8 - #x7FEA #x7FEB #x7FEC #x7FED #x7FEF #x7FF2 #x7FF4 #x7FF5 #x7FF6 #x7FF7 - #x7FF8 #x7FF9 #x7FFA #x7FFD #x7FFE #x7FFF #x8002 #x8007 #x8008 #x8009 - #x800A #x800E #x800F #x8011 #x8013 #x801A #x801B #x801D #x801E #x801F - #x8021 #x8023 #x8024 #x802B #x802C #x802D #x802E #x802F #x8030 #x8032 - #x8034 #x8039 #x803A #x803C #x803E #x8040 #x8041 #x8044 #x8045 #x8047 - #x8048 #x8049 #x804E #x804F #x8050 #x8051 #x8053 #x8055 #x8056 #x8057 - #x8059 #x805B #x805C #x805D #x805E #x805F #x8060 #x8061 #x8062 #x8063 - #x8064 #x8065 #x8066 #x8067 #x8068 #x806B #x806C #x806D #x806E #x806F - #x8070 #x8072 #x8073 #x8074 #x8075 #x8076 #x8077 #x8078 #x8079 #x807A - #x807B #x807C #x807D #x807E #x8081 #x8082 #x8085 #x8088 #x808A #x808D - #x808E #x808F #x8090 #x8091 #x8092 #x8094 #x8095 #x8097 #x8099 #x809E - #x80A3 #x80A6 #x80A7 #x80A8 #x80AC #x80B0 #x80B3 #x80B5 #x80B6 #x80B8 - #x80B9 #x80BB #x80C5 #x80C7 #x80C8 #x80C9 #x80CA #x80CB #x80CF #x80D0 - #x80D1 #x80D2 #x80D3 #x80D4 #x80D5 #x80D8 #x80DF #x80E0 #x80E2 #x80E3 - #x80E6 #x80EE #x80F5 #x80F7 #x80F9 #x80FB #x80FE #x80FF #x8100 #x8101 - #x8103 #x8104 #x8105 #x8107 #x8108 #x810B #x810C #x8115 #x8117 #x8119 - #x811B #x811C #x811D #x811F #x8120 #x8121 #x8122 #x8123 #x8124 #x8125 - #x8126 #x8127 #x8128 #x8129 #x812A #x812B #x812D #x812E #x8130 #x8133 - #x8134 #x8135 #x8137 #x8139 #x813A #x813B #x813C #x813D #x813F #x8140 - #x8141 #x8142 #x8143 #x8144 #x8145 #x8147 #x8149 #x814D #x814E #x814F - #x8152 #x8156 #x8157 #x8158 #x815B #x815C #x815D #x815E #x815F #x8161 - #x8162 #x8163 #x8164 #x8166 #x8168 #x816A #x816B #x816C #x816F #x8172 - #x8173 #x8175 #x8176 #x8177 #x8178 #x8181 #x8183 #x8184 #x8185 #x8186 - #x8187 #x8189 #x818B #x818C #x818D #x818E #x8190 #x8192 #x8193 #x8194 - #x8195 #x8196 #x8197 #x8199 #x819A #x819E #x819F #x81A0 #x81A1 #x81A2 - #x81A4 #x81A5 #x81A7 #x81A9 #x81AB #x81AC #x81AD #x81AE #x81AF #x81B0 - #x81B1 #x81B2 #x81B4 #x81B5 #x81B6 #x81B7 #x81B8 #x81B9 #x81BC #x81BD - #x81BE #x81BF #x81C4 #x81C5 #x81C7 #x81C8 #x81C9 #x81CB #x81CD #x81CE - #x81CF #x81D0 #x81D1 #x81D2 #x81D3 #x81D4 #x81D5 #x81D6 #x81D7 #x81D8 - #x81D9 #x81DA #x81DB #x81DC #x81DD #x81DE #x81DF #x81E0 #x81E1 #x81E2 - #x81E4 #x81E5 #x81E6 #x81E8 #x81E9 #x81EB #x81EE #x81EF #x81F0 #x81F1 - #x81F2 #x81F5 #x81F6 #x81F7 #x81F8 #x81F9 #x81FA #x81FD #x81FF #x8203 - #x8207 #x8208 #x8209 #x820A #x820B #x820E #x820F #x8211 #x8213 #x8215 - #x8216 #x8217 #x8218 #x8219 #x821A #x821D #x8220 #x8224 #x8225 #x8226 - #x8227 #x8229 #x822E #x8232 #x823A #x823C #x823D #x823F #x8240 #x8241 - #x8242 #x8243 #x8245 #x8246 #x8248 #x824A #x824C #x824D #x824E #x8250 - #x8251 #x8252 #x8253 #x8254 #x8255 #x8256 #x8257 #x8259 #x825B #x825C - #x825D #x825E #x8260 #x8261 #x8262 #x8263 #x8264 #x8265 #x8266 #x8267 - #x8269 #x826A #x826B #x826C #x826D #x8271 #x8275 #x8276 #x8277 #x8278 - #x827B #x827C #x8280 #x8281 #x8283 #x8285 #x8286 #x8287 #x8289 #x828C - #x8290 #x8293 #x8294 #x8295 #x8296 #x829A #x829B #x829E #x82A0 #x82A2 - #x82A3 #x82A7 #x82B2 #x82B5 #x82B6 #x82BA #x82BB #x82BC #x82BF #x82C0 - #x82C2 #x82C3 #x82C5 #x82C6 #x82C9 #x82D0 #x82D6 #x82D9 #x82DA #x82DD - #x82E2 #x82E7 #x82E8 #x82E9 #x82EA #x82EC #x82ED #x82EE #x82F0 #x82F2 - #x82F3 #x82F5 #x82F6 #x82F8 #x82FA #x82FC #x82FD #x82FE #x82FF #x8300 - #x830A #x830B #x830D #x8310 #x8312 #x8313 #x8316 #x8318 #x8319 #x831D - #x831E #x831F #x8320 #x8321 #x8322 #x8323 #x8324 #x8325 #x8326 #x8329 - #x832A #x832E #x8330 #x8332 #x8337 #x833B #x833D #x833E #x833F #x8341 - #x8342 #x8344 #x8345 #x8348 #x834A #x834B #x834C #x834D #x834E #x8353 - #x8355 #x8356 #x8357 #x8358 #x8359 #x835D #x8362 #x8370 #x8371 #x8372 - #x8373 #x8374 #x8375 #x8376 #x8379 #x837A #x837E #x837F #x8380 #x8381 - #x8382 #x8383 #x8384 #x8387 #x8388 #x838A #x838B #x838C #x838D #x838F - #x8390 #x8391 #x8394 #x8395 #x8396 #x8397 #x8399 #x839A #x839D #x839F - #x83A1 #x83A2 #x83A3 #x83A4 #x83A5 #x83A6 #x83A7 #x83AC #x83AD #x83AE - #x83AF #x83B5 #x83BB #x83BE #x83BF #x83C2 #x83C3 #x83C4 #x83C6 #x83C8 - #x83C9 #x83CB #x83CD #x83CE #x83D0 #x83D1 #x83D2 #x83D3 #x83D5 #x83D7 - #x83D9 #x83DA #x83DB #x83DE #x83E2 #x83E3 #x83E4 #x83E6 #x83E7 #x83E8 - #x83EB #x83EC #x83ED #x83EE #x83EF #x83F3 #x83F4 #x83F5 #x83F6 #x83F7 - #x83FA #x83FB #x83FC #x83FE #x83FF #x8400 #x8402 #x8405 #x8407 #x8408 - #x8409 #x840A #x8410 #x8412 #x8413 #x8414 #x8415 #x8416 #x8417 #x8419 - #x841A #x841B #x841E #x841F #x8420 #x8421 #x8422 #x8423 #x8429 #x842A - #x842B #x842C #x842D #x842E #x842F #x8430 #x8432 #x8433 #x8434 #x8435 - #x8436 #x8437 #x8439 #x843A #x843B #x843E #x843F #x8440 #x8441 #x8442 - #x8443 #x8444 #x8445 #x8447 #x8448 #x8449 #x844A #x844B #x844C #x844D - #x844E #x844F #x8450 #x8452 #x8453 #x8454 #x8455 #x8456 #x8458 #x845D - #x845E #x845F #x8460 #x8462 #x8464 #x8465 #x8466 #x8467 #x8468 #x846A - #x846E #x846F #x8470 #x8472 #x8474 #x8477 #x8479 #x847B #x847C #x847D - #x847E #x847F #x8480 #x8481 #x8483 #x8484 #x8485 #x8486 #x848A #x848D - #x848F #x8490 #x8491 #x8492 #x8493 #x8494 #x8495 #x8496 #x8498 #x849A - #x849B #x849D #x849E #x849F #x84A0 #x84A2 #x84A3 #x84A4 #x84A5 #x84A6 - #x84A7 #x84A8 #x84A9 #x84AA #x84AB #x84AC #x84AD #x84AE #x84B0 #x84B1 - #x84B3 #x84B5 #x84B6 #x84B7 #x84BB #x84BC #x84BE #x84C0 #x84C2 #x84C3 - #x84C5 #x84C6 #x84C7 #x84C8 #x84CB #x84CC #x84CE #x84CF #x84D2 #x84D4 - #x84D5 #x84D7 #x84D8 #x84D9 #x84DA #x84DB #x84DC #x84DE #x84E1 #x84E2 - #x84E4 #x84E7 #x84E8 #x84E9 #x84EA #x84EB #x84ED #x84EE #x84EF #x84F1 - #x84F2 #x84F3 #x84F4 #x84F5 #x84F6 #x84F7 #x84F8 #x84F9 #x84FA #x84FB - #x84FD #x84FE #x8500 #x8501 #x8502 #x8503 #x8504 #x8505 #x8506 #x8507 - #x8508 #x8509 #x850A #x850B #x850D #x850E #x850F #x8510 #x8512 #x8514 - #x8515 #x8516 #x8518 #x8519 #x851B #x851C #x851D #x851E #x8520 #x8522 - #x8523 #x8524 #x8525 #x8526 #x8527 #x8528 #x8529 #x852A #x852D #x852E - #x852F #x8530 #x8531 #x8532 #x8533 #x8534 #x8535 #x8536 #x853E #x853F - #x8540 #x8541 #x8542 #x8544 #x8545 #x8546 #x8547 #x854B #x854C #x854D - #x854E #x854F #x8550 #x8551 #x8552 #x8553 #x8554 #x8555 #x8557 #x8558 - #x855A #x855B #x855C #x855D #x855F #x8560 #x8561 #x8562 #x8563 #x8565 - #x8566 #x8567 #x8569 #x856A #x856B #x856C #x856D #x856E #x856F #x8570 - #x8571 #x8573 #x8575 #x8576 #x8577 #x8578 #x857C #x857D #x857F #x8580 - #x8581 #x8582 #x8583 #x8586 #x8588 #x8589 #x858A #x858B #x858C #x858D - #x858E #x8590 #x8591 #x8592 #x8593 #x8594 #x8595 #x8596 #x8597 #x8598 - #x8599 #x859A #x859D #x859E #x859F #x85A0 #x85A1 #x85A2 #x85A3 #x85A5 - #x85A6 #x85A7 #x85A9 #x85AB #x85AC #x85AD #x85B1 #x85B2 #x85B3 #x85B4 - #x85B5 #x85B6 #x85B8 #x85BA #x85BB #x85BC #x85BD #x85BE #x85BF #x85C0 - #x85C2 #x85C3 #x85C4 #x85C5 #x85C6 #x85C7 #x85C8 #x85CA #x85CB #x85CC - #x85CD #x85CE #x85D1 #x85D2 #x85D4 #x85D6 #x85D7 #x85D8 #x85D9 #x85DA - #x85DB #x85DD #x85DE #x85DF #x85E0 #x85E1 #x85E2 #x85E3 #x85E5 #x85E6 - #x85E7 #x85E8 #x85EA #x85EB #x85EC #x85ED #x85EE #x85EF #x85F0 #x85F1 - #x85F2 #x85F3 #x85F4 #x85F5 #x85F6 #x85F7 #x85F8 #x85F9 #x85FA #x85FC - #x85FD #x85FE #x8600 #x8601 #x8602 #x8603 #x8604 #x8606 #x8607 #x8608 - #x8609 #x860A #x860B #x860C #x860D #x860E #x860F #x8610 #x8612 #x8613 - #x8614 #x8615 #x8617 #x8618 #x8619 #x861A #x861B #x861C #x861D #x861E - #x861F #x8620 #x8621 #x8622 #x8623 #x8624 #x8625 #x8626 #x8628 #x862A - #x862B #x862C #x862D #x862E #x862F #x8630 #x8631 #x8632 #x8633 #x8634 - #x8635 #x8636 #x8637 #x8639 #x863A #x863B #x863D #x863E #x863F #x8640 - #x8641 #x8642 #x8643 #x8644 #x8645 #x8646 #x8647 #x8648 #x8649 #x864A - #x864B #x864C #x8652 #x8653 #x8655 #x8656 #x8657 #x8658 #x8659 #x865B - #x865C #x865D #x865F #x8660 #x8661 #x8663 #x8664 #x8665 #x8666 #x8667 - #x8668 #x8669 #x866A #x866D #x866F #x8670 #x8672 #x8673 #x8674 #x8675 - #x8676 #x8677 #x8678 #x8683 #x8684 #x8685 #x8686 #x8687 #x8688 #x8689 - #x868E #x868F #x8690 #x8691 #x8692 #x8694 #x8696 #x8697 #x8698 #x8699 - #x869A #x869B #x869E #x869F #x86A0 #x86A1 #x86A2 #x86A5 #x86A6 #x86AB - #x86AD #x86AE #x86B2 #x86B3 #x86B7 #x86B8 #x86B9 #x86BB #x86BC #x86BD - #x86BE #x86BF #x86C1 #x86C2 #x86C3 #x86C5 #x86C8 #x86CC #x86CD #x86D2 - #x86D3 #x86D5 #x86D6 #x86D7 #x86DA #x86DC #x86DD #x86E0 #x86E1 #x86E2 - #x86E3 #x86E5 #x86E6 #x86E7 #x86E8 #x86EA #x86EB #x86EC #x86EF #x86F5 - #x86F6 #x86F7 #x86FA #x86FB #x86FC #x86FD #x86FF #x8701 #x8704 #x8705 - #x8706 #x870B #x870C #x870E #x870F #x8710 #x8711 #x8714 #x8716 #x8719 - #x871B #x871D #x871F #x8720 #x8724 #x8726 #x8727 #x8728 #x872A #x872B - #x872C #x872D #x872F #x8730 #x8732 #x8733 #x8735 #x8736 #x8738 #x8739 - #x873A #x873C #x873D #x8740 #x8741 #x8742 #x8743 #x8744 #x8745 #x8746 - #x874A #x874B #x874D #x874F #x8750 #x8751 #x8752 #x8754 #x8755 #x8756 - #x8758 #x875A #x875B #x875C #x875D #x875E #x875F #x8761 #x8762 #x8766 - #x8767 #x8768 #x8769 #x876A #x876B #x876C #x876D #x876F #x8771 #x8772 - #x8773 #x8775 #x8777 #x8778 #x8779 #x877A #x877F #x8780 #x8781 #x8784 - #x8786 #x8787 #x8789 #x878A #x878C #x878E #x878F #x8790 #x8791 #x8792 - #x8794 #x8795 #x8796 #x8798 #x8799 #x879A #x879B #x879C #x879D #x879E - #x87A0 #x87A1 #x87A2 #x87A3 #x87A4 #x87A5 #x87A6 #x87A7 #x87A9 #x87AA - #x87AE #x87B0 #x87B1 #x87B2 #x87B4 #x87B6 #x87B7 #x87B8 #x87B9 #x87BB - #x87BC #x87BE #x87BF #x87C1 #x87C2 #x87C3 #x87C4 #x87C5 #x87C7 #x87C8 - #x87C9 #x87CC #x87CD #x87CE #x87CF #x87D0 #x87D4 #x87D5 #x87D6 #x87D7 - #x87D8 #x87D9 #x87DA #x87DC #x87DD #x87DE #x87DF #x87E1 #x87E2 #x87E3 - #x87E4 #x87E6 #x87E7 #x87E8 #x87E9 #x87EB #x87EC #x87ED #x87EF #x87F0 - #x87F1 #x87F2 #x87F3 #x87F4 #x87F5 #x87F6 #x87F7 #x87F8 #x87FA #x87FB - #x87FC #x87FD #x87FF #x8800 #x8801 #x8802 #x8804 #x8805 #x8806 #x8807 - #x8808 #x8809 #x880B #x880C #x880D #x880E #x880F #x8810 #x8811 #x8812 - #x8814 #x8817 #x8818 #x8819 #x881A #x881C #x881D #x881E #x881F #x8820 - #x8823 #x8824 #x8825 #x8826 #x8827 #x8828 #x8829 #x882A #x882B #x882C - #x882D #x882E #x882F #x8830 #x8831 #x8833 #x8834 #x8835 #x8836 #x8837 - #x8838 #x883A #x883B #x883D #x883E #x883F #x8841 #x8842 #x8843 #x8846 - #x8847 #x8848 #x8849 #x884A #x884B #x884E #x884F #x8850 #x8851 #x8852 - #x8853 #x8855 #x8856 #x8858 #x885A #x885B #x885C #x885D #x885E #x885F - #x8860 #x8866 #x8867 #x886A #x886D #x886F #x8871 #x8873 #x8874 #x8875 - #x8876 #x8878 #x8879 #x887A #x887B #x887C #x8880 #x8883 #x8886 #x8887 - #x8889 #x888A #x888C #x888E #x888F #x8890 #x8891 #x8893 #x8894 #x8895 - #x8897 #x8898 #x8899 #x889A #x889B #x889D #x889E #x889F #x88A0 #x88A1 - #x88A3 #x88A5 #x88A6 #x88A7 #x88A8 #x88A9 #x88AA #x88AC #x88AE #x88AF - #x88B0 #x88B2 #x88B3 #x88B4 #x88B5 #x88B6 #x88B8 #x88B9 #x88BA #x88BB - #x88BD #x88BE #x88BF #x88C0 #x88C3 #x88C4 #x88C7 #x88C8 #x88CA #x88CB - #x88CC #x88CD #x88CF #x88D0 #x88D1 #x88D3 #x88D6 #x88D7 #x88DA #x88DB - #x88DC #x88DD #x88DE #x88E0 #x88E1 #x88E6 #x88E7 #x88E9 #x88EA #x88EB - #x88EC #x88ED #x88EE #x88EF #x88F2 #x88F5 #x88F6 #x88F7 #x88FA #x88FB - #x88FD #x88FF #x8900 #x8901 #x8903 #x8904 #x8905 #x8906 #x8907 #x8908 - #x8909 #x890B #x890C #x890D #x890E #x890F #x8911 #x8914 #x8915 #x8916 - #x8917 #x8918 #x891C #x891D #x891E #x891F #x8920 #x8922 #x8923 #x8924 - #x8926 #x8927 #x8928 #x8929 #x892C #x892D #x892E #x892F #x8931 #x8932 - #x8933 #x8935 #x8937 #x8938 #x8939 #x893A #x893B #x893C #x893D #x893E - #x893F #x8940 #x8942 #x8943 #x8945 #x8946 #x8947 #x8948 #x8949 #x894A - #x894B #x894C #x894D #x894E #x894F #x8950 #x8951 #x8952 #x8953 #x8954 - #x8955 #x8956 #x8957 #x8958 #x8959 #x895A #x895B #x895C #x895D #x8960 - #x8961 #x8962 #x8963 #x8964 #x8965 #x8967 #x8968 #x8969 #x896A #x896B - #x896C #x896D #x896E #x896F #x8970 #x8971 #x8972 #x8973 #x8974 #x8975 - #x8976 #x8977 #x8978 #x8979 #x897A #x897C #x897D #x897E #x8980 #x8982 - #x8984 #x8985 #x8987 #x8988 #x8989 #x898A #x898B #x898C #x898D #x898E - #x898F #x8990 #x8991 #x8992 #x8993 #x8994 #x8995 #x8996 #x8997 #x8998 - #x8999 #x899A #x899B #x899C #x899D #x899E #x899F #x89A0 #x89A1 #x89A2 - #x89A3 #x89A4 #x89A5 #x89A6 #x89A7 #x89A8 #x89A9 #x89AA #x89AB #x89AC - #x89AD #x89AE #x89AF #x89B0 #x89B1 #x89B2 #x89B3 #x89B4 #x89B5 #x89B6 - #x89B7 #x89B8 #x89B9 #x89BA #x89BB #x89BC #x89BD #x89BE #x89BF #x89C0 - #x89C3 #x89CD #x89D3 #x89D4 #x89D5 #x89D7 #x89D8 #x89D9 #x89DB #x89DD - #x89DF #x89E0 #x89E1 #x89E2 #x89E4 #x89E7 #x89E8 #x89E9 #x89EA #x89EC - #x89ED #x89EE #x89F0 #x89F1 #x89F2 #x89F4 #x89F5 #x89F6 #x89F7 #x89F8 - #x89F9 #x89FA #x89FB #x89FC #x89FD #x89FE #x89FF #x8A01 #x8A02 #x8A03 - #x8A04 #x8A05 #x8A06 #x8A08 #x8A09 #x8A0A #x8A0B #x8A0C #x8A0D #x8A0E - #x8A0F #x8A10 #x8A11 #x8A12 #x8A13 #x8A14 #x8A15 #x8A16 #x8A17 #x8A18 - #x8A19 #x8A1A #x8A1B #x8A1C #x8A1D #x8A1E #x8A1F #x8A20 #x8A21 #x8A22 - #x8A23 #x8A24 #x8A25 #x8A26 #x8A27 #x8A28 #x8A29 #x8A2A #x8A2B #x8A2C - #x8A2D #x8A2E #x8A2F #x8A30 #x8A31 #x8A32 #x8A33 #x8A34 #x8A35 #x8A36 - #x8A37 #x8A38 #x8A39 #x8A3A #x8A3B #x8A3C #x8A3D #x8A3F #x8A40 #x8A41 - #x8A42 #x8A43 #x8A44 #x8A45 #x8A46 #x8A47 #x8A49 #x8A4A #x8A4B #x8A4C - #x8A4D #x8A4E #x8A4F #x8A50 #x8A51 #x8A52 #x8A53 #x8A54 #x8A55 #x8A56 - #x8A57 #x8A58 #x8A59 #x8A5A #x8A5B #x8A5C #x8A5D #x8A5E #x8A5F #x8A60 - #x8A61 #x8A62 #x8A63 #x8A64 #x8A65 #x8A66 #x8A67 #x8A68 #x8A69 #x8A6A - #x8A6B #x8A6C #x8A6D #x8A6E #x8A6F #x8A70 #x8A71 #x8A72 #x8A73 #x8A74 - #x8A75 #x8A76 #x8A77 #x8A78 #x8A7A #x8A7B #x8A7C #x8A7D #x8A7E #x8A7F - #x8A80 #x8A81 #x8A82 #x8A83 #x8A84 #x8A85 #x8A86 #x8A87 #x8A88 #x8A8B - #x8A8C #x8A8D #x8A8E #x8A8F #x8A90 #x8A91 #x8A92 #x8A94 #x8A95 #x8A96 - #x8A97 #x8A98 #x8A99 #x8A9A #x8A9B #x8A9C #x8A9D #x8A9E #x8A9F #x8AA0 - #x8AA1 #x8AA2 #x8AA3 #x8AA4 #x8AA5 #x8AA6 #x8AA7 #x8AA8 #x8AA9 #x8AAA - #x8AAB #x8AAC #x8AAD #x8AAE #x8AAF #x8AB0 #x8AB1 #x8AB2 #x8AB3 #x8AB4 - #x8AB5 #x8AB6 #x8AB7 #x8AB8 #x8AB9 #x8ABA #x8ABB #x8ABC #x8ABD #x8ABE - #x8ABF #x8AC0 #x8AC1 #x8AC2 #x8AC3 #x8AC4 #x8AC5 #x8AC6 #x8AC7 #x8AC8 - #x8AC9 #x8ACA #x8ACB #x8ACC #x8ACD #x8ACE #x8ACF #x8AD0 #x8AD1 #x8AD2 - #x8AD3 #x8AD4 #x8AD5 #x8AD6 #x8AD7 #x8AD8 #x8AD9 #x8ADA #x8ADB #x8ADC - #x8ADD #x8ADE #x8ADF #x8AE0 #x8AE1 #x8AE2 #x8AE3 #x8AE4 #x8AE5 #x8AE6 - #x8AE7 #x8AE8 #x8AE9 #x8AEA #x8AEB #x8AEC #x8AED #x8AEE #x8AEF #x8AF0 - #x8AF1 #x8AF2 #x8AF3 #x8AF4 #x8AF5 #x8AF6 #x8AF7 #x8AF8 #x8AF9 #x8AFA - #x8AFB #x8AFC #x8AFD #x8AFE #x8AFF #x8B00 #x8B01 #x8B02 #x8B03 #x8B04 - #x8B05 #x8B06 #x8B08 #x8B09 #x8B0A #x8B0B #x8B0C #x8B0D #x8B0E #x8B0F - #x8B10 #x8B11 #x8B12 #x8B13 #x8B14 #x8B15 #x8B16 #x8B17 #x8B18 #x8B19 - #x8B1A #x8B1B #x8B1C #x8B1D #x8B1E #x8B1F #x8B20 #x8B21 #x8B22 #x8B23 - #x8B24 #x8B25 #x8B27 #x8B28 #x8B29 #x8B2A #x8B2B #x8B2C #x8B2D #x8B2E - #x8B2F #x8B30 #x8B31 #x8B32 #x8B33 #x8B34 #x8B35 #x8B36 #x8B37 #x8B38 - #x8B39 #x8B3A #x8B3B #x8B3C #x8B3D #x8B3E #x8B3F #x8B40 #x8B41 #x8B42 - #x8B43 #x8B44 #x8B45 #x8B46 #x8B47 #x8B48 #x8B49 #x8B4A #x8B4B #x8B4C - #x8B4D #x8B4E #x8B4F #x8B50 #x8B51 #x8B52 #x8B53 #x8B54 #x8B55 #x8B56 - #x8B57 #x8B58 #x8B59 #x8B5A #x8B5B #x8B5C #x8B5D #x8B5E #x8B5F #x8B60 - #x8B61 #x8B62 #x8B63 #x8B64 #x8B65 #x8B67 #x8B68 #x8B69 #x8B6A #x8B6B - #x8B6D #x8B6E #x8B6F #x8B70 #x8B71 #x8B72 #x8B73 #x8B74 #x8B75 #x8B76 - #x8B77 #x8B78 #x8B79 #x8B7A #x8B7B #x8B7C #x8B7D #x8B7E #x8B7F #x8B80 - #x8B81 #x8B82 #x8B83 #x8B84 #x8B85 #x8B86 #x8B87 #x8B88 #x8B89 #x8B8A - #x8B8B #x8B8C #x8B8D #x8B8E #x8B8F #x8B90 #x8B91 #x8B92 #x8B93 #x8B94 - #x8B95 #x8B96 #x8B97 #x8B98 #x8B99 #x8B9A #x8B9B #x8B9C #x8B9D #x8B9E - #x8B9F #x8BAC #x8BB1 #x8BBB #x8BC7 #x8BD0 #x8BEA #x8C09 #x8C1E #x8C38 - #x8C39 #x8C3A #x8C3B #x8C3C #x8C3D #x8C3E #x8C3F #x8C40 #x8C42 #x8C43 - #x8C44 #x8C45 #x8C48 #x8C4A #x8C4B #x8C4D #x8C4E #x8C4F #x8C50 #x8C51 - #x8C52 #x8C53 #x8C54 #x8C56 #x8C57 #x8C58 #x8C59 #x8C5B #x8C5C #x8C5D - #x8C5E #x8C5F #x8C60 #x8C63 #x8C64 #x8C65 #x8C66 #x8C67 #x8C68 #x8C69 - #x8C6C #x8C6D #x8C6E #x8C6F #x8C70 #x8C71 #x8C72 #x8C74 #x8C75 #x8C76 - #x8C77 #x8C7B #x8C7C #x8C7D #x8C7E #x8C7F #x8C80 #x8C81 #x8C83 #x8C84 - #x8C86 #x8C87 #x8C88 #x8C8B #x8C8D #x8C8E #x8C8F #x8C90 #x8C91 #x8C92 - #x8C93 #x8C95 #x8C96 #x8C97 #x8C99 #x8C9A #x8C9B #x8C9C #x8C9D #x8C9E - #x8C9F #x8CA0 #x8CA1 #x8CA2 #x8CA3 #x8CA4 #x8CA5 #x8CA6 #x8CA7 #x8CA8 - #x8CA9 #x8CAA #x8CAB #x8CAC #x8CAD #x8CAE #x8CAF #x8CB0 #x8CB1 #x8CB2 - #x8CB3 #x8CB4 #x8CB5 #x8CB6 #x8CB7 #x8CB8 #x8CB9 #x8CBA #x8CBB #x8CBC - #x8CBD #x8CBE #x8CBF #x8CC0 #x8CC1 #x8CC2 #x8CC3 #x8CC4 #x8CC5 #x8CC6 - #x8CC7 #x8CC8 #x8CC9 #x8CCA #x8CCB #x8CCC #x8CCD #x8CCE #x8CCF #x8CD0 - #x8CD1 #x8CD2 #x8CD3 #x8CD4 #x8CD5 #x8CD6 #x8CD7 #x8CD8 #x8CD9 #x8CDA - #x8CDB #x8CDC #x8CDD #x8CDE #x8CDF #x8CE0 #x8CE1 #x8CE2 #x8CE3 #x8CE4 - #x8CE5 #x8CE6 #x8CE7 #x8CE8 #x8CE9 #x8CEA #x8CEB #x8CEC #x8CED #x8CEE - #x8CEF #x8CF0 #x8CF1 #x8CF2 #x8CF3 #x8CF4 #x8CF5 #x8CF6 #x8CF7 #x8CF8 - #x8CF9 #x8CFA #x8CFB #x8CFC #x8CFD #x8CFE #x8CFF #x8D00 #x8D01 #x8D02 - #x8D03 #x8D04 #x8D05 #x8D06 #x8D07 #x8D08 #x8D09 #x8D0A #x8D0B #x8D0C - #x8D0D #x8D0E #x8D0F #x8D10 #x8D11 #x8D12 #x8D13 #x8D14 #x8D15 #x8D16 - #x8D17 #x8D18 #x8D19 #x8D1A #x8D1B #x8D1C #x8D20 #x8D51 #x8D52 #x8D57 - #x8D5F #x8D65 #x8D68 #x8D69 #x8D6A #x8D6C #x8D6E #x8D6F #x8D71 #x8D72 - #x8D78 #x8D79 #x8D7A #x8D7B #x8D7C #x8D7D #x8D7E #x8D7F #x8D80 #x8D82 - #x8D83 #x8D86 #x8D87 #x8D88 #x8D89 #x8D8C #x8D8D #x8D8E #x8D8F #x8D90 - #x8D92 #x8D93 #x8D95 #x8D96 #x8D97 #x8D98 #x8D99 #x8D9A #x8D9B #x8D9C - #x8D9D #x8D9E #x8DA0 #x8DA1 #x8DA2 #x8DA4 #x8DA5 #x8DA6 #x8DA7 #x8DA8 - #x8DA9 #x8DAA #x8DAB #x8DAC #x8DAD #x8DAE #x8DAF #x8DB0 #x8DB2 #x8DB6 - #x8DB7 #x8DB9 #x8DBB #x8DBD #x8DC0 #x8DC1 #x8DC2 #x8DC5 #x8DC7 #x8DC8 - #x8DC9 #x8DCA #x8DCD #x8DD0 #x8DD2 #x8DD3 #x8DD4 #x8DD5 #x8DD8 #x8DD9 - #x8DDC #x8DE0 #x8DE1 #x8DE2 #x8DE5 #x8DE6 #x8DE7 #x8DE9 #x8DED #x8DEE - #x8DF0 #x8DF1 #x8DF2 #x8DF4 #x8DF6 #x8DFC #x8DFE #x8DFF #x8E00 #x8E01 - #x8E02 #x8E03 #x8E04 #x8E06 #x8E07 #x8E08 #x8E0B #x8E0D #x8E0E #x8E10 - #x8E11 #x8E12 #x8E13 #x8E15 #x8E16 #x8E17 #x8E18 #x8E19 #x8E1A #x8E1B - #x8E1C #x8E20 #x8E21 #x8E24 #x8E25 #x8E26 #x8E27 #x8E28 #x8E2B #x8E2D - #x8E30 #x8E32 #x8E33 #x8E34 #x8E36 #x8E37 #x8E38 #x8E3B #x8E3C #x8E3E - #x8E3F #x8E43 #x8E45 #x8E46 #x8E4C #x8E4D #x8E4E #x8E4F #x8E50 #x8E53 - #x8E54 #x8E55 #x8E56 #x8E57 #x8E58 #x8E5A #x8E5B #x8E5C #x8E5D #x8E5E - #x8E5F #x8E60 #x8E61 #x8E62 #x8E63 #x8E64 #x8E65 #x8E67 #x8E68 #x8E6A - #x8E6B #x8E6E #x8E71 #x8E73 #x8E75 #x8E77 #x8E78 #x8E79 #x8E7A #x8E7B - #x8E7D #x8E7E #x8E80 #x8E82 #x8E83 #x8E84 #x8E86 #x8E88 #x8E89 #x8E8A - #x8E8B #x8E8C #x8E8D #x8E8E #x8E91 #x8E92 #x8E93 #x8E95 #x8E96 #x8E97 - #x8E98 #x8E99 #x8E9A #x8E9B #x8E9D #x8E9F #x8EA0 #x8EA1 #x8EA2 #x8EA3 - #x8EA4 #x8EA5 #x8EA6 #x8EA7 #x8EA8 #x8EA9 #x8EAA #x8EAD #x8EAE #x8EB0 - #x8EB1 #x8EB3 #x8EB4 #x8EB5 #x8EB6 #x8EB7 #x8EB8 #x8EB9 #x8EBB #x8EBC - #x8EBD #x8EBE #x8EBF #x8EC0 #x8EC1 #x8EC2 #x8EC3 #x8EC4 #x8EC5 #x8EC6 - #x8EC7 #x8EC8 #x8EC9 #x8ECA #x8ECB #x8ECC #x8ECD #x8ECF #x8ED0 #x8ED1 - #x8ED2 #x8ED3 #x8ED4 #x8ED5 #x8ED6 #x8ED7 #x8ED8 #x8ED9 #x8EDA #x8EDB - #x8EDC #x8EDD #x8EDE #x8EDF #x8EE0 #x8EE1 #x8EE2 #x8EE3 #x8EE4 #x8EE5 - #x8EE6 #x8EE7 #x8EE8 #x8EE9 #x8EEA #x8EEB #x8EEC #x8EED #x8EEE #x8EEF - #x8EF0 #x8EF1 #x8EF2 #x8EF3 #x8EF4 #x8EF5 #x8EF6 #x8EF7 #x8EF8 #x8EF9 - #x8EFA #x8EFB #x8EFC #x8EFD #x8EFE #x8EFF #x8F00 #x8F01 #x8F02 #x8F03 - #x8F04 #x8F05 #x8F06 #x8F07 #x8F08 #x8F09 #x8F0A #x8F0B #x8F0C #x8F0D - #x8F0E #x8F0F #x8F10 #x8F11 #x8F12 #x8F13 #x8F14 #x8F15 #x8F16 #x8F17 - #x8F18 #x8F19 #x8F1A #x8F1B #x8F1C #x8F1D #x8F1E #x8F1F #x8F20 #x8F21 - #x8F22 #x8F23 #x8F24 #x8F25 #x8F26 #x8F27 #x8F28 #x8F29 #x8F2A #x8F2B - #x8F2C #x8F2D #x8F2E #x8F2F #x8F30 #x8F31 #x8F32 #x8F33 #x8F34 #x8F35 - #x8F36 #x8F37 #x8F38 #x8F39 #x8F3A #x8F3B #x8F3C #x8F3D #x8F3E #x8F3F - #x8F40 #x8F41 #x8F42 #x8F43 #x8F44 #x8F45 #x8F46 #x8F47 #x8F48 #x8F49 - #x8F4A #x8F4B #x8F4C #x8F4D #x8F4E #x8F4F #x8F50 #x8F51 #x8F52 #x8F53 - #x8F54 #x8F55 #x8F56 #x8F57 #x8F58 #x8F59 #x8F5A #x8F5B #x8F5C #x8F5D - #x8F5E #x8F5F #x8F60 #x8F61 #x8F62 #x8F63 #x8F64 #x8F65 #x8F6A #x8F80 - #x8F8C #x8F92 #x8F9D #x8FA0 #x8FA1 #x8FA2 #x8FA4 #x8FA5 #x8FA6 #x8FA7 - #x8FAA #x8FAC #x8FAD #x8FAE #x8FAF #x8FB2 #x8FB3 #x8FB4 #x8FB5 #x8FB7 - #x8FB8 #x8FBA #x8FBB #x8FBC #x8FBF #x8FC0 #x8FC3 #x8FC6 #x8FC9 #x8FCA - #x8FCB #x8FCC #x8FCD #x8FCF #x8FD2 #x8FD6 #x8FD7 #x8FDA #x8FE0 #x8FE1 - #x8FE3 #x8FE7 #x8FEC #x8FEF #x8FF1 #x8FF2 #x8FF4 #x8FF5 #x8FF6 #x8FFA - #x8FFB #x8FFC #x8FFE #x8FFF #x9007 #x9008 #x900C #x900E #x9013 #x9015 - #x9018 #x9019 #x901C #x9023 #x9024 #x9025 #x9027 #x9028 #x9029 #x902A - #x902B #x902C #x9030 #x9031 #x9032 #x9033 #x9034 #x9037 #x9039 #x903A - #x903D #x903F #x9040 #x9043 #x9045 #x9046 #x9048 #x9049 #x904A #x904B - #x904C #x904E #x9054 #x9055 #x9056 #x9059 #x905A #x905C #x905D #x905E - #x905F #x9060 #x9061 #x9064 #x9066 #x9067 #x9069 #x906A #x906B #x906C - #x906F #x9070 #x9071 #x9072 #x9073 #x9076 #x9077 #x9078 #x9079 #x907A - #x907B #x907C #x907E #x9081 #x9084 #x9085 #x9086 #x9087 #x9089 #x908A - #x908C #x908D #x908E #x908F #x9090 #x9092 #x9094 #x9096 #x9098 #x909A - #x909C #x909E #x909F #x90A0 #x90A4 #x90A5 #x90A7 #x90A8 #x90A9 #x90AB - #x90AD #x90B2 #x90B7 #x90BC #x90BD #x90BF #x90C0 #x90C2 #x90C3 #x90C6 - #x90C8 #x90C9 #x90CB #x90CC #x90CD #x90D2 #x90D4 #x90D5 #x90D6 #x90D8 - #x90D9 #x90DA #x90DE #x90DF #x90E0 #x90E3 #x90E4 #x90E5 #x90E9 #x90EA - #x90EC #x90EE #x90F0 #x90F1 #x90F2 #x90F3 #x90F5 #x90F6 #x90F7 #x90F9 - #x90FA #x90FB #x90FC #x90FF #x9100 #x9101 #x9103 #x9105 #x9106 #x9107 - #x9108 #x9109 #x910A #x910B #x910C #x910D #x910E #x910F #x9110 #x9111 - #x9112 #x9113 #x9114 #x9115 #x9116 #x9117 #x9118 #x911A #x911B #x911C - #x911D #x911F #x9120 #x9121 #x9124 #x9125 #x9126 #x9127 #x9128 #x9129 - #x912A #x912B #x912C #x912D #x912E #x9130 #x9132 #x9133 #x9134 #x9135 - #x9136 #x9137 #x9138 #x913A #x913B #x913C #x913D #x913E #x913F #x9140 - #x9141 #x9142 #x9144 #x9145 #x9147 #x9148 #x9151 #x9153 #x9154 #x9155 - #x9156 #x9158 #x9159 #x915B #x915C #x915F #x9160 #x9166 #x9167 #x9168 - #x916B #x916D #x9173 #x917A #x917B #x917C #x9180 #x9181 #x9182 #x9183 - #x9184 #x9186 #x9188 #x918A #x918E #x918F #x9193 #x9194 #x9195 #x9196 - #x9197 #x9198 #x9199 #x919C #x919D #x919E #x919F #x91A0 #x91A1 #x91A4 - #x91A5 #x91A6 #x91A7 #x91A8 #x91A9 #x91AB #x91AC #x91B0 #x91B1 #x91B2 - #x91B3 #x91B6 #x91B7 #x91B8 #x91B9 #x91BB #x91BC #x91BD #x91BE #x91BF - #x91C0 #x91C1 #x91C2 #x91C3 #x91C4 #x91C5 #x91C6 #x91C8 #x91CB #x91D0 - #x91D2 #x91D3 #x91D4 #x91D5 #x91D6 #x91D7 #x91D8 #x91D9 #x91DA #x91DB - #x91DD #x91DE #x91DF #x91E0 #x91E1 #x91E2 #x91E3 #x91E4 #x91E5 #x91E6 - #x91E7 #x91E8 #x91E9 #x91EA #x91EB #x91EC #x91ED #x91EE #x91EF #x91F0 - #x91F1 #x91F2 #x91F3 #x91F4 #x91F5 #x91F6 #x91F7 #x91F8 #x91F9 #x91FA - #x91FB #x91FC #x91FD #x91FE #x91FF #x9200 #x9201 #x9202 #x9203 #x9204 - #x9205 #x9206 #x9207 #x9208 #x9209 #x920A #x920B #x920C #x920D #x920E - #x920F #x9210 #x9211 #x9212 #x9213 #x9214 #x9215 #x9216 #x9217 #x9218 - #x9219 #x921A #x921B #x921C #x921D #x921E #x921F #x9220 #x9221 #x9222 - #x9223 #x9224 #x9225 #x9226 #x9227 #x9228 #x9229 #x922A #x922B #x922C - #x922D #x922E #x922F #x9230 #x9231 #x9232 #x9233 #x9234 #x9235 #x9236 - #x9237 #x9238 #x9239 #x923A #x923B #x923C #x923D #x923E #x923F #x9240 - #x9241 #x9242 #x9243 #x9244 #x9245 #x9246 #x9247 #x9248 #x9249 #x924A - #x924B #x924C #x924D #x924E #x924F #x9250 #x9251 #x9252 #x9253 #x9254 - #x9255 #x9256 #x9257 #x9258 #x9259 #x925A #x925B #x925C #x925D #x925E - #x925F #x9260 #x9261 #x9262 #x9263 #x9264 #x9265 #x9266 #x9267 #x9268 - #x9269 #x926A #x926B #x926C #x926D #x926E #x926F #x9270 #x9271 #x9272 - #x9273 #x9275 #x9276 #x9277 #x9278 #x9279 #x927A #x927B #x927C #x927D - #x927E #x927F #x9280 #x9281 #x9282 #x9283 #x9284 #x9285 #x9286 #x9287 - #x9288 #x9289 #x928A #x928B #x928C #x928D #x928F #x9290 #x9291 #x9292 - #x9293 #x9294 #x9295 #x9296 #x9297 #x9298 #x9299 #x929A #x929B #x929C - #x929D #x929E #x929F #x92A0 #x92A1 #x92A2 #x92A3 #x92A4 #x92A5 #x92A6 - #x92A7 #x92A8 #x92A9 #x92AA #x92AB #x92AC #x92AD #x92AF #x92B0 #x92B1 - #x92B2 #x92B3 #x92B4 #x92B5 #x92B6 #x92B7 #x92B8 #x92B9 #x92BA #x92BB - #x92BC #x92BD #x92BE #x92BF #x92C0 #x92C1 #x92C2 #x92C3 #x92C4 #x92C5 - #x92C6 #x92C7 #x92C9 #x92CA #x92CB #x92CC #x92CD #x92CE #x92CF #x92D0 - #x92D1 #x92D2 #x92D3 #x92D4 #x92D5 #x92D6 #x92D7 #x92D8 #x92D9 #x92DA - #x92DB #x92DC #x92DD #x92DE #x92DF #x92E0 #x92E1 #x92E2 #x92E3 #x92E4 - #x92E5 #x92E6 #x92E7 #x92E8 #x92E9 #x92EA #x92EB #x92EC #x92ED #x92EE - #x92EF #x92F0 #x92F1 #x92F2 #x92F3 #x92F4 #x92F5 #x92F6 #x92F7 #x92F8 - #x92F9 #x92FA #x92FB #x92FC #x92FD #x92FE #x92FF #x9300 #x9301 #x9302 - #x9303 #x9304 #x9305 #x9306 #x9307 #x9308 #x9309 #x930A #x930B #x930C - #x930D #x930E #x930F #x9310 #x9311 #x9312 #x9313 #x9314 #x9315 #x9316 - #x9317 #x9318 #x9319 #x931A #x931B #x931C #x931D #x931E #x931F #x9320 - #x9321 #x9322 #x9323 #x9324 #x9325 #x9326 #x9327 #x9328 #x9329 #x932A - #x932B #x932C #x932D #x932E #x932F #x9330 #x9331 #x9332 #x9333 #x9334 - #x9335 #x9336 #x9337 #x9338 #x9339 #x933A #x933B #x933C #x933D #x933F - #x9340 #x9341 #x9342 #x9343 #x9344 #x9345 #x9346 #x9347 #x9348 #x9349 - #x934A #x934B #x934C #x934D #x934E #x934F #x9350 #x9351 #x9352 #x9353 - #x9354 #x9355 #x9356 #x9357 #x9358 #x9359 #x935A #x935B #x935C #x935D - #x935E #x935F #x9360 #x9361 #x9362 #x9363 #x9364 #x9365 #x9366 #x9367 - #x9368 #x9369 #x936B #x936C #x936D #x936E #x936F #x9370 #x9371 #x9372 - #x9373 #x9374 #x9375 #x9376 #x9377 #x9378 #x9379 #x937A #x937B #x937C - #x937D #x937E #x937F #x9380 #x9381 #x9382 #x9383 #x9384 #x9385 #x9386 - #x9387 #x9388 #x9389 #x938A #x938B #x938C #x938D #x938E #x9390 #x9391 - #x9392 #x9393 #x9394 #x9395 #x9396 #x9397 #x9398 #x9399 #x939A #x939B - #x939C #x939D #x939E #x939F #x93A0 #x93A1 #x93A2 #x93A3 #x93A4 #x93A5 - #x93A6 #x93A7 #x93A8 #x93A9 #x93AA #x93AB #x93AC #x93AD #x93AE #x93AF - #x93B0 #x93B1 #x93B2 #x93B3 #x93B4 #x93B5 #x93B6 #x93B7 #x93B8 #x93B9 - #x93BA #x93BB #x93BC #x93BD #x93BE #x93BF #x93C0 #x93C1 #x93C2 #x93C3 - #x93C4 #x93C5 #x93C6 #x93C7 #x93C8 #x93C9 #x93CB #x93CC #x93CD #x93CE - #x93CF #x93D0 #x93D1 #x93D2 #x93D3 #x93D4 #x93D5 #x93D7 #x93D8 #x93D9 - #x93DA #x93DB #x93DC #x93DD #x93DE #x93DF #x93E0 #x93E1 #x93E2 #x93E3 - #x93E4 #x93E5 #x93E6 #x93E7 #x93E8 #x93E9 #x93EA #x93EB #x93EC #x93ED - #x93EE #x93EF #x93F0 #x93F1 #x93F2 #x93F3 #x93F4 #x93F5 #x93F6 #x93F7 - #x93F8 #x93F9 #x93FA #x93FB #x93FC #x93FD #x93FE #x93FF #x9400 #x9401 - #x9402 #x9403 #x9404 #x9405 #x9406 #x9407 #x9408 #x9409 #x940A #x940B - #x940C #x940D #x940E #x940F #x9410 #x9411 #x9412 #x9413 #x9414 #x9415 - #x9416 #x9417 #x9418 #x9419 #x941A #x941B #x941C #x941D #x941E #x941F - #x9420 #x9421 #x9422 #x9423 #x9424 #x9425 #x9426 #x9427 #x9428 #x9429 - #x942A #x942B #x942C #x942D #x942E #x942F #x9430 #x9431 #x9432 #x9433 - #x9434 #x9435 #x9436 #x9437 #x9438 #x9439 #x943A #x943B #x943C #x943D - #x943F #x9440 #x9441 #x9442 #x9443 #x9444 #x9445 #x9446 #x9447 #x9448 - #x9449 #x944A #x944B #x944C #x944D #x944E #x944F #x9450 #x9451 #x9452 - #x9453 #x9454 #x9455 #x9456 #x9457 #x9458 #x9459 #x945A #x945B #x945C - #x945D #x945E #x945F #x9460 #x9461 #x9462 #x9463 #x9464 #x9465 #x9466 - #x9467 #x9468 #x9469 #x946A #x946C #x946D #x946E #x946F #x9470 #x9471 - #x9472 #x9473 #x9474 #x9475 #x9476 #x9477 #x9478 #x9479 #x947A #x947B - #x947C #x947D #x947E #x947F #x9480 #x9481 #x9482 #x9483 #x9484 #x9491 - #x9496 #x9498 #x94C7 #x94CF #x94D3 #x94D4 #x94DA #x94E6 #x94FB #x951C - #x9520 #x9527 #x9533 #x953D #x9543 #x9548 #x954B #x9555 #x955A #x9560 - #x956E #x9574 #x9575 #x9577 #x9578 #x9579 #x957A #x957B #x957C #x957D - #x957E #x9580 #x9581 #x9582 #x9583 #x9584 #x9585 #x9586 #x9587 #x9588 - #x9589 #x958A #x958B #x958C #x958D #x958E #x958F #x9590 #x9591 #x9592 - #x9593 #x9594 #x9595 #x9596 #x9597 #x9598 #x9599 #x959A #x959B #x959C - #x959D #x959E #x959F #x95A0 #x95A1 #x95A2 #x95A3 #x95A4 #x95A5 #x95A6 - #x95A7 #x95A8 #x95A9 #x95AA #x95AB #x95AC #x95AD #x95AE #x95AF #x95B0 - #x95B1 #x95B2 #x95B3 #x95B4 #x95B5 #x95B6 #x95B7 #x95B8 #x95B9 #x95BA - #x95BB #x95BC #x95BD #x95BE #x95BF #x95C0 #x95C1 #x95C2 #x95C3 #x95C4 - #x95C5 #x95C6 #x95C7 #x95C8 #x95C9 #x95CA #x95CB #x95CC #x95CD #x95CE - #x95CF #x95D0 #x95D1 #x95D2 #x95D3 #x95D4 #x95D5 #x95D6 #x95D7 #x95D8 - #x95D9 #x95DA #x95DB #x95DC #x95DD #x95DE #x95DF #x95E0 #x95E1 #x95E2 - #x95E3 #x95E4 #x95E5 #x95E6 #x95E7 #x95EC #x95FF #x9607 #x9613 #x9618 - #x961B #x961E #x9620 #x9623 #x9624 #x9625 #x9626 #x9627 #x9628 #x9629 - #x962B #x962C #x962D #x962F #x9630 #x9637 #x9638 #x9639 #x963A #x963E - #x9641 #x9643 #x964A #x964E #x964F #x9651 #x9652 #x9653 #x9656 #x9657 - #x9658 #x9659 #x965A #x965C #x965D #x965E #x9660 #x9663 #x9665 #x9666 - #x966B #x966D #x966E #x966F #x9670 #x9671 #x9673 #x9678 #x9679 #x967A - #x967B #x967C #x967D #x967E #x967F #x9680 #x9681 #x9682 #x9683 #x9684 - #x9687 #x9689 #x968A #x968C #x968E #x9691 #x9692 #x9693 #x9695 #x9696 - #x969A #x969B #x969D #x969E #x969F #x96A0 #x96A1 #x96A2 #x96A3 #x96A4 - #x96A5 #x96A6 #x96A8 #x96A9 #x96AA #x96AB #x96AC #x96AD #x96AE #x96AF - #x96B1 #x96B2 #x96B4 #x96B5 #x96B7 #x96B8 #x96BA #x96BB #x96BF #x96C2 - #x96C3 #x96C8 #x96CA #x96CB #x96D0 #x96D1 #x96D3 #x96D4 #x96D6 #x96D7 - #x96D8 #x96D9 #x96DA #x96DB #x96DC #x96DD #x96DE #x96DF #x96E1 #x96E2 - #x96E3 #x96E4 #x96E5 #x96E6 #x96E7 #x96EB #x96EC #x96ED #x96EE #x96F0 - #x96F1 #x96F2 #x96F4 #x96F5 #x96F8 #x96FA #x96FB #x96FC #x96FD #x96FF - #x9702 #x9703 #x9705 #x970A #x970B #x970C #x9710 #x9711 #x9712 #x9714 - #x9715 #x9717 #x9718 #x9719 #x971A #x971B #x971D #x971F #x9720 #x9721 - #x9722 #x9723 #x9724 #x9725 #x9726 #x9727 #x9728 #x9729 #x972B #x972C - #x972E #x972F #x9731 #x9733 #x9734 #x9735 #x9736 #x9737 #x973A #x973B - #x973C #x973D #x973F #x9740 #x9741 #x9742 #x9743 #x9744 #x9745 #x9746 - #x9747 #x9748 #x9749 #x974A #x974B #x974C #x974D #x974E #x974F #x9750 - #x9751 #x9754 #x9755 #x9757 #x9758 #x975A #x975C #x975D #x975F #x9763 - #x9764 #x9766 #x9767 #x9768 #x976A #x976B #x976C #x976D #x976E #x976F - #x9770 #x9771 #x9772 #x9775 #x9777 #x9778 #x9779 #x977A #x977B #x977D - #x977E #x977F #x9780 #x9781 #x9782 #x9783 #x9784 #x9786 #x9787 #x9788 - #x9789 #x978A #x978C #x978E #x978F #x9790 #x9793 #x9795 #x9796 #x9797 - #x9799 #x979A #x979B #x979C #x979D #x979E #x979F #x97A1 #x97A2 #x97A4 - #x97A5 #x97A6 #x97A7 #x97A8 #x97A9 #x97AA #x97AC #x97AE #x97B0 #x97B1 - #x97B3 #x97B5 #x97B6 #x97B7 #x97B8 #x97B9 #x97BA #x97BB #x97BC #x97BD - #x97BE #x97BF #x97C0 #x97C1 #x97C2 #x97C3 #x97C4 #x97C5 #x97C6 #x97C7 - #x97C8 #x97C9 #x97CA #x97CB #x97CC #x97CD #x97CE #x97CF #x97D0 #x97D1 - #x97D2 #x97D3 #x97D4 #x97D5 #x97D6 #x97D7 #x97D8 #x97D9 #x97DA #x97DB - #x97DC #x97DD #x97DE #x97DF #x97E0 #x97E1 #x97E2 #x97E3 #x97E4 #x97E5 - #x97E8 #x97EE #x97EF #x97F0 #x97F1 #x97F2 #x97F4 #x97F7 #x97F8 #x97F9 - #x97FA #x97FB #x97FC #x97FD #x97FE #x97FF #x9800 #x9801 #x9802 #x9803 - #x9804 #x9805 #x9806 #x9807 #x9808 #x9809 #x980A #x980B #x980C #x980D - #x980E #x980F #x9810 #x9811 #x9812 #x9813 #x9814 #x9815 #x9816 #x9817 - #x9818 #x9819 #x981A #x981B #x981C #x981D #x981E #x981F #x9820 #x9821 - #x9822 #x9823 #x9824 #x9825 #x9826 #x9827 #x9828 #x9829 #x982A #x982B - #x982C #x982D #x982E #x982F #x9830 #x9831 #x9832 #x9833 #x9834 #x9835 - #x9836 #x9837 #x9838 #x9839 #x983A #x983B #x983C #x983D #x983E #x983F - #x9840 #x9841 #x9842 #x9843 #x9844 #x9845 #x9846 #x9847 #x9848 #x9849 - #x984A #x984B #x984C #x984D #x984E #x984F #x9850 #x9851 #x9852 #x9853 - #x9854 #x9855 #x9856 #x9857 #x9858 #x9859 #x985A #x985B #x985C #x985D - #x985E #x985F #x9860 #x9861 #x9862 #x9863 #x9864 #x9865 #x9866 #x9867 - #x9868 #x9869 #x986A #x986B #x986C #x986D #x986E #x986F #x9870 #x9871 - #x9872 #x9873 #x9874 #x988B #x988E #x9892 #x9895 #x9899 #x98A3 #x98A8 - #x98A9 #x98AA #x98AB #x98AC #x98AD #x98AE #x98AF #x98B0 #x98B1 #x98B2 - #x98B3 #x98B4 #x98B5 #x98B6 #x98B7 #x98B8 #x98B9 #x98BA #x98BB #x98BC - #x98BD #x98BE #x98BF #x98C0 #x98C1 #x98C2 #x98C3 #x98C4 #x98C5 #x98C6 - #x98C7 #x98C8 #x98C9 #x98CA #x98CB #x98CC #x98CD #x98CF #x98D0 #x98D4 - #x98D6 #x98D7 #x98DB #x98DC #x98DD #x98E0 #x98E1 #x98E2 #x98E3 #x98E4 - #x98E5 #x98E6 #x98E9 #x98EA #x98EB #x98EC #x98ED #x98EE #x98EF #x98F0 - #x98F1 #x98F2 #x98F3 #x98F4 #x98F5 #x98F6 #x98F7 #x98F8 #x98F9 #x98FA - #x98FB #x98FC #x98FD #x98FE #x98FF #x9900 #x9901 #x9902 #x9903 #x9904 - #x9905 #x9906 #x9907 #x9908 #x9909 #x990A #x990B #x990C #x990E #x990F - #x9911 #x9912 #x9913 #x9914 #x9915 #x9916 #x9917 #x9918 #x9919 #x991A - #x991B #x991C #x991D #x991E #x991F #x9920 #x9921 #x9922 #x9923 #x9924 - #x9925 #x9926 #x9927 #x9928 #x9929 #x992A #x992B #x992C #x992D #x992F - #x9930 #x9931 #x9932 #x9933 #x9934 #x9935 #x9936 #x9937 #x9938 #x9939 - #x993A #x993B #x993C #x993D #x993E #x993F #x9940 #x9941 #x9942 #x9943 - #x9944 #x9945 #x9946 #x9947 #x9948 #x9949 #x994A #x994B #x994C #x994D - #x994E #x994F #x9950 #x9951 #x9952 #x9953 #x9956 #x9957 #x9958 #x9959 - #x995A #x995B #x995C #x995D #x995E #x995F #x9960 #x9961 #x9962 #x9964 - #x9966 #x9973 #x9978 #x9979 #x997B #x997E #x9982 #x9983 #x9989 #x998C - #x998E #x999A #x999B #x999C #x999D #x999E #x999F #x99A0 #x99A1 #x99A2 - #x99A3 #x99A4 #x99A6 #x99A7 #x99A9 #x99AA #x99AB #x99AC #x99AD #x99AE - #x99AF #x99B0 #x99B1 #x99B2 #x99B3 #x99B4 #x99B5 #x99B6 #x99B7 #x99B8 - #x99B9 #x99BA #x99BB #x99BC #x99BD #x99BE #x99BF #x99C0 #x99C1 #x99C2 - #x99C3 #x99C4 #x99C5 #x99C6 #x99C7 #x99C8 #x99C9 #x99CA #x99CB #x99CC - #x99CD #x99CE #x99CF #x99D0 #x99D1 #x99D2 #x99D3 #x99D4 #x99D5 #x99D6 - #x99D7 #x99D8 #x99D9 #x99DA #x99DB #x99DC #x99DD #x99DE #x99DF #x99E0 - #x99E1 #x99E2 #x99E3 #x99E4 #x99E5 #x99E6 #x99E7 #x99E8 #x99E9 #x99EA - #x99EB #x99EC #x99ED #x99EE #x99EF #x99F0 #x99F1 #x99F2 #x99F3 #x99F4 - #x99F5 #x99F6 #x99F7 #x99F8 #x99F9 #x99FA #x99FB #x99FC #x99FD #x99FE - #x99FF #x9A00 #x9A01 #x9A02 #x9A03 #x9A04 #x9A05 #x9A06 #x9A07 #x9A08 - #x9A09 #x9A0A #x9A0B #x9A0C #x9A0D #x9A0E #x9A0F #x9A10 #x9A11 #x9A12 - #x9A13 #x9A14 #x9A15 #x9A16 #x9A17 #x9A18 #x9A19 #x9A1A #x9A1B #x9A1C - #x9A1D #x9A1E #x9A1F #x9A20 #x9A21 #x9A22 #x9A23 #x9A24 #x9A25 #x9A26 - #x9A27 #x9A28 #x9A29 #x9A2A #x9A2B #x9A2C #x9A2D #x9A2E #x9A2F #x9A30 - #x9A31 #x9A32 #x9A33 #x9A34 #x9A35 #x9A36 #x9A37 #x9A38 #x9A39 #x9A3A - #x9A3B #x9A3C #x9A3D #x9A3E #x9A3F #x9A40 #x9A41 #x9A42 #x9A43 #x9A44 - #x9A45 #x9A46 #x9A47 #x9A48 #x9A49 #x9A4A #x9A4B #x9A4C #x9A4D #x9A4E - #x9A4F #x9A50 #x9A51 #x9A52 #x9A53 #x9A54 #x9A55 #x9A56 #x9A57 #x9A58 - #x9A59 #x9A5A #x9A5B #x9A5C #x9A5D #x9A5E #x9A5F #x9A60 #x9A61 #x9A62 - #x9A63 #x9A64 #x9A65 #x9A66 #x9A67 #x9A68 #x9A69 #x9A6A #x9A6B #x9A72 - #x9A83 #x9A89 #x9A8D #x9A8E #x9A94 #x9A95 #x9A99 #x9AA6 #x9AA9 #x9AAA - #x9AAB #x9AAC #x9AAD #x9AAE #x9AAF #x9AB2 #x9AB3 #x9AB4 #x9AB5 #x9AB9 - #x9ABB #x9ABD #x9ABE #x9ABF #x9AC3 #x9AC4 #x9AC6 #x9AC7 #x9AC8 #x9AC9 - #x9ACA #x9ACD #x9ACE #x9ACF #x9AD0 #x9AD2 #x9AD4 #x9AD5 #x9AD6 #x9AD7 - #x9AD9 #x9ADA #x9ADB #x9ADC #x9ADD #x9ADE #x9AE0 #x9AE2 #x9AE3 #x9AE4 - #x9AE5 #x9AE7 #x9AE8 #x9AE9 #x9AEA #x9AEC #x9AEE #x9AF0 #x9AF1 #x9AF2 - #x9AF3 #x9AF4 #x9AF5 #x9AF6 #x9AF7 #x9AF8 #x9AFA #x9AFC #x9AFD #x9AFE - #x9AFF #x9B00 #x9B01 #x9B02 #x9B04 #x9B05 #x9B06 #x9B07 #x9B09 #x9B0A - #x9B0B #x9B0C #x9B0D #x9B0E #x9B10 #x9B11 #x9B12 #x9B14 #x9B15 #x9B16 - #x9B17 #x9B18 #x9B19 #x9B1A #x9B1B #x9B1C #x9B1D #x9B1E #x9B20 #x9B21 - #x9B22 #x9B24 #x9B25 #x9B26 #x9B27 #x9B28 #x9B29 #x9B2A #x9B2B #x9B2C - #x9B2D #x9B2E #x9B30 #x9B31 #x9B33 #x9B34 #x9B35 #x9B36 #x9B37 #x9B38 - #x9B39 #x9B3A #x9B3D #x9B3E #x9B3F #x9B40 #x9B46 #x9B4A #x9B4B #x9B4C - #x9B4E #x9B50 #x9B52 #x9B53 #x9B55 #x9B56 #x9B57 #x9B58 #x9B59 #x9B5A - #x9B5B #x9B5C #x9B5D #x9B5E #x9B5F #x9B60 #x9B61 #x9B62 #x9B63 #x9B64 - #x9B65 #x9B66 #x9B67 #x9B68 #x9B69 #x9B6A #x9B6B #x9B6C #x9B6D #x9B6E - #x9B6F #x9B70 #x9B71 #x9B72 #x9B73 #x9B74 #x9B75 #x9B76 #x9B77 #x9B78 - #x9B79 #x9B7A #x9B7B #x9B7C #x9B7D #x9B7E #x9B7F #x9B80 #x9B81 #x9B82 - #x9B83 #x9B84 #x9B85 #x9B86 #x9B87 #x9B88 #x9B89 #x9B8A #x9B8B #x9B8C - #x9B8D #x9B8E #x9B8F #x9B90 #x9B91 #x9B92 #x9B93 #x9B94 #x9B95 #x9B96 - #x9B97 #x9B98 #x9B99 #x9B9A #x9B9B #x9B9C #x9B9D #x9B9E #x9B9F #x9BA0 - #x9BA1 #x9BA2 #x9BA3 #x9BA4 #x9BA5 #x9BA6 #x9BA7 #x9BA8 #x9BA9 #x9BAA - #x9BAB #x9BAC #x9BAD #x9BAE #x9BAF #x9BB0 #x9BB1 #x9BB2 #x9BB3 #x9BB4 - #x9BB5 #x9BB6 #x9BB7 #x9BB8 #x9BB9 #x9BBA #x9BBB #x9BBC #x9BBD #x9BBE - #x9BBF #x9BC0 #x9BC1 #x9BC2 #x9BC3 #x9BC4 #x9BC5 #x9BC6 #x9BC7 #x9BC8 - #x9BC9 #x9BCA #x9BCB #x9BCC #x9BCD #x9BCE #x9BCF #x9BD0 #x9BD1 #x9BD2 - #x9BD3 #x9BD4 #x9BD5 #x9BD6 #x9BD7 #x9BD8 #x9BD9 #x9BDA #x9BDB #x9BDC - #x9BDD #x9BDE #x9BDF #x9BE0 #x9BE1 #x9BE2 #x9BE3 #x9BE4 #x9BE5 #x9BE6 - #x9BE7 #x9BE8 #x9BE9 #x9BEA #x9BEB #x9BEC #x9BED #x9BEE #x9BEF #x9BF0 - #x9BF1 #x9BF2 #x9BF3 #x9BF4 #x9BF5 #x9BF6 #x9BF7 #x9BF8 #x9BF9 #x9BFA - #x9BFB #x9BFC #x9BFD #x9BFE #x9BFF #x9C00 #x9C01 #x9C02 #x9C03 #x9C04 - #x9C05 #x9C06 #x9C07 #x9C08 #x9C09 #x9C0A #x9C0B #x9C0C #x9C0D #x9C0E - #x9C0F #x9C10 #x9C11 #x9C12 #x9C13 #x9C14 #x9C15 #x9C16 #x9C17 #x9C18 - #x9C19 #x9C1A #x9C1B #x9C1C #x9C1D #x9C1E #x9C1F #x9C20 #x9C21 #x9C22 - #x9C23 #x9C24 #x9C25 #x9C26 #x9C27 #x9C28 #x9C29 #x9C2A #x9C2B #x9C2C - #x9C2D #x9C2E #x9C2F #x9C30 #x9C31 #x9C32 #x9C33 #x9C34 #x9C35 #x9C36 - #x9C37 #x9C38 #x9C39 #x9C3A #x9C3B #x9C3C #x9C3D #x9C3E #x9C3F #x9C40 - #x9C41 #x9C42 #x9C43 #x9C44 #x9C45 #x9C46 #x9C47 #x9C48 #x9C49 #x9C4A - #x9C4B #x9C4C #x9C4D #x9C4E #x9C4F #x9C50 #x9C51 #x9C52 #x9C53 #x9C54 - #x9C55 #x9C56 #x9C57 #x9C58 #x9C59 #x9C5A #x9C5B #x9C5C #x9C5D #x9C5E - #x9C5F #x9C60 #x9C61 #x9C62 #x9C63 #x9C64 #x9C65 #x9C66 #x9C67 #x9C68 - #x9C69 #x9C6A #x9C6B #x9C6C #x9C6D #x9C6E #x9C6F #x9C70 #x9C71 #x9C72 - #x9C73 #x9C74 #x9C75 #x9C76 #x9C77 #x9C78 #x9C79 #x9C7A #x9C7B #x9C7D - #x9C7E #x9C80 #x9C83 #x9C84 #x9C89 #x9C8A #x9C8C #x9C8F #x9C93 #x9C96 - #x9C97 #x9C98 #x9C99 #x9C9D #x9CAA #x9CAC #x9CAF #x9CB9 #x9CBE #x9CBF - #x9CC0 #x9CC1 #x9CC2 #x9CC8 #x9CC9 #x9CD1 #x9CD2 #x9CDA #x9CDB #x9CE0 - #x9CE1 #x9CE3 #x9CE4 #x9CE5 #x9CE6 #x9CE7 #x9CE8 #x9CE9 #x9CEA #x9CEB - #x9CEC #x9CED #x9CEE #x9CEF #x9CF0 #x9CF1 #x9CF2 #x9CF3 #x9CF4 #x9CF5 - #x9CF6 #x9CF7 #x9CF8 #x9CF9 #x9CFA #x9CFB #x9CFC #x9CFD #x9CFE #x9CFF - #x9D00 #x9D01 #x9D02 #x9D03 #x9D04 #x9D05 #x9D06 #x9D07 #x9D08 #x9D09 - #x9D0A #x9D0B #x9D0C #x9D0D #x9D0E #x9D0F #x9D10 #x9D11 #x9D12 #x9D13 - #x9D14 #x9D15 #x9D16 #x9D17 #x9D18 #x9D19 #x9D1A #x9D1B #x9D1C #x9D1D - #x9D1E #x9D1F #x9D20 #x9D21 #x9D22 #x9D23 #x9D24 #x9D25 #x9D26 #x9D27 - #x9D28 #x9D29 #x9D2A #x9D2B #x9D2C #x9D2D #x9D2E #x9D2F #x9D30 #x9D31 - #x9D32 #x9D33 #x9D34 #x9D35 #x9D36 #x9D37 #x9D38 #x9D39 #x9D3A #x9D3B - #x9D3C #x9D3D #x9D3E #x9D3F #x9D40 #x9D41 #x9D42 #x9D43 #x9D44 #x9D45 - #x9D46 #x9D47 #x9D48 #x9D49 #x9D4A #x9D4B #x9D4C #x9D4D #x9D4E #x9D4F - #x9D50 #x9D51 #x9D52 #x9D53 #x9D54 #x9D55 #x9D56 #x9D57 #x9D58 #x9D59 - #x9D5A #x9D5B #x9D5C #x9D5D #x9D5E #x9D5F #x9D60 #x9D61 #x9D62 #x9D63 - #x9D64 #x9D65 #x9D66 #x9D67 #x9D68 #x9D69 #x9D6A #x9D6B #x9D6C #x9D6D - #x9D6E #x9D6F #x9D70 #x9D71 #x9D72 #x9D73 #x9D74 #x9D75 #x9D76 #x9D77 - #x9D78 #x9D79 #x9D7A #x9D7B #x9D7C #x9D7D #x9D7E #x9D7F #x9D80 #x9D81 - #x9D82 #x9D83 #x9D84 #x9D85 #x9D86 #x9D87 #x9D88 #x9D89 #x9D8A #x9D8B - #x9D8C #x9D8D #x9D8E #x9D8F #x9D90 #x9D91 #x9D92 #x9D93 #x9D94 #x9D95 - #x9D96 #x9D97 #x9D98 #x9D99 #x9D9A #x9D9B #x9D9C #x9D9D #x9D9E #x9D9F - #x9DA0 #x9DA1 #x9DA2 #x9DA3 #x9DA4 #x9DA5 #x9DA6 #x9DA7 #x9DA8 #x9DA9 - #x9DAA #x9DAB #x9DAC #x9DAD #x9DAE #x9DAF #x9DB0 #x9DB1 #x9DB2 #x9DB3 - #x9DB4 #x9DB5 #x9DB6 #x9DB7 #x9DB8 #x9DB9 #x9DBA #x9DBB #x9DBC #x9DBD - #x9DBE #x9DBF #x9DC0 #x9DC1 #x9DC2 #x9DC3 #x9DC4 #x9DC5 #x9DC6 #x9DC7 - #x9DC8 #x9DC9 #x9DCA #x9DCB #x9DCC #x9DCD #x9DCE #x9DCF #x9DD0 #x9DD1 - #x9DD2 #x9DD3 #x9DD4 #x9DD5 #x9DD6 #x9DD7 #x9DD8 #x9DD9 #x9DDA #x9DDB - #x9DDC #x9DDD #x9DDE #x9DDF #x9DE0 #x9DE1 #x9DE2 #x9DE3 #x9DE4 #x9DE5 - #x9DE6 #x9DE7 #x9DE8 #x9DE9 #x9DEA #x9DEB #x9DEC #x9DED #x9DEE #x9DEF - #x9DF0 #x9DF1 #x9DF2 #x9DF3 #x9DF4 #x9DF5 #x9DF6 #x9DF7 #x9DF8 #x9DF9 - #x9DFA #x9DFB #x9DFC #x9DFD #x9DFE #x9DFF #x9E00 #x9E01 #x9E02 #x9E03 - #x9E04 #x9E05 #x9E06 #x9E07 #x9E08 #x9E09 #x9E0A #x9E0B #x9E0C #x9E0D - #x9E0E #x9E0F #x9E10 #x9E11 #x9E12 #x9E13 #x9E14 #x9E15 #x9E16 #x9E17 - #x9E18 #x9E19 #x9E1A #x9E1B #x9E1C #x9E1D #x9E1E #x9E24 #x9E27 #x9E2E - #x9E30 #x9E34 #x9E3B #x9E3C #x9E40 #x9E4D #x9E50 #x9E52 #x9E53 #x9E54 - #x9E56 #x9E59 #x9E5D #x9E5F #x9E60 #x9E61 #x9E62 #x9E65 #x9E6E #x9E6F - #x9E72 #x9E74 #x9E75 #x9E76 #x9E77 #x9E78 #x9E79 #x9E7A #x9E7B #x9E7C - #x9E7D #x9E80 #x9E81 #x9E83 #x9E84 #x9E85 #x9E86 #x9E89 #x9E8A #x9E8C - #x9E8D #x9E8E #x9E8F #x9E90 #x9E91 #x9E94 #x9E95 #x9E96 #x9E97 #x9E98 - #x9E99 #x9E9A #x9E9B #x9E9C #x9E9E #x9EA0 #x9EA1 #x9EA2 #x9EA3 #x9EA4 - #x9EA5 #x9EA7 #x9EA8 #x9EA9 #x9EAA #x9EAB #x9EAC #x9EAD #x9EAE #x9EAF - #x9EB0 #x9EB1 #x9EB2 #x9EB3 #x9EB5 #x9EB6 #x9EB7 #x9EB9 #x9EBA #x9EBC - #x9EBF #x9EC0 #x9EC1 #x9EC2 #x9EC3 #x9EC5 #x9EC6 #x9EC7 #x9EC8 #x9ECA - #x9ECB #x9ECC #x9ED0 #x9ED2 #x9ED3 #x9ED5 #x9ED6 #x9ED7 #x9ED9 #x9EDA - #x9EDE #x9EE1 #x9EE3 #x9EE4 #x9EE6 #x9EE8 #x9EEB #x9EEC #x9EED #x9EEE - #x9EF0 #x9EF1 #x9EF2 #x9EF3 #x9EF4 #x9EF5 #x9EF6 #x9EF7 #x9EF8 #x9EFA - #x9EFD #x9EFF #x9F00 #x9F01 #x9F02 #x9F03 #x9F04 #x9F05 #x9F06 #x9F07 - #x9F08 #x9F09 #x9F0A #x9F0C #x9F0F #x9F11 #x9F12 #x9F14 #x9F15 #x9F16 - #x9F18 #x9F1A #x9F1B #x9F1C #x9F1D #x9F1E #x9F1F #x9F21 #x9F23 #x9F24 - #x9F25 #x9F26 #x9F27 #x9F28 #x9F29 #x9F2A #x9F2B #x9F2D #x9F2E #x9F30 - #x9F31 #x9F32 #x9F33 #x9F34 #x9F35 #x9F36 #x9F38 #x9F3A #x9F3C #x9F3F - #x9F40 #x9F41 #x9F42 #x9F43 #x9F45 #x9F46 #x9F47 #x9F48 #x9F49 #x9F4A - #x9F4B #x9F4C #x9F4D #x9F4E #x9F4F #x9F52 #x9F53 #x9F54 #x9F55 #x9F56 - #x9F57 #x9F58 #x9F59 #x9F5A #x9F5B #x9F5C #x9F5D #x9F5E #x9F5F #x9F60 - #x9F61 #x9F62 #x9F63 #x9F64 #x9F65 #x9F66 #x9F67 #x9F68 #x9F69 #x9F6A - #x9F6B #x9F6C #x9F6D #x9F6E #x9F6F #x9F70 #x9F71 #x9F72 #x9F73 #x9F74 - #x9F75 #x9F76 #x9F77 #x9F78 #x9F79 #x9F7A #x9F7B #x9F7C #x9F7D #x9F7E - #x9F81 #x9F82 #x9F8D #x9F8E #x9F8F #x9F90 #x9F91 #x9F92 #x9F93 #x9F94 - #x9F95 #x9F96 #x9F97 #x9F98 #x9F9C #x9F9D #x9F9E #x9FA1 #x9FA2 #x9FA3 - #x9FA4 #x9FA5 #x3000 #x3001 #x3002 #x00B7 #x02C9 #x02C7 #x00A8 #x3003 - #x3005 #x2014 #xFF5E #x2016 #x2026 #x2018 #x2019 #x201C #x201D #x3014 - #x3015 #x3008 #x3009 #x300A #x300B #x300C #x300D #x300E #x300F #x3016 - #x3017 #x3010 #x3011 #x00B1 #x00D7 #x00F7 #x2236 #x2227 #x2228 #x2211 - #x220F #x222A #x2229 #x2208 #x2237 #x221A #x22A5 #x2225 #x2220 #x2312 - #x2299 #x222B #x222E #x2261 #x224C #x2248 #x223D #x221D #x2260 #x226E - #x226F #x2264 #x2265 #x221E #x2235 #x2234 #x2642 #x2640 #x00B0 #x2032 - #x2033 #x2103 #xFF04 #x00A4 #xFFE0 #xFFE1 #x2030 #x00A7 #x2116 #x2606 - #x2605 #x25CB #x25CF #x25CE #x25C7 #x25C6 #x25A1 #x25A0 #x25B3 #x25B2 - #x203B #x2192 #x2190 #x2191 #x2193 #x3013 #x2170 #x2171 #x2172 #x2173 - #x2174 #x2175 #x2176 #x2177 #x2178 #x2179 #xE766 #xE767 #xE768 #xE769 - #xE76A #xE76B #x2488 #x2489 #x248A #x248B #x248C #x248D #x248E #x248F - #x2490 #x2491 #x2492 #x2493 #x2494 #x2495 #x2496 #x2497 #x2498 #x2499 - #x249A #x249B #x2474 #x2475 #x2476 #x2477 #x2478 #x2479 #x247A #x247B - #x247C #x247D #x247E #x247F #x2480 #x2481 #x2482 #x2483 #x2484 #x2485 - #x2486 #x2487 #x2460 #x2461 #x2462 #x2463 #x2464 #x2465 #x2466 #x2467 - #x2468 #x2469 #xE76C #xE76D #x3220 #x3221 #x3222 #x3223 #x3224 #x3225 - #x3226 #x3227 #x3228 #x3229 #xE76E #xE76F #x2160 #x2161 #x2162 #x2163 - #x2164 #x2165 #x2166 #x2167 #x2168 #x2169 #x216A #x216B #xE770 #xE771 - #xFF01 #xFF02 #xFF03 #xFFE5 #xFF05 #xFF06 #xFF07 #xFF08 #xFF09 #xFF0A - #xFF0B #xFF0C #xFF0D #xFF0E #xFF0F #xFF10 #xFF11 #xFF12 #xFF13 #xFF14 - #xFF15 #xFF16 #xFF17 #xFF18 #xFF19 #xFF1A #xFF1B #xFF1C #xFF1D #xFF1E - #xFF1F #xFF20 #xFF21 #xFF22 #xFF23 #xFF24 #xFF25 #xFF26 #xFF27 #xFF28 - #xFF29 #xFF2A #xFF2B #xFF2C #xFF2D #xFF2E #xFF2F #xFF30 #xFF31 #xFF32 - #xFF33 #xFF34 #xFF35 #xFF36 #xFF37 #xFF38 #xFF39 #xFF3A #xFF3B #xFF3C - #xFF3D #xFF3E #xFF3F #xFF40 #xFF41 #xFF42 #xFF43 #xFF44 #xFF45 #xFF46 - #xFF47 #xFF48 #xFF49 #xFF4A #xFF4B #xFF4C #xFF4D #xFF4E #xFF4F #xFF50 - #xFF51 #xFF52 #xFF53 #xFF54 #xFF55 #xFF56 #xFF57 #xFF58 #xFF59 #xFF5A - #xFF5B #xFF5C #xFF5D #xFFE3 #x3041 #x3042 #x3043 #x3044 #x3045 #x3046 - #x3047 #x3048 #x3049 #x304A #x304B #x304C #x304D #x304E #x304F #x3050 - #x3051 #x3052 #x3053 #x3054 #x3055 #x3056 #x3057 #x3058 #x3059 #x305A - #x305B #x305C #x305D #x305E #x305F #x3060 #x3061 #x3062 #x3063 #x3064 - #x3065 #x3066 #x3067 #x3068 #x3069 #x306A #x306B #x306C #x306D #x306E - #x306F #x3070 #x3071 #x3072 #x3073 #x3074 #x3075 #x3076 #x3077 #x3078 - #x3079 #x307A #x307B #x307C #x307D #x307E #x307F #x3080 #x3081 #x3082 - #x3083 #x3084 #x3085 #x3086 #x3087 #x3088 #x3089 #x308A #x308B #x308C - #x308D #x308E #x308F #x3090 #x3091 #x3092 #x3093 #xE772 #xE773 #xE774 - #xE775 #xE776 #xE777 #xE778 #xE779 #xE77A #xE77B #xE77C #x30A1 #x30A2 - #x30A3 #x30A4 #x30A5 #x30A6 #x30A7 #x30A8 #x30A9 #x30AA #x30AB #x30AC - #x30AD #x30AE #x30AF #x30B0 #x30B1 #x30B2 #x30B3 #x30B4 #x30B5 #x30B6 - #x30B7 #x30B8 #x30B9 #x30BA #x30BB #x30BC #x30BD #x30BE #x30BF #x30C0 - #x30C1 #x30C2 #x30C3 #x30C4 #x30C5 #x30C6 #x30C7 #x30C8 #x30C9 #x30CA - #x30CB #x30CC #x30CD #x30CE #x30CF #x30D0 #x30D1 #x30D2 #x30D3 #x30D4 - #x30D5 #x30D6 #x30D7 #x30D8 #x30D9 #x30DA #x30DB #x30DC #x30DD #x30DE - #x30DF #x30E0 #x30E1 #x30E2 #x30E3 #x30E4 #x30E5 #x30E6 #x30E7 #x30E8 - #x30E9 #x30EA #x30EB #x30EC #x30ED #x30EE #x30EF #x30F0 #x30F1 #x30F2 - #x30F3 #x30F4 #x30F5 #x30F6 #xE77D #xE77E #xE77F #xE780 #xE781 #xE782 - #xE783 #xE784 #x0391 #x0392 #x0393 #x0394 #x0395 #x0396 #x0397 #x0398 - #x0399 #x039A #x039B #x039C #x039D #x039E #x039F #x03A0 #x03A1 #x03A3 - #x03A4 #x03A5 #x03A6 #x03A7 #x03A8 #x03A9 #xE785 #xE786 #xE787 #xE788 - #xE789 #xE78A #xE78B #xE78C #x03B1 #x03B2 #x03B3 #x03B4 #x03B5 #x03B6 - #x03B7 #x03B8 #x03B9 #x03BA #x03BB #x03BC #x03BD #x03BE #x03BF #x03C0 - #x03C1 #x03C3 #x03C4 #x03C5 #x03C6 #x03C7 #x03C8 #x03C9 #xE78D #xE78E - #xE78F #xE790 #xE791 #xE792 #xE793 #xFE35 #xFE36 #xFE39 #xFE3A #xFE3F - #xFE40 #xFE3D #xFE3E #xFE41 #xFE42 #xFE43 #xFE44 #xE794 #xE795 #xFE3B - #xFE3C #xFE37 #xFE38 #xFE31 #xE796 #xFE33 #xFE34 #xE797 #xE798 #xE799 - #xE79A #xE79B #xE79C #xE79D #xE79E #xE79F #x0410 #x0411 #x0412 #x0413 - #x0414 #x0415 #x0401 #x0416 #x0417 #x0418 #x0419 #x041A #x041B #x041C - #x041D #x041E #x041F #x0420 #x0421 #x0422 #x0423 #x0424 #x0425 #x0426 - #x0427 #x0428 #x0429 #x042A #x042B #x042C #x042D #x042E #x042F #xE7A0 - #xE7A1 #xE7A2 #xE7A3 #xE7A4 #xE7A5 #xE7A6 #xE7A7 #xE7A8 #xE7A9 #xE7AA - #xE7AB #xE7AC #xE7AD #xE7AE #x0430 #x0431 #x0432 #x0433 #x0434 #x0435 - #x0451 #x0436 #x0437 #x0438 #x0439 #x043A #x043B #x043C #x043D #x043E - #x043F #x0440 #x0441 #x0442 #x0443 #x0444 #x0445 #x0446 #x0447 #x0448 - #x0449 #x044A #x044B #x044C #x044D #x044E #x044F #xE7AF #xE7B0 #xE7B1 - #xE7B2 #xE7B3 #xE7B4 #xE7B5 #xE7B6 #xE7B7 #xE7B8 #xE7B9 #xE7BA #xE7BB - #x0101 #x00E1 #x01CE #x00E0 #x0113 #x00E9 #x011B #x00E8 #x012B #x00ED - #x01D0 #x00EC #x014D #x00F3 #x01D2 #x00F2 #x016B #x00FA #x01D4 #x00F9 - #x01D6 #x01D8 #x01DA #x01DC #x00FC #x00EA #x0251 #xE7C7 #x0144 #x0148 - #xE7C8 #x0261 #xE7C9 #xE7CA #xE7CB #xE7CC #x3105 #x3106 #x3107 #x3108 - #x3109 #x310A #x310B #x310C #x310D #x310E #x310F #x3110 #x3111 #x3112 - #x3113 #x3114 #x3115 #x3116 #x3117 #x3118 #x3119 #x311A #x311B #x311C - #x311D #x311E #x311F #x3120 #x3121 #x3122 #x3123 #x3124 #x3125 #x3126 - #x3127 #x3128 #x3129 #xE7CD #xE7CE #xE7CF #xE7D0 #xE7D1 #xE7D2 #xE7D3 - #xE7D4 #xE7D5 #xE7D6 #xE7D7 #xE7D8 #xE7D9 #xE7DA #xE7DB #xE7DC #xE7DD - #xE7DE #xE7DF #xE7E0 #xE7E1 #xE7FE #xE7FF #xE800 #x2500 #x2501 #x2502 - #x2503 #x2504 #x2505 #x2506 #x2507 #x2508 #x2509 #x250A #x250B #x250C - #x250D #x250E #x250F #x2510 #x2511 #x2512 #x2513 #x2514 #x2515 #x2516 - #x2517 #x2518 #x2519 #x251A #x251B #x251C #x251D #x251E #x251F #x2520 - #x2521 #x2522 #x2523 #x2524 #x2525 #x2526 #x2527 #x2528 #x2529 #x252A - #x252B #x252C #x252D #x252E #x252F #x2530 #x2531 #x2532 #x2533 #x2534 - #x2535 #x2536 #x2537 #x2538 #x2539 #x253A #x253B #x253C #x253D #x253E - #x253F #x2540 #x2541 #x2542 #x2543 #x2544 #x2545 #x2546 #x2547 #x2548 - #x2549 #x254A #x254B #xE801 #xE802 #xE803 #xE804 #xE805 #xE806 #xE807 - #xE808 #xE809 #xE80A #xE80B #xE80C #xE80D #xE80E #xE80F #x02CA #x02CB - #x02D9 #x2013 #x2015 #x2025 #x2035 #x2105 #x2109 #x2196 #x2197 #x2198 - #x2199 #x2215 #x221F #x2223 #x2252 #x2266 #x2267 #x22BF #x2550 #x2551 - #x2552 #x2553 #x2554 #x2555 #x2556 #x2557 #x2558 #x2559 #x255A #x255B - #x255C #x255D #x255E #x255F #x2560 #x2561 #x2562 #x2563 #x2564 #x2565 - #x2566 #x2567 #x2568 #x2569 #x256A #x256B #x256C #x256D #x256E #x256F - #x2570 #x2571 #x2572 #x2573 #x2581 #x2582 #x2583 #x2584 #x2585 #x2586 - #x2587 #x2588 #x2589 #x258A #x258B #x258C #x258D #x258E #x258F #x2593 - #x2594 #x2595 #x25BC #x25BD #x25E2 #x25E3 #x25E4 #x25E5 #x2609 #x2295 - #x3012 #x301D #x301E #xE7BC #xE7BD #xE7BE #xE7BF #xE7C0 #xE7C1 #xE7C2 - #xE7C3 #xE7C4 #xE7C5 #xE7C6 #x3021 #x3022 #x3023 #x3024 #x3025 #x3026 - #x3027 #x3028 #x3029 #x32A3 #x338E #x338F #x339C #x339D #x339E #x33A1 - #x33C4 #x33CE #x33D1 #x33D2 #x33D5 #xFE30 #xFFE2 #xFFE4 #xE7E2 #x2121 - #x3231 #xE7E3 #x2010 #xE7E4 #xE7E5 #xE7E6 #x30FC #x309B #x309C #x30FD - #x30FE #x3006 #x309D #x309E #xFE49 #xFE4A #xFE4B #xFE4C #xFE4D #xFE4E - #xFE4F #xFE50 #xFE51 #xFE52 #xFE54 #xFE55 #xFE56 #xFE57 #xFE59 #xFE5A - #xFE5B #xFE5C #xFE5D #xFE5E #xFE5F #xFE60 #xFE61 #xFE62 #xFE63 #xFE64 - #xFE65 #xFE66 #xFE68 #xFE69 #xFE6A #xFE6B #xE7E7 #xE7E8 #xE7E9 #xE7EA - #xE7EB #xE7EC #xE7ED #xE7EE #xE7EF #xE7F0 #xE7F1 #xE7F2 #xE7F3 #x3007 - #xE7F4 #xE7F5 #xE7F6 #xE7F7 #xE7F8 #xE7F9 #xE7FA #xE7FB #xE7FC #xE7FD - #x0020))) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/jpn-table.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/jpn-table.lisp deleted file mode 100644 index f0cf849..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/jpn-table.lisp +++ /dev/null @@ -1,17637 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; jpn-table.lisp --- Unicode tables for Japanese encodings. -;;; - -(in-package #:babel-encodings) - -(defvar *cp932-only* - '((#xFC4B #x9ED1) - (#xFC4A #x9E19) - (#xFC49 #xFA2D) - (#xFC48 #x9D6B) - (#xFC47 #x9D70) - (#xFC46 #x9C00) - (#xFC45 #x9BBB) - (#xFC44 #x9BB1) - (#xFC43 #x9B8F) - (#xFC42 #x9B72) - (#xFC41 #x9B75) - (#xFC40 #x9ADC) - (#xFBFC #x9AD9) - (#xFBFB #x9A4E) - (#xFBFA #x999E) - (#xFBF9 #xFA2C) - (#xFBF8 #x9927) - (#xFBF7 #xFA2B) - (#xFBF6 #xFA2A) - (#xFBF5 #x9865) - (#xFBF4 #x9857) - (#xFBF3 #x9755) - (#xFBF2 #x9751) - (#xFBF1 #x974F) - (#xFBF0 #x974D) - (#xFBEF #x9743) - (#xFBEE #x973B) - (#xFBED #x9733) - (#xFBEC #x96AF) - (#xFBEB #x969D) - (#xFBEA #xFA29) - (#xFBE9 #xF9DC) - (#xFBE8 #x9592) - (#xFBE7 #x9448) - (#xFBE6 #x9445) - (#xFBE5 #x9431) - (#xFBE4 #x93F8) - (#xFBE3 #x93DE) - (#xFBE2 #x93C6) - (#xFBE1 #x93A4) - (#xFBE0 #x9357) - (#xFBDF #x9370) - (#xFBDE #x9302) - (#xFBDD #x931D) - (#xFBDC #x92FF) - (#xFBDB #x931E) - (#xFBDA #xFA28) - (#xFBD9 #x92FB) - (#xFBD8 #x9321) - (#xFBD7 #x9325) - (#xFBD6 #x92D3) - (#xFBD5 #x92E0) - (#xFBD4 #x92D5) - (#xFBD3 #xFA27) - (#xFBD2 #x92D0) - (#xFBD1 #x92D9) - (#xFBD0 #x92D7) - (#xFBCF #x92E7) - (#xFBCE #x9278) - (#xFBCD #x9277) - (#xFBCC #x92A7) - (#xFBCB #x9267) - (#xFBCA #x9239) - (#xFBC9 #x9251) - (#xFBC8 #x9259) - (#xFBC7 #x924E) - (#xFBC6 #x923C) - (#xFBC5 #x9240) - (#xFBC4 #x923A) - (#xFBC3 #x920A) - (#xFBC2 #x9210) - (#xFBC1 #x9206) - (#xFBC0 #x91E5) - (#xFBBF #x91E4) - (#xFBBE #x91EE) - (#xFBBD #x91ED) - (#xFBBC #x91DE) - (#xFBBB #x91D7) - (#xFBBA #x91DA) - (#xFBB9 #x9127) - (#xFBB8 #x9115) - (#xFBB7 #xFA26) - (#xFBB6 #x90DE) - (#xFBB5 #x9067) - (#xFBB4 #xFA25) - (#xFBB3 #xFA24) - (#xFBB2 #x8ECF) - (#xFBB1 #xFA23) - (#xFBB0 #x8D76) - (#xFBAF #x8D12) - (#xFBAE #x8CF4) - (#xFBAD #x8CF0) - (#xFBAC #x8B7F) - (#xFBAB #x8B53) - (#xFBAA #x8AF6) - (#xFBA9 #xFA22) - (#xFBA8 #x8ADF) - (#xFBA7 #x8ABE) - (#xFBA6 #x8AA7) - (#xFBA5 #x8A79) - (#xFBA4 #x8A37) - (#xFBA3 #x8A12) - (#xFBA2 #x88F5) - (#xFBA1 #x8807) - (#xFBA0 #xFA21) - (#xFB9F #xFA20) - (#xFB9E #x85B0) - (#xFB9D #xFA1F) - (#xFB9C #x856B) - (#xFB9B #x8559) - (#xFB9A #x8553) - (#xFB99 #x84B4) - (#xFB98 #x8448) - (#xFB97 #x83F6) - (#xFB96 #x83C7) - (#xFB95 #x837F) - (#xFB94 #x8362) - (#xFB93 #x8301) - (#xFB92 #xFA1E) - (#xFB91 #x7FA1) - (#xFB90 #x7F47) - (#xFB8F #x7E52) - (#xFB8E #x7DD6) - (#xFB8D #x7DA0) - (#xFB8C #x7DB7) - (#xFB8B #x7D5C) - (#xFB8A #x7D48) - (#xFB89 #xFA1D) - (#xFB88 #x7B9E) - (#xFB87 #x7AEB) - (#xFB86 #xFA1C) - (#xFB85 #x7AE7) - (#xFB84 #x7AD1) - (#xFB83 #x799B) - (#xFB82 #xFA1B) - (#xFB81 #x7994) - (#xFB80 #xFA1A) - (#xFB7E #xFA19) - (#xFB7D #xFA18) - (#xFB7C #x7930) - (#xFB7B #x787A) - (#xFB7A #x7864) - (#xFB79 #x784E) - (#xFB78 #x7821) - (#xFB77 #x52AF) - (#xFB76 #x7746) - (#xFB75 #xFA17) - (#xFB74 #x76A6) - (#xFB73 #x769B) - (#xFB72 #x769E) - (#xFB71 #x769C) - (#xFB70 #x7682) - (#xFB6F #x756F) - (#xFB6E #x7501) - (#xFB6D #x749F) - (#xFB6C #x7489) - (#xFB6B #x7462) - (#xFB6A #x742E) - (#xFB69 #x7429) - (#xFB68 #x742A) - (#xFB67 #x7426) - (#xFB66 #x73F5) - (#xFB65 #x7407) - (#xFB64 #x73D2) - (#xFB63 #x73E3) - (#xFB62 #x73D6) - (#xFB61 #x73C9) - (#xFB60 #x73BD) - (#xFB5F #x7377) - (#xFB5E #xFA16) - (#xFB5D #x7324) - (#xFB5C #x72BE) - (#xFB5B #x72B1) - (#xFB5A #x71FE) - (#xFB59 #x71C1) - (#xFB58 #xFA15) - (#xFB57 #x7147) - (#xFB56 #x7146) - (#xFB55 #x715C) - (#xFB54 #x7104) - (#xFB53 #x710F) - (#xFB52 #x70AB) - (#xFB51 #x7085) - (#xFB50 #x7028) - (#xFB4F #x7007) - (#xFB4E #x7005) - (#xFB4D #x6FF5) - (#xFB4C #x6FB5) - (#xFB4B #x6F88) - (#xFB4A #x6EBF) - (#xFB49 #x6E3C) - (#xFB48 #x6E27) - (#xFB47 #x6E5C) - (#xFB46 #x6E39) - (#xFB45 #x6DFC) - (#xFB44 #x6DF2) - (#xFB43 #x6DF8) - (#xFB42 #x6DCF) - (#xFB41 #x6DAC) - (#xFB40 #x6D96) - (#xFAFC #x6D6F) - (#xFAFB #x6D87) - (#xFAFA #x6D04) - (#xFAF9 #x6CDA) - (#xFAF8 #x6C6F) - (#xFAF7 #x6C86) - (#xFAF6 #x6C5C) - (#xFAF5 #x6C3F) - (#xFAF4 #x6BD6) - (#xFAF3 #x6AE4) - (#xFAF2 #x6AE2) - (#xFAF1 #x6A7E) - (#xFAF0 #x6A73) - (#xFAEF #x6A46) - (#xFAEE #x6A6B) - (#xFAED #x6A30) - (#xFAEC #x69E2) - (#xFAEB #x6998) - (#xFAEA #xFA14) - (#xFAE9 #x6968) - (#xFAE8 #xFA13) - (#xFAE7 #x68CF) - (#xFAE6 #x6844) - (#xFAE5 #x6801) - (#xFAE4 #x67C0) - (#xFAE3 #x6852) - (#xFAE2 #x67BB) - (#xFAE1 #x6766) - (#xFAE0 #xF929) - (#xFADF #x670E) - (#xFADE #x66FA) - (#xFADD #x66BF) - (#xFADC #x66B2) - (#xFADB #x66A0) - (#xFADA #x6699) - (#xFAD9 #x6673) - (#xFAD8 #xFA12) - (#xFAD7 #x6659) - (#xFAD6 #x6657) - (#xFAD5 #x6665) - (#xFAD4 #x6624) - (#xFAD3 #x661E) - (#xFAD2 #x662E) - (#xFAD1 #x6609) - (#xFAD0 #x663B) - (#xFACF #x6615) - (#xFACE #x6600) - (#xFACD #x654E) - (#xFACC #x64CE) - (#xFACB #x649D) - (#xFACA #x6460) - (#xFAC9 #x63F5) - (#xFAC8 #x62A6) - (#xFAC7 #x6213) - (#xFAC6 #x6198) - (#xFAC5 #x6130) - (#xFAC4 #x6137) - (#xFAC3 #x6111) - (#xFAC2 #x60F2) - (#xFAC1 #x6120) - (#xFAC0 #x60D5) - (#xFABF #x60DE) - (#xFABE #x608A) - (#xFABD #x6085) - (#xFABC #x605D) - (#xFABB #x5FDE) - (#xFABA #x5FB7) - (#xFAB9 #x5F67) - (#xFAB8 #x5F34) - (#xFAB7 #x5F21) - (#xFAB6 #x5DD0) - (#xFAB5 #x5DB9) - (#xFAB4 #x5DB8) - (#xFAB3 #x5D6D) - (#xFAB2 #x5D42) - (#xFAB1 #xFA11) - (#xFAB0 #x5D53) - (#xFAAF #x5D27) - (#xFAAE #x5CF5) - (#xFAAD #x5CBA) - (#xFAAC #x5CA6) - (#xFAAB #x5C1E) - (#xFAAA #x5BEC) - (#xFAA9 #x5BD8) - (#xFAA8 #x752F) - (#xFAA7 #x5BC0) - (#xFAA6 #x5B56) - (#xFAA5 #x59BA) - (#xFAA4 #x59A4) - (#xFAA3 #x5963) - (#xFAA2 #x595D) - (#xFAA1 #x595B) - (#xFAA0 #x5953) - (#xFA9F #x590B) - (#xFA9E #x58B2) - (#xFA9D #x589E) - (#xFA9C #xFA10) - (#xFA9B #xFA0F) - (#xFA9A #x57C7) - (#xFA99 #x57C8) - (#xFA98 #x57AC) - (#xFA97 #x5765) - (#xFA96 #x5759) - (#xFA95 #x5586) - (#xFA94 #x54FF) - (#xFA93 #x54A9) - (#xFA92 #x548A) - (#xFA91 #x549C) - (#xFA90 #xFA0E) - (#xFA8F #x53DD) - (#xFA8E #x53B2) - (#xFA8D #x5393) - (#xFA8C #x5372) - (#xFA8B #x5324) - (#xFA8A #x5307) - (#xFA89 #x5300) - (#xFA88 #x52DB) - (#xFA87 #x52C0) - (#xFA86 #x52A6) - (#xFA85 #x529C) - (#xFA84 #x5215) - (#xFA83 #x51EC) - (#xFA82 #x51BE) - (#xFA81 #x519D) - (#xFA80 #x5164) - (#xFA7E #x514A) - (#xFA7D #x50D8) - (#xFA7C #x50F4) - (#xFA7B #x5094) - (#xFA7A #x5042) - (#xFA79 #x5070) - (#xFA78 #x5046) - (#xFA77 #x501E) - (#xFA76 #x4FFF) - (#xFA75 #x5022) - (#xFA74 #x5040) - (#xFA73 #x4FCD) - (#xFA72 #x4F94) - (#xFA71 #x4F9A) - (#xFA70 #x4F8A) - (#xFA6F #x4F92) - (#xFA6E #x4F56) - (#xFA6D #x4F39) - (#xFA6C #x4F03) - (#xFA6B #x4F00) - (#xFA6A #x4EFC) - (#xFA69 #x4EE1) - (#xFA68 #x4E28) - (#xFA67 #x5F45) - (#xFA66 #x66FB) - (#xFA65 #x92F9) - (#xFA64 #x68C8) - (#xFA63 #x6631) - (#xFA62 #x70BB) - (#xFA61 #x4FC9) - (#xFA60 #x84DC) - (#xFA5F #x9288) - (#xFA5E #x9348) - (#xFA5D #x891C) - (#xFA5C #x7E8A) - (#xFA5B #x2235) - (#xFA5A #x2121) - (#xFA59 #x2116) - (#xFA58 #x3231) - (#xFA57 #xFF02) - (#xFA56 #xFF07) - (#xFA55 #xFFE4) - (#xFA54 #xFFE2) - (#xFA53 #x2169) - (#xFA52 #x2168) - (#xFA51 #x2167) - (#xFA50 #x2166) - (#xFA4F #x2165) - (#xFA4E #x2164) - (#xFA4D #x2163) - (#xFA4C #x2162) - (#xFA4B #x2161) - (#xFA4A #x2160) - (#xFA49 #x2179) - (#xFA48 #x2178) - (#xFA47 #x2177) - (#xFA46 #x2176) - (#xFA45 #x2175) - (#xFA44 #x2174) - (#xFA43 #x2173) - (#xFA42 #x2172) - (#xFA41 #x2171) - (#xFA40 #x2170) - (#xF9FC #xE757) - (#xF9FB #xE756) - (#xF9FA #xE755) - (#xF9F9 #xE754) - (#xF9F8 #xE753) - (#xF9F7 #xE752) - (#xF9F6 #xE751) - (#xF9F5 #xE750) - (#xF9F4 #xE74F) - (#xF9F3 #xE74E) - (#xF9F2 #xE74D) - (#xF9F1 #xE74C) - (#xF9F0 #xE74B) - (#xF9EF #xE74A) - (#xF9EE #xE749) - (#xF9ED #xE748) - (#xF9EC #xE747) - (#xF9EB #xE746) - (#xF9EA #xE745) - (#xF9E9 #xE744) - (#xF9E8 #xE743) - (#xF9E7 #xE742) - (#xF9E6 #xE741) - (#xF9E5 #xE740) - (#xF9E4 #xE73F) - (#xF9E3 #xE73E) - (#xF9E2 #xE73D) - (#xF9E1 #xE73C) - (#xF9E0 #xE73B) - (#xF9DF #xE73A) - (#xF9DE #xE739) - (#xF9DD #xE738) - (#xF9DC #xE737) - (#xF9DB #xE736) - (#xF9DA #xE735) - (#xF9D9 #xE734) - (#xF9D8 #xE733) - (#xF9D7 #xE732) - (#xF9D6 #xE731) - (#xF9D5 #xE730) - (#xF9D4 #xE72F) - (#xF9D3 #xE72E) - (#xF9D2 #xE72D) - (#xF9D1 #xE72C) - (#xF9D0 #xE72B) - (#xF9CF #xE72A) - (#xF9CE #xE729) - (#xF9CD #xE728) - (#xF9CC #xE727) - (#xF9CB #xE726) - (#xF9CA #xE725) - (#xF9C9 #xE724) - (#xF9C8 #xE723) - (#xF9C7 #xE722) - (#xF9C6 #xE721) - (#xF9C5 #xE720) - (#xF9C4 #xE71F) - (#xF9C3 #xE71E) - (#xF9C2 #xE71D) - (#xF9C1 #xE71C) - (#xF9C0 #xE71B) - (#xF9BF #xE71A) - (#xF9BE #xE719) - (#xF9BD #xE718) - (#xF9BC #xE717) - (#xF9BB #xE716) - (#xF9BA #xE715) - (#xF9B9 #xE714) - (#xF9B8 #xE713) - (#xF9B7 #xE712) - (#xF9B6 #xE711) - (#xF9B5 #xE710) - (#xF9B4 #xE70F) - (#xF9B3 #xE70E) - (#xF9B2 #xE70D) - (#xF9B1 #xE70C) - (#xF9B0 #xE70B) - (#xF9AF #xE70A) - (#xF9AE #xE709) - (#xF9AD #xE708) - (#xF9AC #xE707) - (#xF9AB #xE706) - (#xF9AA #xE705) - (#xF9A9 #xE704) - (#xF9A8 #xE703) - (#xF9A7 #xE702) - (#xF9A6 #xE701) - (#xF9A5 #xE700) - (#xF9A4 #xE6FF) - (#xF9A3 #xE6FE) - (#xF9A2 #xE6FD) - (#xF9A1 #xE6FC) - (#xF9A0 #xE6FB) - (#xF99F #xE6FA) - (#xF99E #xE6F9) - (#xF99D #xE6F8) - (#xF99C #xE6F7) - (#xF99B #xE6F6) - (#xF99A #xE6F5) - (#xF999 #xE6F4) - (#xF998 #xE6F3) - (#xF997 #xE6F2) - (#xF996 #xE6F1) - (#xF995 #xE6F0) - (#xF994 #xE6EF) - (#xF993 #xE6EE) - (#xF992 #xE6ED) - (#xF991 #xE6EC) - (#xF990 #xE6EB) - (#xF98F #xE6EA) - (#xF98E #xE6E9) - (#xF98D #xE6E8) - (#xF98C #xE6E7) - (#xF98B #xE6E6) - (#xF98A #xE6E5) - (#xF989 #xE6E4) - (#xF988 #xE6E3) - (#xF987 #xE6E2) - (#xF986 #xE6E1) - (#xF985 #xE6E0) - (#xF984 #xE6DF) - (#xF983 #xE6DE) - (#xF982 #xE6DD) - (#xF981 #xE6DC) - (#xF980 #xE6DB) - (#xF97E #xE6DA) - (#xF97D #xE6D9) - (#xF97C #xE6D8) - (#xF97B #xE6D7) - (#xF97A #xE6D6) - (#xF979 #xE6D5) - (#xF978 #xE6D4) - (#xF977 #xE6D3) - (#xF976 #xE6D2) - (#xF975 #xE6D1) - (#xF974 #xE6D0) - (#xF973 #xE6CF) - (#xF972 #xE6CE) - (#xF971 #xE6CD) - (#xF970 #xE6CC) - (#xF96F #xE6CB) - (#xF96E #xE6CA) - (#xF96D #xE6C9) - (#xF96C #xE6C8) - (#xF96B #xE6C7) - (#xF96A #xE6C6) - (#xF969 #xE6C5) - (#xF968 #xE6C4) - (#xF967 #xE6C3) - (#xF966 #xE6C2) - (#xF965 #xE6C1) - (#xF964 #xE6C0) - (#xF963 #xE6BF) - (#xF962 #xE6BE) - (#xF961 #xE6BD) - (#xF960 #xE6BC) - (#xF95F #xE6BB) - (#xF95E #xE6BA) - (#xF95D #xE6B9) - (#xF95C #xE6B8) - (#xF95B #xE6B7) - (#xF95A #xE6B6) - (#xF959 #xE6B5) - (#xF958 #xE6B4) - (#xF957 #xE6B3) - (#xF956 #xE6B2) - (#xF955 #xE6B1) - (#xF954 #xE6B0) - (#xF953 #xE6AF) - (#xF952 #xE6AE) - (#xF951 #xE6AD) - (#xF950 #xE6AC) - (#xF94F #xE6AB) - (#xF94E #xE6AA) - (#xF94D #xE6A9) - (#xF94C #xE6A8) - (#xF94B #xE6A7) - (#xF94A #xE6A6) - (#xF949 #xE6A5) - (#xF948 #xE6A4) - (#xF947 #xE6A3) - (#xF946 #xE6A2) - (#xF945 #xE6A1) - (#xF944 #xE6A0) - (#xF943 #xE69F) - (#xF942 #xE69E) - (#xF941 #xE69D) - (#xF940 #xE69C) - (#xF8FC #xE69B) - (#xF8FB #xE69A) - (#xF8FA #xE699) - (#xF8F9 #xE698) - (#xF8F8 #xE697) - (#xF8F7 #xE696) - (#xF8F6 #xE695) - (#xF8F5 #xE694) - (#xF8F4 #xE693) - (#xF8F3 #xE692) - (#xF8F2 #xE691) - (#xF8F1 #xE690) - (#xF8F0 #xE68F) - (#xF8EF #xE68E) - (#xF8EE #xE68D) - (#xF8ED #xE68C) - (#xF8EC #xE68B) - (#xF8EB #xE68A) - (#xF8EA #xE689) - (#xF8E9 #xE688) - (#xF8E8 #xE687) - (#xF8E7 #xE686) - (#xF8E6 #xE685) - (#xF8E5 #xE684) - (#xF8E4 #xE683) - (#xF8E3 #xE682) - (#xF8E2 #xE681) - (#xF8E1 #xE680) - (#xF8E0 #xE67F) - (#xF8DF #xE67E) - (#xF8DE #xE67D) - (#xF8DD #xE67C) - (#xF8DC #xE67B) - (#xF8DB #xE67A) - (#xF8DA #xE679) - (#xF8D9 #xE678) - (#xF8D8 #xE677) - (#xF8D7 #xE676) - (#xF8D6 #xE675) - (#xF8D5 #xE674) - (#xF8D4 #xE673) - (#xF8D3 #xE672) - (#xF8D2 #xE671) - (#xF8D1 #xE670) - (#xF8D0 #xE66F) - (#xF8CF #xE66E) - (#xF8CE #xE66D) - (#xF8CD #xE66C) - (#xF8CC #xE66B) - (#xF8CB #xE66A) - (#xF8CA #xE669) - (#xF8C9 #xE668) - (#xF8C8 #xE667) - (#xF8C7 #xE666) - (#xF8C6 #xE665) - (#xF8C5 #xE664) - (#xF8C4 #xE663) - (#xF8C3 #xE662) - (#xF8C2 #xE661) - (#xF8C1 #xE660) - (#xF8C0 #xE65F) - (#xF8BF #xE65E) - (#xF8BE #xE65D) - (#xF8BD #xE65C) - (#xF8BC #xE65B) - (#xF8BB #xE65A) - (#xF8BA #xE659) - (#xF8B9 #xE658) - (#xF8B8 #xE657) - (#xF8B7 #xE656) - (#xF8B6 #xE655) - (#xF8B5 #xE654) - (#xF8B4 #xE653) - (#xF8B3 #xE652) - (#xF8B2 #xE651) - (#xF8B1 #xE650) - (#xF8B0 #xE64F) - (#xF8AF #xE64E) - (#xF8AE #xE64D) - (#xF8AD #xE64C) - (#xF8AC #xE64B) - (#xF8AB #xE64A) - (#xF8AA #xE649) - (#xF8A9 #xE648) - (#xF8A8 #xE647) - (#xF8A7 #xE646) - (#xF8A6 #xE645) - (#xF8A5 #xE644) - (#xF8A4 #xE643) - (#xF8A3 #xE642) - (#xF8A2 #xE641) - (#xF8A1 #xE640) - (#xF8A0 #xE63F) - (#xF89F #xE63E) - (#xF89E #xE63D) - (#xF89D #xE63C) - (#xF89C #xE63B) - (#xF89B #xE63A) - (#xF89A #xE639) - (#xF899 #xE638) - (#xF898 #xE637) - (#xF897 #xE636) - (#xF896 #xE635) - (#xF895 #xE634) - (#xF894 #xE633) - (#xF893 #xE632) - (#xF892 #xE631) - (#xF891 #xE630) - (#xF890 #xE62F) - (#xF88F #xE62E) - (#xF88E #xE62D) - (#xF88D #xE62C) - (#xF88C #xE62B) - (#xF88B #xE62A) - (#xF88A #xE629) - (#xF889 #xE628) - (#xF888 #xE627) - (#xF887 #xE626) - (#xF886 #xE625) - (#xF885 #xE624) - (#xF884 #xE623) - (#xF883 #xE622) - (#xF882 #xE621) - (#xF881 #xE620) - (#xF880 #xE61F) - (#xF87E #xE61E) - (#xF87D #xE61D) - (#xF87C #xE61C) - (#xF87B #xE61B) - (#xF87A #xE61A) - (#xF879 #xE619) - (#xF878 #xE618) - (#xF877 #xE617) - (#xF876 #xE616) - (#xF875 #xE615) - (#xF874 #xE614) - (#xF873 #xE613) - (#xF872 #xE612) - (#xF871 #xE611) - (#xF870 #xE610) - (#xF86F #xE60F) - (#xF86E #xE60E) - (#xF86D #xE60D) - (#xF86C #xE60C) - (#xF86B #xE60B) - (#xF86A #xE60A) - (#xF869 #xE609) - (#xF868 #xE608) - (#xF867 #xE607) - (#xF866 #xE606) - (#xF865 #xE605) - (#xF864 #xE604) - (#xF863 #xE603) - (#xF862 #xE602) - (#xF861 #xE601) - (#xF860 #xE600) - (#xF85F #xE5FF) - (#xF85E #xE5FE) - (#xF85D #xE5FD) - (#xF85C #xE5FC) - (#xF85B #xE5FB) - (#xF85A #xE5FA) - (#xF859 #xE5F9) - (#xF858 #xE5F8) - (#xF857 #xE5F7) - (#xF856 #xE5F6) - (#xF855 #xE5F5) - (#xF854 #xE5F4) - (#xF853 #xE5F3) - (#xF852 #xE5F2) - (#xF851 #xE5F1) - (#xF850 #xE5F0) - (#xF84F #xE5EF) - (#xF84E #xE5EE) - (#xF84D #xE5ED) - (#xF84C #xE5EC) - (#xF84B #xE5EB) - (#xF84A #xE5EA) - (#xF849 #xE5E9) - (#xF848 #xE5E8) - (#xF847 #xE5E7) - (#xF846 #xE5E6) - (#xF845 #xE5E5) - (#xF844 #xE5E4) - (#xF843 #xE5E3) - (#xF842 #xE5E2) - (#xF841 #xE5E1) - (#xF840 #xE5E0) - (#xF7FC #xE5DF) - (#xF7FB #xE5DE) - (#xF7FA #xE5DD) - (#xF7F9 #xE5DC) - (#xF7F8 #xE5DB) - (#xF7F7 #xE5DA) - (#xF7F6 #xE5D9) - (#xF7F5 #xE5D8) - (#xF7F4 #xE5D7) - (#xF7F3 #xE5D6) - (#xF7F2 #xE5D5) - (#xF7F1 #xE5D4) - (#xF7F0 #xE5D3) - (#xF7EF #xE5D2) - (#xF7EE #xE5D1) - (#xF7ED #xE5D0) - (#xF7EC #xE5CF) - (#xF7EB #xE5CE) - (#xF7EA #xE5CD) - (#xF7E9 #xE5CC) - (#xF7E8 #xE5CB) - (#xF7E7 #xE5CA) - (#xF7E6 #xE5C9) - (#xF7E5 #xE5C8) - (#xF7E4 #xE5C7) - (#xF7E3 #xE5C6) - (#xF7E2 #xE5C5) - (#xF7E1 #xE5C4) - (#xF7E0 #xE5C3) - (#xF7DF #xE5C2) - (#xF7DE #xE5C1) - (#xF7DD #xE5C0) - (#xF7DC #xE5BF) - (#xF7DB #xE5BE) - (#xF7DA #xE5BD) - (#xF7D9 #xE5BC) - (#xF7D8 #xE5BB) - (#xF7D7 #xE5BA) - (#xF7D6 #xE5B9) - (#xF7D5 #xE5B8) - (#xF7D4 #xE5B7) - (#xF7D3 #xE5B6) - (#xF7D2 #xE5B5) - (#xF7D1 #xE5B4) - (#xF7D0 #xE5B3) - (#xF7CF #xE5B2) - (#xF7CE #xE5B1) - (#xF7CD #xE5B0) - (#xF7CC #xE5AF) - (#xF7CB #xE5AE) - (#xF7CA #xE5AD) - (#xF7C9 #xE5AC) - (#xF7C8 #xE5AB) - (#xF7C7 #xE5AA) - (#xF7C6 #xE5A9) - (#xF7C5 #xE5A8) - (#xF7C4 #xE5A7) - (#xF7C3 #xE5A6) - (#xF7C2 #xE5A5) - (#xF7C1 #xE5A4) - (#xF7C0 #xE5A3) - (#xF7BF #xE5A2) - (#xF7BE #xE5A1) - (#xF7BD #xE5A0) - (#xF7BC #xE59F) - (#xF7BB #xE59E) - (#xF7BA #xE59D) - (#xF7B9 #xE59C) - (#xF7B8 #xE59B) - (#xF7B7 #xE59A) - (#xF7B6 #xE599) - (#xF7B5 #xE598) - (#xF7B4 #xE597) - (#xF7B3 #xE596) - (#xF7B2 #xE595) - (#xF7B1 #xE594) - (#xF7B0 #xE593) - (#xF7AF #xE592) - (#xF7AE #xE591) - (#xF7AD #xE590) - (#xF7AC #xE58F) - (#xF7AB #xE58E) - (#xF7AA #xE58D) - (#xF7A9 #xE58C) - (#xF7A8 #xE58B) - (#xF7A7 #xE58A) - (#xF7A6 #xE589) - (#xF7A5 #xE588) - (#xF7A4 #xE587) - (#xF7A3 #xE586) - (#xF7A2 #xE585) - (#xF7A1 #xE584) - (#xF7A0 #xE583) - (#xF79F #xE582) - (#xF79E #xE581) - (#xF79D #xE580) - (#xF79C #xE57F) - (#xF79B #xE57E) - (#xF79A #xE57D) - (#xF799 #xE57C) - (#xF798 #xE57B) - (#xF797 #xE57A) - (#xF796 #xE579) - (#xF795 #xE578) - (#xF794 #xE577) - (#xF793 #xE576) - (#xF792 #xE575) - (#xF791 #xE574) - (#xF790 #xE573) - (#xF78F #xE572) - (#xF78E #xE571) - (#xF78D #xE570) - (#xF78C #xE56F) - (#xF78B #xE56E) - (#xF78A #xE56D) - (#xF789 #xE56C) - (#xF788 #xE56B) - (#xF787 #xE56A) - (#xF786 #xE569) - (#xF785 #xE568) - (#xF784 #xE567) - (#xF783 #xE566) - (#xF782 #xE565) - (#xF781 #xE564) - (#xF780 #xE563) - (#xF77E #xE562) - (#xF77D #xE561) - (#xF77C #xE560) - (#xF77B #xE55F) - (#xF77A #xE55E) - (#xF779 #xE55D) - (#xF778 #xE55C) - (#xF777 #xE55B) - (#xF776 #xE55A) - (#xF775 #xE559) - (#xF774 #xE558) - (#xF773 #xE557) - (#xF772 #xE556) - (#xF771 #xE555) - (#xF770 #xE554) - (#xF76F #xE553) - (#xF76E #xE552) - (#xF76D #xE551) - (#xF76C #xE550) - (#xF76B #xE54F) - (#xF76A #xE54E) - (#xF769 #xE54D) - (#xF768 #xE54C) - (#xF767 #xE54B) - (#xF766 #xE54A) - (#xF765 #xE549) - (#xF764 #xE548) - (#xF763 #xE547) - (#xF762 #xE546) - (#xF761 #xE545) - (#xF760 #xE544) - (#xF75F #xE543) - (#xF75E #xE542) - (#xF75D #xE541) - (#xF75C #xE540) - (#xF75B #xE53F) - (#xF75A #xE53E) - (#xF759 #xE53D) - (#xF758 #xE53C) - (#xF757 #xE53B) - (#xF756 #xE53A) - (#xF755 #xE539) - (#xF754 #xE538) - (#xF753 #xE537) - (#xF752 #xE536) - (#xF751 #xE535) - (#xF750 #xE534) - (#xF74F #xE533) - (#xF74E #xE532) - (#xF74D #xE531) - (#xF74C #xE530) - (#xF74B #xE52F) - (#xF74A #xE52E) - (#xF749 #xE52D) - (#xF748 #xE52C) - (#xF747 #xE52B) - (#xF746 #xE52A) - (#xF745 #xE529) - (#xF744 #xE528) - (#xF743 #xE527) - (#xF742 #xE526) - (#xF741 #xE525) - (#xF740 #xE524) - (#xF6FC #xE523) - (#xF6FB #xE522) - (#xF6FA #xE521) - (#xF6F9 #xE520) - (#xF6F8 #xE51F) - (#xF6F7 #xE51E) - (#xF6F6 #xE51D) - (#xF6F5 #xE51C) - (#xF6F4 #xE51B) - (#xF6F3 #xE51A) - (#xF6F2 #xE519) - (#xF6F1 #xE518) - (#xF6F0 #xE517) - (#xF6EF #xE516) - (#xF6EE #xE515) - (#xF6ED #xE514) - (#xF6EC #xE513) - (#xF6EB #xE512) - (#xF6EA #xE511) - (#xF6E9 #xE510) - (#xF6E8 #xE50F) - (#xF6E7 #xE50E) - (#xF6E6 #xE50D) - (#xF6E5 #xE50C) - (#xF6E4 #xE50B) - (#xF6E3 #xE50A) - (#xF6E2 #xE509) - (#xF6E1 #xE508) - (#xF6E0 #xE507) - (#xF6DF #xE506) - (#xF6DE #xE505) - (#xF6DD #xE504) - (#xF6DC #xE503) - (#xF6DB #xE502) - (#xF6DA #xE501) - (#xF6D9 #xE500) - (#xF6D8 #xE4FF) - (#xF6D7 #xE4FE) - (#xF6D6 #xE4FD) - (#xF6D5 #xE4FC) - (#xF6D4 #xE4FB) - (#xF6D3 #xE4FA) - (#xF6D2 #xE4F9) - (#xF6D1 #xE4F8) - (#xF6D0 #xE4F7) - (#xF6CF #xE4F6) - (#xF6CE #xE4F5) - (#xF6CD #xE4F4) - (#xF6CC #xE4F3) - (#xF6CB #xE4F2) - (#xF6CA #xE4F1) - (#xF6C9 #xE4F0) - (#xF6C8 #xE4EF) - (#xF6C7 #xE4EE) - (#xF6C6 #xE4ED) - (#xF6C5 #xE4EC) - (#xF6C4 #xE4EB) - (#xF6C3 #xE4EA) - (#xF6C2 #xE4E9) - (#xF6C1 #xE4E8) - (#xF6C0 #xE4E7) - (#xF6BF #xE4E6) - (#xF6BE #xE4E5) - (#xF6BD #xE4E4) - (#xF6BC #xE4E3) - (#xF6BB #xE4E2) - (#xF6BA #xE4E1) - (#xF6B9 #xE4E0) - (#xF6B8 #xE4DF) - (#xF6B7 #xE4DE) - (#xF6B6 #xE4DD) - (#xF6B5 #xE4DC) - (#xF6B4 #xE4DB) - (#xF6B3 #xE4DA) - (#xF6B2 #xE4D9) - (#xF6B1 #xE4D8) - (#xF6B0 #xE4D7) - (#xF6AF #xE4D6) - (#xF6AE #xE4D5) - (#xF6AD #xE4D4) - (#xF6AC #xE4D3) - (#xF6AB #xE4D2) - (#xF6AA #xE4D1) - (#xF6A9 #xE4D0) - (#xF6A8 #xE4CF) - (#xF6A7 #xE4CE) - (#xF6A6 #xE4CD) - (#xF6A5 #xE4CC) - (#xF6A4 #xE4CB) - (#xF6A3 #xE4CA) - (#xF6A2 #xE4C9) - (#xF6A1 #xE4C8) - (#xF6A0 #xE4C7) - (#xF69F #xE4C6) - (#xF69E #xE4C5) - (#xF69D #xE4C4) - (#xF69C #xE4C3) - (#xF69B #xE4C2) - (#xF69A #xE4C1) - (#xF699 #xE4C0) - (#xF698 #xE4BF) - (#xF697 #xE4BE) - (#xF696 #xE4BD) - (#xF695 #xE4BC) - (#xF694 #xE4BB) - (#xF693 #xE4BA) - (#xF692 #xE4B9) - (#xF691 #xE4B8) - (#xF690 #xE4B7) - (#xF68F #xE4B6) - (#xF68E #xE4B5) - (#xF68D #xE4B4) - (#xF68C #xE4B3) - (#xF68B #xE4B2) - (#xF68A #xE4B1) - (#xF689 #xE4B0) - (#xF688 #xE4AF) - (#xF687 #xE4AE) - (#xF686 #xE4AD) - (#xF685 #xE4AC) - (#xF684 #xE4AB) - (#xF683 #xE4AA) - (#xF682 #xE4A9) - (#xF681 #xE4A8) - (#xF680 #xE4A7) - (#xF67E #xE4A6) - (#xF67D #xE4A5) - (#xF67C #xE4A4) - (#xF67B #xE4A3) - (#xF67A #xE4A2) - (#xF679 #xE4A1) - (#xF678 #xE4A0) - (#xF677 #xE49F) - (#xF676 #xE49E) - (#xF675 #xE49D) - (#xF674 #xE49C) - (#xF673 #xE49B) - (#xF672 #xE49A) - (#xF671 #xE499) - (#xF670 #xE498) - (#xF66F #xE497) - (#xF66E #xE496) - (#xF66D #xE495) - (#xF66C #xE494) - (#xF66B #xE493) - (#xF66A #xE492) - (#xF669 #xE491) - (#xF668 #xE490) - (#xF667 #xE48F) - (#xF666 #xE48E) - (#xF665 #xE48D) - (#xF664 #xE48C) - (#xF663 #xE48B) - (#xF662 #xE48A) - (#xF661 #xE489) - (#xF660 #xE488) - (#xF65F #xE487) - (#xF65E #xE486) - (#xF65D #xE485) - (#xF65C #xE484) - (#xF65B #xE483) - (#xF65A #xE482) - (#xF659 #xE481) - (#xF658 #xE480) - (#xF657 #xE47F) - (#xF656 #xE47E) - (#xF655 #xE47D) - (#xF654 #xE47C) - (#xF653 #xE47B) - (#xF652 #xE47A) - (#xF651 #xE479) - (#xF650 #xE478) - (#xF64F #xE477) - (#xF64E #xE476) - (#xF64D #xE475) - (#xF64C #xE474) - (#xF64B #xE473) - (#xF64A #xE472) - (#xF649 #xE471) - (#xF648 #xE470) - (#xF647 #xE46F) - (#xF646 #xE46E) - (#xF645 #xE46D) - (#xF644 #xE46C) - (#xF643 #xE46B) - (#xF642 #xE46A) - (#xF641 #xE469) - (#xF640 #xE468) - (#xF5FC #xE467) - (#xF5FB #xE466) - (#xF5FA #xE465) - (#xF5F9 #xE464) - (#xF5F8 #xE463) - (#xF5F7 #xE462) - (#xF5F6 #xE461) - (#xF5F5 #xE460) - (#xF5F4 #xE45F) - (#xF5F3 #xE45E) - (#xF5F2 #xE45D) - (#xF5F1 #xE45C) - (#xF5F0 #xE45B) - (#xF5EF #xE45A) - (#xF5EE #xE459) - (#xF5ED #xE458) - (#xF5EC #xE457) - (#xF5EB #xE456) - (#xF5EA #xE455) - (#xF5E9 #xE454) - (#xF5E8 #xE453) - (#xF5E7 #xE452) - (#xF5E6 #xE451) - (#xF5E5 #xE450) - (#xF5E4 #xE44F) - (#xF5E3 #xE44E) - (#xF5E2 #xE44D) - (#xF5E1 #xE44C) - (#xF5E0 #xE44B) - (#xF5DF #xE44A) - (#xF5DE #xE449) - (#xF5DD #xE448) - (#xF5DC #xE447) - (#xF5DB #xE446) - (#xF5DA #xE445) - (#xF5D9 #xE444) - (#xF5D8 #xE443) - (#xF5D7 #xE442) - (#xF5D6 #xE441) - (#xF5D5 #xE440) - (#xF5D4 #xE43F) - (#xF5D3 #xE43E) - (#xF5D2 #xE43D) - (#xF5D1 #xE43C) - (#xF5D0 #xE43B) - (#xF5CF #xE43A) - (#xF5CE #xE439) - (#xF5CD #xE438) - (#xF5CC #xE437) - (#xF5CB #xE436) - (#xF5CA #xE435) - (#xF5C9 #xE434) - (#xF5C8 #xE433) - (#xF5C7 #xE432) - (#xF5C6 #xE431) - (#xF5C5 #xE430) - (#xF5C4 #xE42F) - (#xF5C3 #xE42E) - (#xF5C2 #xE42D) - (#xF5C1 #xE42C) - (#xF5C0 #xE42B) - (#xF5BF #xE42A) - (#xF5BE #xE429) - (#xF5BD #xE428) - (#xF5BC #xE427) - (#xF5BB #xE426) - (#xF5BA #xE425) - (#xF5B9 #xE424) - (#xF5B8 #xE423) - (#xF5B7 #xE422) - (#xF5B6 #xE421) - (#xF5B5 #xE420) - (#xF5B4 #xE41F) - (#xF5B3 #xE41E) - (#xF5B2 #xE41D) - (#xF5B1 #xE41C) - (#xF5B0 #xE41B) - (#xF5AF #xE41A) - (#xF5AE #xE419) - (#xF5AD #xE418) - (#xF5AC #xE417) - (#xF5AB #xE416) - (#xF5AA #xE415) - (#xF5A9 #xE414) - (#xF5A8 #xE413) - (#xF5A7 #xE412) - (#xF5A6 #xE411) - (#xF5A5 #xE410) - (#xF5A4 #xE40F) - (#xF5A3 #xE40E) - (#xF5A2 #xE40D) - (#xF5A1 #xE40C) - (#xF5A0 #xE40B) - (#xF59F #xE40A) - (#xF59E #xE409) - (#xF59D #xE408) - (#xF59C #xE407) - (#xF59B #xE406) - (#xF59A #xE405) - (#xF599 #xE404) - (#xF598 #xE403) - (#xF597 #xE402) - (#xF596 #xE401) - (#xF595 #xE400) - (#xF594 #xE3FF) - (#xF593 #xE3FE) - (#xF592 #xE3FD) - (#xF591 #xE3FC) - (#xF590 #xE3FB) - (#xF58F #xE3FA) - (#xF58E #xE3F9) - (#xF58D #xE3F8) - (#xF58C #xE3F7) - (#xF58B #xE3F6) - (#xF58A #xE3F5) - (#xF589 #xE3F4) - (#xF588 #xE3F3) - (#xF587 #xE3F2) - (#xF586 #xE3F1) - (#xF585 #xE3F0) - (#xF584 #xE3EF) - (#xF583 #xE3EE) - (#xF582 #xE3ED) - (#xF581 #xE3EC) - (#xF580 #xE3EB) - (#xF57E #xE3EA) - (#xF57D #xE3E9) - (#xF57C #xE3E8) - (#xF57B #xE3E7) - (#xF57A #xE3E6) - (#xF579 #xE3E5) - (#xF578 #xE3E4) - (#xF577 #xE3E3) - (#xF576 #xE3E2) - (#xF575 #xE3E1) - (#xF574 #xE3E0) - (#xF573 #xE3DF) - (#xF572 #xE3DE) - (#xF571 #xE3DD) - (#xF570 #xE3DC) - (#xF56F #xE3DB) - (#xF56E #xE3DA) - (#xF56D #xE3D9) - (#xF56C #xE3D8) - (#xF56B #xE3D7) - (#xF56A #xE3D6) - (#xF569 #xE3D5) - (#xF568 #xE3D4) - (#xF567 #xE3D3) - (#xF566 #xE3D2) - (#xF565 #xE3D1) - (#xF564 #xE3D0) - (#xF563 #xE3CF) - (#xF562 #xE3CE) - (#xF561 #xE3CD) - (#xF560 #xE3CC) - (#xF55F #xE3CB) - (#xF55E #xE3CA) - (#xF55D #xE3C9) - (#xF55C #xE3C8) - (#xF55B #xE3C7) - (#xF55A #xE3C6) - (#xF559 #xE3C5) - (#xF558 #xE3C4) - (#xF557 #xE3C3) - (#xF556 #xE3C2) - (#xF555 #xE3C1) - (#xF554 #xE3C0) - (#xF553 #xE3BF) - (#xF552 #xE3BE) - (#xF551 #xE3BD) - (#xF550 #xE3BC) - (#xF54F #xE3BB) - (#xF54E #xE3BA) - (#xF54D #xE3B9) - (#xF54C #xE3B8) - (#xF54B #xE3B7) - (#xF54A #xE3B6) - (#xF549 #xE3B5) - (#xF548 #xE3B4) - (#xF547 #xE3B3) - (#xF546 #xE3B2) - (#xF545 #xE3B1) - (#xF544 #xE3B0) - (#xF543 #xE3AF) - (#xF542 #xE3AE) - (#xF541 #xE3AD) - (#xF540 #xE3AC) - (#xF4FC #xE3AB) - (#xF4FB #xE3AA) - (#xF4FA #xE3A9) - (#xF4F9 #xE3A8) - (#xF4F8 #xE3A7) - (#xF4F7 #xE3A6) - (#xF4F6 #xE3A5) - (#xF4F5 #xE3A4) - (#xF4F4 #xE3A3) - (#xF4F3 #xE3A2) - (#xF4F2 #xE3A1) - (#xF4F1 #xE3A0) - (#xF4F0 #xE39F) - (#xF4EF #xE39E) - (#xF4EE #xE39D) - (#xF4ED #xE39C) - (#xF4EC #xE39B) - (#xF4EB #xE39A) - (#xF4EA #xE399) - (#xF4E9 #xE398) - (#xF4E8 #xE397) - (#xF4E7 #xE396) - (#xF4E6 #xE395) - (#xF4E5 #xE394) - (#xF4E4 #xE393) - (#xF4E3 #xE392) - (#xF4E2 #xE391) - (#xF4E1 #xE390) - (#xF4E0 #xE38F) - (#xF4DF #xE38E) - (#xF4DE #xE38D) - (#xF4DD #xE38C) - (#xF4DC #xE38B) - (#xF4DB #xE38A) - (#xF4DA #xE389) - (#xF4D9 #xE388) - (#xF4D8 #xE387) - (#xF4D7 #xE386) - (#xF4D6 #xE385) - (#xF4D5 #xE384) - (#xF4D4 #xE383) - (#xF4D3 #xE382) - (#xF4D2 #xE381) - (#xF4D1 #xE380) - (#xF4D0 #xE37F) - (#xF4CF #xE37E) - (#xF4CE #xE37D) - (#xF4CD #xE37C) - (#xF4CC #xE37B) - (#xF4CB #xE37A) - (#xF4CA #xE379) - (#xF4C9 #xE378) - (#xF4C8 #xE377) - (#xF4C7 #xE376) - (#xF4C6 #xE375) - (#xF4C5 #xE374) - (#xF4C4 #xE373) - (#xF4C3 #xE372) - (#xF4C2 #xE371) - (#xF4C1 #xE370) - (#xF4C0 #xE36F) - (#xF4BF #xE36E) - (#xF4BE #xE36D) - (#xF4BD #xE36C) - (#xF4BC #xE36B) - (#xF4BB #xE36A) - (#xF4BA #xE369) - (#xF4B9 #xE368) - (#xF4B8 #xE367) - (#xF4B7 #xE366) - (#xF4B6 #xE365) - (#xF4B5 #xE364) - (#xF4B4 #xE363) - (#xF4B3 #xE362) - (#xF4B2 #xE361) - (#xF4B1 #xE360) - (#xF4B0 #xE35F) - (#xF4AF #xE35E) - (#xF4AE #xE35D) - (#xF4AD #xE35C) - (#xF4AC #xE35B) - (#xF4AB #xE35A) - (#xF4AA #xE359) - (#xF4A9 #xE358) - (#xF4A8 #xE357) - (#xF4A7 #xE356) - (#xF4A6 #xE355) - (#xF4A5 #xE354) - (#xF4A4 #xE353) - (#xF4A3 #xE352) - (#xF4A2 #xE351) - (#xF4A1 #xE350) - (#xF4A0 #xE34F) - (#xF49F #xE34E) - (#xF49E #xE34D) - (#xF49D #xE34C) - (#xF49C #xE34B) - (#xF49B #xE34A) - (#xF49A #xE349) - (#xF499 #xE348) - (#xF498 #xE347) - (#xF497 #xE346) - (#xF496 #xE345) - (#xF495 #xE344) - (#xF494 #xE343) - (#xF493 #xE342) - (#xF492 #xE341) - (#xF491 #xE340) - (#xF490 #xE33F) - (#xF48F #xE33E) - (#xF48E #xE33D) - (#xF48D #xE33C) - (#xF48C #xE33B) - (#xF48B #xE33A) - (#xF48A #xE339) - (#xF489 #xE338) - (#xF488 #xE337) - (#xF487 #xE336) - (#xF486 #xE335) - (#xF485 #xE334) - (#xF484 #xE333) - (#xF483 #xE332) - (#xF482 #xE331) - (#xF481 #xE330) - (#xF480 #xE32F) - (#xF47E #xE32E) - (#xF47D #xE32D) - (#xF47C #xE32C) - (#xF47B #xE32B) - (#xF47A #xE32A) - (#xF479 #xE329) - (#xF478 #xE328) - (#xF477 #xE327) - (#xF476 #xE326) - (#xF475 #xE325) - (#xF474 #xE324) - (#xF473 #xE323) - (#xF472 #xE322) - (#xF471 #xE321) - (#xF470 #xE320) - (#xF46F #xE31F) - (#xF46E #xE31E) - (#xF46D #xE31D) - (#xF46C #xE31C) - (#xF46B #xE31B) - (#xF46A #xE31A) - (#xF469 #xE319) - (#xF468 #xE318) - (#xF467 #xE317) - (#xF466 #xE316) - (#xF465 #xE315) - (#xF464 #xE314) - (#xF463 #xE313) - (#xF462 #xE312) - (#xF461 #xE311) - (#xF460 #xE310) - (#xF45F #xE30F) - (#xF45E #xE30E) - (#xF45D #xE30D) - (#xF45C #xE30C) - (#xF45B #xE30B) - (#xF45A #xE30A) - (#xF459 #xE309) - (#xF458 #xE308) - (#xF457 #xE307) - (#xF456 #xE306) - (#xF455 #xE305) - (#xF454 #xE304) - (#xF453 #xE303) - (#xF452 #xE302) - (#xF451 #xE301) - (#xF450 #xE300) - (#xF44F #xE2FF) - (#xF44E #xE2FE) - (#xF44D #xE2FD) - (#xF44C #xE2FC) - (#xF44B #xE2FB) - (#xF44A #xE2FA) - (#xF449 #xE2F9) - (#xF448 #xE2F8) - (#xF447 #xE2F7) - (#xF446 #xE2F6) - (#xF445 #xE2F5) - (#xF444 #xE2F4) - (#xF443 #xE2F3) - (#xF442 #xE2F2) - (#xF441 #xE2F1) - (#xF440 #xE2F0) - (#xF3FC #xE2EF) - (#xF3FB #xE2EE) - (#xF3FA #xE2ED) - (#xF3F9 #xE2EC) - (#xF3F8 #xE2EB) - (#xF3F7 #xE2EA) - (#xF3F6 #xE2E9) - (#xF3F5 #xE2E8) - (#xF3F4 #xE2E7) - (#xF3F3 #xE2E6) - (#xF3F2 #xE2E5) - (#xF3F1 #xE2E4) - (#xF3F0 #xE2E3) - (#xF3EF #xE2E2) - (#xF3EE #xE2E1) - (#xF3ED #xE2E0) - (#xF3EC #xE2DF) - (#xF3EB #xE2DE) - (#xF3EA #xE2DD) - (#xF3E9 #xE2DC) - (#xF3E8 #xE2DB) - (#xF3E7 #xE2DA) - (#xF3E6 #xE2D9) - (#xF3E5 #xE2D8) - (#xF3E4 #xE2D7) - (#xF3E3 #xE2D6) - (#xF3E2 #xE2D5) - (#xF3E1 #xE2D4) - (#xF3E0 #xE2D3) - (#xF3DF #xE2D2) - (#xF3DE #xE2D1) - (#xF3DD #xE2D0) - (#xF3DC #xE2CF) - (#xF3DB #xE2CE) - (#xF3DA #xE2CD) - (#xF3D9 #xE2CC) - (#xF3D8 #xE2CB) - (#xF3D7 #xE2CA) - (#xF3D6 #xE2C9) - (#xF3D5 #xE2C8) - (#xF3D4 #xE2C7) - (#xF3D3 #xE2C6) - (#xF3D2 #xE2C5) - (#xF3D1 #xE2C4) - (#xF3D0 #xE2C3) - (#xF3CF #xE2C2) - (#xF3CE #xE2C1) - (#xF3CD #xE2C0) - (#xF3CC #xE2BF) - (#xF3CB #xE2BE) - (#xF3CA #xE2BD) - (#xF3C9 #xE2BC) - (#xF3C8 #xE2BB) - (#xF3C7 #xE2BA) - (#xF3C6 #xE2B9) - (#xF3C5 #xE2B8) - (#xF3C4 #xE2B7) - (#xF3C3 #xE2B6) - (#xF3C2 #xE2B5) - (#xF3C1 #xE2B4) - (#xF3C0 #xE2B3) - (#xF3BF #xE2B2) - (#xF3BE #xE2B1) - (#xF3BD #xE2B0) - (#xF3BC #xE2AF) - (#xF3BB #xE2AE) - (#xF3BA #xE2AD) - (#xF3B9 #xE2AC) - (#xF3B8 #xE2AB) - (#xF3B7 #xE2AA) - (#xF3B6 #xE2A9) - (#xF3B5 #xE2A8) - (#xF3B4 #xE2A7) - (#xF3B3 #xE2A6) - (#xF3B2 #xE2A5) - (#xF3B1 #xE2A4) - (#xF3B0 #xE2A3) - (#xF3AF #xE2A2) - (#xF3AE #xE2A1) - (#xF3AD #xE2A0) - (#xF3AC #xE29F) - (#xF3AB #xE29E) - (#xF3AA #xE29D) - (#xF3A9 #xE29C) - (#xF3A8 #xE29B) - (#xF3A7 #xE29A) - (#xF3A6 #xE299) - (#xF3A5 #xE298) - (#xF3A4 #xE297) - (#xF3A3 #xE296) - (#xF3A2 #xE295) - (#xF3A1 #xE294) - (#xF3A0 #xE293) - (#xF39F #xE292) - (#xF39E #xE291) - (#xF39D #xE290) - (#xF39C #xE28F) - (#xF39B #xE28E) - (#xF39A #xE28D) - (#xF399 #xE28C) - (#xF398 #xE28B) - (#xF397 #xE28A) - (#xF396 #xE289) - (#xF395 #xE288) - (#xF394 #xE287) - (#xF393 #xE286) - (#xF392 #xE285) - (#xF391 #xE284) - (#xF390 #xE283) - (#xF38F #xE282) - (#xF38E #xE281) - (#xF38D #xE280) - (#xF38C #xE27F) - (#xF38B #xE27E) - (#xF38A #xE27D) - (#xF389 #xE27C) - (#xF388 #xE27B) - (#xF387 #xE27A) - (#xF386 #xE279) - (#xF385 #xE278) - (#xF384 #xE277) - (#xF383 #xE276) - (#xF382 #xE275) - (#xF381 #xE274) - (#xF380 #xE273) - (#xF37E #xE272) - (#xF37D #xE271) - (#xF37C #xE270) - (#xF37B #xE26F) - (#xF37A #xE26E) - (#xF379 #xE26D) - (#xF378 #xE26C) - (#xF377 #xE26B) - (#xF376 #xE26A) - (#xF375 #xE269) - (#xF374 #xE268) - (#xF373 #xE267) - (#xF372 #xE266) - (#xF371 #xE265) - (#xF370 #xE264) - (#xF36F #xE263) - (#xF36E #xE262) - (#xF36D #xE261) - (#xF36C #xE260) - (#xF36B #xE25F) - (#xF36A #xE25E) - (#xF369 #xE25D) - (#xF368 #xE25C) - (#xF367 #xE25B) - (#xF366 #xE25A) - (#xF365 #xE259) - (#xF364 #xE258) - (#xF363 #xE257) - (#xF362 #xE256) - (#xF361 #xE255) - (#xF360 #xE254) - (#xF35F #xE253) - (#xF35E #xE252) - (#xF35D #xE251) - (#xF35C #xE250) - (#xF35B #xE24F) - (#xF35A #xE24E) - (#xF359 #xE24D) - (#xF358 #xE24C) - (#xF357 #xE24B) - (#xF356 #xE24A) - (#xF355 #xE249) - (#xF354 #xE248) - (#xF353 #xE247) - (#xF352 #xE246) - (#xF351 #xE245) - (#xF350 #xE244) - (#xF34F #xE243) - (#xF34E #xE242) - (#xF34D #xE241) - (#xF34C #xE240) - (#xF34B #xE23F) - (#xF34A #xE23E) - (#xF349 #xE23D) - (#xF348 #xE23C) - (#xF347 #xE23B) - (#xF346 #xE23A) - (#xF345 #xE239) - (#xF344 #xE238) - (#xF343 #xE237) - (#xF342 #xE236) - (#xF341 #xE235) - (#xF340 #xE234) - (#xF2FC #xE233) - (#xF2FB #xE232) - (#xF2FA #xE231) - (#xF2F9 #xE230) - (#xF2F8 #xE22F) - (#xF2F7 #xE22E) - (#xF2F6 #xE22D) - (#xF2F5 #xE22C) - (#xF2F4 #xE22B) - (#xF2F3 #xE22A) - (#xF2F2 #xE229) - (#xF2F1 #xE228) - (#xF2F0 #xE227) - (#xF2EF #xE226) - (#xF2EE #xE225) - (#xF2ED #xE224) - (#xF2EC #xE223) - (#xF2EB #xE222) - (#xF2EA #xE221) - (#xF2E9 #xE220) - (#xF2E8 #xE21F) - (#xF2E7 #xE21E) - (#xF2E6 #xE21D) - (#xF2E5 #xE21C) - (#xF2E4 #xE21B) - (#xF2E3 #xE21A) - (#xF2E2 #xE219) - (#xF2E1 #xE218) - (#xF2E0 #xE217) - (#xF2DF #xE216) - (#xF2DE #xE215) - (#xF2DD #xE214) - (#xF2DC #xE213) - (#xF2DB #xE212) - (#xF2DA #xE211) - (#xF2D9 #xE210) - (#xF2D8 #xE20F) - (#xF2D7 #xE20E) - (#xF2D6 #xE20D) - (#xF2D5 #xE20C) - (#xF2D4 #xE20B) - (#xF2D3 #xE20A) - (#xF2D2 #xE209) - (#xF2D1 #xE208) - (#xF2D0 #xE207) - (#xF2CF #xE206) - (#xF2CE #xE205) - (#xF2CD #xE204) - (#xF2CC #xE203) - (#xF2CB #xE202) - (#xF2CA #xE201) - (#xF2C9 #xE200) - (#xF2C8 #xE1FF) - (#xF2C7 #xE1FE) - (#xF2C6 #xE1FD) - (#xF2C5 #xE1FC) - (#xF2C4 #xE1FB) - (#xF2C3 #xE1FA) - (#xF2C2 #xE1F9) - (#xF2C1 #xE1F8) - (#xF2C0 #xE1F7) - (#xF2BF #xE1F6) - (#xF2BE #xE1F5) - (#xF2BD #xE1F4) - (#xF2BC #xE1F3) - (#xF2BB #xE1F2) - (#xF2BA #xE1F1) - (#xF2B9 #xE1F0) - (#xF2B8 #xE1EF) - (#xF2B7 #xE1EE) - (#xF2B6 #xE1ED) - (#xF2B5 #xE1EC) - (#xF2B4 #xE1EB) - (#xF2B3 #xE1EA) - (#xF2B2 #xE1E9) - (#xF2B1 #xE1E8) - (#xF2B0 #xE1E7) - (#xF2AF #xE1E6) - (#xF2AE #xE1E5) - (#xF2AD #xE1E4) - (#xF2AC #xE1E3) - (#xF2AB #xE1E2) - (#xF2AA #xE1E1) - (#xF2A9 #xE1E0) - (#xF2A8 #xE1DF) - (#xF2A7 #xE1DE) - (#xF2A6 #xE1DD) - (#xF2A5 #xE1DC) - (#xF2A4 #xE1DB) - (#xF2A3 #xE1DA) - (#xF2A2 #xE1D9) - (#xF2A1 #xE1D8) - (#xF2A0 #xE1D7) - (#xF29F #xE1D6) - (#xF29E #xE1D5) - (#xF29D #xE1D4) - (#xF29C #xE1D3) - (#xF29B #xE1D2) - (#xF29A #xE1D1) - (#xF299 #xE1D0) - (#xF298 #xE1CF) - (#xF297 #xE1CE) - (#xF296 #xE1CD) - (#xF295 #xE1CC) - (#xF294 #xE1CB) - (#xF293 #xE1CA) - (#xF292 #xE1C9) - (#xF291 #xE1C8) - (#xF290 #xE1C7) - (#xF28F #xE1C6) - (#xF28E #xE1C5) - (#xF28D #xE1C4) - (#xF28C #xE1C3) - (#xF28B #xE1C2) - (#xF28A #xE1C1) - (#xF289 #xE1C0) - (#xF288 #xE1BF) - (#xF287 #xE1BE) - (#xF286 #xE1BD) - (#xF285 #xE1BC) - (#xF284 #xE1BB) - (#xF283 #xE1BA) - (#xF282 #xE1B9) - (#xF281 #xE1B8) - (#xF280 #xE1B7) - (#xF27E #xE1B6) - (#xF27D #xE1B5) - (#xF27C #xE1B4) - (#xF27B #xE1B3) - (#xF27A #xE1B2) - (#xF279 #xE1B1) - (#xF278 #xE1B0) - (#xF277 #xE1AF) - (#xF276 #xE1AE) - (#xF275 #xE1AD) - (#xF274 #xE1AC) - (#xF273 #xE1AB) - (#xF272 #xE1AA) - (#xF271 #xE1A9) - (#xF270 #xE1A8) - (#xF26F #xE1A7) - (#xF26E #xE1A6) - (#xF26D #xE1A5) - (#xF26C #xE1A4) - (#xF26B #xE1A3) - (#xF26A #xE1A2) - (#xF269 #xE1A1) - (#xF268 #xE1A0) - (#xF267 #xE19F) - (#xF266 #xE19E) - (#xF265 #xE19D) - (#xF264 #xE19C) - (#xF263 #xE19B) - (#xF262 #xE19A) - (#xF261 #xE199) - (#xF260 #xE198) - (#xF25F #xE197) - (#xF25E #xE196) - (#xF25D #xE195) - (#xF25C #xE194) - (#xF25B #xE193) - (#xF25A #xE192) - (#xF259 #xE191) - (#xF258 #xE190) - (#xF257 #xE18F) - (#xF256 #xE18E) - (#xF255 #xE18D) - (#xF254 #xE18C) - (#xF253 #xE18B) - (#xF252 #xE18A) - (#xF251 #xE189) - (#xF250 #xE188) - (#xF24F #xE187) - (#xF24E #xE186) - (#xF24D #xE185) - (#xF24C #xE184) - (#xF24B #xE183) - (#xF24A #xE182) - (#xF249 #xE181) - (#xF248 #xE180) - (#xF247 #xE17F) - (#xF246 #xE17E) - (#xF245 #xE17D) - (#xF244 #xE17C) - (#xF243 #xE17B) - (#xF242 #xE17A) - (#xF241 #xE179) - (#xF240 #xE178) - (#xF1FC #xE177) - (#xF1FB #xE176) - (#xF1FA #xE175) - (#xF1F9 #xE174) - (#xF1F8 #xE173) - (#xF1F7 #xE172) - (#xF1F6 #xE171) - (#xF1F5 #xE170) - (#xF1F4 #xE16F) - (#xF1F3 #xE16E) - (#xF1F2 #xE16D) - (#xF1F1 #xE16C) - (#xF1F0 #xE16B) - (#xF1EF #xE16A) - (#xF1EE #xE169) - (#xF1ED #xE168) - (#xF1EC #xE167) - (#xF1EB #xE166) - (#xF1EA #xE165) - (#xF1E9 #xE164) - (#xF1E8 #xE163) - (#xF1E7 #xE162) - (#xF1E6 #xE161) - (#xF1E5 #xE160) - (#xF1E4 #xE15F) - (#xF1E3 #xE15E) - (#xF1E2 #xE15D) - (#xF1E1 #xE15C) - (#xF1E0 #xE15B) - (#xF1DF #xE15A) - (#xF1DE #xE159) - (#xF1DD #xE158) - (#xF1DC #xE157) - (#xF1DB #xE156) - (#xF1DA #xE155) - (#xF1D9 #xE154) - (#xF1D8 #xE153) - (#xF1D7 #xE152) - (#xF1D6 #xE151) - (#xF1D5 #xE150) - (#xF1D4 #xE14F) - (#xF1D3 #xE14E) - (#xF1D2 #xE14D) - (#xF1D1 #xE14C) - (#xF1D0 #xE14B) - (#xF1CF #xE14A) - (#xF1CE #xE149) - (#xF1CD #xE148) - (#xF1CC #xE147) - (#xF1CB #xE146) - (#xF1CA #xE145) - (#xF1C9 #xE144) - (#xF1C8 #xE143) - (#xF1C7 #xE142) - (#xF1C6 #xE141) - (#xF1C5 #xE140) - (#xF1C4 #xE13F) - (#xF1C3 #xE13E) - (#xF1C2 #xE13D) - (#xF1C1 #xE13C) - (#xF1C0 #xE13B) - (#xF1BF #xE13A) - (#xF1BE #xE139) - (#xF1BD #xE138) - (#xF1BC #xE137) - (#xF1BB #xE136) - (#xF1BA #xE135) - (#xF1B9 #xE134) - (#xF1B8 #xE133) - (#xF1B7 #xE132) - (#xF1B6 #xE131) - (#xF1B5 #xE130) - (#xF1B4 #xE12F) - (#xF1B3 #xE12E) - (#xF1B2 #xE12D) - (#xF1B1 #xE12C) - (#xF1B0 #xE12B) - (#xF1AF #xE12A) - (#xF1AE #xE129) - (#xF1AD #xE128) - (#xF1AC #xE127) - (#xF1AB #xE126) - (#xF1AA #xE125) - (#xF1A9 #xE124) - (#xF1A8 #xE123) - (#xF1A7 #xE122) - (#xF1A6 #xE121) - (#xF1A5 #xE120) - (#xF1A4 #xE11F) - (#xF1A3 #xE11E) - (#xF1A2 #xE11D) - (#xF1A1 #xE11C) - (#xF1A0 #xE11B) - (#xF19F #xE11A) - (#xF19E #xE119) - (#xF19D #xE118) - (#xF19C #xE117) - (#xF19B #xE116) - (#xF19A #xE115) - (#xF199 #xE114) - (#xF198 #xE113) - (#xF197 #xE112) - (#xF196 #xE111) - (#xF195 #xE110) - (#xF194 #xE10F) - (#xF193 #xE10E) - (#xF192 #xE10D) - (#xF191 #xE10C) - (#xF190 #xE10B) - (#xF18F #xE10A) - (#xF18E #xE109) - (#xF18D #xE108) - (#xF18C #xE107) - (#xF18B #xE106) - (#xF18A #xE105) - (#xF189 #xE104) - (#xF188 #xE103) - (#xF187 #xE102) - (#xF186 #xE101) - (#xF185 #xE100) - (#xF184 #xE0FF) - (#xF183 #xE0FE) - (#xF182 #xE0FD) - (#xF181 #xE0FC) - (#xF180 #xE0FB) - (#xF17E #xE0FA) - (#xF17D #xE0F9) - (#xF17C #xE0F8) - (#xF17B #xE0F7) - (#xF17A #xE0F6) - (#xF179 #xE0F5) - (#xF178 #xE0F4) - (#xF177 #xE0F3) - (#xF176 #xE0F2) - (#xF175 #xE0F1) - (#xF174 #xE0F0) - (#xF173 #xE0EF) - (#xF172 #xE0EE) - (#xF171 #xE0ED) - (#xF170 #xE0EC) - (#xF16F #xE0EB) - (#xF16E #xE0EA) - (#xF16D #xE0E9) - (#xF16C #xE0E8) - (#xF16B #xE0E7) - (#xF16A #xE0E6) - (#xF169 #xE0E5) - (#xF168 #xE0E4) - (#xF167 #xE0E3) - (#xF166 #xE0E2) - (#xF165 #xE0E1) - (#xF164 #xE0E0) - (#xF163 #xE0DF) - (#xF162 #xE0DE) - (#xF161 #xE0DD) - (#xF160 #xE0DC) - (#xF15F #xE0DB) - (#xF15E #xE0DA) - (#xF15D #xE0D9) - (#xF15C #xE0D8) - (#xF15B #xE0D7) - (#xF15A #xE0D6) - (#xF159 #xE0D5) - (#xF158 #xE0D4) - (#xF157 #xE0D3) - (#xF156 #xE0D2) - (#xF155 #xE0D1) - (#xF154 #xE0D0) - (#xF153 #xE0CF) - (#xF152 #xE0CE) - (#xF151 #xE0CD) - (#xF150 #xE0CC) - (#xF14F #xE0CB) - (#xF14E #xE0CA) - (#xF14D #xE0C9) - (#xF14C #xE0C8) - (#xF14B #xE0C7) - (#xF14A #xE0C6) - (#xF149 #xE0C5) - (#xF148 #xE0C4) - (#xF147 #xE0C3) - (#xF146 #xE0C2) - (#xF145 #xE0C1) - (#xF144 #xE0C0) - (#xF143 #xE0BF) - (#xF142 #xE0BE) - (#xF141 #xE0BD) - (#xF140 #xE0BC) - (#xF0FC #xE0BB) - (#xF0FB #xE0BA) - (#xF0FA #xE0B9) - (#xF0F9 #xE0B8) - (#xF0F8 #xE0B7) - (#xF0F7 #xE0B6) - (#xF0F6 #xE0B5) - (#xF0F5 #xE0B4) - (#xF0F4 #xE0B3) - (#xF0F3 #xE0B2) - (#xF0F2 #xE0B1) - (#xF0F1 #xE0B0) - (#xF0F0 #xE0AF) - (#xF0EF #xE0AE) - (#xF0EE #xE0AD) - (#xF0ED #xE0AC) - (#xF0EC #xE0AB) - (#xF0EB #xE0AA) - (#xF0EA #xE0A9) - (#xF0E9 #xE0A8) - (#xF0E8 #xE0A7) - (#xF0E7 #xE0A6) - (#xF0E6 #xE0A5) - (#xF0E5 #xE0A4) - (#xF0E4 #xE0A3) - (#xF0E3 #xE0A2) - (#xF0E2 #xE0A1) - (#xF0E1 #xE0A0) - (#xF0E0 #xE09F) - (#xF0DF #xE09E) - (#xF0DE #xE09D) - (#xF0DD #xE09C) - (#xF0DC #xE09B) - (#xF0DB #xE09A) - (#xF0DA #xE099) - (#xF0D9 #xE098) - (#xF0D8 #xE097) - (#xF0D7 #xE096) - (#xF0D6 #xE095) - (#xF0D5 #xE094) - (#xF0D4 #xE093) - (#xF0D3 #xE092) - (#xF0D2 #xE091) - (#xF0D1 #xE090) - (#xF0D0 #xE08F) - (#xF0CF #xE08E) - (#xF0CE #xE08D) - (#xF0CD #xE08C) - (#xF0CC #xE08B) - (#xF0CB #xE08A) - (#xF0CA #xE089) - (#xF0C9 #xE088) - (#xF0C8 #xE087) - (#xF0C7 #xE086) - (#xF0C6 #xE085) - (#xF0C5 #xE084) - (#xF0C4 #xE083) - (#xF0C3 #xE082) - (#xF0C2 #xE081) - (#xF0C1 #xE080) - (#xF0C0 #xE07F) - (#xF0BF #xE07E) - (#xF0BE #xE07D) - (#xF0BD #xE07C) - (#xF0BC #xE07B) - (#xF0BB #xE07A) - (#xF0BA #xE079) - (#xF0B9 #xE078) - (#xF0B8 #xE077) - (#xF0B7 #xE076) - (#xF0B6 #xE075) - (#xF0B5 #xE074) - (#xF0B4 #xE073) - (#xF0B3 #xE072) - (#xF0B2 #xE071) - (#xF0B1 #xE070) - (#xF0B0 #xE06F) - (#xF0AF #xE06E) - (#xF0AE #xE06D) - (#xF0AD #xE06C) - (#xF0AC #xE06B) - (#xF0AB #xE06A) - (#xF0AA #xE069) - (#xF0A9 #xE068) - (#xF0A8 #xE067) - (#xF0A7 #xE066) - (#xF0A6 #xE065) - (#xF0A5 #xE064) - (#xF0A4 #xE063) - (#xF0A3 #xE062) - (#xF0A2 #xE061) - (#xF0A1 #xE060) - (#xF0A0 #xE05F) - (#xF09F #xE05E) - (#xF09E #xE05D) - (#xF09D #xE05C) - (#xF09C #xE05B) - (#xF09B #xE05A) - (#xF09A #xE059) - (#xF099 #xE058) - (#xF098 #xE057) - (#xF097 #xE056) - (#xF096 #xE055) - (#xF095 #xE054) - (#xF094 #xE053) - (#xF093 #xE052) - (#xF092 #xE051) - (#xF091 #xE050) - (#xF090 #xE04F) - (#xF08F #xE04E) - (#xF08E #xE04D) - (#xF08D #xE04C) - (#xF08C #xE04B) - (#xF08B #xE04A) - (#xF08A #xE049) - (#xF089 #xE048) - (#xF088 #xE047) - (#xF087 #xE046) - (#xF086 #xE045) - (#xF085 #xE044) - (#xF084 #xE043) - (#xF083 #xE042) - (#xF082 #xE041) - (#xF081 #xE040) - (#xF080 #xE03F) - (#xF07E #xE03E) - (#xF07D #xE03D) - (#xF07C #xE03C) - (#xF07B #xE03B) - (#xF07A #xE03A) - (#xF079 #xE039) - (#xF078 #xE038) - (#xF077 #xE037) - (#xF076 #xE036) - (#xF075 #xE035) - (#xF074 #xE034) - (#xF073 #xE033) - (#xF072 #xE032) - (#xF071 #xE031) - (#xF070 #xE030) - (#xF06F #xE02F) - (#xF06E #xE02E) - (#xF06D #xE02D) - (#xF06C #xE02C) - (#xF06B #xE02B) - (#xF06A #xE02A) - (#xF069 #xE029) - (#xF068 #xE028) - (#xF067 #xE027) - (#xF066 #xE026) - (#xF065 #xE025) - (#xF064 #xE024) - (#xF063 #xE023) - (#xF062 #xE022) - (#xF061 #xE021) - (#xF060 #xE020) - (#xF05F #xE01F) - (#xF05E #xE01E) - (#xF05D #xE01D) - (#xF05C #xE01C) - (#xF05B #xE01B) - (#xF05A #xE01A) - (#xF059 #xE019) - (#xF058 #xE018) - (#xF057 #xE017) - (#xF056 #xE016) - (#xF055 #xE015) - (#xF054 #xE014) - (#xF053 #xE013) - (#xF052 #xE012) - (#xF051 #xE011) - (#xF050 #xE010) - (#xF04F #xE00F) - (#xF04E #xE00E) - (#xF04D #xE00D) - (#xF04C #xE00C) - (#xF04B #xE00B) - (#xF04A #xE00A) - (#xF049 #xE009) - (#xF048 #xE008) - (#xF047 #xE007) - (#xF046 #xE006) - (#xF045 #xE005) - (#xF044 #xE004) - (#xF043 #xE003) - (#xF042 #xE002) - (#xF041 #xE001) - (#xF040 #xE000) - (#xEEFC #xFF02) - (#xEEFB #xFF07) - (#xEEFA #xFFE4) - (#xEEF9 #xFFE2) - (#xEEF8 #x2179) - (#xEEF7 #x2178) - (#xEEF6 #x2177) - (#xEEF5 #x2176) - (#xEEF4 #x2175) - (#xEEF3 #x2174) - (#xEEF2 #x2173) - (#xEEF1 #x2172) - (#xEEF0 #x2171) - (#xEEEF #x2170) - (#xEEEC #x9ED1) - (#xEEEB #x9E19) - (#xEEEA #xFA2D) - (#xEEE9 #x9D6B) - (#xEEE8 #x9D70) - (#xEEE7 #x9C00) - (#xEEE6 #x9BBB) - (#xEEE5 #x9BB1) - (#xEEE4 #x9B8F) - (#xEEE3 #x9B72) - (#xEEE2 #x9B75) - (#xEEE1 #x9ADC) - (#xEEE0 #x9AD9) - (#xEEDF #x9A4E) - (#xEEDE #x999E) - (#xEEDD #xFA2C) - (#xEEDC #x9927) - (#xEEDB #xFA2B) - (#xEEDA #xFA2A) - (#xEED9 #x9865) - (#xEED8 #x9857) - (#xEED7 #x9755) - (#xEED6 #x9751) - (#xEED5 #x974F) - (#xEED4 #x974D) - (#xEED3 #x9743) - (#xEED2 #x973B) - (#xEED1 #x9733) - (#xEED0 #x96AF) - (#xEECF #x969D) - (#xEECE #xFA29) - (#xEECD #xF9DC) - (#xEECC #x9592) - (#xEECB #x9448) - (#xEECA #x9445) - (#xEEC9 #x9431) - (#xEEC8 #x93F8) - (#xEEC7 #x93DE) - (#xEEC6 #x93C6) - (#xEEC5 #x93A4) - (#xEEC4 #x9357) - (#xEEC3 #x9370) - (#xEEC2 #x9302) - (#xEEC1 #x931D) - (#xEEC0 #x92FF) - (#xEEBF #x931E) - (#xEEBE #xFA28) - (#xEEBD #x92FB) - (#xEEBC #x9321) - (#xEEBB #x9325) - (#xEEBA #x92D3) - (#xEEB9 #x92E0) - (#xEEB8 #x92D5) - (#xEEB7 #xFA27) - (#xEEB6 #x92D0) - (#xEEB5 #x92D9) - (#xEEB4 #x92D7) - (#xEEB3 #x92E7) - (#xEEB2 #x9278) - (#xEEB1 #x9277) - (#xEEB0 #x92A7) - (#xEEAF #x9267) - (#xEEAE #x9239) - (#xEEAD #x9251) - (#xEEAC #x9259) - (#xEEAB #x924E) - (#xEEAA #x923C) - (#xEEA9 #x9240) - (#xEEA8 #x923A) - (#xEEA7 #x920A) - (#xEEA6 #x9210) - (#xEEA5 #x9206) - (#xEEA4 #x91E5) - (#xEEA3 #x91E4) - (#xEEA2 #x91EE) - (#xEEA1 #x91ED) - (#xEEA0 #x91DE) - (#xEE9F #x91D7) - (#xEE9E #x91DA) - (#xEE9D #x9127) - (#xEE9C #x9115) - (#xEE9B #xFA26) - (#xEE9A #x90DE) - (#xEE99 #x9067) - (#xEE98 #xFA25) - (#xEE97 #xFA24) - (#xEE96 #x8ECF) - (#xEE95 #xFA23) - (#xEE94 #x8D76) - (#xEE93 #x8D12) - (#xEE92 #x8CF4) - (#xEE91 #x8CF0) - (#xEE90 #x8B7F) - (#xEE8F #x8B53) - (#xEE8E #x8AF6) - (#xEE8D #xFA22) - (#xEE8C #x8ADF) - (#xEE8B #x8ABE) - (#xEE8A #x8AA7) - (#xEE89 #x8A79) - (#xEE88 #x8A37) - (#xEE87 #x8A12) - (#xEE86 #x88F5) - (#xEE85 #x8807) - (#xEE84 #xFA21) - (#xEE83 #xFA20) - (#xEE82 #x85B0) - (#xEE81 #xFA1F) - (#xEE80 #x856B) - (#xEE7E #x8559) - (#xEE7D #x8553) - (#xEE7C #x84B4) - (#xEE7B #x8448) - (#xEE7A #x83F6) - (#xEE79 #x83C7) - (#xEE78 #x837F) - (#xEE77 #x8362) - (#xEE76 #x8301) - (#xEE75 #xFA1E) - (#xEE74 #x7FA1) - (#xEE73 #x7F47) - (#xEE72 #x7E52) - (#xEE71 #x7DD6) - (#xEE70 #x7DA0) - (#xEE6F #x7DB7) - (#xEE6E #x7D5C) - (#xEE6D #x7D48) - (#xEE6C #xFA1D) - (#xEE6B #x7B9E) - (#xEE6A #x7AEB) - (#xEE69 #xFA1C) - (#xEE68 #x7AE7) - (#xEE67 #x7AD1) - (#xEE66 #x799B) - (#xEE65 #xFA1B) - (#xEE64 #x7994) - (#xEE63 #xFA1A) - (#xEE62 #xFA19) - (#xEE61 #xFA18) - (#xEE60 #x7930) - (#xEE5F #x787A) - (#xEE5E #x7864) - (#xEE5D #x784E) - (#xEE5C #x7821) - (#xEE5B #x52AF) - (#xEE5A #x7746) - (#xEE59 #xFA17) - (#xEE58 #x76A6) - (#xEE57 #x769B) - (#xEE56 #x769E) - (#xEE55 #x769C) - (#xEE54 #x7682) - (#xEE53 #x756F) - (#xEE52 #x7501) - (#xEE51 #x749F) - (#xEE50 #x7489) - (#xEE4F #x7462) - (#xEE4E #x742E) - (#xEE4D #x7429) - (#xEE4C #x742A) - (#xEE4B #x7426) - (#xEE4A #x73F5) - (#xEE49 #x7407) - (#xEE48 #x73D2) - (#xEE47 #x73E3) - (#xEE46 #x73D6) - (#xEE45 #x73C9) - (#xEE44 #x73BD) - (#xEE43 #x7377) - (#xEE42 #xFA16) - (#xEE41 #x7324) - (#xEE40 #x72BE) - (#xEDFC #x72B1) - (#xEDFB #x71FE) - (#xEDFA #x71C1) - (#xEDF9 #xFA15) - (#xEDF8 #x7147) - (#xEDF7 #x7146) - (#xEDF6 #x715C) - (#xEDF5 #x7104) - (#xEDF4 #x710F) - (#xEDF3 #x70AB) - (#xEDF2 #x7085) - (#xEDF1 #x7028) - (#xEDF0 #x7007) - (#xEDEF #x7005) - (#xEDEE #x6FF5) - (#xEDED #x6FB5) - (#xEDEC #x6F88) - (#xEDEB #x6EBF) - (#xEDEA #x6E3C) - (#xEDE9 #x6E27) - (#xEDE8 #x6E5C) - (#xEDE7 #x6E39) - (#xEDE6 #x6DFC) - (#xEDE5 #x6DF2) - (#xEDE4 #x6DF8) - (#xEDE3 #x6DCF) - (#xEDE2 #x6DAC) - (#xEDE1 #x6D96) - (#xEDE0 #x6D6F) - (#xEDDF #x6D87) - (#xEDDE #x6D04) - (#xEDDD #x6CDA) - (#xEDDC #x6C6F) - (#xEDDB #x6C86) - (#xEDDA #x6C5C) - (#xEDD9 #x6C3F) - (#xEDD8 #x6BD6) - (#xEDD7 #x6AE4) - (#xEDD6 #x6AE2) - (#xEDD5 #x6A7E) - (#xEDD4 #x6A73) - (#xEDD3 #x6A46) - (#xEDD2 #x6A6B) - (#xEDD1 #x6A30) - (#xEDD0 #x69E2) - (#xEDCF #x6998) - (#xEDCE #xFA14) - (#xEDCD #x6968) - (#xEDCC #xFA13) - (#xEDCB #x68CF) - (#xEDCA #x6844) - (#xEDC9 #x6801) - (#xEDC8 #x67C0) - (#xEDC7 #x6852) - (#xEDC6 #x67BB) - (#xEDC5 #x6766) - (#xEDC4 #xF929) - (#xEDC3 #x670E) - (#xEDC2 #x66FA) - (#xEDC1 #x66BF) - (#xEDC0 #x66B2) - (#xEDBF #x66A0) - (#xEDBE #x6699) - (#xEDBD #x6673) - (#xEDBC #xFA12) - (#xEDBB #x6659) - (#xEDBA #x6657) - (#xEDB9 #x6665) - (#xEDB8 #x6624) - (#xEDB7 #x661E) - (#xEDB6 #x662E) - (#xEDB5 #x6609) - (#xEDB4 #x663B) - (#xEDB3 #x6615) - (#xEDB2 #x6600) - (#xEDB1 #x654E) - (#xEDB0 #x64CE) - (#xEDAF #x649D) - (#xEDAE #x6460) - (#xEDAD #x63F5) - (#xEDAC #x62A6) - (#xEDAB #x6213) - (#xEDAA #x6198) - (#xEDA9 #x6130) - (#xEDA8 #x6137) - (#xEDA7 #x6111) - (#xEDA6 #x60F2) - (#xEDA5 #x6120) - (#xEDA4 #x60D5) - (#xEDA3 #x60DE) - (#xEDA2 #x608A) - (#xEDA1 #x6085) - (#xEDA0 #x605D) - (#xED9F #x5FDE) - (#xED9E #x5FB7) - (#xED9D #x5F67) - (#xED9C #x5F34) - (#xED9B #x5F21) - (#xED9A #x5DD0) - (#xED99 #x5DB9) - (#xED98 #x5DB8) - (#xED97 #x5D6D) - (#xED96 #x5D42) - (#xED95 #xFA11) - (#xED94 #x5D53) - (#xED93 #x5D27) - (#xED92 #x5CF5) - (#xED91 #x5CBA) - (#xED90 #x5CA6) - (#xED8F #x5C1E) - (#xED8E #x5BEC) - (#xED8D #x5BD8) - (#xED8C #x752F) - (#xED8B #x5BC0) - (#xED8A #x5B56) - (#xED89 #x59BA) - (#xED88 #x59A4) - (#xED87 #x5963) - (#xED86 #x595D) - (#xED85 #x595B) - (#xED84 #x5953) - (#xED83 #x590B) - (#xED82 #x58B2) - (#xED81 #x589E) - (#xED80 #xFA10) - (#xED7E #xFA0F) - (#xED7D #x57C7) - (#xED7C #x57C8) - (#xED7B #x57AC) - (#xED7A #x5765) - (#xED79 #x5759) - (#xED78 #x5586) - (#xED77 #x54FF) - (#xED76 #x54A9) - (#xED75 #x548A) - (#xED74 #x549C) - (#xED73 #xFA0E) - (#xED72 #x53DD) - (#xED71 #x53B2) - (#xED70 #x5393) - (#xED6F #x5372) - (#xED6E #x5324) - (#xED6D #x5307) - (#xED6C #x5300) - (#xED6B #x52DB) - (#xED6A #x52C0) - (#xED69 #x52A6) - (#xED68 #x529C) - (#xED67 #x5215) - (#xED66 #x51EC) - (#xED65 #x51BE) - (#xED64 #x519D) - (#xED63 #x5164) - (#xED62 #x514A) - (#xED61 #x50D8) - (#xED60 #x50F4) - (#xED5F #x5094) - (#xED5E #x5042) - (#xED5D #x5070) - (#xED5C #x5046) - (#xED5B #x501E) - (#xED5A #x4FFF) - (#xED59 #x5022) - (#xED58 #x5040) - (#xED57 #x4FCD) - (#xED56 #x4F94) - (#xED55 #x4F9A) - (#xED54 #x4F8A) - (#xED53 #x4F92) - (#xED52 #x4F56) - (#xED51 #x4F39) - (#xED50 #x4F03) - (#xED4F #x4F00) - (#xED4E #x4EFC) - (#xED4D #x4EE1) - (#xED4C #x4E28) - (#xED4B #x5F45) - (#xED4A #x66FB) - (#xED49 #x92F9) - (#xED48 #x68C8) - (#xED47 #x6631) - (#xED46 #x70BB) - (#xED45 #x4FC9) - (#xED44 #x84DC) - (#xED43 #x9288) - (#xED42 #x9348) - (#xED41 #x891C) - (#xED40 #x7E8A) - (#xEA9E #x9FA0) - (#xEA40 #x9D5D) - (#xE99E #x9AF7) - (#xE940 #x9871) - (#xE89E #x965E) - (#xE840 #x9319) - (#xE79E #x8FF8) - (#xE740 #x8E47) - (#xE69E #x8B6B) - (#xE640 #x8966) - (#xE59E #x8759) - (#xE540 #x8541) - (#xE49E #x82D9) - (#xE440 #x968B) - (#xE39E #x7F3A) - (#xE340 #x7D02) - (#xE29E #x7B50) - (#xE240 #x78E7) - (#xE19E #x7670) - (#xE140 #x74E0) - (#xE09E #x71FC) - (#xE040 #x6F3E) - (#x9F9E #x6CBE) - (#x9F40 #x6A97) - (#x9E9E #x68CD) - (#x9E40 #x66C4) - (#x9D9E #x64BC) - (#x9D40 #x621E) - (#x9C9E #x609A) - (#x9C40 #x5ED6) - (#x9B9E #x5C53) - (#x9B40 #x5978) - (#x9A9E #x5709) - (#x9A40 #x54AB) - (#x999E #x8FA8) - (#x9940 #x50C9) - (#x9840 #x84EE) - (#x979E #x7483) - (#x9740 #x8AED) - (#x969E #x6E80) - (#x9640 #x6CD5) - (#x959E #x670D) - (#x9540 #x9F3B) - (#x949E #x9EA6) - (#x9440 #x5982) - (#x939E #x5230) - (#x9340 #x90B8) - (#x929E #x5BF5) - (#x9240 #x53E9) - (#x919E #x618E) - (#x9140 #x7E4A) - (#x909E #x88FE) - (#x9040 #x62ED) - (#x8F9E #x511F) - (#x8F40 #x5B97) - (#x8E9E #x6642) - (#x8E40 #x5BDF) - (#x8D9E #x8FBC) - (#x8D40 #x540E) - (#x8C9E #x6372) - (#x8C40 #x6398) - (#x8B9E #x4EAC) - (#x8B40 #x6A5F) - (#x8A9E #x8431) - (#x8A40 #x9B41) - (#x899E #x5FDC) - (#x8940 #x9662) - (#x879C #x222A) - (#x879B #x2229) - (#x879A #x2235) - (#x8799 #x22BF) - (#x8798 #x221F) - (#x8797 #x2220) - (#x8796 #x22A5) - (#x8795 #x221A) - (#x8794 #x2211) - (#x8793 #x222E) - (#x8792 #x222B) - (#x8791 #x2261) - (#x8790 #x2252) - (#x878F #x337C) - (#x878E #x337D) - (#x878D #x337E) - (#x878C #x3239) - (#x878B #x3232) - (#x878A #x3231) - (#x8789 #x32A8) - (#x8788 #x32A7) - (#x8787 #x32A6) - (#x8786 #x32A5) - (#x8785 #x32A4) - (#x8784 #x2121) - (#x8783 #x33CD) - (#x8782 #x2116) - (#x8781 #x301F) - (#x8780 #x301D) - (#x877E #x337B) - (#x8775 #x33A1) - (#x8774 #x33C4) - (#x8773 #x338F) - (#x8772 #x338E) - (#x8771 #x339E) - (#x8770 #x339D) - (#x876F #x339C) - (#x876E #x333B) - (#x876D #x334A) - (#x876C #x332B) - (#x876B #x3323) - (#x876A #x3326) - (#x8769 #x330D) - (#x8768 #x3357) - (#x8767 #x3351) - (#x8766 #x3336) - (#x8765 #x3303) - (#x8764 #x3327) - (#x8763 #x3318) - (#x8762 #x334D) - (#x8761 #x3322) - (#x8760 #x3314) - (#x875F #x3349) - (#x875D #x2169) - (#x875C #x2168) - (#x875B #x2167) - (#x875A #x2166) - (#x8759 #x2165) - (#x8758 #x2164) - (#x8757 #x2163) - (#x8756 #x2162) - (#x8755 #x2161) - (#x8754 #x2160) - (#x8753 #x2473) - (#x8752 #x2472) - (#x8751 #x2471) - (#x8750 #x2470) - (#x874F #x246F) - (#x874E #x246E) - (#x874D #x246D) - (#x874C #x246C) - (#x874B #x246B) - (#x874A #x246A) - (#x8749 #x2469) - (#x8748 #x2468) - (#x8747 #x2467) - (#x8746 #x2466) - (#x8745 #x2465) - (#x8744 #x2464) - (#x8743 #x2463) - (#x8742 #x2462) - (#x8741 #x2461) - (#x8740 #x2460) - (#x8440 #x410) - (#x8340 #x30A1) - (#x819E #x25C7) - (#x8140 #x3000) - )) - -(defvar *eucjp-only* - '((#xFEFE #xE3AB) - (#xFEFD #xE3AA) - (#xFEFC #xE3A9) - (#xFEFB #xE3A8) - (#xFEFA #xE3A7) - (#xFEF9 #xE3A6) - (#xFEF8 #xE3A5) - (#xFEF7 #xE3A4) - (#xFEF6 #xE3A3) - (#xFEF5 #xE3A2) - (#xFEF4 #xE3A1) - (#xFEF3 #xE3A0) - (#xFEF2 #xE39F) - (#xFEF1 #xE39E) - (#xFEF0 #xE39D) - (#xFEEF #xE39C) - (#xFEEE #xE39B) - (#xFEED #xE39A) - (#xFEEC #xE399) - (#xFEEB #xE398) - (#xFEEA #xE397) - (#xFEE9 #xE396) - (#xFEE8 #xE395) - (#xFEE7 #xE394) - (#xFEE6 #xE393) - (#xFEE5 #xE392) - (#xFEE4 #xE391) - (#xFEE3 #xE390) - (#xFEE2 #xE38F) - (#xFEE1 #xE38E) - (#xFEE0 #xE38D) - (#xFEDF #xE38C) - (#xFEDE #xE38B) - (#xFEDD #xE38A) - (#xFEDC #xE389) - (#xFEDB #xE388) - (#xFEDA #xE387) - (#xFED9 #xE386) - (#xFED8 #xE385) - (#xFED7 #xE384) - (#xFED6 #xE383) - (#xFED5 #xE382) - (#xFED4 #xE381) - (#xFED3 #xE380) - (#xFED2 #xE37F) - (#xFED1 #xE37E) - (#xFED0 #xE37D) - (#xFECF #xE37C) - (#xFECE #xE37B) - (#xFECD #xE37A) - (#xFECC #xE379) - (#xFECB #xE378) - (#xFECA #xE377) - (#xFEC9 #xE376) - (#xFEC8 #xE375) - (#xFEC7 #xE374) - (#xFEC6 #xE373) - (#xFEC5 #xE372) - (#xFEC4 #xE371) - (#xFEC3 #xE370) - (#xFEC2 #xE36F) - (#xFEC1 #xE36E) - (#xFEC0 #xE36D) - (#xFEBF #xE36C) - (#xFEBE #xE36B) - (#xFEBD #xE36A) - (#xFEBC #xE369) - (#xFEBB #xE368) - (#xFEBA #xE367) - (#xFEB9 #xE366) - (#xFEB8 #xE365) - (#xFEB7 #xE364) - (#xFEB6 #xE363) - (#xFEB5 #xE362) - (#xFEB4 #xE361) - (#xFEB3 #xE360) - (#xFEB2 #xE35F) - (#xFEB1 #xE35E) - (#xFEB0 #xE35D) - (#xFEAF #xE35C) - (#xFEAE #xE35B) - (#xFEAD #xE35A) - (#xFEAC #xE359) - (#xFEAB #xE358) - (#xFEAA #xE357) - (#xFEA9 #xE356) - (#xFEA8 #xE355) - (#xFEA7 #xE354) - (#xFEA6 #xE353) - (#xFEA5 #xE352) - (#xFEA4 #xE351) - (#xFEA3 #xE350) - (#xFEA2 #xE34F) - (#xFEA1 #xE34E) - (#xFDFE #xE34D) - (#xFDFD #xE34C) - (#xFDFC #xE34B) - (#xFDFB #xE34A) - (#xFDFA #xE349) - (#xFDF9 #xE348) - (#xFDF8 #xE347) - (#xFDF7 #xE346) - (#xFDF6 #xE345) - (#xFDF5 #xE344) - (#xFDF4 #xE343) - (#xFDF3 #xE342) - (#xFDF2 #xE341) - (#xFDF1 #xE340) - (#xFDF0 #xE33F) - (#xFDEF #xE33E) - (#xFDEE #xE33D) - (#xFDED #xE33C) - (#xFDEC #xE33B) - (#xFDEB #xE33A) - (#xFDEA #xE339) - (#xFDE9 #xE338) - (#xFDE8 #xE337) - (#xFDE7 #xE336) - (#xFDE6 #xE335) - (#xFDE5 #xE334) - (#xFDE4 #xE333) - (#xFDE3 #xE332) - (#xFDE2 #xE331) - (#xFDE1 #xE330) - (#xFDE0 #xE32F) - (#xFDDF #xE32E) - (#xFDDE #xE32D) - (#xFDDD #xE32C) - (#xFDDC #xE32B) - (#xFDDB #xE32A) - (#xFDDA #xE329) - (#xFDD9 #xE328) - (#xFDD8 #xE327) - (#xFDD7 #xE326) - (#xFDD6 #xE325) - (#xFDD5 #xE324) - (#xFDD4 #xE323) - (#xFDD3 #xE322) - (#xFDD2 #xE321) - (#xFDD1 #xE320) - (#xFDD0 #xE31F) - (#xFDCF #xE31E) - (#xFDCE #xE31D) - (#xFDCD #xE31C) - (#xFDCC #xE31B) - (#xFDCB #xE31A) - (#xFDCA #xE319) - (#xFDC9 #xE318) - (#xFDC8 #xE317) - (#xFDC7 #xE316) - (#xFDC6 #xE315) - (#xFDC5 #xE314) - (#xFDC4 #xE313) - (#xFDC3 #xE312) - (#xFDC2 #xE311) - (#xFDC1 #xE310) - (#xFDC0 #xE30F) - (#xFDBF #xE30E) - (#xFDBE #xE30D) - (#xFDBD #xE30C) - (#xFDBC #xE30B) - (#xFDBB #xE30A) - (#xFDBA #xE309) - (#xFDB9 #xE308) - (#xFDB8 #xE307) - (#xFDB7 #xE306) - (#xFDB6 #xE305) - (#xFDB5 #xE304) - (#xFDB4 #xE303) - (#xFDB3 #xE302) - (#xFDB2 #xE301) - (#xFDB1 #xE300) - (#xFDB0 #xE2FF) - (#xFDAF #xE2FE) - (#xFDAE #xE2FD) - (#xFDAD #xE2FC) - (#xFDAC #xE2FB) - (#xFDAB #xE2FA) - (#xFDAA #xE2F9) - (#xFDA9 #xE2F8) - (#xFDA8 #xE2F7) - (#xFDA7 #xE2F6) - (#xFDA6 #xE2F5) - (#xFDA5 #xE2F4) - (#xFDA4 #xE2F3) - (#xFDA3 #xE2F2) - (#xFDA2 #xE2F1) - (#xFDA1 #xE2F0) - (#xFCFE #xE2EF) - (#xFCFD #xE2EE) - (#xFCFC #xE2ED) - (#xFCFB #xE2EC) - (#xFCFA #xE2EB) - (#xFCF9 #xE2EA) - (#xFCF8 #xE2E9) - (#xFCF7 #xE2E8) - (#xFCF6 #xE2E7) - (#xFCF5 #xE2E6) - (#xFCF4 #xE2E5) - (#xFCF3 #xE2E4) - (#xFCF2 #xE2E3) - (#xFCF1 #xE2E2) - (#xFCF0 #xE2E1) - (#xFCEF #xE2E0) - (#xFCEE #xE2DF) - (#xFCED #xE2DE) - (#xFCEC #xE2DD) - (#xFCEB #xE2DC) - (#xFCEA #xE2DB) - (#xFCE9 #xE2DA) - (#xFCE8 #xE2D9) - (#xFCE7 #xE2D8) - (#xFCE6 #xE2D7) - (#xFCE5 #xE2D6) - (#xFCE4 #xE2D5) - (#xFCE3 #xE2D4) - (#xFCE2 #xE2D3) - (#xFCE1 #xE2D2) - (#xFCE0 #xE2D1) - (#xFCDF #xE2D0) - (#xFCDE #xE2CF) - (#xFCDD #xE2CE) - (#xFCDC #xE2CD) - (#xFCDB #xE2CC) - (#xFCDA #xE2CB) - (#xFCD9 #xE2CA) - (#xFCD8 #xE2C9) - (#xFCD7 #xE2C8) - (#xFCD6 #xE2C7) - (#xFCD5 #xE2C6) - (#xFCD4 #xE2C5) - (#xFCD3 #xE2C4) - (#xFCD2 #xE2C3) - (#xFCD1 #xE2C2) - (#xFCD0 #xE2C1) - (#xFCCF #xE2C0) - (#xFCCE #xE2BF) - (#xFCCD #xE2BE) - (#xFCCC #xE2BD) - (#xFCCB #xE2BC) - (#xFCCA #xE2BB) - (#xFCC9 #xE2BA) - (#xFCC8 #xE2B9) - (#xFCC7 #xE2B8) - (#xFCC6 #xE2B7) - (#xFCC5 #xE2B6) - (#xFCC4 #xE2B5) - (#xFCC3 #xE2B4) - (#xFCC2 #xE2B3) - (#xFCC1 #xE2B2) - (#xFCC0 #xE2B1) - (#xFCBF #xE2B0) - (#xFCBE #xE2AF) - (#xFCBD #xE2AE) - (#xFCBC #xE2AD) - (#xFCBB #xE2AC) - (#xFCBA #xE2AB) - (#xFCB9 #xE2AA) - (#xFCB8 #xE2A9) - (#xFCB7 #xE2A8) - (#xFCB6 #xE2A7) - (#xFCB5 #xE2A6) - (#xFCB4 #xE2A5) - (#xFCB3 #xE2A4) - (#xFCB2 #xE2A3) - (#xFCB1 #xE2A2) - (#xFCB0 #xE2A1) - (#xFCAF #xE2A0) - (#xFCAE #xE29F) - (#xFCAD #xE29E) - (#xFCAC #xE29D) - (#xFCAB #xE29C) - (#xFCAA #xE29B) - (#xFCA9 #xE29A) - (#xFCA8 #xE299) - (#xFCA7 #xE298) - (#xFCA6 #xE297) - (#xFCA5 #xE296) - (#xFCA4 #xE295) - (#xFCA3 #xE294) - (#xFCA2 #xE293) - (#xFCA1 #xE292) - (#xFBFE #xE291) - (#xFBFD #xE290) - (#xFBFC #xE28F) - (#xFBFB #xE28E) - (#xFBFA #xE28D) - (#xFBF9 #xE28C) - (#xFBF8 #xE28B) - (#xFBF7 #xE28A) - (#xFBF6 #xE289) - (#xFBF5 #xE288) - (#xFBF4 #xE287) - (#xFBF3 #xE286) - (#xFBF2 #xE285) - (#xFBF1 #xE284) - (#xFBF0 #xE283) - (#xFBEF #xE282) - (#xFBEE #xE281) - (#xFBED #xE280) - (#xFBEC #xE27F) - (#xFBEB #xE27E) - (#xFBEA #xE27D) - (#xFBE9 #xE27C) - (#xFBE8 #xE27B) - (#xFBE7 #xE27A) - (#xFBE6 #xE279) - (#xFBE5 #xE278) - (#xFBE4 #xE277) - (#xFBE3 #xE276) - (#xFBE2 #xE275) - (#xFBE1 #xE274) - (#xFBE0 #xE273) - (#xFBDF #xE272) - (#xFBDE #xE271) - (#xFBDD #xE270) - (#xFBDC #xE26F) - (#xFBDB #xE26E) - (#xFBDA #xE26D) - (#xFBD9 #xE26C) - (#xFBD8 #xE26B) - (#xFBD7 #xE26A) - (#xFBD6 #xE269) - (#xFBD5 #xE268) - (#xFBD4 #xE267) - (#xFBD3 #xE266) - (#xFBD2 #xE265) - (#xFBD1 #xE264) - (#xFBD0 #xE263) - (#xFBCF #xE262) - (#xFBCE #xE261) - (#xFBCD #xE260) - (#xFBCC #xE25F) - (#xFBCB #xE25E) - (#xFBCA #xE25D) - (#xFBC9 #xE25C) - (#xFBC8 #xE25B) - (#xFBC7 #xE25A) - (#xFBC6 #xE259) - (#xFBC5 #xE258) - (#xFBC4 #xE257) - (#xFBC3 #xE256) - (#xFBC2 #xE255) - (#xFBC1 #xE254) - (#xFBC0 #xE253) - (#xFBBF #xE252) - (#xFBBE #xE251) - (#xFBBD #xE250) - (#xFBBC #xE24F) - (#xFBBB #xE24E) - (#xFBBA #xE24D) - (#xFBB9 #xE24C) - (#xFBB8 #xE24B) - (#xFBB7 #xE24A) - (#xFBB6 #xE249) - (#xFBB5 #xE248) - (#xFBB4 #xE247) - (#xFBB3 #xE246) - (#xFBB2 #xE245) - (#xFBB1 #xE244) - (#xFBB0 #xE243) - (#xFBAF #xE242) - (#xFBAE #xE241) - (#xFBAD #xE240) - (#xFBAC #xE23F) - (#xFBAB #xE23E) - (#xFBAA #xE23D) - (#xFBA9 #xE23C) - (#xFBA8 #xE23B) - (#xFBA7 #xE23A) - (#xFBA6 #xE239) - (#xFBA5 #xE238) - (#xFBA4 #xE237) - (#xFBA3 #xE236) - (#xFBA2 #xE235) - (#xFBA1 #xE234) - (#xFAFE #xE233) - (#xFAFD #xE232) - (#xFAFC #xE231) - (#xFAFB #xE230) - (#xFAFA #xE22F) - (#xFAF9 #xE22E) - (#xFAF8 #xE22D) - (#xFAF7 #xE22C) - (#xFAF6 #xE22B) - (#xFAF5 #xE22A) - (#xFAF4 #xE229) - (#xFAF3 #xE228) - (#xFAF2 #xE227) - (#xFAF1 #xE226) - (#xFAF0 #xE225) - (#xFAEF #xE224) - (#xFAEE #xE223) - (#xFAED #xE222) - (#xFAEC #xE221) - (#xFAEB #xE220) - (#xFAEA #xE21F) - (#xFAE9 #xE21E) - (#xFAE8 #xE21D) - (#xFAE7 #xE21C) - (#xFAE6 #xE21B) - (#xFAE5 #xE21A) - (#xFAE4 #xE219) - (#xFAE3 #xE218) - (#xFAE2 #xE217) - (#xFAE1 #xE216) - (#xFAE0 #xE215) - (#xFADF #xE214) - (#xFADE #xE213) - (#xFADD #xE212) - (#xFADC #xE211) - (#xFADB #xE210) - (#xFADA #xE20F) - (#xFAD9 #xE20E) - (#xFAD8 #xE20D) - (#xFAD7 #xE20C) - (#xFAD6 #xE20B) - (#xFAD5 #xE20A) - (#xFAD4 #xE209) - (#xFAD3 #xE208) - (#xFAD2 #xE207) - (#xFAD1 #xE206) - (#xFAD0 #xE205) - (#xFACF #xE204) - (#xFACE #xE203) - (#xFACD #xE202) - (#xFACC #xE201) - (#xFACB #xE200) - (#xFACA #xE1FF) - (#xFAC9 #xE1FE) - (#xFAC8 #xE1FD) - (#xFAC7 #xE1FC) - (#xFAC6 #xE1FB) - (#xFAC5 #xE1FA) - (#xFAC4 #xE1F9) - (#xFAC3 #xE1F8) - (#xFAC2 #xE1F7) - (#xFAC1 #xE1F6) - (#xFAC0 #xE1F5) - (#xFABF #xE1F4) - (#xFABE #xE1F3) - (#xFABD #xE1F2) - (#xFABC #xE1F1) - (#xFABB #xE1F0) - (#xFABA #xE1EF) - (#xFAB9 #xE1EE) - (#xFAB8 #xE1ED) - (#xFAB7 #xE1EC) - (#xFAB6 #xE1EB) - (#xFAB5 #xE1EA) - (#xFAB4 #xE1E9) - (#xFAB3 #xE1E8) - (#xFAB2 #xE1E7) - (#xFAB1 #xE1E6) - (#xFAB0 #xE1E5) - (#xFAAF #xE1E4) - (#xFAAE #xE1E3) - (#xFAAD #xE1E2) - (#xFAAC #xE1E1) - (#xFAAB #xE1E0) - (#xFAAA #xE1DF) - (#xFAA9 #xE1DE) - (#xFAA8 #xE1DD) - (#xFAA7 #xE1DC) - (#xFAA6 #xE1DB) - (#xFAA5 #xE1DA) - (#xFAA4 #xE1D9) - (#xFAA3 #xE1D8) - (#xFAA2 #xE1D7) - (#xFAA1 #xE1D6) - (#xF9FE #xE1D5) - (#xF9FD #xE1D4) - (#xF9FC #xE1D3) - (#xF9FB #xE1D2) - (#xF9FA #xE1D1) - (#xF9F9 #xE1D0) - (#xF9F8 #xE1CF) - (#xF9F7 #xE1CE) - (#xF9F6 #xE1CD) - (#xF9F5 #xE1CC) - (#xF9F4 #xE1CB) - (#xF9F3 #xE1CA) - (#xF9F2 #xE1C9) - (#xF9F1 #xE1C8) - (#xF9F0 #xE1C7) - (#xF9EF #xE1C6) - (#xF9EE #xE1C5) - (#xF9ED #xE1C4) - (#xF9EC #xE1C3) - (#xF9EB #xE1C2) - (#xF9EA #xE1C1) - (#xF9E9 #xE1C0) - (#xF9E8 #xE1BF) - (#xF9E7 #xE1BE) - (#xF9E6 #xE1BD) - (#xF9E5 #xE1BC) - (#xF9E4 #xE1BB) - (#xF9E3 #xE1BA) - (#xF9E2 #xE1B9) - (#xF9E1 #xE1B8) - (#xF9E0 #xE1B7) - (#xF9DF #xE1B6) - (#xF9DE #xE1B5) - (#xF9DD #xE1B4) - (#xF9DC #xE1B3) - (#xF9DB #xE1B2) - (#xF9DA #xE1B1) - (#xF9D9 #xE1B0) - (#xF9D8 #xE1AF) - (#xF9D7 #xE1AE) - (#xF9D6 #xE1AD) - (#xF9D5 #xE1AC) - (#xF9D4 #xE1AB) - (#xF9D3 #xE1AA) - (#xF9D2 #xE1A9) - (#xF9D1 #xE1A8) - (#xF9D0 #xE1A7) - (#xF9CF #xE1A6) - (#xF9CE #xE1A5) - (#xF9CD #xE1A4) - (#xF9CC #xE1A3) - (#xF9CB #xE1A2) - (#xF9CA #xE1A1) - (#xF9C9 #xE1A0) - (#xF9C8 #xE19F) - (#xF9C7 #xE19E) - (#xF9C6 #xE19D) - (#xF9C5 #xE19C) - (#xF9C4 #xE19B) - (#xF9C3 #xE19A) - (#xF9C2 #xE199) - (#xF9C1 #xE198) - (#xF9C0 #xE197) - (#xF9BF #xE196) - (#xF9BE #xE195) - (#xF9BD #xE194) - (#xF9BC #xE193) - (#xF9BB #xE192) - (#xF9BA #xE191) - (#xF9B9 #xE190) - (#xF9B8 #xE18F) - (#xF9B7 #xE18E) - (#xF9B6 #xE18D) - (#xF9B5 #xE18C) - (#xF9B4 #xE18B) - (#xF9B3 #xE18A) - (#xF9B2 #xE189) - (#xF9B1 #xE188) - (#xF9B0 #xE187) - (#xF9AF #xE186) - (#xF9AE #xE185) - (#xF9AD #xE184) - (#xF9AC #xE183) - (#xF9AB #xE182) - (#xF9AA #xE181) - (#xF9A9 #xE180) - (#xF9A8 #xE17F) - (#xF9A7 #xE17E) - (#xF9A6 #xE17D) - (#xF9A5 #xE17C) - (#xF9A4 #xE17B) - (#xF9A3 #xE17A) - (#xF9A2 #xE179) - (#xF9A1 #xE178) - (#xF8FE #xE177) - (#xF8FD #xE176) - (#xF8FC #xE175) - (#xF8FB #xE174) - (#xF8FA #xE173) - (#xF8F9 #xE172) - (#xF8F8 #xE171) - (#xF8F7 #xE170) - (#xF8F6 #xE16F) - (#xF8F5 #xE16E) - (#xF8F4 #xE16D) - (#xF8F3 #xE16C) - (#xF8F2 #xE16B) - (#xF8F1 #xE16A) - (#xF8F0 #xE169) - (#xF8EF #xE168) - (#xF8EE #xE167) - (#xF8ED #xE166) - (#xF8EC #xE165) - (#xF8EB #xE164) - (#xF8EA #xE163) - (#xF8E9 #xE162) - (#xF8E8 #xE161) - (#xF8E7 #xE160) - (#xF8E6 #xE15F) - (#xF8E5 #xE15E) - (#xF8E4 #xE15D) - (#xF8E3 #xE15C) - (#xF8E2 #xE15B) - (#xF8E1 #xE15A) - (#xF8E0 #xE159) - (#xF8DF #xE158) - (#xF8DE #xE157) - (#xF8DD #xE156) - (#xF8DC #xE155) - (#xF8DB #xE154) - (#xF8DA #xE153) - (#xF8D9 #xE152) - (#xF8D8 #xE151) - (#xF8D7 #xE150) - (#xF8D6 #xE14F) - (#xF8D5 #xE14E) - (#xF8D4 #xE14D) - (#xF8D3 #xE14C) - (#xF8D2 #xE14B) - (#xF8D1 #xE14A) - (#xF8D0 #xE149) - (#xF8CF #xE148) - (#xF8CE #xE147) - (#xF8CD #xE146) - (#xF8CC #xE145) - (#xF8CB #xE144) - (#xF8CA #xE143) - (#xF8C9 #xE142) - (#xF8C8 #xE141) - (#xF8C7 #xE140) - (#xF8C6 #xE13F) - (#xF8C5 #xE13E) - (#xF8C4 #xE13D) - (#xF8C3 #xE13C) - (#xF8C2 #xE13B) - (#xF8C1 #xE13A) - (#xF8C0 #xE139) - (#xF8BF #xE138) - (#xF8BE #xE137) - (#xF8BD #xE136) - (#xF8BC #xE135) - (#xF8BB #xE134) - (#xF8BA #xE133) - (#xF8B9 #xE132) - (#xF8B8 #xE131) - (#xF8B7 #xE130) - (#xF8B6 #xE12F) - (#xF8B5 #xE12E) - (#xF8B4 #xE12D) - (#xF8B3 #xE12C) - (#xF8B2 #xE12B) - (#xF8B1 #xE12A) - (#xF8B0 #xE129) - (#xF8AF #xE128) - (#xF8AE #xE127) - (#xF8AD #xE126) - (#xF8AC #xE125) - (#xF8AB #xE124) - (#xF8AA #xE123) - (#xF8A9 #xE122) - (#xF8A8 #xE121) - (#xF8A7 #xE120) - (#xF8A6 #xE11F) - (#xF8A5 #xE11E) - (#xF8A4 #xE11D) - (#xF8A3 #xE11C) - (#xF8A2 #xE11B) - (#xF8A1 #xE11A) - (#xF7FE #xE119) - (#xF7FD #xE118) - (#xF7FC #xE117) - (#xF7FB #xE116) - (#xF7FA #xE115) - (#xF7F9 #xE114) - (#xF7F8 #xE113) - (#xF7F7 #xE112) - (#xF7F6 #xE111) - (#xF7F5 #xE110) - (#xF7F4 #xE10F) - (#xF7F3 #xE10E) - (#xF7F2 #xE10D) - (#xF7F1 #xE10C) - (#xF7F0 #xE10B) - (#xF7EF #xE10A) - (#xF7EE #xE109) - (#xF7ED #xE108) - (#xF7EC #xE107) - (#xF7EB #xE106) - (#xF7EA #xE105) - (#xF7E9 #xE104) - (#xF7E8 #xE103) - (#xF7E7 #xE102) - (#xF7E6 #xE101) - (#xF7E5 #xE100) - (#xF7E4 #xE0FF) - (#xF7E3 #xE0FE) - (#xF7E2 #xE0FD) - (#xF7E1 #xE0FC) - (#xF7E0 #xE0FB) - (#xF7DF #xE0FA) - (#xF7DE #xE0F9) - (#xF7DD #xE0F8) - (#xF7DC #xE0F7) - (#xF7DB #xE0F6) - (#xF7DA #xE0F5) - (#xF7D9 #xE0F4) - (#xF7D8 #xE0F3) - (#xF7D7 #xE0F2) - (#xF7D6 #xE0F1) - (#xF7D5 #xE0F0) - (#xF7D4 #xE0EF) - (#xF7D3 #xE0EE) - (#xF7D2 #xE0ED) - (#xF7D1 #xE0EC) - (#xF7D0 #xE0EB) - (#xF7CF #xE0EA) - (#xF7CE #xE0E9) - (#xF7CD #xE0E8) - (#xF7CC #xE0E7) - (#xF7CB #xE0E6) - (#xF7CA #xE0E5) - (#xF7C9 #xE0E4) - (#xF7C8 #xE0E3) - (#xF7C7 #xE0E2) - (#xF7C6 #xE0E1) - (#xF7C5 #xE0E0) - (#xF7C4 #xE0DF) - (#xF7C3 #xE0DE) - (#xF7C2 #xE0DD) - (#xF7C1 #xE0DC) - (#xF7C0 #xE0DB) - (#xF7BF #xE0DA) - (#xF7BE #xE0D9) - (#xF7BD #xE0D8) - (#xF7BC #xE0D7) - (#xF7BB #xE0D6) - (#xF7BA #xE0D5) - (#xF7B9 #xE0D4) - (#xF7B8 #xE0D3) - (#xF7B7 #xE0D2) - (#xF7B6 #xE0D1) - (#xF7B5 #xE0D0) - (#xF7B4 #xE0CF) - (#xF7B3 #xE0CE) - (#xF7B2 #xE0CD) - (#xF7B1 #xE0CC) - (#xF7B0 #xE0CB) - (#xF7AF #xE0CA) - (#xF7AE #xE0C9) - (#xF7AD #xE0C8) - (#xF7AC #xE0C7) - (#xF7AB #xE0C6) - (#xF7AA #xE0C5) - (#xF7A9 #xE0C4) - (#xF7A8 #xE0C3) - (#xF7A7 #xE0C2) - (#xF7A6 #xE0C1) - (#xF7A5 #xE0C0) - (#xF7A4 #xE0BF) - (#xF7A3 #xE0BE) - (#xF7A2 #xE0BD) - (#xF7A1 #xE0BC) - (#xF6FE #xE0BB) - (#xF6FD #xE0BA) - (#xF6FC #xE0B9) - (#xF6FB #xE0B8) - (#xF6FA #xE0B7) - (#xF6F9 #xE0B6) - (#xF6F8 #xE0B5) - (#xF6F7 #xE0B4) - (#xF6F6 #xE0B3) - (#xF6F5 #xE0B2) - (#xF6F4 #xE0B1) - (#xF6F3 #xE0B0) - (#xF6F2 #xE0AF) - (#xF6F1 #xE0AE) - (#xF6F0 #xE0AD) - (#xF6EF #xE0AC) - (#xF6EE #xE0AB) - (#xF6ED #xE0AA) - (#xF6EC #xE0A9) - (#xF6EB #xE0A8) - (#xF6EA #xE0A7) - (#xF6E9 #xE0A6) - (#xF6E8 #xE0A5) - (#xF6E7 #xE0A4) - (#xF6E6 #xE0A3) - (#xF6E5 #xE0A2) - (#xF6E4 #xE0A1) - (#xF6E3 #xE0A0) - (#xF6E2 #xE09F) - (#xF6E1 #xE09E) - (#xF6E0 #xE09D) - (#xF6DF #xE09C) - (#xF6DE #xE09B) - (#xF6DD #xE09A) - (#xF6DC #xE099) - (#xF6DB #xE098) - (#xF6DA #xE097) - (#xF6D9 #xE096) - (#xF6D8 #xE095) - (#xF6D7 #xE094) - (#xF6D6 #xE093) - (#xF6D5 #xE092) - (#xF6D4 #xE091) - (#xF6D3 #xE090) - (#xF6D2 #xE08F) - (#xF6D1 #xE08E) - (#xF6D0 #xE08D) - (#xF6CF #xE08C) - (#xF6CE #xE08B) - (#xF6CD #xE08A) - (#xF6CC #xE089) - (#xF6CB #xE088) - (#xF6CA #xE087) - (#xF6C9 #xE086) - (#xF6C8 #xE085) - (#xF6C7 #xE084) - (#xF6C6 #xE083) - (#xF6C5 #xE082) - (#xF6C4 #xE081) - (#xF6C3 #xE080) - (#xF6C2 #xE07F) - (#xF6C1 #xE07E) - (#xF6C0 #xE07D) - (#xF6BF #xE07C) - (#xF6BE #xE07B) - (#xF6BD #xE07A) - (#xF6BC #xE079) - (#xF6BB #xE078) - (#xF6BA #xE077) - (#xF6B9 #xE076) - (#xF6B8 #xE075) - (#xF6B7 #xE074) - (#xF6B6 #xE073) - (#xF6B5 #xE072) - (#xF6B4 #xE071) - (#xF6B3 #xE070) - (#xF6B2 #xE06F) - (#xF6B1 #xE06E) - (#xF6B0 #xE06D) - (#xF6AF #xE06C) - (#xF6AE #xE06B) - (#xF6AD #xE06A) - (#xF6AC #xE069) - (#xF6AB #xE068) - (#xF6AA #xE067) - (#xF6A9 #xE066) - (#xF6A8 #xE065) - (#xF6A7 #xE064) - (#xF6A6 #xE063) - (#xF6A5 #xE062) - (#xF6A4 #xE061) - (#xF6A3 #xE060) - (#xF6A2 #xE05F) - (#xF6A1 #xE05E) - (#xF5FE #xE05D) - (#xF5FD #xE05C) - (#xF5FC #xE05B) - (#xF5FB #xE05A) - (#xF5FA #xE059) - (#xF5F9 #xE058) - (#xF5F8 #xE057) - (#xF5F7 #xE056) - (#xF5F6 #xE055) - (#xF5F5 #xE054) - (#xF5F4 #xE053) - (#xF5F3 #xE052) - (#xF5F2 #xE051) - (#xF5F1 #xE050) - (#xF5F0 #xE04F) - (#xF5EF #xE04E) - (#xF5EE #xE04D) - (#xF5ED #xE04C) - (#xF5EC #xE04B) - (#xF5EB #xE04A) - (#xF5EA #xE049) - (#xF5E9 #xE048) - (#xF5E8 #xE047) - (#xF5E7 #xE046) - (#xF5E6 #xE045) - (#xF5E5 #xE044) - (#xF5E4 #xE043) - (#xF5E3 #xE042) - (#xF5E2 #xE041) - (#xF5E1 #xE040) - (#xF5E0 #xE03F) - (#xF5DF #xE03E) - (#xF5DE #xE03D) - (#xF5DD #xE03C) - (#xF5DC #xE03B) - (#xF5DB #xE03A) - (#xF5DA #xE039) - (#xF5D9 #xE038) - (#xF5D8 #xE037) - (#xF5D7 #xE036) - (#xF5D6 #xE035) - (#xF5D5 #xE034) - (#xF5D4 #xE033) - (#xF5D3 #xE032) - (#xF5D2 #xE031) - (#xF5D1 #xE030) - (#xF5D0 #xE02F) - (#xF5CF #xE02E) - (#xF5CE #xE02D) - (#xF5CD #xE02C) - (#xF5CC #xE02B) - (#xF5CB #xE02A) - (#xF5CA #xE029) - (#xF5C9 #xE028) - (#xF5C8 #xE027) - (#xF5C7 #xE026) - (#xF5C6 #xE025) - (#xF5C5 #xE024) - (#xF5C4 #xE023) - (#xF5C3 #xE022) - (#xF5C2 #xE021) - (#xF5C1 #xE020) - (#xF5C0 #xE01F) - (#xF5BF #xE01E) - (#xF5BE #xE01D) - (#xF5BD #xE01C) - (#xF5BC #xE01B) - (#xF5BB #xE01A) - (#xF5BA #xE019) - (#xF5B9 #xE018) - (#xF5B8 #xE017) - (#xF5B7 #xE016) - (#xF5B6 #xE015) - (#xF5B5 #xE014) - (#xF5B4 #xE013) - (#xF5B3 #xE012) - (#xF5B2 #xE011) - (#xF5B1 #xE010) - (#xF5B0 #xE00F) - (#xF5AF #xE00E) - (#xF5AE #xE00D) - (#xF5AD #xE00C) - (#xF5AC #xE00B) - (#xF5AB #xE00A) - (#xF5AA #xE009) - (#xF5A9 #xE008) - (#xF5A8 #xE007) - (#xF5A7 #xE006) - (#xF5A6 #xE005) - (#xF5A5 #xE004) - (#xF5A4 #xE003) - (#xF5A3 #xE002) - (#xF5A2 #xE001) - (#xF5A1 #xE000) - )) - -(defvar *eucjp* - '((#x8FA2AF #x2D8) - (#x8FA2B0 #x2C7) - (#x8FA2B1 #xB8) - (#x8FA2B2 #x2D9) - (#x8FA2B3 #x2DD) - (#x8FA2B4 #xAF) - (#x8FA2B5 #x2DB) - (#x8FA2B6 #x2DA) - (#x8FA2B7 #xFF5E) - (#x8FA2B8 #x384) - (#x8FA2B9 #x385) - (#x8FA2C2 #xA1) - (#x8FA2C3 #xA6) - (#x8FA2C4 #xBF) - (#x8FA2EB #xBA) - (#x8FA2EC #xAA) - (#x8FA2ED #xA9) - (#x8FA2EE #xAE) - (#x8FA2EF #x2122) - (#x8FA2F0 #xA4) - (#x8FA2F1 #x2116) - (#x8FA6E1 #x386) - (#x8FA6E2 #x388) - (#x8FA6E3 #x389) - (#x8FA6E4 #x38A) - (#x8FA6E5 #x3AA) - (#x8FA6E7 #x38C) - (#x8FA6E9 #x38E) - (#x8FA6EA #x3AB) - (#x8FA6EC #x38F) - (#x8FA6F1 #x3AC) - (#x8FA6F2 #x3AD) - (#x8FA6F3 #x3AE) - (#x8FA6F4 #x3AF) - (#x8FA6F5 #x3CA) - (#x8FA6F6 #x390) - (#x8FA6F7 #x3CC) - (#x8FA6F8 #x3C2) - (#x8FA6F9 #x3CD) - (#x8FA6FA #x3CB) - (#x8FA6FB #x3B0) - (#x8FA6FC #x3CE) - (#x8FA7C2 #x402) - (#x8FA7C3 #x403) - (#x8FA7C4 #x404) - (#x8FA7C5 #x405) - (#x8FA7C6 #x406) - (#x8FA7C7 #x407) - (#x8FA7C8 #x408) - (#x8FA7C9 #x409) - (#x8FA7CA #x40A) - (#x8FA7CB #x40B) - (#x8FA7CC #x40C) - (#x8FA7CD #x40E) - (#x8FA7CE #x40F) - (#x8FA7F2 #x452) - (#x8FA7F3 #x453) - (#x8FA7F4 #x454) - (#x8FA7F5 #x455) - (#x8FA7F6 #x456) - (#x8FA7F7 #x457) - (#x8FA7F8 #x458) - (#x8FA7F9 #x459) - (#x8FA7FA #x45A) - (#x8FA7FB #x45B) - (#x8FA7FC #x45C) - (#x8FA7FD #x45E) - (#x8FA7FE #x45F) - (#x8FA9A1 #xC6) - (#x8FA9A2 #x110) - (#x8FA9A4 #x126) - (#x8FA9A6 #x132) - (#x8FA9A8 #x141) - (#x8FA9A9 #x13F) - (#x8FA9AB #x14A) - (#x8FA9AC #xD8) - (#x8FA9AD #x152) - (#x8FA9AF #x166) - (#x8FA9B0 #xDE) - (#x8FA9C1 #xE6) - (#x8FA9C2 #x111) - (#x8FA9C3 #xF0) - (#x8FA9C4 #x127) - (#x8FA9C5 #x131) - (#x8FA9C6 #x133) - (#x8FA9C7 #x138) - (#x8FA9C8 #x142) - (#x8FA9C9 #x140) - (#x8FA9CA #x149) - (#x8FA9CB #x14B) - (#x8FA9CC #xF8) - (#x8FA9CD #x153) - (#x8FA9CE #xDF) - (#x8FA9CF #x167) - (#x8FA9D0 #xFE) - (#x8FAAA1 #xC1) - (#x8FAAA2 #xC0) - (#x8FAAA3 #xC4) - (#x8FAAA4 #xC2) - (#x8FAAA5 #x102) - (#x8FAAA6 #x1CD) - (#x8FAAA7 #x100) - (#x8FAAA8 #x104) - (#x8FAAA9 #xC5) - (#x8FAAAA #xC3) - (#x8FAAAB #x106) - (#x8FAAAC #x108) - (#x8FAAAD #x10C) - (#x8FAAAE #xC7) - (#x8FAAAF #x10A) - (#x8FAAB0 #x10E) - (#x8FAAB1 #xC9) - (#x8FAAB2 #xC8) - (#x8FAAB3 #xCB) - (#x8FAAB4 #xCA) - (#x8FAAB5 #x11A) - (#x8FAAB6 #x116) - (#x8FAAB7 #x112) - (#x8FAAB8 #x118) - (#x8FAABA #x11C) - (#x8FAABB #x11E) - (#x8FAABC #x122) - (#x8FAABD #x120) - (#x8FAABE #x124) - (#x8FAABF #xCD) - (#x8FAAC0 #xCC) - (#x8FAAC1 #xCF) - (#x8FAAC2 #xCE) - (#x8FAAC3 #x1CF) - (#x8FAAC4 #x130) - (#x8FAAC5 #x12A) - (#x8FAAC6 #x12E) - (#x8FAAC7 #x128) - (#x8FAAC8 #x134) - (#x8FAAC9 #x136) - (#x8FAACA #x139) - (#x8FAACB #x13D) - (#x8FAACC #x13B) - (#x8FAACD #x143) - (#x8FAACE #x147) - (#x8FAACF #x145) - (#x8FAAD0 #xD1) - (#x8FAAD1 #xD3) - (#x8FAAD2 #xD2) - (#x8FAAD3 #xD6) - (#x8FAAD4 #xD4) - (#x8FAAD5 #x1D1) - (#x8FAAD6 #x150) - (#x8FAAD7 #x14C) - (#x8FAAD8 #xD5) - (#x8FAAD9 #x154) - (#x8FAADA #x158) - (#x8FAADB #x156) - (#x8FAADC #x15A) - (#x8FAADD #x15C) - (#x8FAADE #x160) - (#x8FAADF #x15E) - (#x8FAAE0 #x164) - (#x8FAAE1 #x162) - (#x8FAAE2 #xDA) - (#x8FAAE3 #xD9) - (#x8FAAE4 #xDC) - (#x8FAAE5 #xDB) - (#x8FAAE6 #x16C) - (#x8FAAE7 #x1D3) - (#x8FAAE8 #x170) - (#x8FAAE9 #x16A) - (#x8FAAEA #x172) - (#x8FAAEB #x16E) - (#x8FAAEC #x168) - (#x8FAAED #x1D7) - (#x8FAAEE #x1DB) - (#x8FAAEF #x1D9) - (#x8FAAF0 #x1D5) - (#x8FAAF1 #x174) - (#x8FAAF2 #xDD) - (#x8FAAF3 #x178) - (#x8FAAF4 #x176) - (#x8FAAF5 #x179) - (#x8FAAF6 #x17D) - (#x8FAAF7 #x17B) - (#x8FABA1 #xE1) - (#x8FABA2 #xE0) - (#x8FABA3 #xE4) - (#x8FABA4 #xE2) - (#x8FABA5 #x103) - (#x8FABA6 #x1CE) - (#x8FABA7 #x101) - (#x8FABA8 #x105) - (#x8FABA9 #xE5) - (#x8FABAA #xE3) - (#x8FABAB #x107) - (#x8FABAC #x109) - (#x8FABAD #x10D) - (#x8FABAE #xE7) - (#x8FABAF #x10B) - (#x8FABB0 #x10F) - (#x8FABB1 #xE9) - (#x8FABB2 #xE8) - (#x8FABB3 #xEB) - (#x8FABB4 #xEA) - (#x8FABB5 #x11B) - (#x8FABB6 #x117) - (#x8FABB7 #x113) - (#x8FABB8 #x119) - (#x8FABB9 #x1F5) - (#x8FABBA #x11D) - (#x8FABBB #x11F) - (#x8FABBD #x121) - (#x8FABBE #x125) - (#x8FABBF #xED) - (#x8FABC0 #xEC) - (#x8FABC1 #xEF) - (#x8FABC2 #xEE) - (#x8FABC3 #x1D0) - (#x8FABC5 #x12B) - (#x8FABC6 #x12F) - (#x8FABC7 #x129) - (#x8FABC8 #x135) - (#x8FABC9 #x137) - (#x8FABCA #x13A) - (#x8FABCB #x13E) - (#x8FABCC #x13C) - (#x8FABCD #x144) - (#x8FABCE #x148) - (#x8FABCF #x146) - (#x8FABD0 #xF1) - (#x8FABD1 #xF3) - (#x8FABD2 #xF2) - (#x8FABD3 #xF6) - (#x8FABD4 #xF4) - (#x8FABD5 #x1D2) - (#x8FABD6 #x151) - (#x8FABD7 #x14D) - (#x8FABD8 #xF5) - (#x8FABD9 #x155) - (#x8FABDA #x159) - (#x8FABDB #x157) - (#x8FABDC #x15B) - (#x8FABDD #x15D) - (#x8FABDE #x161) - (#x8FABDF #x15F) - (#x8FABE0 #x165) - (#x8FABE1 #x163) - (#x8FABE2 #xFA) - (#x8FABE3 #xF9) - (#x8FABE4 #xFC) - (#x8FABE5 #xFB) - (#x8FABE6 #x16D) - (#x8FABE7 #x1D4) - (#x8FABE8 #x171) - (#x8FABE9 #x16B) - (#x8FABEA #x173) - (#x8FABEB #x16F) - (#x8FABEC #x169) - (#x8FABED #x1D8) - (#x8FABEE #x1DC) - (#x8FABEF #x1DA) - (#x8FABF0 #x1D6) - (#x8FABF1 #x175) - (#x8FABF2 #xFD) - (#x8FABF3 #xFF) - (#x8FABF4 #x177) - (#x8FABF5 #x17A) - (#x8FABF6 #x17E) - (#x8FABF7 #x17C) - (#x8FB0A1 #x4E02) - (#x8FB0A2 #x4E04) - (#x8FB0A3 #x4E05) - (#x8FB0A4 #x4E0C) - (#x8FB0A5 #x4E12) - (#x8FB0A6 #x4E1F) - (#x8FB0A7 #x4E23) - (#x8FB0A8 #x4E24) - (#x8FB0A9 #x4E28) - (#x8FB0AA #x4E2B) - (#x8FB0AB #x4E2E) - (#x8FB0AC #x4E2F) - (#x8FB0AD #x4E30) - (#x8FB0AE #x4E35) - (#x8FB0AF #x4E40) - (#x8FB0B0 #x4E41) - (#x8FB0B1 #x4E44) - (#x8FB0B2 #x4E47) - (#x8FB0B3 #x4E51) - (#x8FB0B4 #x4E5A) - (#x8FB0B5 #x4E5C) - (#x8FB0B6 #x4E63) - (#x8FB0B7 #x4E68) - (#x8FB0B8 #x4E69) - (#x8FB0B9 #x4E74) - (#x8FB0BA #x4E75) - (#x8FB0BB #x4E79) - (#x8FB0BC #x4E7F) - (#x8FB0BD #x4E8D) - (#x8FB0BE #x4E96) - (#x8FB0BF #x4E97) - (#x8FB0C0 #x4E9D) - (#x8FB0C1 #x4EAF) - (#x8FB0C2 #x4EB9) - (#x8FB0C3 #x4EC3) - (#x8FB0C4 #x4ED0) - (#x8FB0C5 #x4EDA) - (#x8FB0C6 #x4EDB) - (#x8FB0C7 #x4EE0) - (#x8FB0C8 #x4EE1) - (#x8FB0C9 #x4EE2) - (#x8FB0CA #x4EE8) - (#x8FB0CB #x4EEF) - (#x8FB0CC #x4EF1) - (#x8FB0CD #x4EF3) - (#x8FB0CE #x4EF5) - (#x8FB0CF #x4EFD) - (#x8FB0D0 #x4EFE) - (#x8FB0D1 #x4EFF) - (#x8FB0D2 #x4F00) - (#x8FB0D3 #x4F02) - (#x8FB0D4 #x4F03) - (#x8FB0D5 #x4F08) - (#x8FB0D6 #x4F0B) - (#x8FB0D7 #x4F0C) - (#x8FB0D8 #x4F12) - (#x8FB0D9 #x4F15) - (#x8FB0DA #x4F16) - (#x8FB0DB #x4F17) - (#x8FB0DC #x4F19) - (#x8FB0DD #x4F2E) - (#x8FB0DE #x4F31) - (#x8FB0DF #x4F60) - (#x8FB0E0 #x4F33) - (#x8FB0E1 #x4F35) - (#x8FB0E2 #x4F37) - (#x8FB0E3 #x4F39) - (#x8FB0E4 #x4F3B) - (#x8FB0E5 #x4F3E) - (#x8FB0E6 #x4F40) - (#x8FB0E7 #x4F42) - (#x8FB0E8 #x4F48) - (#x8FB0E9 #x4F49) - (#x8FB0EA #x4F4B) - (#x8FB0EB #x4F4C) - (#x8FB0EC #x4F52) - (#x8FB0ED #x4F54) - (#x8FB0EE #x4F56) - (#x8FB0EF #x4F58) - (#x8FB0F0 #x4F5F) - (#x8FB0F1 #x4F63) - (#x8FB0F2 #x4F6A) - (#x8FB0F3 #x4F6C) - (#x8FB0F4 #x4F6E) - (#x8FB0F5 #x4F71) - (#x8FB0F6 #x4F77) - (#x8FB0F7 #x4F78) - (#x8FB0F8 #x4F79) - (#x8FB0F9 #x4F7A) - (#x8FB0FA #x4F7D) - (#x8FB0FB #x4F7E) - (#x8FB0FC #x4F81) - (#x8FB0FD #x4F82) - (#x8FB0FE #x4F84) - (#x8FB1A1 #x4F85) - (#x8FB1A2 #x4F89) - (#x8FB1A3 #x4F8A) - (#x8FB1A4 #x4F8C) - (#x8FB1A5 #x4F8E) - (#x8FB1A6 #x4F90) - (#x8FB1A7 #x4F92) - (#x8FB1A8 #x4F93) - (#x8FB1A9 #x4F94) - (#x8FB1AA #x4F97) - (#x8FB1AB #x4F99) - (#x8FB1AC #x4F9A) - (#x8FB1AD #x4F9E) - (#x8FB1AE #x4F9F) - (#x8FB1AF #x4FB2) - (#x8FB1B0 #x4FB7) - (#x8FB1B1 #x4FB9) - (#x8FB1B2 #x4FBB) - (#x8FB1B3 #x4FBC) - (#x8FB1B4 #x4FBD) - (#x8FB1B5 #x4FBE) - (#x8FB1B6 #x4FC0) - (#x8FB1B7 #x4FC1) - (#x8FB1B8 #x4FC5) - (#x8FB1B9 #x4FC6) - (#x8FB1BA #x4FC8) - (#x8FB1BB #x4FC9) - (#x8FB1BC #x4FCB) - (#x8FB1BD #x4FCC) - (#x8FB1BE #x4FCD) - (#x8FB1BF #x4FCF) - (#x8FB1C0 #x4FD2) - (#x8FB1C1 #x4FDC) - (#x8FB1C2 #x4FE0) - (#x8FB1C3 #x4FE2) - (#x8FB1C4 #x4FF0) - (#x8FB1C5 #x4FF2) - (#x8FB1C6 #x4FFC) - (#x8FB1C7 #x4FFD) - (#x8FB1C8 #x4FFF) - (#x8FB1C9 #x5000) - (#x8FB1CA #x5001) - (#x8FB1CB #x5004) - (#x8FB1CC #x5007) - (#x8FB1CD #x500A) - (#x8FB1CE #x500C) - (#x8FB1CF #x500E) - (#x8FB1D0 #x5010) - (#x8FB1D1 #x5013) - (#x8FB1D2 #x5017) - (#x8FB1D3 #x5018) - (#x8FB1D4 #x501B) - (#x8FB1D5 #x501C) - (#x8FB1D6 #x501D) - (#x8FB1D7 #x501E) - (#x8FB1D8 #x5022) - (#x8FB1D9 #x5027) - (#x8FB1DA #x502E) - (#x8FB1DB #x5030) - (#x8FB1DC #x5032) - (#x8FB1DD #x5033) - (#x8FB1DE #x5035) - (#x8FB1DF #x5040) - (#x8FB1E0 #x5041) - (#x8FB1E1 #x5042) - (#x8FB1E2 #x5045) - (#x8FB1E3 #x5046) - (#x8FB1E4 #x504A) - (#x8FB1E5 #x504C) - (#x8FB1E6 #x504E) - (#x8FB1E7 #x5051) - (#x8FB1E8 #x5052) - (#x8FB1E9 #x5053) - (#x8FB1EA #x5057) - (#x8FB1EB #x5059) - (#x8FB1EC #x505F) - (#x8FB1ED #x5060) - (#x8FB1EE #x5062) - (#x8FB1EF #x5063) - (#x8FB1F0 #x5066) - (#x8FB1F1 #x5067) - (#x8FB1F2 #x506A) - (#x8FB1F3 #x506D) - (#x8FB1F4 #x5070) - (#x8FB1F5 #x5071) - (#x8FB1F6 #x503B) - (#x8FB1F7 #x5081) - (#x8FB1F8 #x5083) - (#x8FB1F9 #x5084) - (#x8FB1FA #x5086) - (#x8FB1FB #x508A) - (#x8FB1FC #x508E) - (#x8FB1FD #x508F) - (#x8FB1FE #x5090) - (#x8FB2A1 #x5092) - (#x8FB2A2 #x5093) - (#x8FB2A3 #x5094) - (#x8FB2A4 #x5096) - (#x8FB2A5 #x509B) - (#x8FB2A6 #x509C) - (#x8FB2A7 #x509E) - (#x8FB2A8 #x509F) - (#x8FB2A9 #x50A0) - (#x8FB2AA #x50A1) - (#x8FB2AB #x50A2) - (#x8FB2AC #x50AA) - (#x8FB2AD #x50AF) - (#x8FB2AE #x50B0) - (#x8FB2AF #x50B9) - (#x8FB2B0 #x50BA) - (#x8FB2B1 #x50BD) - (#x8FB2B2 #x50C0) - (#x8FB2B3 #x50C3) - (#x8FB2B4 #x50C4) - (#x8FB2B5 #x50C7) - (#x8FB2B6 #x50CC) - (#x8FB2B7 #x50CE) - (#x8FB2B8 #x50D0) - (#x8FB2B9 #x50D3) - (#x8FB2BA #x50D4) - (#x8FB2BB #x50D8) - (#x8FB2BC #x50DC) - (#x8FB2BD #x50DD) - (#x8FB2BE #x50DF) - (#x8FB2BF #x50E2) - (#x8FB2C0 #x50E4) - (#x8FB2C1 #x50E6) - (#x8FB2C2 #x50E8) - (#x8FB2C3 #x50E9) - (#x8FB2C4 #x50EF) - (#x8FB2C5 #x50F1) - (#x8FB2C6 #x50F6) - (#x8FB2C7 #x50FA) - (#x8FB2C8 #x50FE) - (#x8FB2C9 #x5103) - (#x8FB2CA #x5106) - (#x8FB2CB #x5107) - (#x8FB2CC #x5108) - (#x8FB2CD #x510B) - (#x8FB2CE #x510C) - (#x8FB2CF #x510D) - (#x8FB2D0 #x510E) - (#x8FB2D1 #x50F2) - (#x8FB2D2 #x5110) - (#x8FB2D3 #x5117) - (#x8FB2D4 #x5119) - (#x8FB2D5 #x511B) - (#x8FB2D6 #x511C) - (#x8FB2D7 #x511D) - (#x8FB2D8 #x511E) - (#x8FB2D9 #x5123) - (#x8FB2DA #x5127) - (#x8FB2DB #x5128) - (#x8FB2DC #x512C) - (#x8FB2DD #x512D) - (#x8FB2DE #x512F) - (#x8FB2DF #x5131) - (#x8FB2E0 #x5133) - (#x8FB2E1 #x5134) - (#x8FB2E2 #x5135) - (#x8FB2E3 #x5138) - (#x8FB2E4 #x5139) - (#x8FB2E5 #x5142) - (#x8FB2E6 #x514A) - (#x8FB2E7 #x514F) - (#x8FB2E8 #x5153) - (#x8FB2E9 #x5155) - (#x8FB2EA #x5157) - (#x8FB2EB #x5158) - (#x8FB2EC #x515F) - (#x8FB2ED #x5164) - (#x8FB2EE #x5166) - (#x8FB2EF #x517E) - (#x8FB2F0 #x5183) - (#x8FB2F1 #x5184) - (#x8FB2F2 #x518B) - (#x8FB2F3 #x518E) - (#x8FB2F4 #x5198) - (#x8FB2F5 #x519D) - (#x8FB2F6 #x51A1) - (#x8FB2F7 #x51A3) - (#x8FB2F8 #x51AD) - (#x8FB2F9 #x51B8) - (#x8FB2FA #x51BA) - (#x8FB2FB #x51BC) - (#x8FB2FC #x51BE) - (#x8FB2FD #x51BF) - (#x8FB2FE #x51C2) - (#x8FB3A1 #x51C8) - (#x8FB3A2 #x51CF) - (#x8FB3A3 #x51D1) - (#x8FB3A4 #x51D2) - (#x8FB3A5 #x51D3) - (#x8FB3A6 #x51D5) - (#x8FB3A7 #x51D8) - (#x8FB3A8 #x51DE) - (#x8FB3A9 #x51E2) - (#x8FB3AA #x51E5) - (#x8FB3AB #x51EE) - (#x8FB3AC #x51F2) - (#x8FB3AD #x51F3) - (#x8FB3AE #x51F4) - (#x8FB3AF #x51F7) - (#x8FB3B0 #x5201) - (#x8FB3B1 #x5202) - (#x8FB3B2 #x5205) - (#x8FB3B3 #x5212) - (#x8FB3B4 #x5213) - (#x8FB3B5 #x5215) - (#x8FB3B6 #x5216) - (#x8FB3B7 #x5218) - (#x8FB3B8 #x5222) - (#x8FB3B9 #x5228) - (#x8FB3BA #x5231) - (#x8FB3BB #x5232) - (#x8FB3BC #x5235) - (#x8FB3BD #x523C) - (#x8FB3BE #x5245) - (#x8FB3BF #x5249) - (#x8FB3C0 #x5255) - (#x8FB3C1 #x5257) - (#x8FB3C2 #x5258) - (#x8FB3C3 #x525A) - (#x8FB3C4 #x525C) - (#x8FB3C5 #x525F) - (#x8FB3C6 #x5260) - (#x8FB3C7 #x5261) - (#x8FB3C8 #x5266) - (#x8FB3C9 #x526E) - (#x8FB3CA #x5277) - (#x8FB3CB #x5278) - (#x8FB3CC #x5279) - (#x8FB3CD #x5280) - (#x8FB3CE #x5282) - (#x8FB3CF #x5285) - (#x8FB3D0 #x528A) - (#x8FB3D1 #x528C) - (#x8FB3D2 #x5293) - (#x8FB3D3 #x5295) - (#x8FB3D4 #x5296) - (#x8FB3D5 #x5297) - (#x8FB3D6 #x5298) - (#x8FB3D7 #x529A) - (#x8FB3D8 #x529C) - (#x8FB3D9 #x52A4) - (#x8FB3DA #x52A5) - (#x8FB3DB #x52A6) - (#x8FB3DC #x52A7) - (#x8FB3DD #x52AF) - (#x8FB3DE #x52B0) - (#x8FB3DF #x52B6) - (#x8FB3E0 #x52B7) - (#x8FB3E1 #x52B8) - (#x8FB3E2 #x52BA) - (#x8FB3E3 #x52BB) - (#x8FB3E4 #x52BD) - (#x8FB3E5 #x52C0) - (#x8FB3E6 #x52C4) - (#x8FB3E7 #x52C6) - (#x8FB3E8 #x52C8) - (#x8FB3E9 #x52CC) - (#x8FB3EA #x52CF) - (#x8FB3EB #x52D1) - (#x8FB3EC #x52D4) - (#x8FB3ED #x52D6) - (#x8FB3EE #x52DB) - (#x8FB3EF #x52DC) - (#x8FB3F0 #x52E1) - (#x8FB3F1 #x52E5) - (#x8FB3F2 #x52E8) - (#x8FB3F3 #x52E9) - (#x8FB3F4 #x52EA) - (#x8FB3F5 #x52EC) - (#x8FB3F6 #x52F0) - (#x8FB3F7 #x52F1) - (#x8FB3F8 #x52F4) - (#x8FB3F9 #x52F6) - (#x8FB3FA #x52F7) - (#x8FB3FB #x5300) - (#x8FB3FC #x5303) - (#x8FB3FD #x530A) - (#x8FB3FE #x530B) - (#x8FB4A1 #x530C) - (#x8FB4A2 #x5311) - (#x8FB4A3 #x5313) - (#x8FB4A4 #x5318) - (#x8FB4A5 #x531B) - (#x8FB4A6 #x531C) - (#x8FB4A7 #x531E) - (#x8FB4A8 #x531F) - (#x8FB4A9 #x5325) - (#x8FB4AA #x5327) - (#x8FB4AB #x5328) - (#x8FB4AC #x5329) - (#x8FB4AD #x532B) - (#x8FB4AE #x532C) - (#x8FB4AF #x532D) - (#x8FB4B0 #x5330) - (#x8FB4B1 #x5332) - (#x8FB4B2 #x5335) - (#x8FB4B3 #x533C) - (#x8FB4B4 #x533D) - (#x8FB4B5 #x533E) - (#x8FB4B6 #x5342) - (#x8FB4B7 #x534C) - (#x8FB4B8 #x534B) - (#x8FB4B9 #x5359) - (#x8FB4BA #x535B) - (#x8FB4BB #x5361) - (#x8FB4BC #x5363) - (#x8FB4BD #x5365) - (#x8FB4BE #x536C) - (#x8FB4BF #x536D) - (#x8FB4C0 #x5372) - (#x8FB4C1 #x5379) - (#x8FB4C2 #x537E) - (#x8FB4C3 #x5383) - (#x8FB4C4 #x5387) - (#x8FB4C5 #x5388) - (#x8FB4C6 #x538E) - (#x8FB4C7 #x5393) - (#x8FB4C8 #x5394) - (#x8FB4C9 #x5399) - (#x8FB4CA #x539D) - (#x8FB4CB #x53A1) - (#x8FB4CC #x53A4) - (#x8FB4CD #x53AA) - (#x8FB4CE #x53AB) - (#x8FB4CF #x53AF) - (#x8FB4D0 #x53B2) - (#x8FB4D1 #x53B4) - (#x8FB4D2 #x53B5) - (#x8FB4D3 #x53B7) - (#x8FB4D4 #x53B8) - (#x8FB4D5 #x53BA) - (#x8FB4D6 #x53BD) - (#x8FB4D7 #x53C0) - (#x8FB4D8 #x53C5) - (#x8FB4D9 #x53CF) - (#x8FB4DA #x53D2) - (#x8FB4DB #x53D3) - (#x8FB4DC #x53D5) - (#x8FB4DD #x53DA) - (#x8FB4DE #x53DD) - (#x8FB4DF #x53DE) - (#x8FB4E0 #x53E0) - (#x8FB4E1 #x53E6) - (#x8FB4E2 #x53E7) - (#x8FB4E3 #x53F5) - (#x8FB4E4 #x5402) - (#x8FB4E5 #x5413) - (#x8FB4E6 #x541A) - (#x8FB4E7 #x5421) - (#x8FB4E8 #x5427) - (#x8FB4E9 #x5428) - (#x8FB4EA #x542A) - (#x8FB4EB #x542F) - (#x8FB4EC #x5431) - (#x8FB4ED #x5434) - (#x8FB4EE #x5435) - (#x8FB4EF #x5443) - (#x8FB4F0 #x5444) - (#x8FB4F1 #x5447) - (#x8FB4F2 #x544D) - (#x8FB4F3 #x544F) - (#x8FB4F4 #x545E) - (#x8FB4F5 #x5462) - (#x8FB4F6 #x5464) - (#x8FB4F7 #x5466) - (#x8FB4F8 #x5467) - (#x8FB4F9 #x5469) - (#x8FB4FA #x546B) - (#x8FB4FB #x546D) - (#x8FB4FC #x546E) - (#x8FB4FD #x5474) - (#x8FB4FE #x547F) - (#x8FB5A1 #x5481) - (#x8FB5A2 #x5483) - (#x8FB5A3 #x5485) - (#x8FB5A4 #x5488) - (#x8FB5A5 #x5489) - (#x8FB5A6 #x548D) - (#x8FB5A7 #x5491) - (#x8FB5A8 #x5495) - (#x8FB5A9 #x5496) - (#x8FB5AA #x549C) - (#x8FB5AB #x549F) - (#x8FB5AC #x54A1) - (#x8FB5AD #x54A6) - (#x8FB5AE #x54A7) - (#x8FB5AF #x54A9) - (#x8FB5B0 #x54AA) - (#x8FB5B1 #x54AD) - (#x8FB5B2 #x54AE) - (#x8FB5B3 #x54B1) - (#x8FB5B4 #x54B7) - (#x8FB5B5 #x54B9) - (#x8FB5B6 #x54BA) - (#x8FB5B7 #x54BB) - (#x8FB5B8 #x54BF) - (#x8FB5B9 #x54C6) - (#x8FB5BA #x54CA) - (#x8FB5BB #x54CD) - (#x8FB5BC #x54CE) - (#x8FB5BD #x54E0) - (#x8FB5BE #x54EA) - (#x8FB5BF #x54EC) - (#x8FB5C0 #x54EF) - (#x8FB5C1 #x54F6) - (#x8FB5C2 #x54FC) - (#x8FB5C3 #x54FE) - (#x8FB5C4 #x54FF) - (#x8FB5C5 #x5500) - (#x8FB5C6 #x5501) - (#x8FB5C7 #x5505) - (#x8FB5C8 #x5508) - (#x8FB5C9 #x5509) - (#x8FB5CA #x550C) - (#x8FB5CB #x550D) - (#x8FB5CC #x550E) - (#x8FB5CD #x5515) - (#x8FB5CE #x552A) - (#x8FB5CF #x552B) - (#x8FB5D0 #x5532) - (#x8FB5D1 #x5535) - (#x8FB5D2 #x5536) - (#x8FB5D3 #x553B) - (#x8FB5D4 #x553C) - (#x8FB5D5 #x553D) - (#x8FB5D6 #x5541) - (#x8FB5D7 #x5547) - (#x8FB5D8 #x5549) - (#x8FB5D9 #x554A) - (#x8FB5DA #x554D) - (#x8FB5DB #x5550) - (#x8FB5DC #x5551) - (#x8FB5DD #x5558) - (#x8FB5DE #x555A) - (#x8FB5DF #x555B) - (#x8FB5E0 #x555E) - (#x8FB5E1 #x5560) - (#x8FB5E2 #x5561) - (#x8FB5E3 #x5564) - (#x8FB5E4 #x5566) - (#x8FB5E5 #x557F) - (#x8FB5E6 #x5581) - (#x8FB5E7 #x5582) - (#x8FB5E8 #x5586) - (#x8FB5E9 #x5588) - (#x8FB5EA #x558E) - (#x8FB5EB #x558F) - (#x8FB5EC #x5591) - (#x8FB5ED #x5592) - (#x8FB5EE #x5593) - (#x8FB5EF #x5594) - (#x8FB5F0 #x5597) - (#x8FB5F1 #x55A3) - (#x8FB5F2 #x55A4) - (#x8FB5F3 #x55AD) - (#x8FB5F4 #x55B2) - (#x8FB5F5 #x55BF) - (#x8FB5F6 #x55C1) - (#x8FB5F7 #x55C3) - (#x8FB5F8 #x55C6) - (#x8FB5F9 #x55C9) - (#x8FB5FA #x55CB) - (#x8FB5FB #x55CC) - (#x8FB5FC #x55CE) - (#x8FB5FD #x55D1) - (#x8FB5FE #x55D2) - (#x8FB6A1 #x55D3) - (#x8FB6A2 #x55D7) - (#x8FB6A3 #x55D8) - (#x8FB6A4 #x55DB) - (#x8FB6A5 #x55DE) - (#x8FB6A6 #x55E2) - (#x8FB6A7 #x55E9) - (#x8FB6A8 #x55F6) - (#x8FB6A9 #x55FF) - (#x8FB6AA #x5605) - (#x8FB6AB #x5608) - (#x8FB6AC #x560A) - (#x8FB6AD #x560D) - (#x8FB6AE #x560E) - (#x8FB6AF #x560F) - (#x8FB6B0 #x5610) - (#x8FB6B1 #x5611) - (#x8FB6B2 #x5612) - (#x8FB6B3 #x5619) - (#x8FB6B4 #x562C) - (#x8FB6B5 #x5630) - (#x8FB6B6 #x5633) - (#x8FB6B7 #x5635) - (#x8FB6B8 #x5637) - (#x8FB6B9 #x5639) - (#x8FB6BA #x563B) - (#x8FB6BB #x563C) - (#x8FB6BC #x563D) - (#x8FB6BD #x563F) - (#x8FB6BE #x5640) - (#x8FB6BF #x5641) - (#x8FB6C0 #x5643) - (#x8FB6C1 #x5644) - (#x8FB6C2 #x5646) - (#x8FB6C3 #x5649) - (#x8FB6C4 #x564B) - (#x8FB6C5 #x564D) - (#x8FB6C6 #x564F) - (#x8FB6C7 #x5654) - (#x8FB6C8 #x565E) - (#x8FB6C9 #x5660) - (#x8FB6CA #x5661) - (#x8FB6CB #x5662) - (#x8FB6CC #x5663) - (#x8FB6CD #x5666) - (#x8FB6CE #x5669) - (#x8FB6CF #x566D) - (#x8FB6D0 #x566F) - (#x8FB6D1 #x5671) - (#x8FB6D2 #x5672) - (#x8FB6D3 #x5675) - (#x8FB6D4 #x5684) - (#x8FB6D5 #x5685) - (#x8FB6D6 #x5688) - (#x8FB6D7 #x568B) - (#x8FB6D8 #x568C) - (#x8FB6D9 #x5695) - (#x8FB6DA #x5699) - (#x8FB6DB #x569A) - (#x8FB6DC #x569D) - (#x8FB6DD #x569E) - (#x8FB6DE #x569F) - (#x8FB6DF #x56A6) - (#x8FB6E0 #x56A7) - (#x8FB6E1 #x56A8) - (#x8FB6E2 #x56A9) - (#x8FB6E3 #x56AB) - (#x8FB6E4 #x56AC) - (#x8FB6E5 #x56AD) - (#x8FB6E6 #x56B1) - (#x8FB6E7 #x56B3) - (#x8FB6E8 #x56B7) - (#x8FB6E9 #x56BE) - (#x8FB6EA #x56C5) - (#x8FB6EB #x56C9) - (#x8FB6EC #x56CA) - (#x8FB6ED #x56CB) - (#x8FB6EE #x56CF) - (#x8FB6EF #x56D0) - (#x8FB6F0 #x56CC) - (#x8FB6F1 #x56CD) - (#x8FB6F2 #x56D9) - (#x8FB6F3 #x56DC) - (#x8FB6F4 #x56DD) - (#x8FB6F5 #x56DF) - (#x8FB6F6 #x56E1) - (#x8FB6F7 #x56E4) - (#x8FB6F8 #x56E5) - (#x8FB6F9 #x56E6) - (#x8FB6FA #x56E7) - (#x8FB6FB #x56E8) - (#x8FB6FC #x56F1) - (#x8FB6FD #x56EB) - (#x8FB6FE #x56ED) - (#x8FB7A1 #x56F6) - (#x8FB7A2 #x56F7) - (#x8FB7A3 #x5701) - (#x8FB7A4 #x5702) - (#x8FB7A5 #x5707) - (#x8FB7A6 #x570A) - (#x8FB7A7 #x570C) - (#x8FB7A8 #x5711) - (#x8FB7A9 #x5715) - (#x8FB7AA #x571A) - (#x8FB7AB #x571B) - (#x8FB7AC #x571D) - (#x8FB7AD #x5720) - (#x8FB7AE #x5722) - (#x8FB7AF #x5723) - (#x8FB7B0 #x5724) - (#x8FB7B1 #x5725) - (#x8FB7B2 #x5729) - (#x8FB7B3 #x572A) - (#x8FB7B4 #x572C) - (#x8FB7B5 #x572E) - (#x8FB7B6 #x572F) - (#x8FB7B7 #x5733) - (#x8FB7B8 #x5734) - (#x8FB7B9 #x573D) - (#x8FB7BA #x573E) - (#x8FB7BB #x573F) - (#x8FB7BC #x5745) - (#x8FB7BD #x5746) - (#x8FB7BE #x574C) - (#x8FB7BF #x574D) - (#x8FB7C0 #x5752) - (#x8FB7C1 #x5762) - (#x8FB7C2 #x5765) - (#x8FB7C3 #x5767) - (#x8FB7C4 #x5768) - (#x8FB7C5 #x576B) - (#x8FB7C6 #x576D) - (#x8FB7C7 #x576E) - (#x8FB7C8 #x576F) - (#x8FB7C9 #x5770) - (#x8FB7CA #x5771) - (#x8FB7CB #x5773) - (#x8FB7CC #x5774) - (#x8FB7CD #x5775) - (#x8FB7CE #x5777) - (#x8FB7CF #x5779) - (#x8FB7D0 #x577A) - (#x8FB7D1 #x577B) - (#x8FB7D2 #x577C) - (#x8FB7D3 #x577E) - (#x8FB7D4 #x5781) - (#x8FB7D5 #x5783) - (#x8FB7D6 #x578C) - (#x8FB7D7 #x5794) - (#x8FB7D8 #x5797) - (#x8FB7D9 #x5799) - (#x8FB7DA #x579A) - (#x8FB7DB #x579C) - (#x8FB7DC #x579D) - (#x8FB7DD #x579E) - (#x8FB7DE #x579F) - (#x8FB7DF #x57A1) - (#x8FB7E0 #x5795) - (#x8FB7E1 #x57A7) - (#x8FB7E2 #x57A8) - (#x8FB7E3 #x57A9) - (#x8FB7E4 #x57AC) - (#x8FB7E5 #x57B8) - (#x8FB7E6 #x57BD) - (#x8FB7E7 #x57C7) - (#x8FB7E8 #x57C8) - (#x8FB7E9 #x57CC) - (#x8FB7EA #x57CF) - (#x8FB7EB #x57D5) - (#x8FB7EC #x57DD) - (#x8FB7ED #x57DE) - (#x8FB7EE #x57E4) - (#x8FB7EF #x57E6) - (#x8FB7F0 #x57E7) - (#x8FB7F1 #x57E9) - (#x8FB7F2 #x57ED) - (#x8FB7F3 #x57F0) - (#x8FB7F4 #x57F5) - (#x8FB7F5 #x57F6) - (#x8FB7F6 #x57F8) - (#x8FB7F7 #x57FD) - (#x8FB7F8 #x57FE) - (#x8FB7F9 #x57FF) - (#x8FB7FA #x5803) - (#x8FB7FB #x5804) - (#x8FB7FC #x5808) - (#x8FB7FD #x5809) - (#x8FB7FE #x57E1) - (#x8FB8A1 #x580C) - (#x8FB8A2 #x580D) - (#x8FB8A3 #x581B) - (#x8FB8A4 #x581E) - (#x8FB8A5 #x581F) - (#x8FB8A6 #x5820) - (#x8FB8A7 #x5826) - (#x8FB8A8 #x5827) - (#x8FB8A9 #x582D) - (#x8FB8AA #x5832) - (#x8FB8AB #x5839) - (#x8FB8AC #x583F) - (#x8FB8AD #x5849) - (#x8FB8AE #x584C) - (#x8FB8AF #x584D) - (#x8FB8B0 #x584F) - (#x8FB8B1 #x5850) - (#x8FB8B2 #x5855) - (#x8FB8B3 #x585F) - (#x8FB8B4 #x5861) - (#x8FB8B5 #x5864) - (#x8FB8B6 #x5867) - (#x8FB8B7 #x5868) - (#x8FB8B8 #x5878) - (#x8FB8B9 #x587C) - (#x8FB8BA #x587F) - (#x8FB8BB #x5880) - (#x8FB8BC #x5881) - (#x8FB8BD #x5887) - (#x8FB8BE #x5888) - (#x8FB8BF #x5889) - (#x8FB8C0 #x588A) - (#x8FB8C1 #x588C) - (#x8FB8C2 #x588D) - (#x8FB8C3 #x588F) - (#x8FB8C4 #x5890) - (#x8FB8C5 #x5894) - (#x8FB8C6 #x5896) - (#x8FB8C7 #x589D) - (#x8FB8C8 #x58A0) - (#x8FB8C9 #x58A1) - (#x8FB8CA #x58A2) - (#x8FB8CB #x58A6) - (#x8FB8CC #x58A9) - (#x8FB8CD #x58B1) - (#x8FB8CE #x58B2) - (#x8FB8CF #x58C4) - (#x8FB8D0 #x58BC) - (#x8FB8D1 #x58C2) - (#x8FB8D2 #x58C8) - (#x8FB8D3 #x58CD) - (#x8FB8D4 #x58CE) - (#x8FB8D5 #x58D0) - (#x8FB8D6 #x58D2) - (#x8FB8D7 #x58D4) - (#x8FB8D8 #x58D6) - (#x8FB8D9 #x58DA) - (#x8FB8DA #x58DD) - (#x8FB8DB #x58E1) - (#x8FB8DC #x58E2) - (#x8FB8DD #x58E9) - (#x8FB8DE #x58F3) - (#x8FB8DF #x5905) - (#x8FB8E0 #x5906) - (#x8FB8E1 #x590B) - (#x8FB8E2 #x590C) - (#x8FB8E3 #x5912) - (#x8FB8E4 #x5913) - (#x8FB8E5 #x5914) - (#x8FB8E6 #x8641) - (#x8FB8E7 #x591D) - (#x8FB8E8 #x5921) - (#x8FB8E9 #x5923) - (#x8FB8EA #x5924) - (#x8FB8EB #x5928) - (#x8FB8EC #x592F) - (#x8FB8ED #x5930) - (#x8FB8EE #x5933) - (#x8FB8EF #x5935) - (#x8FB8F0 #x5936) - (#x8FB8F1 #x593F) - (#x8FB8F2 #x5943) - (#x8FB8F3 #x5946) - (#x8FB8F4 #x5952) - (#x8FB8F5 #x5953) - (#x8FB8F6 #x5959) - (#x8FB8F7 #x595B) - (#x8FB8F8 #x595D) - (#x8FB8F9 #x595E) - (#x8FB8FA #x595F) - (#x8FB8FB #x5961) - (#x8FB8FC #x5963) - (#x8FB8FD #x596B) - (#x8FB8FE #x596D) - (#x8FB9A1 #x596F) - (#x8FB9A2 #x5972) - (#x8FB9A3 #x5975) - (#x8FB9A4 #x5976) - (#x8FB9A5 #x5979) - (#x8FB9A6 #x597B) - (#x8FB9A7 #x597C) - (#x8FB9A8 #x598B) - (#x8FB9A9 #x598C) - (#x8FB9AA #x598E) - (#x8FB9AB #x5992) - (#x8FB9AC #x5995) - (#x8FB9AD #x5997) - (#x8FB9AE #x599F) - (#x8FB9AF #x59A4) - (#x8FB9B0 #x59A7) - (#x8FB9B1 #x59AD) - (#x8FB9B2 #x59AE) - (#x8FB9B3 #x59AF) - (#x8FB9B4 #x59B0) - (#x8FB9B5 #x59B3) - (#x8FB9B6 #x59B7) - (#x8FB9B7 #x59BA) - (#x8FB9B8 #x59BC) - (#x8FB9B9 #x59C1) - (#x8FB9BA #x59C3) - (#x8FB9BB #x59C4) - (#x8FB9BC #x59C8) - (#x8FB9BD #x59CA) - (#x8FB9BE #x59CD) - (#x8FB9BF #x59D2) - (#x8FB9C0 #x59DD) - (#x8FB9C1 #x59DE) - (#x8FB9C2 #x59DF) - (#x8FB9C3 #x59E3) - (#x8FB9C4 #x59E4) - (#x8FB9C5 #x59E7) - (#x8FB9C6 #x59EE) - (#x8FB9C7 #x59EF) - (#x8FB9C8 #x59F1) - (#x8FB9C9 #x59F2) - (#x8FB9CA #x59F4) - (#x8FB9CB #x59F7) - (#x8FB9CC #x5A00) - (#x8FB9CD #x5A04) - (#x8FB9CE #x5A0C) - (#x8FB9CF #x5A0D) - (#x8FB9D0 #x5A0E) - (#x8FB9D1 #x5A12) - (#x8FB9D2 #x5A13) - (#x8FB9D3 #x5A1E) - (#x8FB9D4 #x5A23) - (#x8FB9D5 #x5A24) - (#x8FB9D6 #x5A27) - (#x8FB9D7 #x5A28) - (#x8FB9D8 #x5A2A) - (#x8FB9D9 #x5A2D) - (#x8FB9DA #x5A30) - (#x8FB9DB #x5A44) - (#x8FB9DC #x5A45) - (#x8FB9DD #x5A47) - (#x8FB9DE #x5A48) - (#x8FB9DF #x5A4C) - (#x8FB9E0 #x5A50) - (#x8FB9E1 #x5A55) - (#x8FB9E2 #x5A5E) - (#x8FB9E3 #x5A63) - (#x8FB9E4 #x5A65) - (#x8FB9E5 #x5A67) - (#x8FB9E6 #x5A6D) - (#x8FB9E7 #x5A77) - (#x8FB9E8 #x5A7A) - (#x8FB9E9 #x5A7B) - (#x8FB9EA #x5A7E) - (#x8FB9EB #x5A8B) - (#x8FB9EC #x5A90) - (#x8FB9ED #x5A93) - (#x8FB9EE #x5A96) - (#x8FB9EF #x5A99) - (#x8FB9F0 #x5A9C) - (#x8FB9F1 #x5A9E) - (#x8FB9F2 #x5A9F) - (#x8FB9F3 #x5AA0) - (#x8FB9F4 #x5AA2) - (#x8FB9F5 #x5AA7) - (#x8FB9F6 #x5AAC) - (#x8FB9F7 #x5AB1) - (#x8FB9F8 #x5AB2) - (#x8FB9F9 #x5AB3) - (#x8FB9FA #x5AB5) - (#x8FB9FB #x5AB8) - (#x8FB9FC #x5ABA) - (#x8FB9FD #x5ABB) - (#x8FB9FE #x5ABF) - (#x8FBAA1 #x5AC4) - (#x8FBAA2 #x5AC6) - (#x8FBAA3 #x5AC8) - (#x8FBAA4 #x5ACF) - (#x8FBAA5 #x5ADA) - (#x8FBAA6 #x5ADC) - (#x8FBAA7 #x5AE0) - (#x8FBAA8 #x5AE5) - (#x8FBAA9 #x5AEA) - (#x8FBAAA #x5AEE) - (#x8FBAAB #x5AF5) - (#x8FBAAC #x5AF6) - (#x8FBAAD #x5AFD) - (#x8FBAAE #x5B00) - (#x8FBAAF #x5B01) - (#x8FBAB0 #x5B08) - (#x8FBAB1 #x5B17) - (#x8FBAB2 #x5B34) - (#x8FBAB3 #x5B19) - (#x8FBAB4 #x5B1B) - (#x8FBAB5 #x5B1D) - (#x8FBAB6 #x5B21) - (#x8FBAB7 #x5B25) - (#x8FBAB8 #x5B2D) - (#x8FBAB9 #x5B38) - (#x8FBABA #x5B41) - (#x8FBABB #x5B4B) - (#x8FBABC #x5B4C) - (#x8FBABD #x5B52) - (#x8FBABE #x5B56) - (#x8FBABF #x5B5E) - (#x8FBAC0 #x5B68) - (#x8FBAC1 #x5B6E) - (#x8FBAC2 #x5B6F) - (#x8FBAC3 #x5B7C) - (#x8FBAC4 #x5B7D) - (#x8FBAC5 #x5B7E) - (#x8FBAC6 #x5B7F) - (#x8FBAC7 #x5B81) - (#x8FBAC8 #x5B84) - (#x8FBAC9 #x5B86) - (#x8FBACA #x5B8A) - (#x8FBACB #x5B8E) - (#x8FBACC #x5B90) - (#x8FBACD #x5B91) - (#x8FBACE #x5B93) - (#x8FBACF #x5B94) - (#x8FBAD0 #x5B96) - (#x8FBAD1 #x5BA8) - (#x8FBAD2 #x5BA9) - (#x8FBAD3 #x5BAC) - (#x8FBAD4 #x5BAD) - (#x8FBAD5 #x5BAF) - (#x8FBAD6 #x5BB1) - (#x8FBAD7 #x5BB2) - (#x8FBAD8 #x5BB7) - (#x8FBAD9 #x5BBA) - (#x8FBADA #x5BBC) - (#x8FBADB #x5BC0) - (#x8FBADC #x5BC1) - (#x8FBADD #x5BCD) - (#x8FBADE #x5BCF) - (#x8FBADF #x5BD6) - (#x8FBAE0 #x5BD7) - (#x8FBAE1 #x5BD8) - (#x8FBAE2 #x5BD9) - (#x8FBAE3 #x5BDA) - (#x8FBAE4 #x5BE0) - (#x8FBAE5 #x5BEF) - (#x8FBAE6 #x5BF1) - (#x8FBAE7 #x5BF4) - (#x8FBAE8 #x5BFD) - (#x8FBAE9 #x5C0C) - (#x8FBAEA #x5C17) - (#x8FBAEB #x5C1E) - (#x8FBAEC #x5C1F) - (#x8FBAED #x5C23) - (#x8FBAEE #x5C26) - (#x8FBAEF #x5C29) - (#x8FBAF0 #x5C2B) - (#x8FBAF1 #x5C2C) - (#x8FBAF2 #x5C2E) - (#x8FBAF3 #x5C30) - (#x8FBAF4 #x5C32) - (#x8FBAF5 #x5C35) - (#x8FBAF6 #x5C36) - (#x8FBAF7 #x5C59) - (#x8FBAF8 #x5C5A) - (#x8FBAF9 #x5C5C) - (#x8FBAFA #x5C62) - (#x8FBAFB #x5C63) - (#x8FBAFC #x5C67) - (#x8FBAFD #x5C68) - (#x8FBAFE #x5C69) - (#x8FBBA1 #x5C6D) - (#x8FBBA2 #x5C70) - (#x8FBBA3 #x5C74) - (#x8FBBA4 #x5C75) - (#x8FBBA5 #x5C7A) - (#x8FBBA6 #x5C7B) - (#x8FBBA7 #x5C7C) - (#x8FBBA8 #x5C7D) - (#x8FBBA9 #x5C87) - (#x8FBBAA #x5C88) - (#x8FBBAB #x5C8A) - (#x8FBBAC #x5C8F) - (#x8FBBAD #x5C92) - (#x8FBBAE #x5C9D) - (#x8FBBAF #x5C9F) - (#x8FBBB0 #x5CA0) - (#x8FBBB1 #x5CA2) - (#x8FBBB2 #x5CA3) - (#x8FBBB3 #x5CA6) - (#x8FBBB4 #x5CAA) - (#x8FBBB5 #x5CB2) - (#x8FBBB6 #x5CB4) - (#x8FBBB7 #x5CB5) - (#x8FBBB8 #x5CBA) - (#x8FBBB9 #x5CC9) - (#x8FBBBA #x5CCB) - (#x8FBBBB #x5CD2) - (#x8FBBBC #x5CDD) - (#x8FBBBD #x5CD7) - (#x8FBBBE #x5CEE) - (#x8FBBBF #x5CF1) - (#x8FBBC0 #x5CF2) - (#x8FBBC1 #x5CF4) - (#x8FBBC2 #x5D01) - (#x8FBBC3 #x5D06) - (#x8FBBC4 #x5D0D) - (#x8FBBC5 #x5D12) - (#x8FBBC6 #x5D2B) - (#x8FBBC7 #x5D23) - (#x8FBBC8 #x5D24) - (#x8FBBC9 #x5D26) - (#x8FBBCA #x5D27) - (#x8FBBCB #x5D31) - (#x8FBBCC #x5D34) - (#x8FBBCD #x5D39) - (#x8FBBCE #x5D3D) - (#x8FBBCF #x5D3F) - (#x8FBBD0 #x5D42) - (#x8FBBD1 #x5D43) - (#x8FBBD2 #x5D46) - (#x8FBBD3 #x5D48) - (#x8FBBD4 #x5D55) - (#x8FBBD5 #x5D51) - (#x8FBBD6 #x5D59) - (#x8FBBD7 #x5D4A) - (#x8FBBD8 #x5D5F) - (#x8FBBD9 #x5D60) - (#x8FBBDA #x5D61) - (#x8FBBDB #x5D62) - (#x8FBBDC #x5D64) - (#x8FBBDD #x5D6A) - (#x8FBBDE #x5D6D) - (#x8FBBDF #x5D70) - (#x8FBBE0 #x5D79) - (#x8FBBE1 #x5D7A) - (#x8FBBE2 #x5D7E) - (#x8FBBE3 #x5D7F) - (#x8FBBE4 #x5D81) - (#x8FBBE5 #x5D83) - (#x8FBBE6 #x5D88) - (#x8FBBE7 #x5D8A) - (#x8FBBE8 #x5D92) - (#x8FBBE9 #x5D93) - (#x8FBBEA #x5D94) - (#x8FBBEB #x5D95) - (#x8FBBEC #x5D99) - (#x8FBBED #x5D9B) - (#x8FBBEE #x5D9F) - (#x8FBBEF #x5DA0) - (#x8FBBF0 #x5DA7) - (#x8FBBF1 #x5DAB) - (#x8FBBF2 #x5DB0) - (#x8FBBF3 #x5DB4) - (#x8FBBF4 #x5DB8) - (#x8FBBF5 #x5DB9) - (#x8FBBF6 #x5DC3) - (#x8FBBF7 #x5DC7) - (#x8FBBF8 #x5DCB) - (#x8FBBF9 #x5DD0) - (#x8FBBFA #x5DCE) - (#x8FBBFB #x5DD8) - (#x8FBBFC #x5DD9) - (#x8FBBFD #x5DE0) - (#x8FBBFE #x5DE4) - (#x8FBCA1 #x5DE9) - (#x8FBCA2 #x5DF8) - (#x8FBCA3 #x5DF9) - (#x8FBCA4 #x5E00) - (#x8FBCA5 #x5E07) - (#x8FBCA6 #x5E0D) - (#x8FBCA7 #x5E12) - (#x8FBCA8 #x5E14) - (#x8FBCA9 #x5E15) - (#x8FBCAA #x5E18) - (#x8FBCAB #x5E1F) - (#x8FBCAC #x5E20) - (#x8FBCAD #x5E2E) - (#x8FBCAE #x5E28) - (#x8FBCAF #x5E32) - (#x8FBCB0 #x5E35) - (#x8FBCB1 #x5E3E) - (#x8FBCB2 #x5E4B) - (#x8FBCB3 #x5E50) - (#x8FBCB4 #x5E49) - (#x8FBCB5 #x5E51) - (#x8FBCB6 #x5E56) - (#x8FBCB7 #x5E58) - (#x8FBCB8 #x5E5B) - (#x8FBCB9 #x5E5C) - (#x8FBCBA #x5E5E) - (#x8FBCBB #x5E68) - (#x8FBCBC #x5E6A) - (#x8FBCBD #x5E6B) - (#x8FBCBE #x5E6C) - (#x8FBCBF #x5E6D) - (#x8FBCC0 #x5E6E) - (#x8FBCC1 #x5E70) - (#x8FBCC2 #x5E80) - (#x8FBCC3 #x5E8B) - (#x8FBCC4 #x5E8E) - (#x8FBCC5 #x5EA2) - (#x8FBCC6 #x5EA4) - (#x8FBCC7 #x5EA5) - (#x8FBCC8 #x5EA8) - (#x8FBCC9 #x5EAA) - (#x8FBCCA #x5EAC) - (#x8FBCCB #x5EB1) - (#x8FBCCC #x5EB3) - (#x8FBCCD #x5EBD) - (#x8FBCCE #x5EBE) - (#x8FBCCF #x5EBF) - (#x8FBCD0 #x5EC6) - (#x8FBCD1 #x5ECC) - (#x8FBCD2 #x5ECB) - (#x8FBCD3 #x5ECE) - (#x8FBCD4 #x5ED1) - (#x8FBCD5 #x5ED2) - (#x8FBCD6 #x5ED4) - (#x8FBCD7 #x5ED5) - (#x8FBCD8 #x5EDC) - (#x8FBCD9 #x5EDE) - (#x8FBCDA #x5EE5) - (#x8FBCDB #x5EEB) - (#x8FBCDC #x5F02) - (#x8FBCDD #x5F06) - (#x8FBCDE #x5F07) - (#x8FBCDF #x5F08) - (#x8FBCE0 #x5F0E) - (#x8FBCE1 #x5F19) - (#x8FBCE2 #x5F1C) - (#x8FBCE3 #x5F1D) - (#x8FBCE4 #x5F21) - (#x8FBCE5 #x5F22) - (#x8FBCE6 #x5F23) - (#x8FBCE7 #x5F24) - (#x8FBCE8 #x5F28) - (#x8FBCE9 #x5F2B) - (#x8FBCEA #x5F2C) - (#x8FBCEB #x5F2E) - (#x8FBCEC #x5F30) - (#x8FBCED #x5F34) - (#x8FBCEE #x5F36) - (#x8FBCEF #x5F3B) - (#x8FBCF0 #x5F3D) - (#x8FBCF1 #x5F3F) - (#x8FBCF2 #x5F40) - (#x8FBCF3 #x5F44) - (#x8FBCF4 #x5F45) - (#x8FBCF5 #x5F47) - (#x8FBCF6 #x5F4D) - (#x8FBCF7 #x5F50) - (#x8FBCF8 #x5F54) - (#x8FBCF9 #x5F58) - (#x8FBCFA #x5F5B) - (#x8FBCFB #x5F60) - (#x8FBCFC #x5F63) - (#x8FBCFD #x5F64) - (#x8FBCFE #x5F67) - (#x8FBDA1 #x5F6F) - (#x8FBDA2 #x5F72) - (#x8FBDA3 #x5F74) - (#x8FBDA4 #x5F75) - (#x8FBDA5 #x5F78) - (#x8FBDA6 #x5F7A) - (#x8FBDA7 #x5F7D) - (#x8FBDA8 #x5F7E) - (#x8FBDA9 #x5F89) - (#x8FBDAA #x5F8D) - (#x8FBDAB #x5F8F) - (#x8FBDAC #x5F96) - (#x8FBDAD #x5F9C) - (#x8FBDAE #x5F9D) - (#x8FBDAF #x5FA2) - (#x8FBDB0 #x5FA7) - (#x8FBDB1 #x5FAB) - (#x8FBDB2 #x5FA4) - (#x8FBDB3 #x5FAC) - (#x8FBDB4 #x5FAF) - (#x8FBDB5 #x5FB0) - (#x8FBDB6 #x5FB1) - (#x8FBDB7 #x5FB8) - (#x8FBDB8 #x5FC4) - (#x8FBDB9 #x5FC7) - (#x8FBDBA #x5FC8) - (#x8FBDBB #x5FC9) - (#x8FBDBC #x5FCB) - (#x8FBDBD #x5FD0) - (#x8FBDBE #x5FD1) - (#x8FBDBF #x5FD2) - (#x8FBDC0 #x5FD3) - (#x8FBDC1 #x5FD4) - (#x8FBDC2 #x5FDE) - (#x8FBDC3 #x5FE1) - (#x8FBDC4 #x5FE2) - (#x8FBDC5 #x5FE8) - (#x8FBDC6 #x5FE9) - (#x8FBDC7 #x5FEA) - (#x8FBDC8 #x5FEC) - (#x8FBDC9 #x5FED) - (#x8FBDCA #x5FEE) - (#x8FBDCB #x5FEF) - (#x8FBDCC #x5FF2) - (#x8FBDCD #x5FF3) - (#x8FBDCE #x5FF6) - (#x8FBDCF #x5FFA) - (#x8FBDD0 #x5FFC) - (#x8FBDD1 #x6007) - (#x8FBDD2 #x600A) - (#x8FBDD3 #x600D) - (#x8FBDD4 #x6013) - (#x8FBDD5 #x6014) - (#x8FBDD6 #x6017) - (#x8FBDD7 #x6018) - (#x8FBDD8 #x601A) - (#x8FBDD9 #x601F) - (#x8FBDDA #x6024) - (#x8FBDDB #x602D) - (#x8FBDDC #x6033) - (#x8FBDDD #x6035) - (#x8FBDDE #x6040) - (#x8FBDDF #x6047) - (#x8FBDE0 #x6048) - (#x8FBDE1 #x6049) - (#x8FBDE2 #x604C) - (#x8FBDE3 #x6051) - (#x8FBDE4 #x6054) - (#x8FBDE5 #x6056) - (#x8FBDE6 #x6057) - (#x8FBDE7 #x605D) - (#x8FBDE8 #x6061) - (#x8FBDE9 #x6067) - (#x8FBDEA #x6071) - (#x8FBDEB #x607E) - (#x8FBDEC #x607F) - (#x8FBDED #x6082) - (#x8FBDEE #x6086) - (#x8FBDEF #x6088) - (#x8FBDF0 #x608A) - (#x8FBDF1 #x608E) - (#x8FBDF2 #x6091) - (#x8FBDF3 #x6093) - (#x8FBDF4 #x6095) - (#x8FBDF5 #x6098) - (#x8FBDF6 #x609D) - (#x8FBDF7 #x609E) - (#x8FBDF8 #x60A2) - (#x8FBDF9 #x60A4) - (#x8FBDFA #x60A5) - (#x8FBDFB #x60A8) - (#x8FBDFC #x60B0) - (#x8FBDFD #x60B1) - (#x8FBDFE #x60B7) - (#x8FBEA1 #x60BB) - (#x8FBEA2 #x60BE) - (#x8FBEA3 #x60C2) - (#x8FBEA4 #x60C4) - (#x8FBEA5 #x60C8) - (#x8FBEA6 #x60C9) - (#x8FBEA7 #x60CA) - (#x8FBEA8 #x60CB) - (#x8FBEA9 #x60CE) - (#x8FBEAA #x60CF) - (#x8FBEAB #x60D4) - (#x8FBEAC #x60D5) - (#x8FBEAD #x60D9) - (#x8FBEAE #x60DB) - (#x8FBEAF #x60DD) - (#x8FBEB0 #x60DE) - (#x8FBEB1 #x60E2) - (#x8FBEB2 #x60E5) - (#x8FBEB3 #x60F2) - (#x8FBEB4 #x60F5) - (#x8FBEB5 #x60F8) - (#x8FBEB6 #x60FC) - (#x8FBEB7 #x60FD) - (#x8FBEB8 #x6102) - (#x8FBEB9 #x6107) - (#x8FBEBA #x610A) - (#x8FBEBB #x610C) - (#x8FBEBC #x6110) - (#x8FBEBD #x6111) - (#x8FBEBE #x6112) - (#x8FBEBF #x6113) - (#x8FBEC0 #x6114) - (#x8FBEC1 #x6116) - (#x8FBEC2 #x6117) - (#x8FBEC3 #x6119) - (#x8FBEC4 #x611C) - (#x8FBEC5 #x611E) - (#x8FBEC6 #x6122) - (#x8FBEC7 #x612A) - (#x8FBEC8 #x612B) - (#x8FBEC9 #x6130) - (#x8FBECA #x6131) - (#x8FBECB #x6135) - (#x8FBECC #x6136) - (#x8FBECD #x6137) - (#x8FBECE #x6139) - (#x8FBECF #x6141) - (#x8FBED0 #x6145) - (#x8FBED1 #x6146) - (#x8FBED2 #x6149) - (#x8FBED3 #x615E) - (#x8FBED4 #x6160) - (#x8FBED5 #x616C) - (#x8FBED6 #x6172) - (#x8FBED7 #x6178) - (#x8FBED8 #x617B) - (#x8FBED9 #x617C) - (#x8FBEDA #x617F) - (#x8FBEDB #x6180) - (#x8FBEDC #x6181) - (#x8FBEDD #x6183) - (#x8FBEDE #x6184) - (#x8FBEDF #x618B) - (#x8FBEE0 #x618D) - (#x8FBEE1 #x6192) - (#x8FBEE2 #x6193) - (#x8FBEE3 #x6197) - (#x8FBEE4 #x6198) - (#x8FBEE5 #x619C) - (#x8FBEE6 #x619D) - (#x8FBEE7 #x619F) - (#x8FBEE8 #x61A0) - (#x8FBEE9 #x61A5) - (#x8FBEEA #x61A8) - (#x8FBEEB #x61AA) - (#x8FBEEC #x61AD) - (#x8FBEED #x61B8) - (#x8FBEEE #x61B9) - (#x8FBEEF #x61BC) - (#x8FBEF0 #x61C0) - (#x8FBEF1 #x61C1) - (#x8FBEF2 #x61C2) - (#x8FBEF3 #x61CE) - (#x8FBEF4 #x61CF) - (#x8FBEF5 #x61D5) - (#x8FBEF6 #x61DC) - (#x8FBEF7 #x61DD) - (#x8FBEF8 #x61DE) - (#x8FBEF9 #x61DF) - (#x8FBEFA #x61E1) - (#x8FBEFB #x61E2) - (#x8FBEFC #x61E7) - (#x8FBEFD #x61E9) - (#x8FBEFE #x61E5) - (#x8FBFA1 #x61EC) - (#x8FBFA2 #x61ED) - (#x8FBFA3 #x61EF) - (#x8FBFA4 #x6201) - (#x8FBFA5 #x6203) - (#x8FBFA6 #x6204) - (#x8FBFA7 #x6207) - (#x8FBFA8 #x6213) - (#x8FBFA9 #x6215) - (#x8FBFAA #x621C) - (#x8FBFAB #x6220) - (#x8FBFAC #x6222) - (#x8FBFAD #x6223) - (#x8FBFAE #x6227) - (#x8FBFAF #x6229) - (#x8FBFB0 #x622B) - (#x8FBFB1 #x6239) - (#x8FBFB2 #x623D) - (#x8FBFB3 #x6242) - (#x8FBFB4 #x6243) - (#x8FBFB5 #x6244) - (#x8FBFB6 #x6246) - (#x8FBFB7 #x624C) - (#x8FBFB8 #x6250) - (#x8FBFB9 #x6251) - (#x8FBFBA #x6252) - (#x8FBFBB #x6254) - (#x8FBFBC #x6256) - (#x8FBFBD #x625A) - (#x8FBFBE #x625C) - (#x8FBFBF #x6264) - (#x8FBFC0 #x626D) - (#x8FBFC1 #x626F) - (#x8FBFC2 #x6273) - (#x8FBFC3 #x627A) - (#x8FBFC4 #x627D) - (#x8FBFC5 #x628D) - (#x8FBFC6 #x628E) - (#x8FBFC7 #x628F) - (#x8FBFC8 #x6290) - (#x8FBFC9 #x62A6) - (#x8FBFCA #x62A8) - (#x8FBFCB #x62B3) - (#x8FBFCC #x62B6) - (#x8FBFCD #x62B7) - (#x8FBFCE #x62BA) - (#x8FBFCF #x62BE) - (#x8FBFD0 #x62BF) - (#x8FBFD1 #x62C4) - (#x8FBFD2 #x62CE) - (#x8FBFD3 #x62D5) - (#x8FBFD4 #x62D6) - (#x8FBFD5 #x62DA) - (#x8FBFD6 #x62EA) - (#x8FBFD7 #x62F2) - (#x8FBFD8 #x62F4) - (#x8FBFD9 #x62FC) - (#x8FBFDA #x62FD) - (#x8FBFDB #x6303) - (#x8FBFDC #x6304) - (#x8FBFDD #x630A) - (#x8FBFDE #x630B) - (#x8FBFDF #x630D) - (#x8FBFE0 #x6310) - (#x8FBFE1 #x6313) - (#x8FBFE2 #x6316) - (#x8FBFE3 #x6318) - (#x8FBFE4 #x6329) - (#x8FBFE5 #x632A) - (#x8FBFE6 #x632D) - (#x8FBFE7 #x6335) - (#x8FBFE8 #x6336) - (#x8FBFE9 #x6339) - (#x8FBFEA #x633C) - (#x8FBFEB #x6341) - (#x8FBFEC #x6342) - (#x8FBFED #x6343) - (#x8FBFEE #x6344) - (#x8FBFEF #x6346) - (#x8FBFF0 #x634A) - (#x8FBFF1 #x634B) - (#x8FBFF2 #x634E) - (#x8FBFF3 #x6352) - (#x8FBFF4 #x6353) - (#x8FBFF5 #x6354) - (#x8FBFF6 #x6358) - (#x8FBFF7 #x635B) - (#x8FBFF8 #x6365) - (#x8FBFF9 #x6366) - (#x8FBFFA #x636C) - (#x8FBFFB #x636D) - (#x8FBFFC #x6371) - (#x8FBFFD #x6374) - (#x8FBFFE #x6375) - (#x8FC0A1 #x6378) - (#x8FC0A2 #x637C) - (#x8FC0A3 #x637D) - (#x8FC0A4 #x637F) - (#x8FC0A5 #x6382) - (#x8FC0A6 #x6384) - (#x8FC0A7 #x6387) - (#x8FC0A8 #x638A) - (#x8FC0A9 #x6390) - (#x8FC0AA #x6394) - (#x8FC0AB #x6395) - (#x8FC0AC #x6399) - (#x8FC0AD #x639A) - (#x8FC0AE #x639E) - (#x8FC0AF #x63A4) - (#x8FC0B0 #x63A6) - (#x8FC0B1 #x63AD) - (#x8FC0B2 #x63AE) - (#x8FC0B3 #x63AF) - (#x8FC0B4 #x63BD) - (#x8FC0B5 #x63C1) - (#x8FC0B6 #x63C5) - (#x8FC0B7 #x63C8) - (#x8FC0B8 #x63CE) - (#x8FC0B9 #x63D1) - (#x8FC0BA #x63D3) - (#x8FC0BB #x63D4) - (#x8FC0BC #x63D5) - (#x8FC0BD #x63DC) - (#x8FC0BE #x63E0) - (#x8FC0BF #x63E5) - (#x8FC0C0 #x63EA) - (#x8FC0C1 #x63EC) - (#x8FC0C2 #x63F2) - (#x8FC0C3 #x63F3) - (#x8FC0C4 #x63F5) - (#x8FC0C5 #x63F8) - (#x8FC0C6 #x63F9) - (#x8FC0C7 #x6409) - (#x8FC0C8 #x640A) - (#x8FC0C9 #x6410) - (#x8FC0CA #x6412) - (#x8FC0CB #x6414) - (#x8FC0CC #x6418) - (#x8FC0CD #x641E) - (#x8FC0CE #x6420) - (#x8FC0CF #x6422) - (#x8FC0D0 #x6424) - (#x8FC0D1 #x6425) - (#x8FC0D2 #x6429) - (#x8FC0D3 #x642A) - (#x8FC0D4 #x642F) - (#x8FC0D5 #x6430) - (#x8FC0D6 #x6435) - (#x8FC0D7 #x643D) - (#x8FC0D8 #x643F) - (#x8FC0D9 #x644B) - (#x8FC0DA #x644F) - (#x8FC0DB #x6451) - (#x8FC0DC #x6452) - (#x8FC0DD #x6453) - (#x8FC0DE #x6454) - (#x8FC0DF #x645A) - (#x8FC0E0 #x645B) - (#x8FC0E1 #x645C) - (#x8FC0E2 #x645D) - (#x8FC0E3 #x645F) - (#x8FC0E4 #x6460) - (#x8FC0E5 #x6461) - (#x8FC0E6 #x6463) - (#x8FC0E7 #x646D) - (#x8FC0E8 #x6473) - (#x8FC0E9 #x6474) - (#x8FC0EA #x647B) - (#x8FC0EB #x647D) - (#x8FC0EC #x6485) - (#x8FC0ED #x6487) - (#x8FC0EE #x648F) - (#x8FC0EF #x6490) - (#x8FC0F0 #x6491) - (#x8FC0F1 #x6498) - (#x8FC0F2 #x6499) - (#x8FC0F3 #x649B) - (#x8FC0F4 #x649D) - (#x8FC0F5 #x649F) - (#x8FC0F6 #x64A1) - (#x8FC0F7 #x64A3) - (#x8FC0F8 #x64A6) - (#x8FC0F9 #x64A8) - (#x8FC0FA #x64AC) - (#x8FC0FB #x64B3) - (#x8FC0FC #x64BD) - (#x8FC0FD #x64BE) - (#x8FC0FE #x64BF) - (#x8FC1A1 #x64C4) - (#x8FC1A2 #x64C9) - (#x8FC1A3 #x64CA) - (#x8FC1A4 #x64CB) - (#x8FC1A5 #x64CC) - (#x8FC1A6 #x64CE) - (#x8FC1A7 #x64D0) - (#x8FC1A8 #x64D1) - (#x8FC1A9 #x64D5) - (#x8FC1AA #x64D7) - (#x8FC1AB #x64E4) - (#x8FC1AC #x64E5) - (#x8FC1AD #x64E9) - (#x8FC1AE #x64EA) - (#x8FC1AF #x64ED) - (#x8FC1B0 #x64F0) - (#x8FC1B1 #x64F5) - (#x8FC1B2 #x64F7) - (#x8FC1B3 #x64FB) - (#x8FC1B4 #x64FF) - (#x8FC1B5 #x6501) - (#x8FC1B6 #x6504) - (#x8FC1B7 #x6508) - (#x8FC1B8 #x6509) - (#x8FC1B9 #x650A) - (#x8FC1BA #x650F) - (#x8FC1BB #x6513) - (#x8FC1BC #x6514) - (#x8FC1BD #x6516) - (#x8FC1BE #x6519) - (#x8FC1BF #x651B) - (#x8FC1C0 #x651E) - (#x8FC1C1 #x651F) - (#x8FC1C2 #x6522) - (#x8FC1C3 #x6526) - (#x8FC1C4 #x6529) - (#x8FC1C5 #x652E) - (#x8FC1C6 #x6531) - (#x8FC1C7 #x653A) - (#x8FC1C8 #x653C) - (#x8FC1C9 #x653D) - (#x8FC1CA #x6543) - (#x8FC1CB #x6547) - (#x8FC1CC #x6549) - (#x8FC1CD #x6550) - (#x8FC1CE #x6552) - (#x8FC1CF #x6554) - (#x8FC1D0 #x655F) - (#x8FC1D1 #x6560) - (#x8FC1D2 #x6567) - (#x8FC1D3 #x656B) - (#x8FC1D4 #x657A) - (#x8FC1D5 #x657D) - (#x8FC1D6 #x6581) - (#x8FC1D7 #x6585) - (#x8FC1D8 #x658A) - (#x8FC1D9 #x6592) - (#x8FC1DA #x6595) - (#x8FC1DB #x6598) - (#x8FC1DC #x659D) - (#x8FC1DD #x65A0) - (#x8FC1DE #x65A3) - (#x8FC1DF #x65A6) - (#x8FC1E0 #x65AE) - (#x8FC1E1 #x65B2) - (#x8FC1E2 #x65B3) - (#x8FC1E3 #x65B4) - (#x8FC1E4 #x65BF) - (#x8FC1E5 #x65C2) - (#x8FC1E6 #x65C8) - (#x8FC1E7 #x65C9) - (#x8FC1E8 #x65CE) - (#x8FC1E9 #x65D0) - (#x8FC1EA #x65D4) - (#x8FC1EB #x65D6) - (#x8FC1EC #x65D8) - (#x8FC1ED #x65DF) - (#x8FC1EE #x65F0) - (#x8FC1EF #x65F2) - (#x8FC1F0 #x65F4) - (#x8FC1F1 #x65F5) - (#x8FC1F2 #x65F9) - (#x8FC1F3 #x65FE) - (#x8FC1F4 #x65FF) - (#x8FC1F5 #x6600) - (#x8FC1F6 #x6604) - (#x8FC1F7 #x6608) - (#x8FC1F8 #x6609) - (#x8FC1F9 #x660D) - (#x8FC1FA #x6611) - (#x8FC1FB #x6612) - (#x8FC1FC #x6615) - (#x8FC1FD #x6616) - (#x8FC1FE #x661D) - (#x8FC2A1 #x661E) - (#x8FC2A2 #x6621) - (#x8FC2A3 #x6622) - (#x8FC2A4 #x6623) - (#x8FC2A5 #x6624) - (#x8FC2A6 #x6626) - (#x8FC2A7 #x6629) - (#x8FC2A8 #x662A) - (#x8FC2A9 #x662B) - (#x8FC2AA #x662C) - (#x8FC2AB #x662E) - (#x8FC2AC #x6630) - (#x8FC2AD #x6631) - (#x8FC2AE #x6633) - (#x8FC2AF #x6639) - (#x8FC2B0 #x6637) - (#x8FC2B1 #x6640) - (#x8FC2B2 #x6645) - (#x8FC2B3 #x6646) - (#x8FC2B4 #x664A) - (#x8FC2B5 #x664C) - (#x8FC2B6 #x6651) - (#x8FC2B7 #x664E) - (#x8FC2B8 #x6657) - (#x8FC2B9 #x6658) - (#x8FC2BA #x6659) - (#x8FC2BB #x665B) - (#x8FC2BC #x665C) - (#x8FC2BD #x6660) - (#x8FC2BE #x6661) - (#x8FC2BF #x66FB) - (#x8FC2C0 #x666A) - (#x8FC2C1 #x666B) - (#x8FC2C2 #x666C) - (#x8FC2C3 #x667E) - (#x8FC2C4 #x6673) - (#x8FC2C5 #x6675) - (#x8FC2C6 #x667F) - (#x8FC2C7 #x6677) - (#x8FC2C8 #x6678) - (#x8FC2C9 #x6679) - (#x8FC2CA #x667B) - (#x8FC2CB #x6680) - (#x8FC2CC #x667C) - (#x8FC2CD #x668B) - (#x8FC2CE #x668C) - (#x8FC2CF #x668D) - (#x8FC2D0 #x6690) - (#x8FC2D1 #x6692) - (#x8FC2D2 #x6699) - (#x8FC2D3 #x669A) - (#x8FC2D4 #x669B) - (#x8FC2D5 #x669C) - (#x8FC2D6 #x669F) - (#x8FC2D7 #x66A0) - (#x8FC2D8 #x66A4) - (#x8FC2D9 #x66AD) - (#x8FC2DA #x66B1) - (#x8FC2DB #x66B2) - (#x8FC2DC #x66B5) - (#x8FC2DD #x66BB) - (#x8FC2DE #x66BF) - (#x8FC2DF #x66C0) - (#x8FC2E0 #x66C2) - (#x8FC2E1 #x66C3) - (#x8FC2E2 #x66C8) - (#x8FC2E3 #x66CC) - (#x8FC2E4 #x66CE) - (#x8FC2E5 #x66CF) - (#x8FC2E6 #x66D4) - (#x8FC2E7 #x66DB) - (#x8FC2E8 #x66DF) - (#x8FC2E9 #x66E8) - (#x8FC2EA #x66EB) - (#x8FC2EB #x66EC) - (#x8FC2EC #x66EE) - (#x8FC2ED #x66FA) - (#x8FC2EE #x6705) - (#x8FC2EF #x6707) - (#x8FC2F0 #x670E) - (#x8FC2F1 #x6713) - (#x8FC2F2 #x6719) - (#x8FC2F3 #x671C) - (#x8FC2F4 #x6720) - (#x8FC2F5 #x6722) - (#x8FC2F6 #x6733) - (#x8FC2F7 #x673E) - (#x8FC2F8 #x6745) - (#x8FC2F9 #x6747) - (#x8FC2FA #x6748) - (#x8FC2FB #x674C) - (#x8FC2FC #x6754) - (#x8FC2FD #x6755) - (#x8FC2FE #x675D) - (#x8FC3A1 #x6766) - (#x8FC3A2 #x676C) - (#x8FC3A3 #x676E) - (#x8FC3A4 #x6774) - (#x8FC3A5 #x6776) - (#x8FC3A6 #x677B) - (#x8FC3A7 #x6781) - (#x8FC3A8 #x6784) - (#x8FC3A9 #x678E) - (#x8FC3AA #x678F) - (#x8FC3AB #x6791) - (#x8FC3AC #x6793) - (#x8FC3AD #x6796) - (#x8FC3AE #x6798) - (#x8FC3AF #x6799) - (#x8FC3B0 #x679B) - (#x8FC3B1 #x67B0) - (#x8FC3B2 #x67B1) - (#x8FC3B3 #x67B2) - (#x8FC3B4 #x67B5) - (#x8FC3B5 #x67BB) - (#x8FC3B6 #x67BC) - (#x8FC3B7 #x67BD) - (#x8FC3B8 #x67F9) - (#x8FC3B9 #x67C0) - (#x8FC3BA #x67C2) - (#x8FC3BB #x67C3) - (#x8FC3BC #x67C5) - (#x8FC3BD #x67C8) - (#x8FC3BE #x67C9) - (#x8FC3BF #x67D2) - (#x8FC3C0 #x67D7) - (#x8FC3C1 #x67D9) - (#x8FC3C2 #x67DC) - (#x8FC3C3 #x67E1) - (#x8FC3C4 #x67E6) - (#x8FC3C5 #x67F0) - (#x8FC3C6 #x67F2) - (#x8FC3C7 #x67F6) - (#x8FC3C8 #x67F7) - (#x8FC3C9 #x6852) - (#x8FC3CA #x6814) - (#x8FC3CB #x6819) - (#x8FC3CC #x681D) - (#x8FC3CD #x681F) - (#x8FC3CE #x6828) - (#x8FC3CF #x6827) - (#x8FC3D0 #x682C) - (#x8FC3D1 #x682D) - (#x8FC3D2 #x682F) - (#x8FC3D3 #x6830) - (#x8FC3D4 #x6831) - (#x8FC3D5 #x6833) - (#x8FC3D6 #x683B) - (#x8FC3D7 #x683F) - (#x8FC3D8 #x6844) - (#x8FC3D9 #x6845) - (#x8FC3DA #x684A) - (#x8FC3DB #x684C) - (#x8FC3DC #x6855) - (#x8FC3DD #x6857) - (#x8FC3DE #x6858) - (#x8FC3DF #x685B) - (#x8FC3E0 #x686B) - (#x8FC3E1 #x686E) - (#x8FC3E2 #x686F) - (#x8FC3E3 #x6870) - (#x8FC3E4 #x6871) - (#x8FC3E5 #x6872) - (#x8FC3E6 #x6875) - (#x8FC3E7 #x6879) - (#x8FC3E8 #x687A) - (#x8FC3E9 #x687B) - (#x8FC3EA #x687C) - (#x8FC3EB #x6882) - (#x8FC3EC #x6884) - (#x8FC3ED #x6886) - (#x8FC3EE #x6888) - (#x8FC3EF #x6896) - (#x8FC3F0 #x6898) - (#x8FC3F1 #x689A) - (#x8FC3F2 #x689C) - (#x8FC3F3 #x68A1) - (#x8FC3F4 #x68A3) - (#x8FC3F5 #x68A5) - (#x8FC3F6 #x68A9) - (#x8FC3F7 #x68AA) - (#x8FC3F8 #x68AE) - (#x8FC3F9 #x68B2) - (#x8FC3FA #x68BB) - (#x8FC3FB #x68C5) - (#x8FC3FC #x68C8) - (#x8FC3FD #x68CC) - (#x8FC3FE #x68CF) - (#x8FC4A1 #x68D0) - (#x8FC4A2 #x68D1) - (#x8FC4A3 #x68D3) - (#x8FC4A4 #x68D6) - (#x8FC4A5 #x68D9) - (#x8FC4A6 #x68DC) - (#x8FC4A7 #x68DD) - (#x8FC4A8 #x68E5) - (#x8FC4A9 #x68E8) - (#x8FC4AA #x68EA) - (#x8FC4AB #x68EB) - (#x8FC4AC #x68EC) - (#x8FC4AD #x68ED) - (#x8FC4AE #x68F0) - (#x8FC4AF #x68F1) - (#x8FC4B0 #x68F5) - (#x8FC4B1 #x68F6) - (#x8FC4B2 #x68FB) - (#x8FC4B3 #x68FC) - (#x8FC4B4 #x68FD) - (#x8FC4B5 #x6906) - (#x8FC4B6 #x6909) - (#x8FC4B7 #x690A) - (#x8FC4B8 #x6910) - (#x8FC4B9 #x6911) - (#x8FC4BA #x6913) - (#x8FC4BB #x6916) - (#x8FC4BC #x6917) - (#x8FC4BD #x6931) - (#x8FC4BE #x6933) - (#x8FC4BF #x6935) - (#x8FC4C0 #x6938) - (#x8FC4C1 #x693B) - (#x8FC4C2 #x6942) - (#x8FC4C3 #x6945) - (#x8FC4C4 #x6949) - (#x8FC4C5 #x694E) - (#x8FC4C6 #x6957) - (#x8FC4C7 #x695B) - (#x8FC4C8 #x6963) - (#x8FC4C9 #x6964) - (#x8FC4CA #x6965) - (#x8FC4CB #x6966) - (#x8FC4CC #x6968) - (#x8FC4CD #x6969) - (#x8FC4CE #x696C) - (#x8FC4CF #x6970) - (#x8FC4D0 #x6971) - (#x8FC4D1 #x6972) - (#x8FC4D2 #x697A) - (#x8FC4D3 #x697B) - (#x8FC4D4 #x697F) - (#x8FC4D5 #x6980) - (#x8FC4D6 #x698D) - (#x8FC4D7 #x6992) - (#x8FC4D8 #x6996) - (#x8FC4D9 #x6998) - (#x8FC4DA #x69A1) - (#x8FC4DB #x69A5) - (#x8FC4DC #x69A6) - (#x8FC4DD #x69A8) - (#x8FC4DE #x69AB) - (#x8FC4DF #x69AD) - (#x8FC4E0 #x69AF) - (#x8FC4E1 #x69B7) - (#x8FC4E2 #x69B8) - (#x8FC4E3 #x69BA) - (#x8FC4E4 #x69BC) - (#x8FC4E5 #x69C5) - (#x8FC4E6 #x69C8) - (#x8FC4E7 #x69D1) - (#x8FC4E8 #x69D6) - (#x8FC4E9 #x69D7) - (#x8FC4EA #x69E2) - (#x8FC4EB #x69E5) - (#x8FC4EC #x69EE) - (#x8FC4ED #x69EF) - (#x8FC4EE #x69F1) - (#x8FC4EF #x69F3) - (#x8FC4F0 #x69F5) - (#x8FC4F1 #x69FE) - (#x8FC4F2 #x6A00) - (#x8FC4F3 #x6A01) - (#x8FC4F4 #x6A03) - (#x8FC4F5 #x6A0F) - (#x8FC4F6 #x6A11) - (#x8FC4F7 #x6A15) - (#x8FC4F8 #x6A1A) - (#x8FC4F9 #x6A1D) - (#x8FC4FA #x6A20) - (#x8FC4FB #x6A24) - (#x8FC4FC #x6A28) - (#x8FC4FD #x6A30) - (#x8FC4FE #x6A32) - (#x8FC5A1 #x6A34) - (#x8FC5A2 #x6A37) - (#x8FC5A3 #x6A3B) - (#x8FC5A4 #x6A3E) - (#x8FC5A5 #x6A3F) - (#x8FC5A6 #x6A45) - (#x8FC5A7 #x6A46) - (#x8FC5A8 #x6A49) - (#x8FC5A9 #x6A4A) - (#x8FC5AA #x6A4E) - (#x8FC5AB #x6A50) - (#x8FC5AC #x6A51) - (#x8FC5AD #x6A52) - (#x8FC5AE #x6A55) - (#x8FC5AF #x6A56) - (#x8FC5B0 #x6A5B) - (#x8FC5B1 #x6A64) - (#x8FC5B2 #x6A67) - (#x8FC5B3 #x6A6A) - (#x8FC5B4 #x6A71) - (#x8FC5B5 #x6A73) - (#x8FC5B6 #x6A7E) - (#x8FC5B7 #x6A81) - (#x8FC5B8 #x6A83) - (#x8FC5B9 #x6A86) - (#x8FC5BA #x6A87) - (#x8FC5BB #x6A89) - (#x8FC5BC #x6A8B) - (#x8FC5BD #x6A91) - (#x8FC5BE #x6A9B) - (#x8FC5BF #x6A9D) - (#x8FC5C0 #x6A9E) - (#x8FC5C1 #x6A9F) - (#x8FC5C2 #x6AA5) - (#x8FC5C3 #x6AAB) - (#x8FC5C4 #x6AAF) - (#x8FC5C5 #x6AB0) - (#x8FC5C6 #x6AB1) - (#x8FC5C7 #x6AB4) - (#x8FC5C8 #x6ABD) - (#x8FC5C9 #x6ABE) - (#x8FC5CA #x6ABF) - (#x8FC5CB #x6AC6) - (#x8FC5CC #x6AC9) - (#x8FC5CD #x6AC8) - (#x8FC5CE #x6ACC) - (#x8FC5CF #x6AD0) - (#x8FC5D0 #x6AD4) - (#x8FC5D1 #x6AD5) - (#x8FC5D2 #x6AD6) - (#x8FC5D3 #x6ADC) - (#x8FC5D4 #x6ADD) - (#x8FC5D5 #x6AE4) - (#x8FC5D6 #x6AE7) - (#x8FC5D7 #x6AEC) - (#x8FC5D8 #x6AF0) - (#x8FC5D9 #x6AF1) - (#x8FC5DA #x6AF2) - (#x8FC5DB #x6AFC) - (#x8FC5DC #x6AFD) - (#x8FC5DD #x6B02) - (#x8FC5DE #x6B03) - (#x8FC5DF #x6B06) - (#x8FC5E0 #x6B07) - (#x8FC5E1 #x6B09) - (#x8FC5E2 #x6B0F) - (#x8FC5E3 #x6B10) - (#x8FC5E4 #x6B11) - (#x8FC5E5 #x6B17) - (#x8FC5E6 #x6B1B) - (#x8FC5E7 #x6B1E) - (#x8FC5E8 #x6B24) - (#x8FC5E9 #x6B28) - (#x8FC5EA #x6B2B) - (#x8FC5EB #x6B2C) - (#x8FC5EC #x6B2F) - (#x8FC5ED #x6B35) - (#x8FC5EE #x6B36) - (#x8FC5EF #x6B3B) - (#x8FC5F0 #x6B3F) - (#x8FC5F1 #x6B46) - (#x8FC5F2 #x6B4A) - (#x8FC5F3 #x6B4D) - (#x8FC5F4 #x6B52) - (#x8FC5F5 #x6B56) - (#x8FC5F6 #x6B58) - (#x8FC5F7 #x6B5D) - (#x8FC5F8 #x6B60) - (#x8FC5F9 #x6B67) - (#x8FC5FA #x6B6B) - (#x8FC5FB #x6B6E) - (#x8FC5FC #x6B70) - (#x8FC5FD #x6B75) - (#x8FC5FE #x6B7D) - (#x8FC6A1 #x6B7E) - (#x8FC6A2 #x6B82) - (#x8FC6A3 #x6B85) - (#x8FC6A4 #x6B97) - (#x8FC6A5 #x6B9B) - (#x8FC6A6 #x6B9F) - (#x8FC6A7 #x6BA0) - (#x8FC6A8 #x6BA2) - (#x8FC6A9 #x6BA3) - (#x8FC6AA #x6BA8) - (#x8FC6AB #x6BA9) - (#x8FC6AC #x6BAC) - (#x8FC6AD #x6BAD) - (#x8FC6AE #x6BAE) - (#x8FC6AF #x6BB0) - (#x8FC6B0 #x6BB8) - (#x8FC6B1 #x6BB9) - (#x8FC6B2 #x6BBD) - (#x8FC6B3 #x6BBE) - (#x8FC6B4 #x6BC3) - (#x8FC6B5 #x6BC4) - (#x8FC6B6 #x6BC9) - (#x8FC6B7 #x6BCC) - (#x8FC6B8 #x6BD6) - (#x8FC6B9 #x6BDA) - (#x8FC6BA #x6BE1) - (#x8FC6BB #x6BE3) - (#x8FC6BC #x6BE6) - (#x8FC6BD #x6BE7) - (#x8FC6BE #x6BEE) - (#x8FC6BF #x6BF1) - (#x8FC6C0 #x6BF7) - (#x8FC6C1 #x6BF9) - (#x8FC6C2 #x6BFF) - (#x8FC6C3 #x6C02) - (#x8FC6C4 #x6C04) - (#x8FC6C5 #x6C05) - (#x8FC6C6 #x6C09) - (#x8FC6C7 #x6C0D) - (#x8FC6C8 #x6C0E) - (#x8FC6C9 #x6C10) - (#x8FC6CA #x6C12) - (#x8FC6CB #x6C19) - (#x8FC6CC #x6C1F) - (#x8FC6CD #x6C26) - (#x8FC6CE #x6C27) - (#x8FC6CF #x6C28) - (#x8FC6D0 #x6C2C) - (#x8FC6D1 #x6C2E) - (#x8FC6D2 #x6C33) - (#x8FC6D3 #x6C35) - (#x8FC6D4 #x6C36) - (#x8FC6D5 #x6C3A) - (#x8FC6D6 #x6C3B) - (#x8FC6D7 #x6C3F) - (#x8FC6D8 #x6C4A) - (#x8FC6D9 #x6C4B) - (#x8FC6DA #x6C4D) - (#x8FC6DB #x6C4F) - (#x8FC6DC #x6C52) - (#x8FC6DD #x6C54) - (#x8FC6DE #x6C59) - (#x8FC6DF #x6C5B) - (#x8FC6E0 #x6C5C) - (#x8FC6E1 #x6C6B) - (#x8FC6E2 #x6C6D) - (#x8FC6E3 #x6C6F) - (#x8FC6E4 #x6C74) - (#x8FC6E5 #x6C76) - (#x8FC6E6 #x6C78) - (#x8FC6E7 #x6C79) - (#x8FC6E8 #x6C7B) - (#x8FC6E9 #x6C85) - (#x8FC6EA #x6C86) - (#x8FC6EB #x6C87) - (#x8FC6EC #x6C89) - (#x8FC6ED #x6C94) - (#x8FC6EE #x6C95) - (#x8FC6EF #x6C97) - (#x8FC6F0 #x6C98) - (#x8FC6F1 #x6C9C) - (#x8FC6F2 #x6C9F) - (#x8FC6F3 #x6CB0) - (#x8FC6F4 #x6CB2) - (#x8FC6F5 #x6CB4) - (#x8FC6F6 #x6CC2) - (#x8FC6F7 #x6CC6) - (#x8FC6F8 #x6CCD) - (#x8FC6F9 #x6CCF) - (#x8FC6FA #x6CD0) - (#x8FC6FB #x6CD1) - (#x8FC6FC #x6CD2) - (#x8FC6FD #x6CD4) - (#x8FC6FE #x6CD6) - (#x8FC7A1 #x6CDA) - (#x8FC7A2 #x6CDC) - (#x8FC7A3 #x6CE0) - (#x8FC7A4 #x6CE7) - (#x8FC7A5 #x6CE9) - (#x8FC7A6 #x6CEB) - (#x8FC7A7 #x6CEC) - (#x8FC7A8 #x6CEE) - (#x8FC7A9 #x6CF2) - (#x8FC7AA #x6CF4) - (#x8FC7AB #x6D04) - (#x8FC7AC #x6D07) - (#x8FC7AD #x6D0A) - (#x8FC7AE #x6D0E) - (#x8FC7AF #x6D0F) - (#x8FC7B0 #x6D11) - (#x8FC7B1 #x6D13) - (#x8FC7B2 #x6D1A) - (#x8FC7B3 #x6D26) - (#x8FC7B4 #x6D27) - (#x8FC7B5 #x6D28) - (#x8FC7B6 #x6C67) - (#x8FC7B7 #x6D2E) - (#x8FC7B8 #x6D2F) - (#x8FC7B9 #x6D31) - (#x8FC7BA #x6D39) - (#x8FC7BB #x6D3C) - (#x8FC7BC #x6D3F) - (#x8FC7BD #x6D57) - (#x8FC7BE #x6D5E) - (#x8FC7BF #x6D5F) - (#x8FC7C0 #x6D61) - (#x8FC7C1 #x6D65) - (#x8FC7C2 #x6D67) - (#x8FC7C3 #x6D6F) - (#x8FC7C4 #x6D70) - (#x8FC7C5 #x6D7C) - (#x8FC7C6 #x6D82) - (#x8FC7C7 #x6D87) - (#x8FC7C8 #x6D91) - (#x8FC7C9 #x6D92) - (#x8FC7CA #x6D94) - (#x8FC7CB #x6D96) - (#x8FC7CC #x6D97) - (#x8FC7CD #x6D98) - (#x8FC7CE #x6DAA) - (#x8FC7CF #x6DAC) - (#x8FC7D0 #x6DB4) - (#x8FC7D1 #x6DB7) - (#x8FC7D2 #x6DB9) - (#x8FC7D3 #x6DBD) - (#x8FC7D4 #x6DBF) - (#x8FC7D5 #x6DC4) - (#x8FC7D6 #x6DC8) - (#x8FC7D7 #x6DCA) - (#x8FC7D8 #x6DCE) - (#x8FC7D9 #x6DCF) - (#x8FC7DA #x6DD6) - (#x8FC7DB #x6DDB) - (#x8FC7DC #x6DDD) - (#x8FC7DD #x6DDF) - (#x8FC7DE #x6DE0) - (#x8FC7DF #x6DE2) - (#x8FC7E0 #x6DE5) - (#x8FC7E1 #x6DE9) - (#x8FC7E2 #x6DEF) - (#x8FC7E3 #x6DF0) - (#x8FC7E4 #x6DF4) - (#x8FC7E5 #x6DF6) - (#x8FC7E6 #x6DFC) - (#x8FC7E7 #x6E00) - (#x8FC7E8 #x6E04) - (#x8FC7E9 #x6E1E) - (#x8FC7EA #x6E22) - (#x8FC7EB #x6E27) - (#x8FC7EC #x6E32) - (#x8FC7ED #x6E36) - (#x8FC7EE #x6E39) - (#x8FC7EF #x6E3B) - (#x8FC7F0 #x6E3C) - (#x8FC7F1 #x6E44) - (#x8FC7F2 #x6E45) - (#x8FC7F3 #x6E48) - (#x8FC7F4 #x6E49) - (#x8FC7F5 #x6E4B) - (#x8FC7F6 #x6E4F) - (#x8FC7F7 #x6E51) - (#x8FC7F8 #x6E52) - (#x8FC7F9 #x6E53) - (#x8FC7FA #x6E54) - (#x8FC7FB #x6E57) - (#x8FC7FC #x6E5C) - (#x8FC7FD #x6E5D) - (#x8FC7FE #x6E5E) - (#x8FC8A1 #x6E62) - (#x8FC8A2 #x6E63) - (#x8FC8A3 #x6E68) - (#x8FC8A4 #x6E73) - (#x8FC8A5 #x6E7B) - (#x8FC8A6 #x6E7D) - (#x8FC8A7 #x6E8D) - (#x8FC8A8 #x6E93) - (#x8FC8A9 #x6E99) - (#x8FC8AA #x6EA0) - (#x8FC8AB #x6EA7) - (#x8FC8AC #x6EAD) - (#x8FC8AD #x6EAE) - (#x8FC8AE #x6EB1) - (#x8FC8AF #x6EB3) - (#x8FC8B0 #x6EBB) - (#x8FC8B1 #x6EBF) - (#x8FC8B2 #x6EC0) - (#x8FC8B3 #x6EC1) - (#x8FC8B4 #x6EC3) - (#x8FC8B5 #x6EC7) - (#x8FC8B6 #x6EC8) - (#x8FC8B7 #x6ECA) - (#x8FC8B8 #x6ECD) - (#x8FC8B9 #x6ECE) - (#x8FC8BA #x6ECF) - (#x8FC8BB #x6EEB) - (#x8FC8BC #x6EED) - (#x8FC8BD #x6EEE) - (#x8FC8BE #x6EF9) - (#x8FC8BF #x6EFB) - (#x8FC8C0 #x6EFD) - (#x8FC8C1 #x6F04) - (#x8FC8C2 #x6F08) - (#x8FC8C3 #x6F0A) - (#x8FC8C4 #x6F0C) - (#x8FC8C5 #x6F0D) - (#x8FC8C6 #x6F16) - (#x8FC8C7 #x6F18) - (#x8FC8C8 #x6F1A) - (#x8FC8C9 #x6F1B) - (#x8FC8CA #x6F26) - (#x8FC8CB #x6F29) - (#x8FC8CC #x6F2A) - (#x8FC8CD #x6F2F) - (#x8FC8CE #x6F30) - (#x8FC8CF #x6F33) - (#x8FC8D0 #x6F36) - (#x8FC8D1 #x6F3B) - (#x8FC8D2 #x6F3C) - (#x8FC8D3 #x6F2D) - (#x8FC8D4 #x6F4F) - (#x8FC8D5 #x6F51) - (#x8FC8D6 #x6F52) - (#x8FC8D7 #x6F53) - (#x8FC8D8 #x6F57) - (#x8FC8D9 #x6F59) - (#x8FC8DA #x6F5A) - (#x8FC8DB #x6F5D) - (#x8FC8DC #x6F5E) - (#x8FC8DD #x6F61) - (#x8FC8DE #x6F62) - (#x8FC8DF #x6F68) - (#x8FC8E0 #x6F6C) - (#x8FC8E1 #x6F7D) - (#x8FC8E2 #x6F7E) - (#x8FC8E3 #x6F83) - (#x8FC8E4 #x6F87) - (#x8FC8E5 #x6F88) - (#x8FC8E6 #x6F8B) - (#x8FC8E7 #x6F8C) - (#x8FC8E8 #x6F8D) - (#x8FC8E9 #x6F90) - (#x8FC8EA #x6F92) - (#x8FC8EB #x6F93) - (#x8FC8EC #x6F94) - (#x8FC8ED #x6F96) - (#x8FC8EE #x6F9A) - (#x8FC8EF #x6F9F) - (#x8FC8F0 #x6FA0) - (#x8FC8F1 #x6FA5) - (#x8FC8F2 #x6FA6) - (#x8FC8F3 #x6FA7) - (#x8FC8F4 #x6FA8) - (#x8FC8F5 #x6FAE) - (#x8FC8F6 #x6FAF) - (#x8FC8F7 #x6FB0) - (#x8FC8F8 #x6FB5) - (#x8FC8F9 #x6FB6) - (#x8FC8FA #x6FBC) - (#x8FC8FB #x6FC5) - (#x8FC8FC #x6FC7) - (#x8FC8FD #x6FC8) - (#x8FC8FE #x6FCA) - (#x8FC9A1 #x6FDA) - (#x8FC9A2 #x6FDE) - (#x8FC9A3 #x6FE8) - (#x8FC9A4 #x6FE9) - (#x8FC9A5 #x6FF0) - (#x8FC9A6 #x6FF5) - (#x8FC9A7 #x6FF9) - (#x8FC9A8 #x6FFC) - (#x8FC9A9 #x6FFD) - (#x8FC9AA #x7000) - (#x8FC9AB #x7005) - (#x8FC9AC #x7006) - (#x8FC9AD #x7007) - (#x8FC9AE #x700D) - (#x8FC9AF #x7017) - (#x8FC9B0 #x7020) - (#x8FC9B1 #x7023) - (#x8FC9B2 #x702F) - (#x8FC9B3 #x7034) - (#x8FC9B4 #x7037) - (#x8FC9B5 #x7039) - (#x8FC9B6 #x703C) - (#x8FC9B7 #x7043) - (#x8FC9B8 #x7044) - (#x8FC9B9 #x7048) - (#x8FC9BA #x7049) - (#x8FC9BB #x704A) - (#x8FC9BC #x704B) - (#x8FC9BD #x7054) - (#x8FC9BE #x7055) - (#x8FC9BF #x705D) - (#x8FC9C0 #x705E) - (#x8FC9C1 #x704E) - (#x8FC9C2 #x7064) - (#x8FC9C3 #x7065) - (#x8FC9C4 #x706C) - (#x8FC9C5 #x706E) - (#x8FC9C6 #x7075) - (#x8FC9C7 #x7076) - (#x8FC9C8 #x707E) - (#x8FC9C9 #x7081) - (#x8FC9CA #x7085) - (#x8FC9CB #x7086) - (#x8FC9CC #x7094) - (#x8FC9CD #x7095) - (#x8FC9CE #x7096) - (#x8FC9CF #x7097) - (#x8FC9D0 #x7098) - (#x8FC9D1 #x709B) - (#x8FC9D2 #x70A4) - (#x8FC9D3 #x70AB) - (#x8FC9D4 #x70B0) - (#x8FC9D5 #x70B1) - (#x8FC9D6 #x70B4) - (#x8FC9D7 #x70B7) - (#x8FC9D8 #x70CA) - (#x8FC9D9 #x70D1) - (#x8FC9DA #x70D3) - (#x8FC9DB #x70D4) - (#x8FC9DC #x70D5) - (#x8FC9DD #x70D6) - (#x8FC9DE #x70D8) - (#x8FC9DF #x70DC) - (#x8FC9E0 #x70E4) - (#x8FC9E1 #x70FA) - (#x8FC9E2 #x7103) - (#x8FC9E3 #x7104) - (#x8FC9E4 #x7105) - (#x8FC9E5 #x7106) - (#x8FC9E6 #x7107) - (#x8FC9E7 #x710B) - (#x8FC9E8 #x710C) - (#x8FC9E9 #x710F) - (#x8FC9EA #x711E) - (#x8FC9EB #x7120) - (#x8FC9EC #x712B) - (#x8FC9ED #x712D) - (#x8FC9EE #x712F) - (#x8FC9EF #x7130) - (#x8FC9F0 #x7131) - (#x8FC9F1 #x7138) - (#x8FC9F2 #x7141) - (#x8FC9F3 #x7145) - (#x8FC9F4 #x7146) - (#x8FC9F5 #x7147) - (#x8FC9F6 #x714A) - (#x8FC9F7 #x714B) - (#x8FC9F8 #x7150) - (#x8FC9F9 #x7152) - (#x8FC9FA #x7157) - (#x8FC9FB #x715A) - (#x8FC9FC #x715C) - (#x8FC9FD #x715E) - (#x8FC9FE #x7160) - (#x8FCAA1 #x7168) - (#x8FCAA2 #x7179) - (#x8FCAA3 #x7180) - (#x8FCAA4 #x7185) - (#x8FCAA5 #x7187) - (#x8FCAA6 #x718C) - (#x8FCAA7 #x7192) - (#x8FCAA8 #x719A) - (#x8FCAA9 #x719B) - (#x8FCAAA #x71A0) - (#x8FCAAB #x71A2) - (#x8FCAAC #x71AF) - (#x8FCAAD #x71B0) - (#x8FCAAE #x71B2) - (#x8FCAAF #x71B3) - (#x8FCAB0 #x71BA) - (#x8FCAB1 #x71BF) - (#x8FCAB2 #x71C0) - (#x8FCAB3 #x71C1) - (#x8FCAB4 #x71C4) - (#x8FCAB5 #x71CB) - (#x8FCAB6 #x71CC) - (#x8FCAB7 #x71D3) - (#x8FCAB8 #x71D6) - (#x8FCAB9 #x71D9) - (#x8FCABA #x71DA) - (#x8FCABB #x71DC) - (#x8FCABC #x71F8) - (#x8FCABD #x71FE) - (#x8FCABE #x7200) - (#x8FCABF #x7207) - (#x8FCAC0 #x7208) - (#x8FCAC1 #x7209) - (#x8FCAC2 #x7213) - (#x8FCAC3 #x7217) - (#x8FCAC4 #x721A) - (#x8FCAC5 #x721D) - (#x8FCAC6 #x721F) - (#x8FCAC7 #x7224) - (#x8FCAC8 #x722B) - (#x8FCAC9 #x722F) - (#x8FCACA #x7234) - (#x8FCACB #x7238) - (#x8FCACC #x7239) - (#x8FCACD #x7241) - (#x8FCACE #x7242) - (#x8FCACF #x7243) - (#x8FCAD0 #x7245) - (#x8FCAD1 #x724E) - (#x8FCAD2 #x724F) - (#x8FCAD3 #x7250) - (#x8FCAD4 #x7253) - (#x8FCAD5 #x7255) - (#x8FCAD6 #x7256) - (#x8FCAD7 #x725A) - (#x8FCAD8 #x725C) - (#x8FCAD9 #x725E) - (#x8FCADA #x7260) - (#x8FCADB #x7263) - (#x8FCADC #x7268) - (#x8FCADD #x726B) - (#x8FCADE #x726E) - (#x8FCADF #x726F) - (#x8FCAE0 #x7271) - (#x8FCAE1 #x7277) - (#x8FCAE2 #x7278) - (#x8FCAE3 #x727B) - (#x8FCAE4 #x727C) - (#x8FCAE5 #x727F) - (#x8FCAE6 #x7284) - (#x8FCAE7 #x7289) - (#x8FCAE8 #x728D) - (#x8FCAE9 #x728E) - (#x8FCAEA #x7293) - (#x8FCAEB #x729B) - (#x8FCAEC #x72A8) - (#x8FCAED #x72AD) - (#x8FCAEE #x72AE) - (#x8FCAEF #x72B1) - (#x8FCAF0 #x72B4) - (#x8FCAF1 #x72BE) - (#x8FCAF2 #x72C1) - (#x8FCAF3 #x72C7) - (#x8FCAF4 #x72C9) - (#x8FCAF5 #x72CC) - (#x8FCAF6 #x72D5) - (#x8FCAF7 #x72D6) - (#x8FCAF8 #x72D8) - (#x8FCAF9 #x72DF) - (#x8FCAFA #x72E5) - (#x8FCAFB #x72F3) - (#x8FCAFC #x72F4) - (#x8FCAFD #x72FA) - (#x8FCAFE #x72FB) - (#x8FCBA1 #x72FE) - (#x8FCBA2 #x7302) - (#x8FCBA3 #x7304) - (#x8FCBA4 #x7305) - (#x8FCBA5 #x7307) - (#x8FCBA6 #x730B) - (#x8FCBA7 #x730D) - (#x8FCBA8 #x7312) - (#x8FCBA9 #x7313) - (#x8FCBAA #x7318) - (#x8FCBAB #x7319) - (#x8FCBAC #x731E) - (#x8FCBAD #x7322) - (#x8FCBAE #x7324) - (#x8FCBAF #x7327) - (#x8FCBB0 #x7328) - (#x8FCBB1 #x732C) - (#x8FCBB2 #x7331) - (#x8FCBB3 #x7332) - (#x8FCBB4 #x7335) - (#x8FCBB5 #x733A) - (#x8FCBB6 #x733B) - (#x8FCBB7 #x733D) - (#x8FCBB8 #x7343) - (#x8FCBB9 #x734D) - (#x8FCBBA #x7350) - (#x8FCBBB #x7352) - (#x8FCBBC #x7356) - (#x8FCBBD #x7358) - (#x8FCBBE #x735D) - (#x8FCBBF #x735E) - (#x8FCBC0 #x735F) - (#x8FCBC1 #x7360) - (#x8FCBC2 #x7366) - (#x8FCBC3 #x7367) - (#x8FCBC4 #x7369) - (#x8FCBC5 #x736B) - (#x8FCBC6 #x736C) - (#x8FCBC7 #x736E) - (#x8FCBC8 #x736F) - (#x8FCBC9 #x7371) - (#x8FCBCA #x7377) - (#x8FCBCB #x7379) - (#x8FCBCC #x737C) - (#x8FCBCD #x7380) - (#x8FCBCE #x7381) - (#x8FCBCF #x7383) - (#x8FCBD0 #x7385) - (#x8FCBD1 #x7386) - (#x8FCBD2 #x738E) - (#x8FCBD3 #x7390) - (#x8FCBD4 #x7393) - (#x8FCBD5 #x7395) - (#x8FCBD6 #x7397) - (#x8FCBD7 #x7398) - (#x8FCBD8 #x739C) - (#x8FCBD9 #x739E) - (#x8FCBDA #x739F) - (#x8FCBDB #x73A0) - (#x8FCBDC #x73A2) - (#x8FCBDD #x73A5) - (#x8FCBDE #x73A6) - (#x8FCBDF #x73AA) - (#x8FCBE0 #x73AB) - (#x8FCBE1 #x73AD) - (#x8FCBE2 #x73B5) - (#x8FCBE3 #x73B7) - (#x8FCBE4 #x73B9) - (#x8FCBE5 #x73BC) - (#x8FCBE6 #x73BD) - (#x8FCBE7 #x73BF) - (#x8FCBE8 #x73C5) - (#x8FCBE9 #x73C6) - (#x8FCBEA #x73C9) - (#x8FCBEB #x73CB) - (#x8FCBEC #x73CC) - (#x8FCBED #x73CF) - (#x8FCBEE #x73D2) - (#x8FCBEF #x73D3) - (#x8FCBF0 #x73D6) - (#x8FCBF1 #x73D9) - (#x8FCBF2 #x73DD) - (#x8FCBF3 #x73E1) - (#x8FCBF4 #x73E3) - (#x8FCBF5 #x73E6) - (#x8FCBF6 #x73E7) - (#x8FCBF7 #x73E9) - (#x8FCBF8 #x73F4) - (#x8FCBF9 #x73F5) - (#x8FCBFA #x73F7) - (#x8FCBFB #x73F9) - (#x8FCBFC #x73FA) - (#x8FCBFD #x73FB) - (#x8FCBFE #x73FD) - (#x8FCCA1 #x73FF) - (#x8FCCA2 #x7400) - (#x8FCCA3 #x7401) - (#x8FCCA4 #x7404) - (#x8FCCA5 #x7407) - (#x8FCCA6 #x740A) - (#x8FCCA7 #x7411) - (#x8FCCA8 #x741A) - (#x8FCCA9 #x741B) - (#x8FCCAA #x7424) - (#x8FCCAB #x7426) - (#x8FCCAC #x7428) - (#x8FCCAD #x7429) - (#x8FCCAE #x742A) - (#x8FCCAF #x742B) - (#x8FCCB0 #x742C) - (#x8FCCB1 #x742D) - (#x8FCCB2 #x742E) - (#x8FCCB3 #x742F) - (#x8FCCB4 #x7430) - (#x8FCCB5 #x7431) - (#x8FCCB6 #x7439) - (#x8FCCB7 #x7440) - (#x8FCCB8 #x7443) - (#x8FCCB9 #x7444) - (#x8FCCBA #x7446) - (#x8FCCBB #x7447) - (#x8FCCBC #x744B) - (#x8FCCBD #x744D) - (#x8FCCBE #x7451) - (#x8FCCBF #x7452) - (#x8FCCC0 #x7457) - (#x8FCCC1 #x745D) - (#x8FCCC2 #x7462) - (#x8FCCC3 #x7466) - (#x8FCCC4 #x7467) - (#x8FCCC5 #x7468) - (#x8FCCC6 #x746B) - (#x8FCCC7 #x746D) - (#x8FCCC8 #x746E) - (#x8FCCC9 #x7471) - (#x8FCCCA #x7472) - (#x8FCCCB #x7480) - (#x8FCCCC #x7481) - (#x8FCCCD #x7485) - (#x8FCCCE #x7486) - (#x8FCCCF #x7487) - (#x8FCCD0 #x7489) - (#x8FCCD1 #x748F) - (#x8FCCD2 #x7490) - (#x8FCCD3 #x7491) - (#x8FCCD4 #x7492) - (#x8FCCD5 #x7498) - (#x8FCCD6 #x7499) - (#x8FCCD7 #x749A) - (#x8FCCD8 #x749C) - (#x8FCCD9 #x749F) - (#x8FCCDA #x74A0) - (#x8FCCDB #x74A1) - (#x8FCCDC #x74A3) - (#x8FCCDD #x74A6) - (#x8FCCDE #x74A8) - (#x8FCCDF #x74A9) - (#x8FCCE0 #x74AA) - (#x8FCCE1 #x74AB) - (#x8FCCE2 #x74AE) - (#x8FCCE3 #x74AF) - (#x8FCCE4 #x74B1) - (#x8FCCE5 #x74B2) - (#x8FCCE6 #x74B5) - (#x8FCCE7 #x74B9) - (#x8FCCE8 #x74BB) - (#x8FCCE9 #x74BF) - (#x8FCCEA #x74C8) - (#x8FCCEB #x74C9) - (#x8FCCEC #x74CC) - (#x8FCCED #x74D0) - (#x8FCCEE #x74D3) - (#x8FCCEF #x74D8) - (#x8FCCF0 #x74DA) - (#x8FCCF1 #x74DB) - (#x8FCCF2 #x74DE) - (#x8FCCF3 #x74DF) - (#x8FCCF4 #x74E4) - (#x8FCCF5 #x74E8) - (#x8FCCF6 #x74EA) - (#x8FCCF7 #x74EB) - (#x8FCCF8 #x74EF) - (#x8FCCF9 #x74F4) - (#x8FCCFA #x74FA) - (#x8FCCFB #x74FB) - (#x8FCCFC #x74FC) - (#x8FCCFD #x74FF) - (#x8FCCFE #x7506) - (#x8FCDA1 #x7512) - (#x8FCDA2 #x7516) - (#x8FCDA3 #x7517) - (#x8FCDA4 #x7520) - (#x8FCDA5 #x7521) - (#x8FCDA6 #x7524) - (#x8FCDA7 #x7527) - (#x8FCDA8 #x7529) - (#x8FCDA9 #x752A) - (#x8FCDAA #x752F) - (#x8FCDAB #x7536) - (#x8FCDAC #x7539) - (#x8FCDAD #x753D) - (#x8FCDAE #x753E) - (#x8FCDAF #x753F) - (#x8FCDB0 #x7540) - (#x8FCDB1 #x7543) - (#x8FCDB2 #x7547) - (#x8FCDB3 #x7548) - (#x8FCDB4 #x754E) - (#x8FCDB5 #x7550) - (#x8FCDB6 #x7552) - (#x8FCDB7 #x7557) - (#x8FCDB8 #x755E) - (#x8FCDB9 #x755F) - (#x8FCDBA #x7561) - (#x8FCDBB #x756F) - (#x8FCDBC #x7571) - (#x8FCDBD #x7579) - (#x8FCDBE #x757A) - (#x8FCDBF #x757B) - (#x8FCDC0 #x757C) - (#x8FCDC1 #x757D) - (#x8FCDC2 #x757E) - (#x8FCDC3 #x7581) - (#x8FCDC4 #x7585) - (#x8FCDC5 #x7590) - (#x8FCDC6 #x7592) - (#x8FCDC7 #x7593) - (#x8FCDC8 #x7595) - (#x8FCDC9 #x7599) - (#x8FCDCA #x759C) - (#x8FCDCB #x75A2) - (#x8FCDCC #x75A4) - (#x8FCDCD #x75B4) - (#x8FCDCE #x75BA) - (#x8FCDCF #x75BF) - (#x8FCDD0 #x75C0) - (#x8FCDD1 #x75C1) - (#x8FCDD2 #x75C4) - (#x8FCDD3 #x75C6) - (#x8FCDD4 #x75CC) - (#x8FCDD5 #x75CE) - (#x8FCDD6 #x75CF) - (#x8FCDD7 #x75D7) - (#x8FCDD8 #x75DC) - (#x8FCDD9 #x75DF) - (#x8FCDDA #x75E0) - (#x8FCDDB #x75E1) - (#x8FCDDC #x75E4) - (#x8FCDDD #x75E7) - (#x8FCDDE #x75EC) - (#x8FCDDF #x75EE) - (#x8FCDE0 #x75EF) - (#x8FCDE1 #x75F1) - (#x8FCDE2 #x75F9) - (#x8FCDE3 #x7600) - (#x8FCDE4 #x7602) - (#x8FCDE5 #x7603) - (#x8FCDE6 #x7604) - (#x8FCDE7 #x7607) - (#x8FCDE8 #x7608) - (#x8FCDE9 #x760A) - (#x8FCDEA #x760C) - (#x8FCDEB #x760F) - (#x8FCDEC #x7612) - (#x8FCDED #x7613) - (#x8FCDEE #x7615) - (#x8FCDEF #x7616) - (#x8FCDF0 #x7619) - (#x8FCDF1 #x761B) - (#x8FCDF2 #x761C) - (#x8FCDF3 #x761D) - (#x8FCDF4 #x761E) - (#x8FCDF5 #x7623) - (#x8FCDF6 #x7625) - (#x8FCDF7 #x7626) - (#x8FCDF8 #x7629) - (#x8FCDF9 #x762D) - (#x8FCDFA #x7632) - (#x8FCDFB #x7633) - (#x8FCDFC #x7635) - (#x8FCDFD #x7638) - (#x8FCDFE #x7639) - (#x8FCEA1 #x763A) - (#x8FCEA2 #x763C) - (#x8FCEA3 #x764A) - (#x8FCEA4 #x7640) - (#x8FCEA5 #x7641) - (#x8FCEA6 #x7643) - (#x8FCEA7 #x7644) - (#x8FCEA8 #x7645) - (#x8FCEA9 #x7649) - (#x8FCEAA #x764B) - (#x8FCEAB #x7655) - (#x8FCEAC #x7659) - (#x8FCEAD #x765F) - (#x8FCEAE #x7664) - (#x8FCEAF #x7665) - (#x8FCEB0 #x766D) - (#x8FCEB1 #x766E) - (#x8FCEB2 #x766F) - (#x8FCEB3 #x7671) - (#x8FCEB4 #x7674) - (#x8FCEB5 #x7681) - (#x8FCEB6 #x7685) - (#x8FCEB7 #x768C) - (#x8FCEB8 #x768D) - (#x8FCEB9 #x7695) - (#x8FCEBA #x769B) - (#x8FCEBB #x769C) - (#x8FCEBC #x769D) - (#x8FCEBD #x769F) - (#x8FCEBE #x76A0) - (#x8FCEBF #x76A2) - (#x8FCEC0 #x76A3) - (#x8FCEC1 #x76A4) - (#x8FCEC2 #x76A5) - (#x8FCEC3 #x76A6) - (#x8FCEC4 #x76A7) - (#x8FCEC5 #x76A8) - (#x8FCEC6 #x76AA) - (#x8FCEC7 #x76AD) - (#x8FCEC8 #x76BD) - (#x8FCEC9 #x76C1) - (#x8FCECA #x76C5) - (#x8FCECB #x76C9) - (#x8FCECC #x76CB) - (#x8FCECD #x76CC) - (#x8FCECE #x76CE) - (#x8FCECF #x76D4) - (#x8FCED0 #x76D9) - (#x8FCED1 #x76E0) - (#x8FCED2 #x76E6) - (#x8FCED3 #x76E8) - (#x8FCED4 #x76EC) - (#x8FCED5 #x76F0) - (#x8FCED6 #x76F1) - (#x8FCED7 #x76F6) - (#x8FCED8 #x76F9) - (#x8FCED9 #x76FC) - (#x8FCEDA #x7700) - (#x8FCEDB #x7706) - (#x8FCEDC #x770A) - (#x8FCEDD #x770E) - (#x8FCEDE #x7712) - (#x8FCEDF #x7714) - (#x8FCEE0 #x7715) - (#x8FCEE1 #x7717) - (#x8FCEE2 #x7719) - (#x8FCEE3 #x771A) - (#x8FCEE4 #x771C) - (#x8FCEE5 #x7722) - (#x8FCEE6 #x7728) - (#x8FCEE7 #x772D) - (#x8FCEE8 #x772E) - (#x8FCEE9 #x772F) - (#x8FCEEA #x7734) - (#x8FCEEB #x7735) - (#x8FCEEC #x7736) - (#x8FCEED #x7739) - (#x8FCEEE #x773D) - (#x8FCEEF #x773E) - (#x8FCEF0 #x7742) - (#x8FCEF1 #x7745) - (#x8FCEF2 #x7746) - (#x8FCEF3 #x774A) - (#x8FCEF4 #x774D) - (#x8FCEF5 #x774E) - (#x8FCEF6 #x774F) - (#x8FCEF7 #x7752) - (#x8FCEF8 #x7756) - (#x8FCEF9 #x7757) - (#x8FCEFA #x775C) - (#x8FCEFB #x775E) - (#x8FCEFC #x775F) - (#x8FCEFD #x7760) - (#x8FCEFE #x7762) - (#x8FCFA1 #x7764) - (#x8FCFA2 #x7767) - (#x8FCFA3 #x776A) - (#x8FCFA4 #x776C) - (#x8FCFA5 #x7770) - (#x8FCFA6 #x7772) - (#x8FCFA7 #x7773) - (#x8FCFA8 #x7774) - (#x8FCFA9 #x777A) - (#x8FCFAA #x777D) - (#x8FCFAB #x7780) - (#x8FCFAC #x7784) - (#x8FCFAD #x778C) - (#x8FCFAE #x778D) - (#x8FCFAF #x7794) - (#x8FCFB0 #x7795) - (#x8FCFB1 #x7796) - (#x8FCFB2 #x779A) - (#x8FCFB3 #x779F) - (#x8FCFB4 #x77A2) - (#x8FCFB5 #x77A7) - (#x8FCFB6 #x77AA) - (#x8FCFB7 #x77AE) - (#x8FCFB8 #x77AF) - (#x8FCFB9 #x77B1) - (#x8FCFBA #x77B5) - (#x8FCFBB #x77BE) - (#x8FCFBC #x77C3) - (#x8FCFBD #x77C9) - (#x8FCFBE #x77D1) - (#x8FCFBF #x77D2) - (#x8FCFC0 #x77D5) - (#x8FCFC1 #x77D9) - (#x8FCFC2 #x77DE) - (#x8FCFC3 #x77DF) - (#x8FCFC4 #x77E0) - (#x8FCFC5 #x77E4) - (#x8FCFC6 #x77E6) - (#x8FCFC7 #x77EA) - (#x8FCFC8 #x77EC) - (#x8FCFC9 #x77F0) - (#x8FCFCA #x77F1) - (#x8FCFCB #x77F4) - (#x8FCFCC #x77F8) - (#x8FCFCD #x77FB) - (#x8FCFCE #x7805) - (#x8FCFCF #x7806) - (#x8FCFD0 #x7809) - (#x8FCFD1 #x780D) - (#x8FCFD2 #x780E) - (#x8FCFD3 #x7811) - (#x8FCFD4 #x781D) - (#x8FCFD5 #x7821) - (#x8FCFD6 #x7822) - (#x8FCFD7 #x7823) - (#x8FCFD8 #x782D) - (#x8FCFD9 #x782E) - (#x8FCFDA #x7830) - (#x8FCFDB #x7835) - (#x8FCFDC #x7837) - (#x8FCFDD #x7843) - (#x8FCFDE #x7844) - (#x8FCFDF #x7847) - (#x8FCFE0 #x7848) - (#x8FCFE1 #x784C) - (#x8FCFE2 #x784E) - (#x8FCFE3 #x7852) - (#x8FCFE4 #x785C) - (#x8FCFE5 #x785E) - (#x8FCFE6 #x7860) - (#x8FCFE7 #x7861) - (#x8FCFE8 #x7863) - (#x8FCFE9 #x7864) - (#x8FCFEA #x7868) - (#x8FCFEB #x786A) - (#x8FCFEC #x786E) - (#x8FCFED #x787A) - (#x8FCFEE #x787E) - (#x8FCFEF #x788A) - (#x8FCFF0 #x788F) - (#x8FCFF1 #x7894) - (#x8FCFF2 #x7898) - (#x8FCFF3 #x78A1) - (#x8FCFF4 #x789D) - (#x8FCFF5 #x789E) - (#x8FCFF6 #x789F) - (#x8FCFF7 #x78A4) - (#x8FCFF8 #x78A8) - (#x8FCFF9 #x78AC) - (#x8FCFFA #x78AD) - (#x8FCFFB #x78B0) - (#x8FCFFC #x78B1) - (#x8FCFFD #x78B2) - (#x8FCFFE #x78B3) - (#x8FD0A1 #x78BB) - (#x8FD0A2 #x78BD) - (#x8FD0A3 #x78BF) - (#x8FD0A4 #x78C7) - (#x8FD0A5 #x78C8) - (#x8FD0A6 #x78C9) - (#x8FD0A7 #x78CC) - (#x8FD0A8 #x78CE) - (#x8FD0A9 #x78D2) - (#x8FD0AA #x78D3) - (#x8FD0AB #x78D5) - (#x8FD0AC #x78D6) - (#x8FD0AD #x78E4) - (#x8FD0AE #x78DB) - (#x8FD0AF #x78DF) - (#x8FD0B0 #x78E0) - (#x8FD0B1 #x78E1) - (#x8FD0B2 #x78E6) - (#x8FD0B3 #x78EA) - (#x8FD0B4 #x78F2) - (#x8FD0B5 #x78F3) - (#x8FD0B6 #x7900) - (#x8FD0B7 #x78F6) - (#x8FD0B8 #x78F7) - (#x8FD0B9 #x78FA) - (#x8FD0BA #x78FB) - (#x8FD0BB #x78FF) - (#x8FD0BC #x7906) - (#x8FD0BD #x790C) - (#x8FD0BE #x7910) - (#x8FD0BF #x791A) - (#x8FD0C0 #x791C) - (#x8FD0C1 #x791E) - (#x8FD0C2 #x791F) - (#x8FD0C3 #x7920) - (#x8FD0C4 #x7925) - (#x8FD0C5 #x7927) - (#x8FD0C6 #x7929) - (#x8FD0C7 #x792D) - (#x8FD0C8 #x7931) - (#x8FD0C9 #x7934) - (#x8FD0CA #x7935) - (#x8FD0CB #x793B) - (#x8FD0CC #x793D) - (#x8FD0CD #x793F) - (#x8FD0CE #x7944) - (#x8FD0CF #x7945) - (#x8FD0D0 #x7946) - (#x8FD0D1 #x794A) - (#x8FD0D2 #x794B) - (#x8FD0D3 #x794F) - (#x8FD0D4 #x7951) - (#x8FD0D5 #x7954) - (#x8FD0D6 #x7958) - (#x8FD0D7 #x795B) - (#x8FD0D8 #x795C) - (#x8FD0D9 #x7967) - (#x8FD0DA #x7969) - (#x8FD0DB #x796B) - (#x8FD0DC #x7972) - (#x8FD0DD #x7979) - (#x8FD0DE #x797B) - (#x8FD0DF #x797C) - (#x8FD0E0 #x797E) - (#x8FD0E1 #x798B) - (#x8FD0E2 #x798C) - (#x8FD0E3 #x7991) - (#x8FD0E4 #x7993) - (#x8FD0E5 #x7994) - (#x8FD0E6 #x7995) - (#x8FD0E7 #x7996) - (#x8FD0E8 #x7998) - (#x8FD0E9 #x799B) - (#x8FD0EA #x799C) - (#x8FD0EB #x79A1) - (#x8FD0EC #x79A8) - (#x8FD0ED #x79A9) - (#x8FD0EE #x79AB) - (#x8FD0EF #x79AF) - (#x8FD0F0 #x79B1) - (#x8FD0F1 #x79B4) - (#x8FD0F2 #x79B8) - (#x8FD0F3 #x79BB) - (#x8FD0F4 #x79C2) - (#x8FD0F5 #x79C4) - (#x8FD0F6 #x79C7) - (#x8FD0F7 #x79C8) - (#x8FD0F8 #x79CA) - (#x8FD0F9 #x79CF) - (#x8FD0FA #x79D4) - (#x8FD0FB #x79D6) - (#x8FD0FC #x79DA) - (#x8FD0FD #x79DD) - (#x8FD0FE #x79DE) - (#x8FD1A1 #x79E0) - (#x8FD1A2 #x79E2) - (#x8FD1A3 #x79E5) - (#x8FD1A4 #x79EA) - (#x8FD1A5 #x79EB) - (#x8FD1A6 #x79ED) - (#x8FD1A7 #x79F1) - (#x8FD1A8 #x79F8) - (#x8FD1A9 #x79FC) - (#x8FD1AA #x7A02) - (#x8FD1AB #x7A03) - (#x8FD1AC #x7A07) - (#x8FD1AD #x7A09) - (#x8FD1AE #x7A0A) - (#x8FD1AF #x7A0C) - (#x8FD1B0 #x7A11) - (#x8FD1B1 #x7A15) - (#x8FD1B2 #x7A1B) - (#x8FD1B3 #x7A1E) - (#x8FD1B4 #x7A21) - (#x8FD1B5 #x7A27) - (#x8FD1B6 #x7A2B) - (#x8FD1B7 #x7A2D) - (#x8FD1B8 #x7A2F) - (#x8FD1B9 #x7A30) - (#x8FD1BA #x7A34) - (#x8FD1BB #x7A35) - (#x8FD1BC #x7A38) - (#x8FD1BD #x7A39) - (#x8FD1BE #x7A3A) - (#x8FD1BF #x7A44) - (#x8FD1C0 #x7A45) - (#x8FD1C1 #x7A47) - (#x8FD1C2 #x7A48) - (#x8FD1C3 #x7A4C) - (#x8FD1C4 #x7A55) - (#x8FD1C5 #x7A56) - (#x8FD1C6 #x7A59) - (#x8FD1C7 #x7A5C) - (#x8FD1C8 #x7A5D) - (#x8FD1C9 #x7A5F) - (#x8FD1CA #x7A60) - (#x8FD1CB #x7A65) - (#x8FD1CC #x7A67) - (#x8FD1CD #x7A6A) - (#x8FD1CE #x7A6D) - (#x8FD1CF #x7A75) - (#x8FD1D0 #x7A78) - (#x8FD1D1 #x7A7E) - (#x8FD1D2 #x7A80) - (#x8FD1D3 #x7A82) - (#x8FD1D4 #x7A85) - (#x8FD1D5 #x7A86) - (#x8FD1D6 #x7A8A) - (#x8FD1D7 #x7A8B) - (#x8FD1D8 #x7A90) - (#x8FD1D9 #x7A91) - (#x8FD1DA #x7A94) - (#x8FD1DB #x7A9E) - (#x8FD1DC #x7AA0) - (#x8FD1DD #x7AA3) - (#x8FD1DE #x7AAC) - (#x8FD1DF #x7AB3) - (#x8FD1E0 #x7AB5) - (#x8FD1E1 #x7AB9) - (#x8FD1E2 #x7ABB) - (#x8FD1E3 #x7ABC) - (#x8FD1E4 #x7AC6) - (#x8FD1E5 #x7AC9) - (#x8FD1E6 #x7ACC) - (#x8FD1E7 #x7ACE) - (#x8FD1E8 #x7AD1) - (#x8FD1E9 #x7ADB) - (#x8FD1EA #x7AE8) - (#x8FD1EB #x7AE9) - (#x8FD1EC #x7AEB) - (#x8FD1ED #x7AEC) - (#x8FD1EE #x7AF1) - (#x8FD1EF #x7AF4) - (#x8FD1F0 #x7AFB) - (#x8FD1F1 #x7AFD) - (#x8FD1F2 #x7AFE) - (#x8FD1F3 #x7B07) - (#x8FD1F4 #x7B14) - (#x8FD1F5 #x7B1F) - (#x8FD1F6 #x7B23) - (#x8FD1F7 #x7B27) - (#x8FD1F8 #x7B29) - (#x8FD1F9 #x7B2A) - (#x8FD1FA #x7B2B) - (#x8FD1FB #x7B2D) - (#x8FD1FC #x7B2E) - (#x8FD1FD #x7B2F) - (#x8FD1FE #x7B30) - (#x8FD2A1 #x7B31) - (#x8FD2A2 #x7B34) - (#x8FD2A3 #x7B3D) - (#x8FD2A4 #x7B3F) - (#x8FD2A5 #x7B40) - (#x8FD2A6 #x7B41) - (#x8FD2A7 #x7B47) - (#x8FD2A8 #x7B4E) - (#x8FD2A9 #x7B55) - (#x8FD2AA #x7B60) - (#x8FD2AB #x7B64) - (#x8FD2AC #x7B66) - (#x8FD2AD #x7B69) - (#x8FD2AE #x7B6A) - (#x8FD2AF #x7B6D) - (#x8FD2B0 #x7B6F) - (#x8FD2B1 #x7B72) - (#x8FD2B2 #x7B73) - (#x8FD2B3 #x7B77) - (#x8FD2B4 #x7B84) - (#x8FD2B5 #x7B89) - (#x8FD2B6 #x7B8E) - (#x8FD2B7 #x7B90) - (#x8FD2B8 #x7B91) - (#x8FD2B9 #x7B96) - (#x8FD2BA #x7B9B) - (#x8FD2BB #x7B9E) - (#x8FD2BC #x7BA0) - (#x8FD2BD #x7BA5) - (#x8FD2BE #x7BAC) - (#x8FD2BF #x7BAF) - (#x8FD2C0 #x7BB0) - (#x8FD2C1 #x7BB2) - (#x8FD2C2 #x7BB5) - (#x8FD2C3 #x7BB6) - (#x8FD2C4 #x7BBA) - (#x8FD2C5 #x7BBB) - (#x8FD2C6 #x7BBC) - (#x8FD2C7 #x7BBD) - (#x8FD2C8 #x7BC2) - (#x8FD2C9 #x7BC5) - (#x8FD2CA #x7BC8) - (#x8FD2CB #x7BCA) - (#x8FD2CC #x7BD4) - (#x8FD2CD #x7BD6) - (#x8FD2CE #x7BD7) - (#x8FD2CF #x7BD9) - (#x8FD2D0 #x7BDA) - (#x8FD2D1 #x7BDB) - (#x8FD2D2 #x7BE8) - (#x8FD2D3 #x7BEA) - (#x8FD2D4 #x7BF2) - (#x8FD2D5 #x7BF4) - (#x8FD2D6 #x7BF5) - (#x8FD2D7 #x7BF8) - (#x8FD2D8 #x7BF9) - (#x8FD2D9 #x7BFA) - (#x8FD2DA #x7BFC) - (#x8FD2DB #x7BFE) - (#x8FD2DC #x7C01) - (#x8FD2DD #x7C02) - (#x8FD2DE #x7C03) - (#x8FD2DF #x7C04) - (#x8FD2E0 #x7C06) - (#x8FD2E1 #x7C09) - (#x8FD2E2 #x7C0B) - (#x8FD2E3 #x7C0C) - (#x8FD2E4 #x7C0E) - (#x8FD2E5 #x7C0F) - (#x8FD2E6 #x7C19) - (#x8FD2E7 #x7C1B) - (#x8FD2E8 #x7C20) - (#x8FD2E9 #x7C25) - (#x8FD2EA #x7C26) - (#x8FD2EB #x7C28) - (#x8FD2EC #x7C2C) - (#x8FD2ED #x7C31) - (#x8FD2EE #x7C33) - (#x8FD2EF #x7C34) - (#x8FD2F0 #x7C36) - (#x8FD2F1 #x7C39) - (#x8FD2F2 #x7C3A) - (#x8FD2F3 #x7C46) - (#x8FD2F4 #x7C4A) - (#x8FD2F5 #x7C55) - (#x8FD2F6 #x7C51) - (#x8FD2F7 #x7C52) - (#x8FD2F8 #x7C53) - (#x8FD2F9 #x7C59) - (#x8FD2FA #x7C5A) - (#x8FD2FB #x7C5B) - (#x8FD2FC #x7C5C) - (#x8FD2FD #x7C5D) - (#x8FD2FE #x7C5E) - (#x8FD3A1 #x7C61) - (#x8FD3A2 #x7C63) - (#x8FD3A3 #x7C67) - (#x8FD3A4 #x7C69) - (#x8FD3A5 #x7C6D) - (#x8FD3A6 #x7C6E) - (#x8FD3A7 #x7C70) - (#x8FD3A8 #x7C72) - (#x8FD3A9 #x7C79) - (#x8FD3AA #x7C7C) - (#x8FD3AB #x7C7D) - (#x8FD3AC #x7C86) - (#x8FD3AD #x7C87) - (#x8FD3AE #x7C8F) - (#x8FD3AF #x7C94) - (#x8FD3B0 #x7C9E) - (#x8FD3B1 #x7CA0) - (#x8FD3B2 #x7CA6) - (#x8FD3B3 #x7CB0) - (#x8FD3B4 #x7CB6) - (#x8FD3B5 #x7CB7) - (#x8FD3B6 #x7CBA) - (#x8FD3B7 #x7CBB) - (#x8FD3B8 #x7CBC) - (#x8FD3B9 #x7CBF) - (#x8FD3BA #x7CC4) - (#x8FD3BB #x7CC7) - (#x8FD3BC #x7CC8) - (#x8FD3BD #x7CC9) - (#x8FD3BE #x7CCD) - (#x8FD3BF #x7CCF) - (#x8FD3C0 #x7CD3) - (#x8FD3C1 #x7CD4) - (#x8FD3C2 #x7CD5) - (#x8FD3C3 #x7CD7) - (#x8FD3C4 #x7CD9) - (#x8FD3C5 #x7CDA) - (#x8FD3C6 #x7CDD) - (#x8FD3C7 #x7CE6) - (#x8FD3C8 #x7CE9) - (#x8FD3C9 #x7CEB) - (#x8FD3CA #x7CF5) - (#x8FD3CB #x7D03) - (#x8FD3CC #x7D07) - (#x8FD3CD #x7D08) - (#x8FD3CE #x7D09) - (#x8FD3CF #x7D0F) - (#x8FD3D0 #x7D11) - (#x8FD3D1 #x7D12) - (#x8FD3D2 #x7D13) - (#x8FD3D3 #x7D16) - (#x8FD3D4 #x7D1D) - (#x8FD3D5 #x7D1E) - (#x8FD3D6 #x7D23) - (#x8FD3D7 #x7D26) - (#x8FD3D8 #x7D2A) - (#x8FD3D9 #x7D2D) - (#x8FD3DA #x7D31) - (#x8FD3DB #x7D3C) - (#x8FD3DC #x7D3D) - (#x8FD3DD #x7D3E) - (#x8FD3DE #x7D40) - (#x8FD3DF #x7D41) - (#x8FD3E0 #x7D47) - (#x8FD3E1 #x7D48) - (#x8FD3E2 #x7D4D) - (#x8FD3E3 #x7D51) - (#x8FD3E4 #x7D53) - (#x8FD3E5 #x7D57) - (#x8FD3E6 #x7D59) - (#x8FD3E7 #x7D5A) - (#x8FD3E8 #x7D5C) - (#x8FD3E9 #x7D5D) - (#x8FD3EA #x7D65) - (#x8FD3EB #x7D67) - (#x8FD3EC #x7D6A) - (#x8FD3ED #x7D70) - (#x8FD3EE #x7D78) - (#x8FD3EF #x7D7A) - (#x8FD3F0 #x7D7B) - (#x8FD3F1 #x7D7F) - (#x8FD3F2 #x7D81) - (#x8FD3F3 #x7D82) - (#x8FD3F4 #x7D83) - (#x8FD3F5 #x7D85) - (#x8FD3F6 #x7D86) - (#x8FD3F7 #x7D88) - (#x8FD3F8 #x7D8B) - (#x8FD3F9 #x7D8C) - (#x8FD3FA #x7D8D) - (#x8FD3FB #x7D91) - (#x8FD3FC #x7D96) - (#x8FD3FD #x7D97) - (#x8FD3FE #x7D9D) - (#x8FD4A1 #x7D9E) - (#x8FD4A2 #x7DA6) - (#x8FD4A3 #x7DA7) - (#x8FD4A4 #x7DAA) - (#x8FD4A5 #x7DB3) - (#x8FD4A6 #x7DB6) - (#x8FD4A7 #x7DB7) - (#x8FD4A8 #x7DB9) - (#x8FD4A9 #x7DC2) - (#x8FD4AA #x7DC3) - (#x8FD4AB #x7DC4) - (#x8FD4AC #x7DC5) - (#x8FD4AD #x7DC6) - (#x8FD4AE #x7DCC) - (#x8FD4AF #x7DCD) - (#x8FD4B0 #x7DCE) - (#x8FD4B1 #x7DD7) - (#x8FD4B2 #x7DD9) - (#x8FD4B3 #x7E00) - (#x8FD4B4 #x7DE2) - (#x8FD4B5 #x7DE5) - (#x8FD4B6 #x7DE6) - (#x8FD4B7 #x7DEA) - (#x8FD4B8 #x7DEB) - (#x8FD4B9 #x7DED) - (#x8FD4BA #x7DF1) - (#x8FD4BB #x7DF5) - (#x8FD4BC #x7DF6) - (#x8FD4BD #x7DF9) - (#x8FD4BE #x7DFA) - (#x8FD4BF #x7E08) - (#x8FD4C0 #x7E10) - (#x8FD4C1 #x7E11) - (#x8FD4C2 #x7E15) - (#x8FD4C3 #x7E17) - (#x8FD4C4 #x7E1C) - (#x8FD4C5 #x7E1D) - (#x8FD4C6 #x7E20) - (#x8FD4C7 #x7E27) - (#x8FD4C8 #x7E28) - (#x8FD4C9 #x7E2C) - (#x8FD4CA #x7E2D) - (#x8FD4CB #x7E2F) - (#x8FD4CC #x7E33) - (#x8FD4CD #x7E36) - (#x8FD4CE #x7E3F) - (#x8FD4CF #x7E44) - (#x8FD4D0 #x7E45) - (#x8FD4D1 #x7E47) - (#x8FD4D2 #x7E4E) - (#x8FD4D3 #x7E50) - (#x8FD4D4 #x7E52) - (#x8FD4D5 #x7E58) - (#x8FD4D6 #x7E5F) - (#x8FD4D7 #x7E61) - (#x8FD4D8 #x7E62) - (#x8FD4D9 #x7E65) - (#x8FD4DA #x7E6B) - (#x8FD4DB #x7E6E) - (#x8FD4DC #x7E6F) - (#x8FD4DD #x7E73) - (#x8FD4DE #x7E78) - (#x8FD4DF #x7E7E) - (#x8FD4E0 #x7E81) - (#x8FD4E1 #x7E86) - (#x8FD4E2 #x7E87) - (#x8FD4E3 #x7E8A) - (#x8FD4E4 #x7E8D) - (#x8FD4E5 #x7E91) - (#x8FD4E6 #x7E95) - (#x8FD4E7 #x7E98) - (#x8FD4E8 #x7E9A) - (#x8FD4E9 #x7E9D) - (#x8FD4EA #x7E9E) - (#x8FD4EB #x7F3C) - (#x8FD4EC #x7F3B) - (#x8FD4ED #x7F3D) - (#x8FD4EE #x7F3E) - (#x8FD4EF #x7F3F) - (#x8FD4F0 #x7F43) - (#x8FD4F1 #x7F44) - (#x8FD4F2 #x7F47) - (#x8FD4F3 #x7F4F) - (#x8FD4F4 #x7F52) - (#x8FD4F5 #x7F53) - (#x8FD4F6 #x7F5B) - (#x8FD4F7 #x7F5C) - (#x8FD4F8 #x7F5D) - (#x8FD4F9 #x7F61) - (#x8FD4FA #x7F63) - (#x8FD4FB #x7F64) - (#x8FD4FC #x7F65) - (#x8FD4FD #x7F66) - (#x8FD4FE #x7F6D) - (#x8FD5A1 #x7F71) - (#x8FD5A2 #x7F7D) - (#x8FD5A3 #x7F7E) - (#x8FD5A4 #x7F7F) - (#x8FD5A5 #x7F80) - (#x8FD5A6 #x7F8B) - (#x8FD5A7 #x7F8D) - (#x8FD5A8 #x7F8F) - (#x8FD5A9 #x7F90) - (#x8FD5AA #x7F91) - (#x8FD5AB #x7F96) - (#x8FD5AC #x7F97) - (#x8FD5AD #x7F9C) - (#x8FD5AE #x7FA1) - (#x8FD5AF #x7FA2) - (#x8FD5B0 #x7FA6) - (#x8FD5B1 #x7FAA) - (#x8FD5B2 #x7FAD) - (#x8FD5B3 #x7FB4) - (#x8FD5B4 #x7FBC) - (#x8FD5B5 #x7FBF) - (#x8FD5B6 #x7FC0) - (#x8FD5B7 #x7FC3) - (#x8FD5B8 #x7FC8) - (#x8FD5B9 #x7FCE) - (#x8FD5BA #x7FCF) - (#x8FD5BB #x7FDB) - (#x8FD5BC #x7FDF) - (#x8FD5BD #x7FE3) - (#x8FD5BE #x7FE5) - (#x8FD5BF #x7FE8) - (#x8FD5C0 #x7FEC) - (#x8FD5C1 #x7FEE) - (#x8FD5C2 #x7FEF) - (#x8FD5C3 #x7FF2) - (#x8FD5C4 #x7FFA) - (#x8FD5C5 #x7FFD) - (#x8FD5C6 #x7FFE) - (#x8FD5C7 #x7FFF) - (#x8FD5C8 #x8007) - (#x8FD5C9 #x8008) - (#x8FD5CA #x800A) - (#x8FD5CB #x800D) - (#x8FD5CC #x800E) - (#x8FD5CD #x800F) - (#x8FD5CE #x8011) - (#x8FD5CF #x8013) - (#x8FD5D0 #x8014) - (#x8FD5D1 #x8016) - (#x8FD5D2 #x801D) - (#x8FD5D3 #x801E) - (#x8FD5D4 #x801F) - (#x8FD5D5 #x8020) - (#x8FD5D6 #x8024) - (#x8FD5D7 #x8026) - (#x8FD5D8 #x802C) - (#x8FD5D9 #x802E) - (#x8FD5DA #x8030) - (#x8FD5DB #x8034) - (#x8FD5DC #x8035) - (#x8FD5DD #x8037) - (#x8FD5DE #x8039) - (#x8FD5DF #x803A) - (#x8FD5E0 #x803C) - (#x8FD5E1 #x803E) - (#x8FD5E2 #x8040) - (#x8FD5E3 #x8044) - (#x8FD5E4 #x8060) - (#x8FD5E5 #x8064) - (#x8FD5E6 #x8066) - (#x8FD5E7 #x806D) - (#x8FD5E8 #x8071) - (#x8FD5E9 #x8075) - (#x8FD5EA #x8081) - (#x8FD5EB #x8088) - (#x8FD5EC #x808E) - (#x8FD5ED #x809C) - (#x8FD5EE #x809E) - (#x8FD5EF #x80A6) - (#x8FD5F0 #x80A7) - (#x8FD5F1 #x80AB) - (#x8FD5F2 #x80B8) - (#x8FD5F3 #x80B9) - (#x8FD5F4 #x80C8) - (#x8FD5F5 #x80CD) - (#x8FD5F6 #x80CF) - (#x8FD5F7 #x80D2) - (#x8FD5F8 #x80D4) - (#x8FD5F9 #x80D5) - (#x8FD5FA #x80D7) - (#x8FD5FB #x80D8) - (#x8FD5FC #x80E0) - (#x8FD5FD #x80ED) - (#x8FD5FE #x80EE) - (#x8FD6A1 #x80F0) - (#x8FD6A2 #x80F2) - (#x8FD6A3 #x80F3) - (#x8FD6A4 #x80F6) - (#x8FD6A5 #x80F9) - (#x8FD6A6 #x80FA) - (#x8FD6A7 #x80FE) - (#x8FD6A8 #x8103) - (#x8FD6A9 #x810B) - (#x8FD6AA #x8116) - (#x8FD6AB #x8117) - (#x8FD6AC #x8118) - (#x8FD6AD #x811C) - (#x8FD6AE #x811E) - (#x8FD6AF #x8120) - (#x8FD6B0 #x8124) - (#x8FD6B1 #x8127) - (#x8FD6B2 #x812C) - (#x8FD6B3 #x8130) - (#x8FD6B4 #x8135) - (#x8FD6B5 #x813A) - (#x8FD6B6 #x813C) - (#x8FD6B7 #x8145) - (#x8FD6B8 #x8147) - (#x8FD6B9 #x814A) - (#x8FD6BA #x814C) - (#x8FD6BB #x8152) - (#x8FD6BC #x8157) - (#x8FD6BD #x8160) - (#x8FD6BE #x8161) - (#x8FD6BF #x8167) - (#x8FD6C0 #x8168) - (#x8FD6C1 #x8169) - (#x8FD6C2 #x816D) - (#x8FD6C3 #x816F) - (#x8FD6C4 #x8177) - (#x8FD6C5 #x8181) - (#x8FD6C6 #x8190) - (#x8FD6C7 #x8184) - (#x8FD6C8 #x8185) - (#x8FD6C9 #x8186) - (#x8FD6CA #x818B) - (#x8FD6CB #x818E) - (#x8FD6CC #x8196) - (#x8FD6CD #x8198) - (#x8FD6CE #x819B) - (#x8FD6CF #x819E) - (#x8FD6D0 #x81A2) - (#x8FD6D1 #x81AE) - (#x8FD6D2 #x81B2) - (#x8FD6D3 #x81B4) - (#x8FD6D4 #x81BB) - (#x8FD6D5 #x81CB) - (#x8FD6D6 #x81C3) - (#x8FD6D7 #x81C5) - (#x8FD6D8 #x81CA) - (#x8FD6D9 #x81CE) - (#x8FD6DA #x81CF) - (#x8FD6DB #x81D5) - (#x8FD6DC #x81D7) - (#x8FD6DD #x81DB) - (#x8FD6DE #x81DD) - (#x8FD6DF #x81DE) - (#x8FD6E0 #x81E1) - (#x8FD6E1 #x81E4) - (#x8FD6E2 #x81EB) - (#x8FD6E3 #x81EC) - (#x8FD6E4 #x81F0) - (#x8FD6E5 #x81F1) - (#x8FD6E6 #x81F2) - (#x8FD6E7 #x81F5) - (#x8FD6E8 #x81F6) - (#x8FD6E9 #x81F8) - (#x8FD6EA #x81F9) - (#x8FD6EB #x81FD) - (#x8FD6EC #x81FF) - (#x8FD6ED #x8200) - (#x8FD6EE #x8203) - (#x8FD6EF #x820F) - (#x8FD6F0 #x8213) - (#x8FD6F1 #x8214) - (#x8FD6F2 #x8219) - (#x8FD6F3 #x821A) - (#x8FD6F4 #x821D) - (#x8FD6F5 #x8221) - (#x8FD6F6 #x8222) - (#x8FD6F7 #x8228) - (#x8FD6F8 #x8232) - (#x8FD6F9 #x8234) - (#x8FD6FA #x823A) - (#x8FD6FB #x8243) - (#x8FD6FC #x8244) - (#x8FD6FD #x8245) - (#x8FD6FE #x8246) - (#x8FD7A1 #x824B) - (#x8FD7A2 #x824E) - (#x8FD7A3 #x824F) - (#x8FD7A4 #x8251) - (#x8FD7A5 #x8256) - (#x8FD7A6 #x825C) - (#x8FD7A7 #x8260) - (#x8FD7A8 #x8263) - (#x8FD7A9 #x8267) - (#x8FD7AA #x826D) - (#x8FD7AB #x8274) - (#x8FD7AC #x827B) - (#x8FD7AD #x827D) - (#x8FD7AE #x827F) - (#x8FD7AF #x8280) - (#x8FD7B0 #x8281) - (#x8FD7B1 #x8283) - (#x8FD7B2 #x8284) - (#x8FD7B3 #x8287) - (#x8FD7B4 #x8289) - (#x8FD7B5 #x828A) - (#x8FD7B6 #x828E) - (#x8FD7B7 #x8291) - (#x8FD7B8 #x8294) - (#x8FD7B9 #x8296) - (#x8FD7BA #x8298) - (#x8FD7BB #x829A) - (#x8FD7BC #x829B) - (#x8FD7BD #x82A0) - (#x8FD7BE #x82A1) - (#x8FD7BF #x82A3) - (#x8FD7C0 #x82A4) - (#x8FD7C1 #x82A7) - (#x8FD7C2 #x82A8) - (#x8FD7C3 #x82A9) - (#x8FD7C4 #x82AA) - (#x8FD7C5 #x82AE) - (#x8FD7C6 #x82B0) - (#x8FD7C7 #x82B2) - (#x8FD7C8 #x82B4) - (#x8FD7C9 #x82B7) - (#x8FD7CA #x82BA) - (#x8FD7CB #x82BC) - (#x8FD7CC #x82BE) - (#x8FD7CD #x82BF) - (#x8FD7CE #x82C6) - (#x8FD7CF #x82D0) - (#x8FD7D0 #x82D5) - (#x8FD7D1 #x82DA) - (#x8FD7D2 #x82E0) - (#x8FD7D3 #x82E2) - (#x8FD7D4 #x82E4) - (#x8FD7D5 #x82E8) - (#x8FD7D6 #x82EA) - (#x8FD7D7 #x82ED) - (#x8FD7D8 #x82EF) - (#x8FD7D9 #x82F6) - (#x8FD7DA #x82F7) - (#x8FD7DB #x82FD) - (#x8FD7DC #x82FE) - (#x8FD7DD #x8300) - (#x8FD7DE #x8301) - (#x8FD7DF #x8307) - (#x8FD7E0 #x8308) - (#x8FD7E1 #x830A) - (#x8FD7E2 #x830B) - (#x8FD7E3 #x8354) - (#x8FD7E4 #x831B) - (#x8FD7E5 #x831D) - (#x8FD7E6 #x831E) - (#x8FD7E7 #x831F) - (#x8FD7E8 #x8321) - (#x8FD7E9 #x8322) - (#x8FD7EA #x832C) - (#x8FD7EB #x832D) - (#x8FD7EC #x832E) - (#x8FD7ED #x8330) - (#x8FD7EE #x8333) - (#x8FD7EF #x8337) - (#x8FD7F0 #x833A) - (#x8FD7F1 #x833C) - (#x8FD7F2 #x833D) - (#x8FD7F3 #x8342) - (#x8FD7F4 #x8343) - (#x8FD7F5 #x8344) - (#x8FD7F6 #x8347) - (#x8FD7F7 #x834D) - (#x8FD7F8 #x834E) - (#x8FD7F9 #x8351) - (#x8FD7FA #x8355) - (#x8FD7FB #x8356) - (#x8FD7FC #x8357) - (#x8FD7FD #x8370) - (#x8FD7FE #x8378) - (#x8FD8A1 #x837D) - (#x8FD8A2 #x837F) - (#x8FD8A3 #x8380) - (#x8FD8A4 #x8382) - (#x8FD8A5 #x8384) - (#x8FD8A6 #x8386) - (#x8FD8A7 #x838D) - (#x8FD8A8 #x8392) - (#x8FD8A9 #x8394) - (#x8FD8AA #x8395) - (#x8FD8AB #x8398) - (#x8FD8AC #x8399) - (#x8FD8AD #x839B) - (#x8FD8AE #x839C) - (#x8FD8AF #x839D) - (#x8FD8B0 #x83A6) - (#x8FD8B1 #x83A7) - (#x8FD8B2 #x83A9) - (#x8FD8B3 #x83AC) - (#x8FD8B4 #x83BE) - (#x8FD8B5 #x83BF) - (#x8FD8B6 #x83C0) - (#x8FD8B7 #x83C7) - (#x8FD8B8 #x83C9) - (#x8FD8B9 #x83CF) - (#x8FD8BA #x83D0) - (#x8FD8BB #x83D1) - (#x8FD8BC #x83D4) - (#x8FD8BD #x83DD) - (#x8FD8BE #x8353) - (#x8FD8BF #x83E8) - (#x8FD8C0 #x83EA) - (#x8FD8C1 #x83F6) - (#x8FD8C2 #x83F8) - (#x8FD8C3 #x83F9) - (#x8FD8C4 #x83FC) - (#x8FD8C5 #x8401) - (#x8FD8C6 #x8406) - (#x8FD8C7 #x840A) - (#x8FD8C8 #x840F) - (#x8FD8C9 #x8411) - (#x8FD8CA #x8415) - (#x8FD8CB #x8419) - (#x8FD8CC #x83AD) - (#x8FD8CD #x842F) - (#x8FD8CE #x8439) - (#x8FD8CF #x8445) - (#x8FD8D0 #x8447) - (#x8FD8D1 #x8448) - (#x8FD8D2 #x844A) - (#x8FD8D3 #x844D) - (#x8FD8D4 #x844F) - (#x8FD8D5 #x8451) - (#x8FD8D6 #x8452) - (#x8FD8D7 #x8456) - (#x8FD8D8 #x8458) - (#x8FD8D9 #x8459) - (#x8FD8DA #x845A) - (#x8FD8DB #x845C) - (#x8FD8DC #x8460) - (#x8FD8DD #x8464) - (#x8FD8DE #x8465) - (#x8FD8DF #x8467) - (#x8FD8E0 #x846A) - (#x8FD8E1 #x8470) - (#x8FD8E2 #x8473) - (#x8FD8E3 #x8474) - (#x8FD8E4 #x8476) - (#x8FD8E5 #x8478) - (#x8FD8E6 #x847C) - (#x8FD8E7 #x847D) - (#x8FD8E8 #x8481) - (#x8FD8E9 #x8485) - (#x8FD8EA #x8492) - (#x8FD8EB #x8493) - (#x8FD8EC #x8495) - (#x8FD8ED #x849E) - (#x8FD8EE #x84A6) - (#x8FD8EF #x84A8) - (#x8FD8F0 #x84A9) - (#x8FD8F1 #x84AA) - (#x8FD8F2 #x84AF) - (#x8FD8F3 #x84B1) - (#x8FD8F4 #x84B4) - (#x8FD8F5 #x84BA) - (#x8FD8F6 #x84BD) - (#x8FD8F7 #x84BE) - (#x8FD8F8 #x84C0) - (#x8FD8F9 #x84C2) - (#x8FD8FA #x84C7) - (#x8FD8FB #x84C8) - (#x8FD8FC #x84CC) - (#x8FD8FD #x84CF) - (#x8FD8FE #x84D3) - (#x8FD9A1 #x84DC) - (#x8FD9A2 #x84E7) - (#x8FD9A3 #x84EA) - (#x8FD9A4 #x84EF) - (#x8FD9A5 #x84F0) - (#x8FD9A6 #x84F1) - (#x8FD9A7 #x84F2) - (#x8FD9A8 #x84F7) - (#x8FD9A9 #x8532) - (#x8FD9AA #x84FA) - (#x8FD9AB #x84FB) - (#x8FD9AC #x84FD) - (#x8FD9AD #x8502) - (#x8FD9AE #x8503) - (#x8FD9AF #x8507) - (#x8FD9B0 #x850C) - (#x8FD9B1 #x850E) - (#x8FD9B2 #x8510) - (#x8FD9B3 #x851C) - (#x8FD9B4 #x851E) - (#x8FD9B5 #x8522) - (#x8FD9B6 #x8523) - (#x8FD9B7 #x8524) - (#x8FD9B8 #x8525) - (#x8FD9B9 #x8527) - (#x8FD9BA #x852A) - (#x8FD9BB #x852B) - (#x8FD9BC #x852F) - (#x8FD9BD #x8533) - (#x8FD9BE #x8534) - (#x8FD9BF #x8536) - (#x8FD9C0 #x853F) - (#x8FD9C1 #x8546) - (#x8FD9C2 #x854F) - (#x8FD9C3 #x8550) - (#x8FD9C4 #x8551) - (#x8FD9C5 #x8552) - (#x8FD9C6 #x8553) - (#x8FD9C7 #x8556) - (#x8FD9C8 #x8559) - (#x8FD9C9 #x855C) - (#x8FD9CA #x855D) - (#x8FD9CB #x855E) - (#x8FD9CC #x855F) - (#x8FD9CD #x8560) - (#x8FD9CE #x8561) - (#x8FD9CF #x8562) - (#x8FD9D0 #x8564) - (#x8FD9D1 #x856B) - (#x8FD9D2 #x856F) - (#x8FD9D3 #x8579) - (#x8FD9D4 #x857A) - (#x8FD9D5 #x857B) - (#x8FD9D6 #x857D) - (#x8FD9D7 #x857F) - (#x8FD9D8 #x8581) - (#x8FD9D9 #x8585) - (#x8FD9DA #x8586) - (#x8FD9DB #x8589) - (#x8FD9DC #x858B) - (#x8FD9DD #x858C) - (#x8FD9DE #x858F) - (#x8FD9DF #x8593) - (#x8FD9E0 #x8598) - (#x8FD9E1 #x859D) - (#x8FD9E2 #x859F) - (#x8FD9E3 #x85A0) - (#x8FD9E4 #x85A2) - (#x8FD9E5 #x85A5) - (#x8FD9E6 #x85A7) - (#x8FD9E7 #x85B4) - (#x8FD9E8 #x85B6) - (#x8FD9E9 #x85B7) - (#x8FD9EA #x85B8) - (#x8FD9EB #x85BC) - (#x8FD9EC #x85BD) - (#x8FD9ED #x85BE) - (#x8FD9EE #x85BF) - (#x8FD9EF #x85C2) - (#x8FD9F0 #x85C7) - (#x8FD9F1 #x85CA) - (#x8FD9F2 #x85CB) - (#x8FD9F3 #x85CE) - (#x8FD9F4 #x85AD) - (#x8FD9F5 #x85D8) - (#x8FD9F6 #x85DA) - (#x8FD9F7 #x85DF) - (#x8FD9F8 #x85E0) - (#x8FD9F9 #x85E6) - (#x8FD9FA #x85E8) - (#x8FD9FB #x85ED) - (#x8FD9FC #x85F3) - (#x8FD9FD #x85F6) - (#x8FD9FE #x85FC) - (#x8FDAA1 #x85FF) - (#x8FDAA2 #x8600) - (#x8FDAA3 #x8604) - (#x8FDAA4 #x8605) - (#x8FDAA5 #x860D) - (#x8FDAA6 #x860E) - (#x8FDAA7 #x8610) - (#x8FDAA8 #x8611) - (#x8FDAA9 #x8612) - (#x8FDAAA #x8618) - (#x8FDAAB #x8619) - (#x8FDAAC #x861B) - (#x8FDAAD #x861E) - (#x8FDAAE #x8621) - (#x8FDAAF #x8627) - (#x8FDAB0 #x8629) - (#x8FDAB1 #x8636) - (#x8FDAB2 #x8638) - (#x8FDAB3 #x863A) - (#x8FDAB4 #x863C) - (#x8FDAB5 #x863D) - (#x8FDAB6 #x8640) - (#x8FDAB7 #x8642) - (#x8FDAB8 #x8646) - (#x8FDAB9 #x8652) - (#x8FDABA #x8653) - (#x8FDABB #x8656) - (#x8FDABC #x8657) - (#x8FDABD #x8658) - (#x8FDABE #x8659) - (#x8FDABF #x865D) - (#x8FDAC0 #x8660) - (#x8FDAC1 #x8661) - (#x8FDAC2 #x8662) - (#x8FDAC3 #x8663) - (#x8FDAC4 #x8664) - (#x8FDAC5 #x8669) - (#x8FDAC6 #x866C) - (#x8FDAC7 #x866F) - (#x8FDAC8 #x8675) - (#x8FDAC9 #x8676) - (#x8FDACA #x8677) - (#x8FDACB #x867A) - (#x8FDACC #x868D) - (#x8FDACD #x8691) - (#x8FDACE #x8696) - (#x8FDACF #x8698) - (#x8FDAD0 #x869A) - (#x8FDAD1 #x869C) - (#x8FDAD2 #x86A1) - (#x8FDAD3 #x86A6) - (#x8FDAD4 #x86A7) - (#x8FDAD5 #x86A8) - (#x8FDAD6 #x86AD) - (#x8FDAD7 #x86B1) - (#x8FDAD8 #x86B3) - (#x8FDAD9 #x86B4) - (#x8FDADA #x86B5) - (#x8FDADB #x86B7) - (#x8FDADC #x86B8) - (#x8FDADD #x86B9) - (#x8FDADE #x86BF) - (#x8FDADF #x86C0) - (#x8FDAE0 #x86C1) - (#x8FDAE1 #x86C3) - (#x8FDAE2 #x86C5) - (#x8FDAE3 #x86D1) - (#x8FDAE4 #x86D2) - (#x8FDAE5 #x86D5) - (#x8FDAE6 #x86D7) - (#x8FDAE7 #x86DA) - (#x8FDAE8 #x86DC) - (#x8FDAE9 #x86E0) - (#x8FDAEA #x86E3) - (#x8FDAEB #x86E5) - (#x8FDAEC #x86E7) - (#x8FDAED #x8688) - (#x8FDAEE #x86FA) - (#x8FDAEF #x86FC) - (#x8FDAF0 #x86FD) - (#x8FDAF1 #x8704) - (#x8FDAF2 #x8705) - (#x8FDAF3 #x8707) - (#x8FDAF4 #x870B) - (#x8FDAF5 #x870E) - (#x8FDAF6 #x870F) - (#x8FDAF7 #x8710) - (#x8FDAF8 #x8713) - (#x8FDAF9 #x8714) - (#x8FDAFA #x8719) - (#x8FDAFB #x871E) - (#x8FDAFC #x871F) - (#x8FDAFD #x8721) - (#x8FDAFE #x8723) - (#x8FDBA1 #x8728) - (#x8FDBA2 #x872E) - (#x8FDBA3 #x872F) - (#x8FDBA4 #x8731) - (#x8FDBA5 #x8732) - (#x8FDBA6 #x8739) - (#x8FDBA7 #x873A) - (#x8FDBA8 #x873C) - (#x8FDBA9 #x873D) - (#x8FDBAA #x873E) - (#x8FDBAB #x8740) - (#x8FDBAC #x8743) - (#x8FDBAD #x8745) - (#x8FDBAE #x874D) - (#x8FDBAF #x8758) - (#x8FDBB0 #x875D) - (#x8FDBB1 #x8761) - (#x8FDBB2 #x8764) - (#x8FDBB3 #x8765) - (#x8FDBB4 #x876F) - (#x8FDBB5 #x8771) - (#x8FDBB6 #x8772) - (#x8FDBB7 #x877B) - (#x8FDBB8 #x8783) - (#x8FDBB9 #x8784) - (#x8FDBBA #x8785) - (#x8FDBBB #x8786) - (#x8FDBBC #x8787) - (#x8FDBBD #x8788) - (#x8FDBBE #x8789) - (#x8FDBBF #x878B) - (#x8FDBC0 #x878C) - (#x8FDBC1 #x8790) - (#x8FDBC2 #x8793) - (#x8FDBC3 #x8795) - (#x8FDBC4 #x8797) - (#x8FDBC5 #x8798) - (#x8FDBC6 #x8799) - (#x8FDBC7 #x879E) - (#x8FDBC8 #x87A0) - (#x8FDBC9 #x87A3) - (#x8FDBCA #x87A7) - (#x8FDBCB #x87AC) - (#x8FDBCC #x87AD) - (#x8FDBCD #x87AE) - (#x8FDBCE #x87B1) - (#x8FDBCF #x87B5) - (#x8FDBD0 #x87BE) - (#x8FDBD1 #x87BF) - (#x8FDBD2 #x87C1) - (#x8FDBD3 #x87C8) - (#x8FDBD4 #x87C9) - (#x8FDBD5 #x87CA) - (#x8FDBD6 #x87CE) - (#x8FDBD7 #x87D5) - (#x8FDBD8 #x87D6) - (#x8FDBD9 #x87D9) - (#x8FDBDA #x87DA) - (#x8FDBDB #x87DC) - (#x8FDBDC #x87DF) - (#x8FDBDD #x87E2) - (#x8FDBDE #x87E3) - (#x8FDBDF #x87E4) - (#x8FDBE0 #x87EA) - (#x8FDBE1 #x87EB) - (#x8FDBE2 #x87ED) - (#x8FDBE3 #x87F1) - (#x8FDBE4 #x87F3) - (#x8FDBE5 #x87F8) - (#x8FDBE6 #x87FA) - (#x8FDBE7 #x87FF) - (#x8FDBE8 #x8801) - (#x8FDBE9 #x8803) - (#x8FDBEA #x8806) - (#x8FDBEB #x8809) - (#x8FDBEC #x880A) - (#x8FDBED #x880B) - (#x8FDBEE #x8810) - (#x8FDBEF #x8819) - (#x8FDBF0 #x8812) - (#x8FDBF1 #x8813) - (#x8FDBF2 #x8814) - (#x8FDBF3 #x8818) - (#x8FDBF4 #x881A) - (#x8FDBF5 #x881B) - (#x8FDBF6 #x881C) - (#x8FDBF7 #x881E) - (#x8FDBF8 #x881F) - (#x8FDBF9 #x8828) - (#x8FDBFA #x882D) - (#x8FDBFB #x882E) - (#x8FDBFC #x8830) - (#x8FDBFD #x8832) - (#x8FDBFE #x8835) - (#x8FDCA1 #x883A) - (#x8FDCA2 #x883C) - (#x8FDCA3 #x8841) - (#x8FDCA4 #x8843) - (#x8FDCA5 #x8845) - (#x8FDCA6 #x8848) - (#x8FDCA7 #x8849) - (#x8FDCA8 #x884A) - (#x8FDCA9 #x884B) - (#x8FDCAA #x884E) - (#x8FDCAB #x8851) - (#x8FDCAC #x8855) - (#x8FDCAD #x8856) - (#x8FDCAE #x8858) - (#x8FDCAF #x885A) - (#x8FDCB0 #x885C) - (#x8FDCB1 #x885F) - (#x8FDCB2 #x8860) - (#x8FDCB3 #x8864) - (#x8FDCB4 #x8869) - (#x8FDCB5 #x8871) - (#x8FDCB6 #x8879) - (#x8FDCB7 #x887B) - (#x8FDCB8 #x8880) - (#x8FDCB9 #x8898) - (#x8FDCBA #x889A) - (#x8FDCBB #x889B) - (#x8FDCBC #x889C) - (#x8FDCBD #x889F) - (#x8FDCBE #x88A0) - (#x8FDCBF #x88A8) - (#x8FDCC0 #x88AA) - (#x8FDCC1 #x88BA) - (#x8FDCC2 #x88BD) - (#x8FDCC3 #x88BE) - (#x8FDCC4 #x88C0) - (#x8FDCC5 #x88CA) - (#x8FDCC6 #x88CB) - (#x8FDCC7 #x88CC) - (#x8FDCC8 #x88CD) - (#x8FDCC9 #x88CE) - (#x8FDCCA #x88D1) - (#x8FDCCB #x88D2) - (#x8FDCCC #x88D3) - (#x8FDCCD #x88DB) - (#x8FDCCE #x88DE) - (#x8FDCCF #x88E7) - (#x8FDCD0 #x88EF) - (#x8FDCD1 #x88F0) - (#x8FDCD2 #x88F1) - (#x8FDCD3 #x88F5) - (#x8FDCD4 #x88F7) - (#x8FDCD5 #x8901) - (#x8FDCD6 #x8906) - (#x8FDCD7 #x890D) - (#x8FDCD8 #x890E) - (#x8FDCD9 #x890F) - (#x8FDCDA #x8915) - (#x8FDCDB #x8916) - (#x8FDCDC #x8918) - (#x8FDCDD #x8919) - (#x8FDCDE #x891A) - (#x8FDCDF #x891C) - (#x8FDCE0 #x8920) - (#x8FDCE1 #x8926) - (#x8FDCE2 #x8927) - (#x8FDCE3 #x8928) - (#x8FDCE4 #x8930) - (#x8FDCE5 #x8931) - (#x8FDCE6 #x8932) - (#x8FDCE7 #x8935) - (#x8FDCE8 #x8939) - (#x8FDCE9 #x893A) - (#x8FDCEA #x893E) - (#x8FDCEB #x8940) - (#x8FDCEC #x8942) - (#x8FDCED #x8945) - (#x8FDCEE #x8946) - (#x8FDCEF #x8949) - (#x8FDCF0 #x894F) - (#x8FDCF1 #x8952) - (#x8FDCF2 #x8957) - (#x8FDCF3 #x895A) - (#x8FDCF4 #x895B) - (#x8FDCF5 #x895C) - (#x8FDCF6 #x8961) - (#x8FDCF7 #x8962) - (#x8FDCF8 #x8963) - (#x8FDCF9 #x896B) - (#x8FDCFA #x896E) - (#x8FDCFB #x8970) - (#x8FDCFC #x8973) - (#x8FDCFD #x8975) - (#x8FDCFE #x897A) - (#x8FDDA1 #x897B) - (#x8FDDA2 #x897C) - (#x8FDDA3 #x897D) - (#x8FDDA4 #x8989) - (#x8FDDA5 #x898D) - (#x8FDDA6 #x8990) - (#x8FDDA7 #x8994) - (#x8FDDA8 #x8995) - (#x8FDDA9 #x899B) - (#x8FDDAA #x899C) - (#x8FDDAB #x899F) - (#x8FDDAC #x89A0) - (#x8FDDAD #x89A5) - (#x8FDDAE #x89B0) - (#x8FDDAF #x89B4) - (#x8FDDB0 #x89B5) - (#x8FDDB1 #x89B6) - (#x8FDDB2 #x89B7) - (#x8FDDB3 #x89BC) - (#x8FDDB4 #x89D4) - (#x8FDDB5 #x89D5) - (#x8FDDB6 #x89D6) - (#x8FDDB7 #x89D7) - (#x8FDDB8 #x89D8) - (#x8FDDB9 #x89E5) - (#x8FDDBA #x89E9) - (#x8FDDBB #x89EB) - (#x8FDDBC #x89ED) - (#x8FDDBD #x89F1) - (#x8FDDBE #x89F3) - (#x8FDDBF #x89F6) - (#x8FDDC0 #x89F9) - (#x8FDDC1 #x89FD) - (#x8FDDC2 #x89FF) - (#x8FDDC3 #x8A04) - (#x8FDDC4 #x8A05) - (#x8FDDC5 #x8A07) - (#x8FDDC6 #x8A0F) - (#x8FDDC7 #x8A11) - (#x8FDDC8 #x8A12) - (#x8FDDC9 #x8A14) - (#x8FDDCA #x8A15) - (#x8FDDCB #x8A1E) - (#x8FDDCC #x8A20) - (#x8FDDCD #x8A22) - (#x8FDDCE #x8A24) - (#x8FDDCF #x8A26) - (#x8FDDD0 #x8A2B) - (#x8FDDD1 #x8A2C) - (#x8FDDD2 #x8A2F) - (#x8FDDD3 #x8A35) - (#x8FDDD4 #x8A37) - (#x8FDDD5 #x8A3D) - (#x8FDDD6 #x8A3E) - (#x8FDDD7 #x8A40) - (#x8FDDD8 #x8A43) - (#x8FDDD9 #x8A45) - (#x8FDDDA #x8A47) - (#x8FDDDB #x8A49) - (#x8FDDDC #x8A4D) - (#x8FDDDD #x8A4E) - (#x8FDDDE #x8A53) - (#x8FDDDF #x8A56) - (#x8FDDE0 #x8A57) - (#x8FDDE1 #x8A58) - (#x8FDDE2 #x8A5C) - (#x8FDDE3 #x8A5D) - (#x8FDDE4 #x8A61) - (#x8FDDE5 #x8A65) - (#x8FDDE6 #x8A67) - (#x8FDDE7 #x8A75) - (#x8FDDE8 #x8A76) - (#x8FDDE9 #x8A77) - (#x8FDDEA #x8A79) - (#x8FDDEB #x8A7A) - (#x8FDDEC #x8A7B) - (#x8FDDED #x8A7E) - (#x8FDDEE #x8A7F) - (#x8FDDEF #x8A80) - (#x8FDDF0 #x8A83) - (#x8FDDF1 #x8A86) - (#x8FDDF2 #x8A8B) - (#x8FDDF3 #x8A8F) - (#x8FDDF4 #x8A90) - (#x8FDDF5 #x8A92) - (#x8FDDF6 #x8A96) - (#x8FDDF7 #x8A97) - (#x8FDDF8 #x8A99) - (#x8FDDF9 #x8A9F) - (#x8FDDFA #x8AA7) - (#x8FDDFB #x8AA9) - (#x8FDDFC #x8AAE) - (#x8FDDFD #x8AAF) - (#x8FDDFE #x8AB3) - (#x8FDEA1 #x8AB6) - (#x8FDEA2 #x8AB7) - (#x8FDEA3 #x8ABB) - (#x8FDEA4 #x8ABE) - (#x8FDEA5 #x8AC3) - (#x8FDEA6 #x8AC6) - (#x8FDEA7 #x8AC8) - (#x8FDEA8 #x8AC9) - (#x8FDEA9 #x8ACA) - (#x8FDEAA #x8AD1) - (#x8FDEAB #x8AD3) - (#x8FDEAC #x8AD4) - (#x8FDEAD #x8AD5) - (#x8FDEAE #x8AD7) - (#x8FDEAF #x8ADD) - (#x8FDEB0 #x8ADF) - (#x8FDEB1 #x8AEC) - (#x8FDEB2 #x8AF0) - (#x8FDEB3 #x8AF4) - (#x8FDEB4 #x8AF5) - (#x8FDEB5 #x8AF6) - (#x8FDEB6 #x8AFC) - (#x8FDEB7 #x8AFF) - (#x8FDEB8 #x8B05) - (#x8FDEB9 #x8B06) - (#x8FDEBA #x8B0B) - (#x8FDEBB #x8B11) - (#x8FDEBC #x8B1C) - (#x8FDEBD #x8B1E) - (#x8FDEBE #x8B1F) - (#x8FDEBF #x8B0A) - (#x8FDEC0 #x8B2D) - (#x8FDEC1 #x8B30) - (#x8FDEC2 #x8B37) - (#x8FDEC3 #x8B3C) - (#x8FDEC4 #x8B42) - (#x8FDEC5 #x8B43) - (#x8FDEC6 #x8B44) - (#x8FDEC7 #x8B45) - (#x8FDEC8 #x8B46) - (#x8FDEC9 #x8B48) - (#x8FDECA #x8B52) - (#x8FDECB #x8B53) - (#x8FDECC #x8B54) - (#x8FDECD #x8B59) - (#x8FDECE #x8B4D) - (#x8FDECF #x8B5E) - (#x8FDED0 #x8B63) - (#x8FDED1 #x8B6D) - (#x8FDED2 #x8B76) - (#x8FDED3 #x8B78) - (#x8FDED4 #x8B79) - (#x8FDED5 #x8B7C) - (#x8FDED6 #x8B7E) - (#x8FDED7 #x8B81) - (#x8FDED8 #x8B84) - (#x8FDED9 #x8B85) - (#x8FDEDA #x8B8B) - (#x8FDEDB #x8B8D) - (#x8FDEDC #x8B8F) - (#x8FDEDD #x8B94) - (#x8FDEDE #x8B95) - (#x8FDEDF #x8B9C) - (#x8FDEE0 #x8B9E) - (#x8FDEE1 #x8B9F) - (#x8FDEE2 #x8C38) - (#x8FDEE3 #x8C39) - (#x8FDEE4 #x8C3D) - (#x8FDEE5 #x8C3E) - (#x8FDEE6 #x8C45) - (#x8FDEE7 #x8C47) - (#x8FDEE8 #x8C49) - (#x8FDEE9 #x8C4B) - (#x8FDEEA #x8C4F) - (#x8FDEEB #x8C51) - (#x8FDEEC #x8C53) - (#x8FDEED #x8C54) - (#x8FDEEE #x8C57) - (#x8FDEEF #x8C58) - (#x8FDEF0 #x8C5B) - (#x8FDEF1 #x8C5D) - (#x8FDEF2 #x8C59) - (#x8FDEF3 #x8C63) - (#x8FDEF4 #x8C64) - (#x8FDEF5 #x8C66) - (#x8FDEF6 #x8C68) - (#x8FDEF7 #x8C69) - (#x8FDEF8 #x8C6D) - (#x8FDEF9 #x8C73) - (#x8FDEFA #x8C75) - (#x8FDEFB #x8C76) - (#x8FDEFC #x8C7B) - (#x8FDEFD #x8C7E) - (#x8FDEFE #x8C86) - (#x8FDFA1 #x8C87) - (#x8FDFA2 #x8C8B) - (#x8FDFA3 #x8C90) - (#x8FDFA4 #x8C92) - (#x8FDFA5 #x8C93) - (#x8FDFA6 #x8C99) - (#x8FDFA7 #x8C9B) - (#x8FDFA8 #x8C9C) - (#x8FDFA9 #x8CA4) - (#x8FDFAA #x8CB9) - (#x8FDFAB #x8CBA) - (#x8FDFAC #x8CC5) - (#x8FDFAD #x8CC6) - (#x8FDFAE #x8CC9) - (#x8FDFAF #x8CCB) - (#x8FDFB0 #x8CCF) - (#x8FDFB1 #x8CD6) - (#x8FDFB2 #x8CD5) - (#x8FDFB3 #x8CD9) - (#x8FDFB4 #x8CDD) - (#x8FDFB5 #x8CE1) - (#x8FDFB6 #x8CE8) - (#x8FDFB7 #x8CEC) - (#x8FDFB8 #x8CEF) - (#x8FDFB9 #x8CF0) - (#x8FDFBA #x8CF2) - (#x8FDFBB #x8CF5) - (#x8FDFBC #x8CF7) - (#x8FDFBD #x8CF8) - (#x8FDFBE #x8CFE) - (#x8FDFBF #x8CFF) - (#x8FDFC0 #x8D01) - (#x8FDFC1 #x8D03) - (#x8FDFC2 #x8D09) - (#x8FDFC3 #x8D12) - (#x8FDFC4 #x8D17) - (#x8FDFC5 #x8D1B) - (#x8FDFC6 #x8D65) - (#x8FDFC7 #x8D69) - (#x8FDFC8 #x8D6C) - (#x8FDFC9 #x8D6E) - (#x8FDFCA #x8D7F) - (#x8FDFCB #x8D82) - (#x8FDFCC #x8D84) - (#x8FDFCD #x8D88) - (#x8FDFCE #x8D8D) - (#x8FDFCF #x8D90) - (#x8FDFD0 #x8D91) - (#x8FDFD1 #x8D95) - (#x8FDFD2 #x8D9E) - (#x8FDFD3 #x8D9F) - (#x8FDFD4 #x8DA0) - (#x8FDFD5 #x8DA6) - (#x8FDFD6 #x8DAB) - (#x8FDFD7 #x8DAC) - (#x8FDFD8 #x8DAF) - (#x8FDFD9 #x8DB2) - (#x8FDFDA #x8DB5) - (#x8FDFDB #x8DB7) - (#x8FDFDC #x8DB9) - (#x8FDFDD #x8DBB) - (#x8FDFDE #x8DC0) - (#x8FDFDF #x8DC5) - (#x8FDFE0 #x8DC6) - (#x8FDFE1 #x8DC7) - (#x8FDFE2 #x8DC8) - (#x8FDFE3 #x8DCA) - (#x8FDFE4 #x8DCE) - (#x8FDFE5 #x8DD1) - (#x8FDFE6 #x8DD4) - (#x8FDFE7 #x8DD5) - (#x8FDFE8 #x8DD7) - (#x8FDFE9 #x8DD9) - (#x8FDFEA #x8DE4) - (#x8FDFEB #x8DE5) - (#x8FDFEC #x8DE7) - (#x8FDFED #x8DEC) - (#x8FDFEE #x8DF0) - (#x8FDFEF #x8DBC) - (#x8FDFF0 #x8DF1) - (#x8FDFF1 #x8DF2) - (#x8FDFF2 #x8DF4) - (#x8FDFF3 #x8DFD) - (#x8FDFF4 #x8E01) - (#x8FDFF5 #x8E04) - (#x8FDFF6 #x8E05) - (#x8FDFF7 #x8E06) - (#x8FDFF8 #x8E0B) - (#x8FDFF9 #x8E11) - (#x8FDFFA #x8E14) - (#x8FDFFB #x8E16) - (#x8FDFFC #x8E20) - (#x8FDFFD #x8E21) - (#x8FDFFE #x8E22) - (#x8FE0A1 #x8E23) - (#x8FE0A2 #x8E26) - (#x8FE0A3 #x8E27) - (#x8FE0A4 #x8E31) - (#x8FE0A5 #x8E33) - (#x8FE0A6 #x8E36) - (#x8FE0A7 #x8E37) - (#x8FE0A8 #x8E38) - (#x8FE0A9 #x8E39) - (#x8FE0AA #x8E3D) - (#x8FE0AB #x8E40) - (#x8FE0AC #x8E41) - (#x8FE0AD #x8E4B) - (#x8FE0AE #x8E4D) - (#x8FE0AF #x8E4E) - (#x8FE0B0 #x8E4F) - (#x8FE0B1 #x8E54) - (#x8FE0B2 #x8E5B) - (#x8FE0B3 #x8E5C) - (#x8FE0B4 #x8E5D) - (#x8FE0B5 #x8E5E) - (#x8FE0B6 #x8E61) - (#x8FE0B7 #x8E62) - (#x8FE0B8 #x8E69) - (#x8FE0B9 #x8E6C) - (#x8FE0BA #x8E6D) - (#x8FE0BB #x8E6F) - (#x8FE0BC #x8E70) - (#x8FE0BD #x8E71) - (#x8FE0BE #x8E79) - (#x8FE0BF #x8E7A) - (#x8FE0C0 #x8E7B) - (#x8FE0C1 #x8E82) - (#x8FE0C2 #x8E83) - (#x8FE0C3 #x8E89) - (#x8FE0C4 #x8E90) - (#x8FE0C5 #x8E92) - (#x8FE0C6 #x8E95) - (#x8FE0C7 #x8E9A) - (#x8FE0C8 #x8E9B) - (#x8FE0C9 #x8E9D) - (#x8FE0CA #x8E9E) - (#x8FE0CB #x8EA2) - (#x8FE0CC #x8EA7) - (#x8FE0CD #x8EA9) - (#x8FE0CE #x8EAD) - (#x8FE0CF #x8EAE) - (#x8FE0D0 #x8EB3) - (#x8FE0D1 #x8EB5) - (#x8FE0D2 #x8EBA) - (#x8FE0D3 #x8EBB) - (#x8FE0D4 #x8EC0) - (#x8FE0D5 #x8EC1) - (#x8FE0D6 #x8EC3) - (#x8FE0D7 #x8EC4) - (#x8FE0D8 #x8EC7) - (#x8FE0D9 #x8ECF) - (#x8FE0DA #x8ED1) - (#x8FE0DB #x8ED4) - (#x8FE0DC #x8EDC) - (#x8FE0DD #x8EE8) - (#x8FE0DE #x8EEE) - (#x8FE0DF #x8EF0) - (#x8FE0E0 #x8EF1) - (#x8FE0E1 #x8EF7) - (#x8FE0E2 #x8EF9) - (#x8FE0E3 #x8EFA) - (#x8FE0E4 #x8EED) - (#x8FE0E5 #x8F00) - (#x8FE0E6 #x8F02) - (#x8FE0E7 #x8F07) - (#x8FE0E8 #x8F08) - (#x8FE0E9 #x8F0F) - (#x8FE0EA #x8F10) - (#x8FE0EB #x8F16) - (#x8FE0EC #x8F17) - (#x8FE0ED #x8F18) - (#x8FE0EE #x8F1E) - (#x8FE0EF #x8F20) - (#x8FE0F0 #x8F21) - (#x8FE0F1 #x8F23) - (#x8FE0F2 #x8F25) - (#x8FE0F3 #x8F27) - (#x8FE0F4 #x8F28) - (#x8FE0F5 #x8F2C) - (#x8FE0F6 #x8F2D) - (#x8FE0F7 #x8F2E) - (#x8FE0F8 #x8F34) - (#x8FE0F9 #x8F35) - (#x8FE0FA #x8F36) - (#x8FE0FB #x8F37) - (#x8FE0FC #x8F3A) - (#x8FE0FD #x8F40) - (#x8FE0FE #x8F41) - (#x8FE1A1 #x8F43) - (#x8FE1A2 #x8F47) - (#x8FE1A3 #x8F4F) - (#x8FE1A4 #x8F51) - (#x8FE1A5 #x8F52) - (#x8FE1A6 #x8F53) - (#x8FE1A7 #x8F54) - (#x8FE1A8 #x8F55) - (#x8FE1A9 #x8F58) - (#x8FE1AA #x8F5D) - (#x8FE1AB #x8F5E) - (#x8FE1AC #x8F65) - (#x8FE1AD #x8F9D) - (#x8FE1AE #x8FA0) - (#x8FE1AF #x8FA1) - (#x8FE1B0 #x8FA4) - (#x8FE1B1 #x8FA5) - (#x8FE1B2 #x8FA6) - (#x8FE1B3 #x8FB5) - (#x8FE1B4 #x8FB6) - (#x8FE1B5 #x8FB8) - (#x8FE1B6 #x8FBE) - (#x8FE1B7 #x8FC0) - (#x8FE1B8 #x8FC1) - (#x8FE1B9 #x8FC6) - (#x8FE1BA #x8FCA) - (#x8FE1BB #x8FCB) - (#x8FE1BC #x8FCD) - (#x8FE1BD #x8FD0) - (#x8FE1BE #x8FD2) - (#x8FE1BF #x8FD3) - (#x8FE1C0 #x8FD5) - (#x8FE1C1 #x8FE0) - (#x8FE1C2 #x8FE3) - (#x8FE1C3 #x8FE4) - (#x8FE1C4 #x8FE8) - (#x8FE1C5 #x8FEE) - (#x8FE1C6 #x8FF1) - (#x8FE1C7 #x8FF5) - (#x8FE1C8 #x8FF6) - (#x8FE1C9 #x8FFB) - (#x8FE1CA #x8FFE) - (#x8FE1CB #x9002) - (#x8FE1CC #x9004) - (#x8FE1CD #x9008) - (#x8FE1CE #x900C) - (#x8FE1CF #x9018) - (#x8FE1D0 #x901B) - (#x8FE1D1 #x9028) - (#x8FE1D2 #x9029) - (#x8FE1D3 #x902F) - (#x8FE1D4 #x902A) - (#x8FE1D5 #x902C) - (#x8FE1D6 #x902D) - (#x8FE1D7 #x9033) - (#x8FE1D8 #x9034) - (#x8FE1D9 #x9037) - (#x8FE1DA #x903F) - (#x8FE1DB #x9043) - (#x8FE1DC #x9044) - (#x8FE1DD #x904C) - (#x8FE1DE #x905B) - (#x8FE1DF #x905D) - (#x8FE1E0 #x9062) - (#x8FE1E1 #x9066) - (#x8FE1E2 #x9067) - (#x8FE1E3 #x906C) - (#x8FE1E4 #x9070) - (#x8FE1E5 #x9074) - (#x8FE1E6 #x9079) - (#x8FE1E7 #x9085) - (#x8FE1E8 #x9088) - (#x8FE1E9 #x908B) - (#x8FE1EA #x908C) - (#x8FE1EB #x908E) - (#x8FE1EC #x9090) - (#x8FE1ED #x9095) - (#x8FE1EE #x9097) - (#x8FE1EF #x9098) - (#x8FE1F0 #x9099) - (#x8FE1F1 #x909B) - (#x8FE1F2 #x90A0) - (#x8FE1F3 #x90A1) - (#x8FE1F4 #x90A2) - (#x8FE1F5 #x90A5) - (#x8FE1F6 #x90B0) - (#x8FE1F7 #x90B2) - (#x8FE1F8 #x90B3) - (#x8FE1F9 #x90B4) - (#x8FE1FA #x90B6) - (#x8FE1FB #x90BD) - (#x8FE1FC #x90CC) - (#x8FE1FD #x90BE) - (#x8FE1FE #x90C3) - (#x8FE2A1 #x90C4) - (#x8FE2A2 #x90C5) - (#x8FE2A3 #x90C7) - (#x8FE2A4 #x90C8) - (#x8FE2A5 #x90D5) - (#x8FE2A6 #x90D7) - (#x8FE2A7 #x90D8) - (#x8FE2A8 #x90D9) - (#x8FE2A9 #x90DC) - (#x8FE2AA #x90DD) - (#x8FE2AB #x90DF) - (#x8FE2AC #x90E5) - (#x8FE2AD #x90D2) - (#x8FE2AE #x90F6) - (#x8FE2AF #x90EB) - (#x8FE2B0 #x90EF) - (#x8FE2B1 #x90F0) - (#x8FE2B2 #x90F4) - (#x8FE2B3 #x90FE) - (#x8FE2B4 #x90FF) - (#x8FE2B5 #x9100) - (#x8FE2B6 #x9104) - (#x8FE2B7 #x9105) - (#x8FE2B8 #x9106) - (#x8FE2B9 #x9108) - (#x8FE2BA #x910D) - (#x8FE2BB #x9110) - (#x8FE2BC #x9114) - (#x8FE2BD #x9116) - (#x8FE2BE #x9117) - (#x8FE2BF #x9118) - (#x8FE2C0 #x911A) - (#x8FE2C1 #x911C) - (#x8FE2C2 #x911E) - (#x8FE2C3 #x9120) - (#x8FE2C4 #x9125) - (#x8FE2C5 #x9122) - (#x8FE2C6 #x9123) - (#x8FE2C7 #x9127) - (#x8FE2C8 #x9129) - (#x8FE2C9 #x912E) - (#x8FE2CA #x912F) - (#x8FE2CB #x9131) - (#x8FE2CC #x9134) - (#x8FE2CD #x9136) - (#x8FE2CE #x9137) - (#x8FE2CF #x9139) - (#x8FE2D0 #x913A) - (#x8FE2D1 #x913C) - (#x8FE2D2 #x913D) - (#x8FE2D3 #x9143) - (#x8FE2D4 #x9147) - (#x8FE2D5 #x9148) - (#x8FE2D6 #x914F) - (#x8FE2D7 #x9153) - (#x8FE2D8 #x9157) - (#x8FE2D9 #x9159) - (#x8FE2DA #x915A) - (#x8FE2DB #x915B) - (#x8FE2DC #x9161) - (#x8FE2DD #x9164) - (#x8FE2DE #x9167) - (#x8FE2DF #x916D) - (#x8FE2E0 #x9174) - (#x8FE2E1 #x9179) - (#x8FE2E2 #x917A) - (#x8FE2E3 #x917B) - (#x8FE2E4 #x9181) - (#x8FE2E5 #x9183) - (#x8FE2E6 #x9185) - (#x8FE2E7 #x9186) - (#x8FE2E8 #x918A) - (#x8FE2E9 #x918E) - (#x8FE2EA #x9191) - (#x8FE2EB #x9193) - (#x8FE2EC #x9194) - (#x8FE2ED #x9195) - (#x8FE2EE #x9198) - (#x8FE2EF #x919E) - (#x8FE2F0 #x91A1) - (#x8FE2F1 #x91A6) - (#x8FE2F2 #x91A8) - (#x8FE2F3 #x91AC) - (#x8FE2F4 #x91AD) - (#x8FE2F5 #x91AE) - (#x8FE2F6 #x91B0) - (#x8FE2F7 #x91B1) - (#x8FE2F8 #x91B2) - (#x8FE2F9 #x91B3) - (#x8FE2FA #x91B6) - (#x8FE2FB #x91BB) - (#x8FE2FC #x91BC) - (#x8FE2FD #x91BD) - (#x8FE2FE #x91BF) - (#x8FE3A1 #x91C2) - (#x8FE3A2 #x91C3) - (#x8FE3A3 #x91C5) - (#x8FE3A4 #x91D3) - (#x8FE3A5 #x91D4) - (#x8FE3A6 #x91D7) - (#x8FE3A7 #x91D9) - (#x8FE3A8 #x91DA) - (#x8FE3A9 #x91DE) - (#x8FE3AA #x91E4) - (#x8FE3AB #x91E5) - (#x8FE3AC #x91E9) - (#x8FE3AD #x91EA) - (#x8FE3AE #x91EC) - (#x8FE3AF #x91ED) - (#x8FE3B0 #x91EE) - (#x8FE3B1 #x91EF) - (#x8FE3B2 #x91F0) - (#x8FE3B3 #x91F1) - (#x8FE3B4 #x91F7) - (#x8FE3B5 #x91F9) - (#x8FE3B6 #x91FB) - (#x8FE3B7 #x91FD) - (#x8FE3B8 #x9200) - (#x8FE3B9 #x9201) - (#x8FE3BA #x9204) - (#x8FE3BB #x9205) - (#x8FE3BC #x9206) - (#x8FE3BD #x9207) - (#x8FE3BE #x9209) - (#x8FE3BF #x920A) - (#x8FE3C0 #x920C) - (#x8FE3C1 #x9210) - (#x8FE3C2 #x9212) - (#x8FE3C3 #x9213) - (#x8FE3C4 #x9216) - (#x8FE3C5 #x9218) - (#x8FE3C6 #x921C) - (#x8FE3C7 #x921D) - (#x8FE3C8 #x9223) - (#x8FE3C9 #x9224) - (#x8FE3CA #x9225) - (#x8FE3CB #x9226) - (#x8FE3CC #x9228) - (#x8FE3CD #x922E) - (#x8FE3CE #x922F) - (#x8FE3CF #x9230) - (#x8FE3D0 #x9233) - (#x8FE3D1 #x9235) - (#x8FE3D2 #x9236) - (#x8FE3D3 #x9238) - (#x8FE3D4 #x9239) - (#x8FE3D5 #x923A) - (#x8FE3D6 #x923C) - (#x8FE3D7 #x923E) - (#x8FE3D8 #x9240) - (#x8FE3D9 #x9242) - (#x8FE3DA #x9243) - (#x8FE3DB #x9246) - (#x8FE3DC #x9247) - (#x8FE3DD #x924A) - (#x8FE3DE #x924D) - (#x8FE3DF #x924E) - (#x8FE3E0 #x924F) - (#x8FE3E1 #x9251) - (#x8FE3E2 #x9258) - (#x8FE3E3 #x9259) - (#x8FE3E4 #x925C) - (#x8FE3E5 #x925D) - (#x8FE3E6 #x9260) - (#x8FE3E7 #x9261) - (#x8FE3E8 #x9265) - (#x8FE3E9 #x9267) - (#x8FE3EA #x9268) - (#x8FE3EB #x9269) - (#x8FE3EC #x926E) - (#x8FE3ED #x926F) - (#x8FE3EE #x9270) - (#x8FE3EF #x9275) - (#x8FE3F0 #x9276) - (#x8FE3F1 #x9277) - (#x8FE3F2 #x9278) - (#x8FE3F3 #x9279) - (#x8FE3F4 #x927B) - (#x8FE3F5 #x927C) - (#x8FE3F6 #x927D) - (#x8FE3F7 #x927F) - (#x8FE3F8 #x9288) - (#x8FE3F9 #x9289) - (#x8FE3FA #x928A) - (#x8FE3FB #x928D) - (#x8FE3FC #x928E) - (#x8FE3FD #x9292) - (#x8FE3FE #x9297) - (#x8FE4A1 #x9299) - (#x8FE4A2 #x929F) - (#x8FE4A3 #x92A0) - (#x8FE4A4 #x92A4) - (#x8FE4A5 #x92A5) - (#x8FE4A6 #x92A7) - (#x8FE4A7 #x92A8) - (#x8FE4A8 #x92AB) - (#x8FE4A9 #x92AF) - (#x8FE4AA #x92B2) - (#x8FE4AB #x92B6) - (#x8FE4AC #x92B8) - (#x8FE4AD #x92BA) - (#x8FE4AE #x92BB) - (#x8FE4AF #x92BC) - (#x8FE4B0 #x92BD) - (#x8FE4B1 #x92BF) - (#x8FE4B2 #x92C0) - (#x8FE4B3 #x92C1) - (#x8FE4B4 #x92C2) - (#x8FE4B5 #x92C3) - (#x8FE4B6 #x92C5) - (#x8FE4B7 #x92C6) - (#x8FE4B8 #x92C7) - (#x8FE4B9 #x92C8) - (#x8FE4BA #x92CB) - (#x8FE4BB #x92CC) - (#x8FE4BC #x92CD) - (#x8FE4BD #x92CE) - (#x8FE4BE #x92D0) - (#x8FE4BF #x92D3) - (#x8FE4C0 #x92D5) - (#x8FE4C1 #x92D7) - (#x8FE4C2 #x92D8) - (#x8FE4C3 #x92D9) - (#x8FE4C4 #x92DC) - (#x8FE4C5 #x92DD) - (#x8FE4C6 #x92DF) - (#x8FE4C7 #x92E0) - (#x8FE4C8 #x92E1) - (#x8FE4C9 #x92E3) - (#x8FE4CA #x92E5) - (#x8FE4CB #x92E7) - (#x8FE4CC #x92E8) - (#x8FE4CD #x92EC) - (#x8FE4CE #x92EE) - (#x8FE4CF #x92F0) - (#x8FE4D0 #x92F9) - (#x8FE4D1 #x92FB) - (#x8FE4D2 #x92FF) - (#x8FE4D3 #x9300) - (#x8FE4D4 #x9302) - (#x8FE4D5 #x9308) - (#x8FE4D6 #x930D) - (#x8FE4D7 #x9311) - (#x8FE4D8 #x9314) - (#x8FE4D9 #x9315) - (#x8FE4DA #x931C) - (#x8FE4DB #x931D) - (#x8FE4DC #x931E) - (#x8FE4DD #x931F) - (#x8FE4DE #x9321) - (#x8FE4DF #x9324) - (#x8FE4E0 #x9325) - (#x8FE4E1 #x9327) - (#x8FE4E2 #x9329) - (#x8FE4E3 #x932A) - (#x8FE4E4 #x9333) - (#x8FE4E5 #x9334) - (#x8FE4E6 #x9336) - (#x8FE4E7 #x9337) - (#x8FE4E8 #x9347) - (#x8FE4E9 #x9348) - (#x8FE4EA #x9349) - (#x8FE4EB #x9350) - (#x8FE4EC #x9351) - (#x8FE4ED #x9352) - (#x8FE4EE #x9355) - (#x8FE4EF #x9357) - (#x8FE4F0 #x9358) - (#x8FE4F1 #x935A) - (#x8FE4F2 #x935E) - (#x8FE4F3 #x9364) - (#x8FE4F4 #x9365) - (#x8FE4F5 #x9367) - (#x8FE4F6 #x9369) - (#x8FE4F7 #x936A) - (#x8FE4F8 #x936D) - (#x8FE4F9 #x936F) - (#x8FE4FA #x9370) - (#x8FE4FB #x9371) - (#x8FE4FC #x9373) - (#x8FE4FD #x9374) - (#x8FE4FE #x9376) - (#x8FE5A1 #x937A) - (#x8FE5A2 #x937D) - (#x8FE5A3 #x937F) - (#x8FE5A4 #x9380) - (#x8FE5A5 #x9381) - (#x8FE5A6 #x9382) - (#x8FE5A7 #x9388) - (#x8FE5A8 #x938A) - (#x8FE5A9 #x938B) - (#x8FE5AA #x938D) - (#x8FE5AB #x938F) - (#x8FE5AC #x9392) - (#x8FE5AD #x9395) - (#x8FE5AE #x9398) - (#x8FE5AF #x939B) - (#x8FE5B0 #x939E) - (#x8FE5B1 #x93A1) - (#x8FE5B2 #x93A3) - (#x8FE5B3 #x93A4) - (#x8FE5B4 #x93A6) - (#x8FE5B5 #x93A8) - (#x8FE5B6 #x93AB) - (#x8FE5B7 #x93B4) - (#x8FE5B8 #x93B5) - (#x8FE5B9 #x93B6) - (#x8FE5BA #x93BA) - (#x8FE5BB #x93A9) - (#x8FE5BC #x93C1) - (#x8FE5BD #x93C4) - (#x8FE5BE #x93C5) - (#x8FE5BF #x93C6) - (#x8FE5C0 #x93C7) - (#x8FE5C1 #x93C9) - (#x8FE5C2 #x93CA) - (#x8FE5C3 #x93CB) - (#x8FE5C4 #x93CC) - (#x8FE5C5 #x93CD) - (#x8FE5C6 #x93D3) - (#x8FE5C7 #x93D9) - (#x8FE5C8 #x93DC) - (#x8FE5C9 #x93DE) - (#x8FE5CA #x93DF) - (#x8FE5CB #x93E2) - (#x8FE5CC #x93E6) - (#x8FE5CD #x93E7) - (#x8FE5CE #x93F9) - (#x8FE5CF #x93F7) - (#x8FE5D0 #x93F8) - (#x8FE5D1 #x93FA) - (#x8FE5D2 #x93FB) - (#x8FE5D3 #x93FD) - (#x8FE5D4 #x9401) - (#x8FE5D5 #x9402) - (#x8FE5D6 #x9404) - (#x8FE5D7 #x9408) - (#x8FE5D8 #x9409) - (#x8FE5D9 #x940D) - (#x8FE5DA #x940E) - (#x8FE5DB #x940F) - (#x8FE5DC #x9415) - (#x8FE5DD #x9416) - (#x8FE5DE #x9417) - (#x8FE5DF #x941F) - (#x8FE5E0 #x942E) - (#x8FE5E1 #x942F) - (#x8FE5E2 #x9431) - (#x8FE5E3 #x9432) - (#x8FE5E4 #x9433) - (#x8FE5E5 #x9434) - (#x8FE5E6 #x943B) - (#x8FE5E7 #x943F) - (#x8FE5E8 #x943D) - (#x8FE5E9 #x9443) - (#x8FE5EA #x9445) - (#x8FE5EB #x9448) - (#x8FE5EC #x944A) - (#x8FE5ED #x944C) - (#x8FE5EE #x9455) - (#x8FE5EF #x9459) - (#x8FE5F0 #x945C) - (#x8FE5F1 #x945F) - (#x8FE5F2 #x9461) - (#x8FE5F3 #x9463) - (#x8FE5F4 #x9468) - (#x8FE5F5 #x946B) - (#x8FE5F6 #x946D) - (#x8FE5F7 #x946E) - (#x8FE5F8 #x946F) - (#x8FE5F9 #x9471) - (#x8FE5FA #x9472) - (#x8FE5FB #x9484) - (#x8FE5FC #x9483) - (#x8FE5FD #x9578) - (#x8FE5FE #x9579) - (#x8FE6A1 #x957E) - (#x8FE6A2 #x9584) - (#x8FE6A3 #x9588) - (#x8FE6A4 #x958C) - (#x8FE6A5 #x958D) - (#x8FE6A6 #x958E) - (#x8FE6A7 #x959D) - (#x8FE6A8 #x959E) - (#x8FE6A9 #x959F) - (#x8FE6AA #x95A1) - (#x8FE6AB #x95A6) - (#x8FE6AC #x95A9) - (#x8FE6AD #x95AB) - (#x8FE6AE #x95AC) - (#x8FE6AF #x95B4) - (#x8FE6B0 #x95B6) - (#x8FE6B1 #x95BA) - (#x8FE6B2 #x95BD) - (#x8FE6B3 #x95BF) - (#x8FE6B4 #x95C6) - (#x8FE6B5 #x95C8) - (#x8FE6B6 #x95C9) - (#x8FE6B7 #x95CB) - (#x8FE6B8 #x95D0) - (#x8FE6B9 #x95D1) - (#x8FE6BA #x95D2) - (#x8FE6BB #x95D3) - (#x8FE6BC #x95D9) - (#x8FE6BD #x95DA) - (#x8FE6BE #x95DD) - (#x8FE6BF #x95DE) - (#x8FE6C0 #x95DF) - (#x8FE6C1 #x95E0) - (#x8FE6C2 #x95E4) - (#x8FE6C3 #x95E6) - (#x8FE6C4 #x961D) - (#x8FE6C5 #x961E) - (#x8FE6C6 #x9622) - (#x8FE6C7 #x9624) - (#x8FE6C8 #x9625) - (#x8FE6C9 #x9626) - (#x8FE6CA #x962C) - (#x8FE6CB #x9631) - (#x8FE6CC #x9633) - (#x8FE6CD #x9637) - (#x8FE6CE #x9638) - (#x8FE6CF #x9639) - (#x8FE6D0 #x963A) - (#x8FE6D1 #x963C) - (#x8FE6D2 #x963D) - (#x8FE6D3 #x9641) - (#x8FE6D4 #x9652) - (#x8FE6D5 #x9654) - (#x8FE6D6 #x9656) - (#x8FE6D7 #x9657) - (#x8FE6D8 #x9658) - (#x8FE6D9 #x9661) - (#x8FE6DA #x966E) - (#x8FE6DB #x9674) - (#x8FE6DC #x967B) - (#x8FE6DD #x967C) - (#x8FE6DE #x967E) - (#x8FE6DF #x967F) - (#x8FE6E0 #x9681) - (#x8FE6E1 #x9682) - (#x8FE6E2 #x9683) - (#x8FE6E3 #x9684) - (#x8FE6E4 #x9689) - (#x8FE6E5 #x9691) - (#x8FE6E6 #x9696) - (#x8FE6E7 #x969A) - (#x8FE6E8 #x969D) - (#x8FE6E9 #x969F) - (#x8FE6EA #x96A4) - (#x8FE6EB #x96A5) - (#x8FE6EC #x96A6) - (#x8FE6ED #x96A9) - (#x8FE6EE #x96AE) - (#x8FE6EF #x96AF) - (#x8FE6F0 #x96B3) - (#x8FE6F1 #x96BA) - (#x8FE6F2 #x96CA) - (#x8FE6F3 #x96D2) - (#x8FE6F4 #x5DB2) - (#x8FE6F5 #x96D8) - (#x8FE6F6 #x96DA) - (#x8FE6F7 #x96DD) - (#x8FE6F8 #x96DE) - (#x8FE6F9 #x96DF) - (#x8FE6FA #x96E9) - (#x8FE6FB #x96EF) - (#x8FE6FC #x96F1) - (#x8FE6FD #x96FA) - (#x8FE6FE #x9702) - (#x8FE7A1 #x9703) - (#x8FE7A2 #x9705) - (#x8FE7A3 #x9709) - (#x8FE7A4 #x971A) - (#x8FE7A5 #x971B) - (#x8FE7A6 #x971D) - (#x8FE7A7 #x9721) - (#x8FE7A8 #x9722) - (#x8FE7A9 #x9723) - (#x8FE7AA #x9728) - (#x8FE7AB #x9731) - (#x8FE7AC #x9733) - (#x8FE7AD #x9741) - (#x8FE7AE #x9743) - (#x8FE7AF #x974A) - (#x8FE7B0 #x974E) - (#x8FE7B1 #x974F) - (#x8FE7B2 #x9755) - (#x8FE7B3 #x9757) - (#x8FE7B4 #x9758) - (#x8FE7B5 #x975A) - (#x8FE7B6 #x975B) - (#x8FE7B7 #x9763) - (#x8FE7B8 #x9767) - (#x8FE7B9 #x976A) - (#x8FE7BA #x976E) - (#x8FE7BB #x9773) - (#x8FE7BC #x9776) - (#x8FE7BD #x9777) - (#x8FE7BE #x9778) - (#x8FE7BF #x977B) - (#x8FE7C0 #x977D) - (#x8FE7C1 #x977F) - (#x8FE7C2 #x9780) - (#x8FE7C3 #x9789) - (#x8FE7C4 #x9795) - (#x8FE7C5 #x9796) - (#x8FE7C6 #x9797) - (#x8FE7C7 #x9799) - (#x8FE7C8 #x979A) - (#x8FE7C9 #x979E) - (#x8FE7CA #x979F) - (#x8FE7CB #x97A2) - (#x8FE7CC #x97AC) - (#x8FE7CD #x97AE) - (#x8FE7CE #x97B1) - (#x8FE7CF #x97B2) - (#x8FE7D0 #x97B5) - (#x8FE7D1 #x97B6) - (#x8FE7D2 #x97B8) - (#x8FE7D3 #x97B9) - (#x8FE7D4 #x97BA) - (#x8FE7D5 #x97BC) - (#x8FE7D6 #x97BE) - (#x8FE7D7 #x97BF) - (#x8FE7D8 #x97C1) - (#x8FE7D9 #x97C4) - (#x8FE7DA #x97C5) - (#x8FE7DB #x97C7) - (#x8FE7DC #x97C9) - (#x8FE7DD #x97CA) - (#x8FE7DE #x97CC) - (#x8FE7DF #x97CD) - (#x8FE7E0 #x97CE) - (#x8FE7E1 #x97D0) - (#x8FE7E2 #x97D1) - (#x8FE7E3 #x97D4) - (#x8FE7E4 #x97D7) - (#x8FE7E5 #x97D8) - (#x8FE7E6 #x97D9) - (#x8FE7E7 #x97DD) - (#x8FE7E8 #x97DE) - (#x8FE7E9 #x97E0) - (#x8FE7EA #x97DB) - (#x8FE7EB #x97E1) - (#x8FE7EC #x97E4) - (#x8FE7ED #x97EF) - (#x8FE7EE #x97F1) - (#x8FE7EF #x97F4) - (#x8FE7F0 #x97F7) - (#x8FE7F1 #x97F8) - (#x8FE7F2 #x97FA) - (#x8FE7F3 #x9807) - (#x8FE7F4 #x980A) - (#x8FE7F5 #x9819) - (#x8FE7F6 #x980D) - (#x8FE7F7 #x980E) - (#x8FE7F8 #x9814) - (#x8FE7F9 #x9816) - (#x8FE7FA #x981C) - (#x8FE7FB #x981E) - (#x8FE7FC #x9820) - (#x8FE7FD #x9823) - (#x8FE7FE #x9826) - (#x8FE8A1 #x982B) - (#x8FE8A2 #x982E) - (#x8FE8A3 #x982F) - (#x8FE8A4 #x9830) - (#x8FE8A5 #x9832) - (#x8FE8A6 #x9833) - (#x8FE8A7 #x9835) - (#x8FE8A8 #x9825) - (#x8FE8A9 #x983E) - (#x8FE8AA #x9844) - (#x8FE8AB #x9847) - (#x8FE8AC #x984A) - (#x8FE8AD #x9851) - (#x8FE8AE #x9852) - (#x8FE8AF #x9853) - (#x8FE8B0 #x9856) - (#x8FE8B1 #x9857) - (#x8FE8B2 #x9859) - (#x8FE8B3 #x985A) - (#x8FE8B4 #x9862) - (#x8FE8B5 #x9863) - (#x8FE8B6 #x9865) - (#x8FE8B7 #x9866) - (#x8FE8B8 #x986A) - (#x8FE8B9 #x986C) - (#x8FE8BA #x98AB) - (#x8FE8BB #x98AD) - (#x8FE8BC #x98AE) - (#x8FE8BD #x98B0) - (#x8FE8BE #x98B4) - (#x8FE8BF #x98B7) - (#x8FE8C0 #x98B8) - (#x8FE8C1 #x98BA) - (#x8FE8C2 #x98BB) - (#x8FE8C3 #x98BF) - (#x8FE8C4 #x98C2) - (#x8FE8C5 #x98C5) - (#x8FE8C6 #x98C8) - (#x8FE8C7 #x98CC) - (#x8FE8C8 #x98E1) - (#x8FE8C9 #x98E3) - (#x8FE8CA #x98E5) - (#x8FE8CB #x98E6) - (#x8FE8CC #x98E7) - (#x8FE8CD #x98EA) - (#x8FE8CE #x98F3) - (#x8FE8CF #x98F6) - (#x8FE8D0 #x9902) - (#x8FE8D1 #x9907) - (#x8FE8D2 #x9908) - (#x8FE8D3 #x9911) - (#x8FE8D4 #x9915) - (#x8FE8D5 #x9916) - (#x8FE8D6 #x9917) - (#x8FE8D7 #x991A) - (#x8FE8D8 #x991B) - (#x8FE8D9 #x991C) - (#x8FE8DA #x991F) - (#x8FE8DB #x9922) - (#x8FE8DC #x9926) - (#x8FE8DD #x9927) - (#x8FE8DE #x992B) - (#x8FE8DF #x9931) - (#x8FE8E0 #x9932) - (#x8FE8E1 #x9933) - (#x8FE8E2 #x9934) - (#x8FE8E3 #x9935) - (#x8FE8E4 #x9939) - (#x8FE8E5 #x993A) - (#x8FE8E6 #x993B) - (#x8FE8E7 #x993C) - (#x8FE8E8 #x9940) - (#x8FE8E9 #x9941) - (#x8FE8EA #x9946) - (#x8FE8EB #x9947) - (#x8FE8EC #x9948) - (#x8FE8ED #x994D) - (#x8FE8EE #x994E) - (#x8FE8EF #x9954) - (#x8FE8F0 #x9958) - (#x8FE8F1 #x9959) - (#x8FE8F2 #x995B) - (#x8FE8F3 #x995C) - (#x8FE8F4 #x995E) - (#x8FE8F5 #x995F) - (#x8FE8F6 #x9960) - (#x8FE8F7 #x999B) - (#x8FE8F8 #x999D) - (#x8FE8F9 #x999F) - (#x8FE8FA #x99A6) - (#x8FE8FB #x99B0) - (#x8FE8FC #x99B1) - (#x8FE8FD #x99B2) - (#x8FE8FE #x99B5) - (#x8FE9A1 #x99B9) - (#x8FE9A2 #x99BA) - (#x8FE9A3 #x99BD) - (#x8FE9A4 #x99BF) - (#x8FE9A5 #x99C3) - (#x8FE9A6 #x99C9) - (#x8FE9A7 #x99D3) - (#x8FE9A8 #x99D4) - (#x8FE9A9 #x99D9) - (#x8FE9AA #x99DA) - (#x8FE9AB #x99DC) - (#x8FE9AC #x99DE) - (#x8FE9AD #x99E7) - (#x8FE9AE #x99EA) - (#x8FE9AF #x99EB) - (#x8FE9B0 #x99EC) - (#x8FE9B1 #x99F0) - (#x8FE9B2 #x99F4) - (#x8FE9B3 #x99F5) - (#x8FE9B4 #x99F9) - (#x8FE9B5 #x99FD) - (#x8FE9B6 #x99FE) - (#x8FE9B7 #x9A02) - (#x8FE9B8 #x9A03) - (#x8FE9B9 #x9A04) - (#x8FE9BA #x9A0B) - (#x8FE9BB #x9A0C) - (#x8FE9BC #x9A10) - (#x8FE9BD #x9A11) - (#x8FE9BE #x9A16) - (#x8FE9BF #x9A1E) - (#x8FE9C0 #x9A20) - (#x8FE9C1 #x9A22) - (#x8FE9C2 #x9A23) - (#x8FE9C3 #x9A24) - (#x8FE9C4 #x9A27) - (#x8FE9C5 #x9A2D) - (#x8FE9C6 #x9A2E) - (#x8FE9C7 #x9A33) - (#x8FE9C8 #x9A35) - (#x8FE9C9 #x9A36) - (#x8FE9CA #x9A38) - (#x8FE9CB #x9A47) - (#x8FE9CC #x9A41) - (#x8FE9CD #x9A44) - (#x8FE9CE #x9A4A) - (#x8FE9CF #x9A4B) - (#x8FE9D0 #x9A4C) - (#x8FE9D1 #x9A4E) - (#x8FE9D2 #x9A51) - (#x8FE9D3 #x9A54) - (#x8FE9D4 #x9A56) - (#x8FE9D5 #x9A5D) - (#x8FE9D6 #x9AAA) - (#x8FE9D7 #x9AAC) - (#x8FE9D8 #x9AAE) - (#x8FE9D9 #x9AAF) - (#x8FE9DA #x9AB2) - (#x8FE9DB #x9AB4) - (#x8FE9DC #x9AB5) - (#x8FE9DD #x9AB6) - (#x8FE9DE #x9AB9) - (#x8FE9DF #x9ABB) - (#x8FE9E0 #x9ABE) - (#x8FE9E1 #x9ABF) - (#x8FE9E2 #x9AC1) - (#x8FE9E3 #x9AC3) - (#x8FE9E4 #x9AC6) - (#x8FE9E5 #x9AC8) - (#x8FE9E6 #x9ACE) - (#x8FE9E7 #x9AD0) - (#x8FE9E8 #x9AD2) - (#x8FE9E9 #x9AD5) - (#x8FE9EA #x9AD6) - (#x8FE9EB #x9AD7) - (#x8FE9EC #x9ADB) - (#x8FE9ED #x9ADC) - (#x8FE9EE #x9AE0) - (#x8FE9EF #x9AE4) - (#x8FE9F0 #x9AE5) - (#x8FE9F1 #x9AE7) - (#x8FE9F2 #x9AE9) - (#x8FE9F3 #x9AEC) - (#x8FE9F4 #x9AF2) - (#x8FE9F5 #x9AF3) - (#x8FE9F6 #x9AF5) - (#x8FE9F7 #x9AF9) - (#x8FE9F8 #x9AFA) - (#x8FE9F9 #x9AFD) - (#x8FE9FA #x9AFF) - (#x8FE9FB #x9B00) - (#x8FE9FC #x9B01) - (#x8FE9FD #x9B02) - (#x8FE9FE #x9B03) - (#x8FEAA1 #x9B04) - (#x8FEAA2 #x9B05) - (#x8FEAA3 #x9B08) - (#x8FEAA4 #x9B09) - (#x8FEAA5 #x9B0B) - (#x8FEAA6 #x9B0C) - (#x8FEAA7 #x9B0D) - (#x8FEAA8 #x9B0E) - (#x8FEAA9 #x9B10) - (#x8FEAAA #x9B12) - (#x8FEAAB #x9B16) - (#x8FEAAC #x9B19) - (#x8FEAAD #x9B1B) - (#x8FEAAE #x9B1C) - (#x8FEAAF #x9B20) - (#x8FEAB0 #x9B26) - (#x8FEAB1 #x9B2B) - (#x8FEAB2 #x9B2D) - (#x8FEAB3 #x9B33) - (#x8FEAB4 #x9B34) - (#x8FEAB5 #x9B35) - (#x8FEAB6 #x9B37) - (#x8FEAB7 #x9B39) - (#x8FEAB8 #x9B3A) - (#x8FEAB9 #x9B3D) - (#x8FEABA #x9B48) - (#x8FEABB #x9B4B) - (#x8FEABC #x9B4C) - (#x8FEABD #x9B55) - (#x8FEABE #x9B56) - (#x8FEABF #x9B57) - (#x8FEAC0 #x9B5B) - (#x8FEAC1 #x9B5E) - (#x8FEAC2 #x9B61) - (#x8FEAC3 #x9B63) - (#x8FEAC4 #x9B65) - (#x8FEAC5 #x9B66) - (#x8FEAC6 #x9B68) - (#x8FEAC7 #x9B6A) - (#x8FEAC8 #x9B6B) - (#x8FEAC9 #x9B6C) - (#x8FEACA #x9B6D) - (#x8FEACB #x9B6E) - (#x8FEACC #x9B73) - (#x8FEACD #x9B75) - (#x8FEACE #x9B77) - (#x8FEACF #x9B78) - (#x8FEAD0 #x9B79) - (#x8FEAD1 #x9B7F) - (#x8FEAD2 #x9B80) - (#x8FEAD3 #x9B84) - (#x8FEAD4 #x9B85) - (#x8FEAD5 #x9B86) - (#x8FEAD6 #x9B87) - (#x8FEAD7 #x9B89) - (#x8FEAD8 #x9B8A) - (#x8FEAD9 #x9B8B) - (#x8FEADA #x9B8D) - (#x8FEADB #x9B8F) - (#x8FEADC #x9B90) - (#x8FEADD #x9B94) - (#x8FEADE #x9B9A) - (#x8FEADF #x9B9D) - (#x8FEAE0 #x9B9E) - (#x8FEAE1 #x9BA6) - (#x8FEAE2 #x9BA7) - (#x8FEAE3 #x9BA9) - (#x8FEAE4 #x9BAC) - (#x8FEAE5 #x9BB0) - (#x8FEAE6 #x9BB1) - (#x8FEAE7 #x9BB2) - (#x8FEAE8 #x9BB7) - (#x8FEAE9 #x9BB8) - (#x8FEAEA #x9BBB) - (#x8FEAEB #x9BBC) - (#x8FEAEC #x9BBE) - (#x8FEAED #x9BBF) - (#x8FEAEE #x9BC1) - (#x8FEAEF #x9BC7) - (#x8FEAF0 #x9BC8) - (#x8FEAF1 #x9BCE) - (#x8FEAF2 #x9BD0) - (#x8FEAF3 #x9BD7) - (#x8FEAF4 #x9BD8) - (#x8FEAF5 #x9BDD) - (#x8FEAF6 #x9BDF) - (#x8FEAF7 #x9BE5) - (#x8FEAF8 #x9BE7) - (#x8FEAF9 #x9BEA) - (#x8FEAFA #x9BEB) - (#x8FEAFB #x9BEF) - (#x8FEAFC #x9BF3) - (#x8FEAFD #x9BF7) - (#x8FEAFE #x9BF8) - (#x8FEBA1 #x9BF9) - (#x8FEBA2 #x9BFA) - (#x8FEBA3 #x9BFD) - (#x8FEBA4 #x9BFF) - (#x8FEBA5 #x9C00) - (#x8FEBA6 #x9C02) - (#x8FEBA7 #x9C0B) - (#x8FEBA8 #x9C0F) - (#x8FEBA9 #x9C11) - (#x8FEBAA #x9C16) - (#x8FEBAB #x9C18) - (#x8FEBAC #x9C19) - (#x8FEBAD #x9C1A) - (#x8FEBAE #x9C1C) - (#x8FEBAF #x9C1E) - (#x8FEBB0 #x9C22) - (#x8FEBB1 #x9C23) - (#x8FEBB2 #x9C26) - (#x8FEBB3 #x9C27) - (#x8FEBB4 #x9C28) - (#x8FEBB5 #x9C29) - (#x8FEBB6 #x9C2A) - (#x8FEBB7 #x9C31) - (#x8FEBB8 #x9C35) - (#x8FEBB9 #x9C36) - (#x8FEBBA #x9C37) - (#x8FEBBB #x9C3D) - (#x8FEBBC #x9C41) - (#x8FEBBD #x9C43) - (#x8FEBBE #x9C44) - (#x8FEBBF #x9C45) - (#x8FEBC0 #x9C49) - (#x8FEBC1 #x9C4A) - (#x8FEBC2 #x9C4E) - (#x8FEBC3 #x9C4F) - (#x8FEBC4 #x9C50) - (#x8FEBC5 #x9C53) - (#x8FEBC6 #x9C54) - (#x8FEBC7 #x9C56) - (#x8FEBC8 #x9C58) - (#x8FEBC9 #x9C5B) - (#x8FEBCA #x9C5D) - (#x8FEBCB #x9C5E) - (#x8FEBCC #x9C5F) - (#x8FEBCD #x9C63) - (#x8FEBCE #x9C69) - (#x8FEBCF #x9C6A) - (#x8FEBD0 #x9C5C) - (#x8FEBD1 #x9C6B) - (#x8FEBD2 #x9C68) - (#x8FEBD3 #x9C6E) - (#x8FEBD4 #x9C70) - (#x8FEBD5 #x9C72) - (#x8FEBD6 #x9C75) - (#x8FEBD7 #x9C77) - (#x8FEBD8 #x9C7B) - (#x8FEBD9 #x9CE6) - (#x8FEBDA #x9CF2) - (#x8FEBDB #x9CF7) - (#x8FEBDC #x9CF9) - (#x8FEBDD #x9D0B) - (#x8FEBDE #x9D02) - (#x8FEBDF #x9D11) - (#x8FEBE0 #x9D17) - (#x8FEBE1 #x9D18) - (#x8FEBE2 #x9D1C) - (#x8FEBE3 #x9D1D) - (#x8FEBE4 #x9D1E) - (#x8FEBE5 #x9D2F) - (#x8FEBE6 #x9D30) - (#x8FEBE7 #x9D32) - (#x8FEBE8 #x9D33) - (#x8FEBE9 #x9D34) - (#x8FEBEA #x9D3A) - (#x8FEBEB #x9D3C) - (#x8FEBEC #x9D45) - (#x8FEBED #x9D3D) - (#x8FEBEE #x9D42) - (#x8FEBEF #x9D43) - (#x8FEBF0 #x9D47) - (#x8FEBF1 #x9D4A) - (#x8FEBF2 #x9D53) - (#x8FEBF3 #x9D54) - (#x8FEBF4 #x9D5F) - (#x8FEBF5 #x9D63) - (#x8FEBF6 #x9D62) - (#x8FEBF7 #x9D65) - (#x8FEBF8 #x9D69) - (#x8FEBF9 #x9D6A) - (#x8FEBFA #x9D6B) - (#x8FEBFB #x9D70) - (#x8FEBFC #x9D76) - (#x8FEBFD #x9D77) - (#x8FEBFE #x9D7B) - (#x8FECA1 #x9D7C) - (#x8FECA2 #x9D7E) - (#x8FECA3 #x9D83) - (#x8FECA4 #x9D84) - (#x8FECA5 #x9D86) - (#x8FECA6 #x9D8A) - (#x8FECA7 #x9D8D) - (#x8FECA8 #x9D8E) - (#x8FECA9 #x9D92) - (#x8FECAA #x9D93) - (#x8FECAB #x9D95) - (#x8FECAC #x9D96) - (#x8FECAD #x9D97) - (#x8FECAE #x9D98) - (#x8FECAF #x9DA1) - (#x8FECB0 #x9DAA) - (#x8FECB1 #x9DAC) - (#x8FECB2 #x9DAE) - (#x8FECB3 #x9DB1) - (#x8FECB4 #x9DB5) - (#x8FECB5 #x9DB9) - (#x8FECB6 #x9DBC) - (#x8FECB7 #x9DBF) - (#x8FECB8 #x9DC3) - (#x8FECB9 #x9DC7) - (#x8FECBA #x9DC9) - (#x8FECBB #x9DCA) - (#x8FECBC #x9DD4) - (#x8FECBD #x9DD5) - (#x8FECBE #x9DD6) - (#x8FECBF #x9DD7) - (#x8FECC0 #x9DDA) - (#x8FECC1 #x9DDE) - (#x8FECC2 #x9DDF) - (#x8FECC3 #x9DE0) - (#x8FECC4 #x9DE5) - (#x8FECC5 #x9DE7) - (#x8FECC6 #x9DE9) - (#x8FECC7 #x9DEB) - (#x8FECC8 #x9DEE) - (#x8FECC9 #x9DF0) - (#x8FECCA #x9DF3) - (#x8FECCB #x9DF4) - (#x8FECCC #x9DFE) - (#x8FECCD #x9E0A) - (#x8FECCE #x9E02) - (#x8FECCF #x9E07) - (#x8FECD0 #x9E0E) - (#x8FECD1 #x9E10) - (#x8FECD2 #x9E11) - (#x8FECD3 #x9E12) - (#x8FECD4 #x9E15) - (#x8FECD5 #x9E16) - (#x8FECD6 #x9E19) - (#x8FECD7 #x9E1C) - (#x8FECD8 #x9E1D) - (#x8FECD9 #x9E7A) - (#x8FECDA #x9E7B) - (#x8FECDB #x9E7C) - (#x8FECDC #x9E80) - (#x8FECDD #x9E82) - (#x8FECDE #x9E83) - (#x8FECDF #x9E84) - (#x8FECE0 #x9E85) - (#x8FECE1 #x9E87) - (#x8FECE2 #x9E8E) - (#x8FECE3 #x9E8F) - (#x8FECE4 #x9E96) - (#x8FECE5 #x9E98) - (#x8FECE6 #x9E9B) - (#x8FECE7 #x9E9E) - (#x8FECE8 #x9EA4) - (#x8FECE9 #x9EA8) - (#x8FECEA #x9EAC) - (#x8FECEB #x9EAE) - (#x8FECEC #x9EAF) - (#x8FECED #x9EB0) - (#x8FECEE #x9EB3) - (#x8FECEF #x9EB4) - (#x8FECF0 #x9EB5) - (#x8FECF1 #x9EC6) - (#x8FECF2 #x9EC8) - (#x8FECF3 #x9ECB) - (#x8FECF4 #x9ED5) - (#x8FECF5 #x9EDF) - (#x8FECF6 #x9EE4) - (#x8FECF7 #x9EE7) - (#x8FECF8 #x9EEC) - (#x8FECF9 #x9EED) - (#x8FECFA #x9EEE) - (#x8FECFB #x9EF0) - (#x8FECFC #x9EF1) - (#x8FECFD #x9EF2) - (#x8FECFE #x9EF5) - (#x8FEDA1 #x9EF8) - (#x8FEDA2 #x9EFF) - (#x8FEDA3 #x9F02) - (#x8FEDA4 #x9F03) - (#x8FEDA5 #x9F09) - (#x8FEDA6 #x9F0F) - (#x8FEDA7 #x9F10) - (#x8FEDA8 #x9F11) - (#x8FEDA9 #x9F12) - (#x8FEDAA #x9F14) - (#x8FEDAB #x9F16) - (#x8FEDAC #x9F17) - (#x8FEDAD #x9F19) - (#x8FEDAE #x9F1A) - (#x8FEDAF #x9F1B) - (#x8FEDB0 #x9F1F) - (#x8FEDB1 #x9F22) - (#x8FEDB2 #x9F26) - (#x8FEDB3 #x9F2A) - (#x8FEDB4 #x9F2B) - (#x8FEDB5 #x9F2F) - (#x8FEDB6 #x9F31) - (#x8FEDB7 #x9F32) - (#x8FEDB8 #x9F34) - (#x8FEDB9 #x9F37) - (#x8FEDBA #x9F39) - (#x8FEDBB #x9F3A) - (#x8FEDBC #x9F3C) - (#x8FEDBD #x9F3D) - (#x8FEDBE #x9F3F) - (#x8FEDBF #x9F41) - (#x8FEDC0 #x9F43) - (#x8FEDC1 #x9F44) - (#x8FEDC2 #x9F45) - (#x8FEDC3 #x9F46) - (#x8FEDC4 #x9F47) - (#x8FEDC5 #x9F53) - (#x8FEDC6 #x9F55) - (#x8FEDC7 #x9F56) - (#x8FEDC8 #x9F57) - (#x8FEDC9 #x9F58) - (#x8FEDCA #x9F5A) - (#x8FEDCB #x9F5D) - (#x8FEDCC #x9F5E) - (#x8FEDCD #x9F68) - (#x8FEDCE #x9F69) - (#x8FEDCF #x9F6D) - (#x8FEDD0 #x9F6E) - (#x8FEDD1 #x9F6F) - (#x8FEDD2 #x9F70) - (#x8FEDD3 #x9F71) - (#x8FEDD4 #x9F73) - (#x8FEDD5 #x9F75) - (#x8FEDD6 #x9F7A) - (#x8FEDD7 #x9F7D) - (#x8FEDD8 #x9F8F) - (#x8FEDD9 #x9F90) - (#x8FEDDA #x9F91) - (#x8FEDDB #x9F92) - (#x8FEDDC #x9F94) - (#x8FEDDD #x9F96) - (#x8FEDDE #x9F97) - (#x8FEDDF #x9F9E) - (#x8FEDE0 #x9FA1) - (#x8FEDE1 #x9FA2) - (#x8FEDE2 #x9FA3) - (#x8FEDE3 #x9FA5) - (#x8FF5A1 #xE3AC) - (#x8FF5A2 #xE3AD) - (#x8FF5A3 #xE3AE) - (#x8FF5A4 #xE3AF) - (#x8FF5A5 #xE3B0) - (#x8FF5A6 #xE3B1) - (#x8FF5A7 #xE3B2) - (#x8FF5A8 #xE3B3) - (#x8FF5A9 #xE3B4) - (#x8FF5AA #xE3B5) - (#x8FF5AB #xE3B6) - (#x8FF5AC #xE3B7) - (#x8FF5AD #xE3B8) - (#x8FF5AE #xE3B9) - (#x8FF5AF #xE3BA) - (#x8FF5B0 #xE3BB) - (#x8FF5B1 #xE3BC) - (#x8FF5B2 #xE3BD) - (#x8FF5B3 #xE3BE) - (#x8FF5B4 #xE3BF) - (#x8FF5B5 #xE3C0) - (#x8FF5B6 #xE3C1) - (#x8FF5B7 #xE3C2) - (#x8FF5B8 #xE3C3) - (#x8FF5B9 #xE3C4) - (#x8FF5BA #xE3C5) - (#x8FF5BB #xE3C6) - (#x8FF5BC #xE3C7) - (#x8FF5BD #xE3C8) - (#x8FF5BE #xE3C9) - (#x8FF5BF #xE3CA) - (#x8FF5C0 #xE3CB) - (#x8FF5C1 #xE3CC) - (#x8FF5C2 #xE3CD) - (#x8FF5C3 #xE3CE) - (#x8FF5C4 #xE3CF) - (#x8FF5C5 #xE3D0) - (#x8FF5C6 #xE3D1) - (#x8FF5C7 #xE3D2) - (#x8FF5C8 #xE3D3) - (#x8FF5C9 #xE3D4) - (#x8FF5CA #xE3D5) - (#x8FF5CB #xE3D6) - (#x8FF5CC #xE3D7) - (#x8FF5CD #xE3D8) - (#x8FF5CE #xE3D9) - (#x8FF5CF #xE3DA) - (#x8FF5D0 #xE3DB) - (#x8FF5D1 #xE3DC) - (#x8FF5D2 #xE3DD) - (#x8FF5D3 #xE3DE) - (#x8FF5D4 #xE3DF) - (#x8FF5D5 #xE3E0) - (#x8FF5D6 #xE3E1) - (#x8FF5D7 #xE3E2) - (#x8FF5D8 #xE3E3) - (#x8FF5D9 #xE3E4) - (#x8FF5DA #xE3E5) - (#x8FF5DB #xE3E6) - (#x8FF5DC #xE3E7) - (#x8FF5DD #xE3E8) - (#x8FF5DE #xE3E9) - (#x8FF5DF #xE3EA) - (#x8FF5E0 #xE3EB) - (#x8FF5E1 #xE3EC) - (#x8FF5E2 #xE3ED) - (#x8FF5E3 #xE3EE) - (#x8FF5E4 #xE3EF) - (#x8FF5E5 #xE3F0) - (#x8FF5E6 #xE3F1) - (#x8FF5E7 #xE3F2) - (#x8FF5E8 #xE3F3) - (#x8FF5E9 #xE3F4) - (#x8FF5EA #xE3F5) - (#x8FF5EB #xE3F6) - (#x8FF5EC #xE3F7) - (#x8FF5ED #xE3F8) - (#x8FF5EE #xE3F9) - (#x8FF5EF #xE3FA) - (#x8FF5F0 #xE3FB) - (#x8FF5F1 #xE3FC) - (#x8FF5F2 #xE3FD) - (#x8FF5F3 #xE3FE) - (#x8FF5F4 #xE3FF) - (#x8FF5F5 #xE400) - (#x8FF5F6 #xE401) - (#x8FF5F7 #xE402) - (#x8FF5F8 #xE403) - (#x8FF5F9 #xE404) - (#x8FF5FA #xE405) - (#x8FF5FB #xE406) - (#x8FF5FC #xE407) - (#x8FF5FD #xE408) - (#x8FF5FE #xE409) - (#x8FF6A1 #xE40A) - (#x8FF6A2 #xE40B) - (#x8FF6A3 #xE40C) - (#x8FF6A4 #xE40D) - (#x8FF6A5 #xE40E) - (#x8FF6A6 #xE40F) - (#x8FF6A7 #xE410) - (#x8FF6A8 #xE411) - (#x8FF6A9 #xE412) - (#x8FF6AA #xE413) - (#x8FF6AB #xE414) - (#x8FF6AC #xE415) - (#x8FF6AD #xE416) - (#x8FF6AE #xE417) - (#x8FF6AF #xE418) - (#x8FF6B0 #xE419) - (#x8FF6B1 #xE41A) - (#x8FF6B2 #xE41B) - (#x8FF6B3 #xE41C) - (#x8FF6B4 #xE41D) - (#x8FF6B5 #xE41E) - (#x8FF6B6 #xE41F) - (#x8FF6B7 #xE420) - (#x8FF6B8 #xE421) - (#x8FF6B9 #xE422) - (#x8FF6BA #xE423) - (#x8FF6BB #xE424) - (#x8FF6BC #xE425) - (#x8FF6BD #xE426) - (#x8FF6BE #xE427) - (#x8FF6BF #xE428) - (#x8FF6C0 #xE429) - (#x8FF6C1 #xE42A) - (#x8FF6C2 #xE42B) - (#x8FF6C3 #xE42C) - (#x8FF6C4 #xE42D) - (#x8FF6C5 #xE42E) - (#x8FF6C6 #xE42F) - (#x8FF6C7 #xE430) - (#x8FF6C8 #xE431) - (#x8FF6C9 #xE432) - (#x8FF6CA #xE433) - (#x8FF6CB #xE434) - (#x8FF6CC #xE435) - (#x8FF6CD #xE436) - (#x8FF6CE #xE437) - (#x8FF6CF #xE438) - (#x8FF6D0 #xE439) - (#x8FF6D1 #xE43A) - (#x8FF6D2 #xE43B) - (#x8FF6D3 #xE43C) - (#x8FF6D4 #xE43D) - (#x8FF6D5 #xE43E) - (#x8FF6D6 #xE43F) - (#x8FF6D7 #xE440) - (#x8FF6D8 #xE441) - (#x8FF6D9 #xE442) - (#x8FF6DA #xE443) - (#x8FF6DB #xE444) - (#x8FF6DC #xE445) - (#x8FF6DD #xE446) - (#x8FF6DE #xE447) - (#x8FF6DF #xE448) - (#x8FF6E0 #xE449) - (#x8FF6E1 #xE44A) - (#x8FF6E2 #xE44B) - (#x8FF6E3 #xE44C) - (#x8FF6E4 #xE44D) - (#x8FF6E5 #xE44E) - (#x8FF6E6 #xE44F) - (#x8FF6E7 #xE450) - (#x8FF6E8 #xE451) - (#x8FF6E9 #xE452) - (#x8FF6EA #xE453) - (#x8FF6EB #xE454) - (#x8FF6EC #xE455) - (#x8FF6ED #xE456) - (#x8FF6EE #xE457) - (#x8FF6EF #xE458) - (#x8FF6F0 #xE459) - (#x8FF6F1 #xE45A) - (#x8FF6F2 #xE45B) - (#x8FF6F3 #xE45C) - (#x8FF6F4 #xE45D) - (#x8FF6F5 #xE45E) - (#x8FF6F6 #xE45F) - (#x8FF6F7 #xE460) - (#x8FF6F8 #xE461) - (#x8FF6F9 #xE462) - (#x8FF6FA #xE463) - (#x8FF6FB #xE464) - (#x8FF6FC #xE465) - (#x8FF6FD #xE466) - (#x8FF6FE #xE467) - (#x8FF7A1 #xE468) - (#x8FF7A2 #xE469) - (#x8FF7A3 #xE46A) - (#x8FF7A4 #xE46B) - (#x8FF7A5 #xE46C) - (#x8FF7A6 #xE46D) - (#x8FF7A7 #xE46E) - (#x8FF7A8 #xE46F) - (#x8FF7A9 #xE470) - (#x8FF7AA #xE471) - (#x8FF7AB #xE472) - (#x8FF7AC #xE473) - (#x8FF7AD #xE474) - (#x8FF7AE #xE475) - (#x8FF7AF #xE476) - (#x8FF7B0 #xE477) - (#x8FF7B1 #xE478) - (#x8FF7B2 #xE479) - (#x8FF7B3 #xE47A) - (#x8FF7B4 #xE47B) - (#x8FF7B5 #xE47C) - (#x8FF7B6 #xE47D) - (#x8FF7B7 #xE47E) - (#x8FF7B8 #xE47F) - (#x8FF7B9 #xE480) - (#x8FF7BA #xE481) - (#x8FF7BB #xE482) - (#x8FF7BC #xE483) - (#x8FF7BD #xE484) - (#x8FF7BE #xE485) - (#x8FF7BF #xE486) - (#x8FF7C0 #xE487) - (#x8FF7C1 #xE488) - (#x8FF7C2 #xE489) - (#x8FF7C3 #xE48A) - (#x8FF7C4 #xE48B) - (#x8FF7C5 #xE48C) - (#x8FF7C6 #xE48D) - (#x8FF7C7 #xE48E) - (#x8FF7C8 #xE48F) - (#x8FF7C9 #xE490) - (#x8FF7CA #xE491) - (#x8FF7CB #xE492) - (#x8FF7CC #xE493) - (#x8FF7CD #xE494) - (#x8FF7CE #xE495) - (#x8FF7CF #xE496) - (#x8FF7D0 #xE497) - (#x8FF7D1 #xE498) - (#x8FF7D2 #xE499) - (#x8FF7D3 #xE49A) - (#x8FF7D4 #xE49B) - (#x8FF7D5 #xE49C) - (#x8FF7D6 #xE49D) - (#x8FF7D7 #xE49E) - (#x8FF7D8 #xE49F) - (#x8FF7D9 #xE4A0) - (#x8FF7DA #xE4A1) - (#x8FF7DB #xE4A2) - (#x8FF7DC #xE4A3) - (#x8FF7DD #xE4A4) - (#x8FF7DE #xE4A5) - (#x8FF7DF #xE4A6) - (#x8FF7E0 #xE4A7) - (#x8FF7E1 #xE4A8) - (#x8FF7E2 #xE4A9) - (#x8FF7E3 #xE4AA) - (#x8FF7E4 #xE4AB) - (#x8FF7E5 #xE4AC) - (#x8FF7E6 #xE4AD) - (#x8FF7E7 #xE4AE) - (#x8FF7E8 #xE4AF) - (#x8FF7E9 #xE4B0) - (#x8FF7EA #xE4B1) - (#x8FF7EB #xE4B2) - (#x8FF7EC #xE4B3) - (#x8FF7ED #xE4B4) - (#x8FF7EE #xE4B5) - (#x8FF7EF #xE4B6) - (#x8FF7F0 #xE4B7) - (#x8FF7F1 #xE4B8) - (#x8FF7F2 #xE4B9) - (#x8FF7F3 #xE4BA) - (#x8FF7F4 #xE4BB) - (#x8FF7F5 #xE4BC) - (#x8FF7F6 #xE4BD) - (#x8FF7F7 #xE4BE) - (#x8FF7F8 #xE4BF) - (#x8FF7F9 #xE4C0) - (#x8FF7FA #xE4C1) - (#x8FF7FB #xE4C2) - (#x8FF7FC #xE4C3) - (#x8FF7FD #xE4C4) - (#x8FF7FE #xE4C5) - (#x8FF8A1 #xE4C6) - (#x8FF8A2 #xE4C7) - (#x8FF8A3 #xE4C8) - (#x8FF8A4 #xE4C9) - (#x8FF8A5 #xE4CA) - (#x8FF8A6 #xE4CB) - (#x8FF8A7 #xE4CC) - (#x8FF8A8 #xE4CD) - (#x8FF8A9 #xE4CE) - (#x8FF8AA #xE4CF) - (#x8FF8AB #xE4D0) - (#x8FF8AC #xE4D1) - (#x8FF8AD #xE4D2) - (#x8FF8AE #xE4D3) - (#x8FF8AF #xE4D4) - (#x8FF8B0 #xE4D5) - (#x8FF8B1 #xE4D6) - (#x8FF8B2 #xE4D7) - (#x8FF8B3 #xE4D8) - (#x8FF8B4 #xE4D9) - (#x8FF8B5 #xE4DA) - (#x8FF8B6 #xE4DB) - (#x8FF8B7 #xE4DC) - (#x8FF8B8 #xE4DD) - (#x8FF8B9 #xE4DE) - (#x8FF8BA #xE4DF) - (#x8FF8BB #xE4E0) - (#x8FF8BC #xE4E1) - (#x8FF8BD #xE4E2) - (#x8FF8BE #xE4E3) - (#x8FF8BF #xE4E4) - (#x8FF8C0 #xE4E5) - (#x8FF8C1 #xE4E6) - (#x8FF8C2 #xE4E7) - (#x8FF8C3 #xE4E8) - (#x8FF8C4 #xE4E9) - (#x8FF8C5 #xE4EA) - (#x8FF8C6 #xE4EB) - (#x8FF8C7 #xE4EC) - (#x8FF8C8 #xE4ED) - (#x8FF8C9 #xE4EE) - (#x8FF8CA #xE4EF) - (#x8FF8CB #xE4F0) - (#x8FF8CC #xE4F1) - (#x8FF8CD #xE4F2) - (#x8FF8CE #xE4F3) - (#x8FF8CF #xE4F4) - (#x8FF8D0 #xE4F5) - (#x8FF8D1 #xE4F6) - (#x8FF8D2 #xE4F7) - (#x8FF8D3 #xE4F8) - (#x8FF8D4 #xE4F9) - (#x8FF8D5 #xE4FA) - (#x8FF8D6 #xE4FB) - (#x8FF8D7 #xE4FC) - (#x8FF8D8 #xE4FD) - (#x8FF8D9 #xE4FE) - (#x8FF8DA #xE4FF) - (#x8FF8DB #xE500) - (#x8FF8DC #xE501) - (#x8FF8DD #xE502) - (#x8FF8DE #xE503) - (#x8FF8DF #xE504) - (#x8FF8E0 #xE505) - (#x8FF8E1 #xE506) - (#x8FF8E2 #xE507) - (#x8FF8E3 #xE508) - (#x8FF8E4 #xE509) - (#x8FF8E5 #xE50A) - (#x8FF8E6 #xE50B) - (#x8FF8E7 #xE50C) - (#x8FF8E8 #xE50D) - (#x8FF8E9 #xE50E) - (#x8FF8EA #xE50F) - (#x8FF8EB #xE510) - (#x8FF8EC #xE511) - (#x8FF8ED #xE512) - (#x8FF8EE #xE513) - (#x8FF8EF #xE514) - (#x8FF8F0 #xE515) - (#x8FF8F1 #xE516) - (#x8FF8F2 #xE517) - (#x8FF8F3 #xE518) - (#x8FF8F4 #xE519) - (#x8FF8F5 #xE51A) - (#x8FF8F6 #xE51B) - (#x8FF8F7 #xE51C) - (#x8FF8F8 #xE51D) - (#x8FF8F9 #xE51E) - (#x8FF8FA #xE51F) - (#x8FF8FB #xE520) - (#x8FF8FC #xE521) - (#x8FF8FD #xE522) - (#x8FF8FE #xE523) - (#x8FF9A1 #xE524) - (#x8FF9A2 #xE525) - (#x8FF9A3 #xE526) - (#x8FF9A4 #xE527) - (#x8FF9A5 #xE528) - (#x8FF9A6 #xE529) - (#x8FF9A7 #xE52A) - (#x8FF9A8 #xE52B) - (#x8FF9A9 #xE52C) - (#x8FF9AA #xE52D) - (#x8FF9AB #xE52E) - (#x8FF9AC #xE52F) - (#x8FF9AD #xE530) - (#x8FF9AE #xE531) - (#x8FF9AF #xE532) - (#x8FF9B0 #xE533) - (#x8FF9B1 #xE534) - (#x8FF9B2 #xE535) - (#x8FF9B3 #xE536) - (#x8FF9B4 #xE537) - (#x8FF9B5 #xE538) - (#x8FF9B6 #xE539) - (#x8FF9B7 #xE53A) - (#x8FF9B8 #xE53B) - (#x8FF9B9 #xE53C) - (#x8FF9BA #xE53D) - (#x8FF9BB #xE53E) - (#x8FF9BC #xE53F) - (#x8FF9BD #xE540) - (#x8FF9BE #xE541) - (#x8FF9BF #xE542) - (#x8FF9C0 #xE543) - (#x8FF9C1 #xE544) - (#x8FF9C2 #xE545) - (#x8FF9C3 #xE546) - (#x8FF9C4 #xE547) - (#x8FF9C5 #xE548) - (#x8FF9C6 #xE549) - (#x8FF9C7 #xE54A) - (#x8FF9C8 #xE54B) - (#x8FF9C9 #xE54C) - (#x8FF9CA #xE54D) - (#x8FF9CB #xE54E) - (#x8FF9CC #xE54F) - (#x8FF9CD #xE550) - (#x8FF9CE #xE551) - (#x8FF9CF #xE552) - (#x8FF9D0 #xE553) - (#x8FF9D1 #xE554) - (#x8FF9D2 #xE555) - (#x8FF9D3 #xE556) - (#x8FF9D4 #xE557) - (#x8FF9D5 #xE558) - (#x8FF9D6 #xE559) - (#x8FF9D7 #xE55A) - (#x8FF9D8 #xE55B) - (#x8FF9D9 #xE55C) - (#x8FF9DA #xE55D) - (#x8FF9DB #xE55E) - (#x8FF9DC #xE55F) - (#x8FF9DD #xE560) - (#x8FF9DE #xE561) - (#x8FF9DF #xE562) - (#x8FF9E0 #xE563) - (#x8FF9E1 #xE564) - (#x8FF9E2 #xE565) - (#x8FF9E3 #xE566) - (#x8FF9E4 #xE567) - (#x8FF9E5 #xE568) - (#x8FF9E6 #xE569) - (#x8FF9E7 #xE56A) - (#x8FF9E8 #xE56B) - (#x8FF9E9 #xE56C) - (#x8FF9EA #xE56D) - (#x8FF9EB #xE56E) - (#x8FF9EC #xE56F) - (#x8FF9ED #xE570) - (#x8FF9EE #xE571) - (#x8FF9EF #xE572) - (#x8FF9F0 #xE573) - (#x8FF9F1 #xE574) - (#x8FF9F2 #xE575) - (#x8FF9F3 #xE576) - (#x8FF9F4 #xE577) - (#x8FF9F5 #xE578) - (#x8FF9F6 #xE579) - (#x8FF9F7 #xE57A) - (#x8FF9F8 #xE57B) - (#x8FF9F9 #xE57C) - (#x8FF9FA #xE57D) - (#x8FF9FB #xE57E) - (#x8FF9FC #xE57F) - (#x8FF9FD #xE580) - (#x8FF9FE #xE581) - (#x8FFAA1 #xE582) - (#x8FFAA2 #xE583) - (#x8FFAA3 #xE584) - (#x8FFAA4 #xE585) - (#x8FFAA5 #xE586) - (#x8FFAA6 #xE587) - (#x8FFAA7 #xE588) - (#x8FFAA8 #xE589) - (#x8FFAA9 #xE58A) - (#x8FFAAA #xE58B) - (#x8FFAAB #xE58C) - (#x8FFAAC #xE58D) - (#x8FFAAD #xE58E) - (#x8FFAAE #xE58F) - (#x8FFAAF #xE590) - (#x8FFAB0 #xE591) - (#x8FFAB1 #xE592) - (#x8FFAB2 #xE593) - (#x8FFAB3 #xE594) - (#x8FFAB4 #xE595) - (#x8FFAB5 #xE596) - (#x8FFAB6 #xE597) - (#x8FFAB7 #xE598) - (#x8FFAB8 #xE599) - (#x8FFAB9 #xE59A) - (#x8FFABA #xE59B) - (#x8FFABB #xE59C) - (#x8FFABC #xE59D) - (#x8FFABD #xE59E) - (#x8FFABE #xE59F) - (#x8FFABF #xE5A0) - (#x8FFAC0 #xE5A1) - (#x8FFAC1 #xE5A2) - (#x8FFAC2 #xE5A3) - (#x8FFAC3 #xE5A4) - (#x8FFAC4 #xE5A5) - (#x8FFAC5 #xE5A6) - (#x8FFAC6 #xE5A7) - (#x8FFAC7 #xE5A8) - (#x8FFAC8 #xE5A9) - (#x8FFAC9 #xE5AA) - (#x8FFACA #xE5AB) - (#x8FFACB #xE5AC) - (#x8FFACC #xE5AD) - (#x8FFACD #xE5AE) - (#x8FFACE #xE5AF) - (#x8FFACF #xE5B0) - (#x8FFAD0 #xE5B1) - (#x8FFAD1 #xE5B2) - (#x8FFAD2 #xE5B3) - (#x8FFAD3 #xE5B4) - (#x8FFAD4 #xE5B5) - (#x8FFAD5 #xE5B6) - (#x8FFAD6 #xE5B7) - (#x8FFAD7 #xE5B8) - (#x8FFAD8 #xE5B9) - (#x8FFAD9 #xE5BA) - (#x8FFADA #xE5BB) - (#x8FFADB #xE5BC) - (#x8FFADC #xE5BD) - (#x8FFADD #xE5BE) - (#x8FFADE #xE5BF) - (#x8FFADF #xE5C0) - (#x8FFAE0 #xE5C1) - (#x8FFAE1 #xE5C2) - (#x8FFAE2 #xE5C3) - (#x8FFAE3 #xE5C4) - (#x8FFAE4 #xE5C5) - (#x8FFAE5 #xE5C6) - (#x8FFAE6 #xE5C7) - (#x8FFAE7 #xE5C8) - (#x8FFAE8 #xE5C9) - (#x8FFAE9 #xE5CA) - (#x8FFAEA #xE5CB) - (#x8FFAEB #xE5CC) - (#x8FFAEC #xE5CD) - (#x8FFAED #xE5CE) - (#x8FFAEE #xE5CF) - (#x8FFAEF #xE5D0) - (#x8FFAF0 #xE5D1) - (#x8FFAF1 #xE5D2) - (#x8FFAF2 #xE5D3) - (#x8FFAF3 #xE5D4) - (#x8FFAF4 #xE5D5) - (#x8FFAF5 #xE5D6) - (#x8FFAF6 #xE5D7) - (#x8FFAF7 #xE5D8) - (#x8FFAF8 #xE5D9) - (#x8FFAF9 #xE5DA) - (#x8FFAFA #xE5DB) - (#x8FFAFB #xE5DC) - (#x8FFAFC #xE5DD) - (#x8FFAFD #xE5DE) - (#x8FFAFE #xE5DF) - (#x8FFBA1 #xE5E0) - (#x8FFBA2 #xE5E1) - (#x8FFBA3 #xE5E2) - (#x8FFBA4 #xE5E3) - (#x8FFBA5 #xE5E4) - (#x8FFBA6 #xE5E5) - (#x8FFBA7 #xE5E6) - (#x8FFBA8 #xE5E7) - (#x8FFBA9 #xE5E8) - (#x8FFBAA #xE5E9) - (#x8FFBAB #xE5EA) - (#x8FFBAC #xE5EB) - (#x8FFBAD #xE5EC) - (#x8FFBAE #xE5ED) - (#x8FFBAF #xE5EE) - (#x8FFBB0 #xE5EF) - (#x8FFBB1 #xE5F0) - (#x8FFBB2 #xE5F1) - (#x8FFBB3 #xE5F2) - (#x8FFBB4 #xE5F3) - (#x8FFBB5 #xE5F4) - (#x8FFBB6 #xE5F5) - (#x8FFBB7 #xE5F6) - (#x8FFBB8 #xE5F7) - (#x8FFBB9 #xE5F8) - (#x8FFBBA #xE5F9) - (#x8FFBBB #xE5FA) - (#x8FFBBC #xE5FB) - (#x8FFBBD #xE5FC) - (#x8FFBBE #xE5FD) - (#x8FFBBF #xE5FE) - (#x8FFBC0 #xE5FF) - (#x8FFBC1 #xE600) - (#x8FFBC2 #xE601) - (#x8FFBC3 #xE602) - (#x8FFBC4 #xE603) - (#x8FFBC5 #xE604) - (#x8FFBC6 #xE605) - (#x8FFBC7 #xE606) - (#x8FFBC8 #xE607) - (#x8FFBC9 #xE608) - (#x8FFBCA #xE609) - (#x8FFBCB #xE60A) - (#x8FFBCC #xE60B) - (#x8FFBCD #xE60C) - (#x8FFBCE #xE60D) - (#x8FFBCF #xE60E) - (#x8FFBD0 #xE60F) - (#x8FFBD1 #xE610) - (#x8FFBD2 #xE611) - (#x8FFBD3 #xE612) - (#x8FFBD4 #xE613) - (#x8FFBD5 #xE614) - (#x8FFBD6 #xE615) - (#x8FFBD7 #xE616) - (#x8FFBD8 #xE617) - (#x8FFBD9 #xE618) - (#x8FFBDA #xE619) - (#x8FFBDB #xE61A) - (#x8FFBDC #xE61B) - (#x8FFBDD #xE61C) - (#x8FFBDE #xE61D) - (#x8FFBDF #xE61E) - (#x8FFBE0 #xE61F) - (#x8FFBE1 #xE620) - (#x8FFBE2 #xE621) - (#x8FFBE3 #xE622) - (#x8FFBE4 #xE623) - (#x8FFBE5 #xE624) - (#x8FFBE6 #xE625) - (#x8FFBE7 #xE626) - (#x8FFBE8 #xE627) - (#x8FFBE9 #xE628) - (#x8FFBEA #xE629) - (#x8FFBEB #xE62A) - (#x8FFBEC #xE62B) - (#x8FFBED #xE62C) - (#x8FFBEE #xE62D) - (#x8FFBEF #xE62E) - (#x8FFBF0 #xE62F) - (#x8FFBF1 #xE630) - (#x8FFBF2 #xE631) - (#x8FFBF3 #xE632) - (#x8FFBF4 #xE633) - (#x8FFBF5 #xE634) - (#x8FFBF6 #xE635) - (#x8FFBF7 #xE636) - (#x8FFBF8 #xE637) - (#x8FFBF9 #xE638) - (#x8FFBFA #xE639) - (#x8FFBFB #xE63A) - (#x8FFBFC #xE63B) - (#x8FFBFD #xE63C) - (#x8FFBFE #xE63D) - (#x8FFCA1 #xE63E) - (#x8FFCA2 #xE63F) - (#x8FFCA3 #xE640) - (#x8FFCA4 #xE641) - (#x8FFCA5 #xE642) - (#x8FFCA6 #xE643) - (#x8FFCA7 #xE644) - (#x8FFCA8 #xE645) - (#x8FFCA9 #xE646) - (#x8FFCAA #xE647) - (#x8FFCAB #xE648) - (#x8FFCAC #xE649) - (#x8FFCAD #xE64A) - (#x8FFCAE #xE64B) - (#x8FFCAF #xE64C) - (#x8FFCB0 #xE64D) - (#x8FFCB1 #xE64E) - (#x8FFCB2 #xE64F) - (#x8FFCB3 #xE650) - (#x8FFCB4 #xE651) - (#x8FFCB5 #xE652) - (#x8FFCB6 #xE653) - (#x8FFCB7 #xE654) - (#x8FFCB8 #xE655) - (#x8FFCB9 #xE656) - (#x8FFCBA #xE657) - (#x8FFCBB #xE658) - (#x8FFCBC #xE659) - (#x8FFCBD #xE65A) - (#x8FFCBE #xE65B) - (#x8FFCBF #xE65C) - (#x8FFCC0 #xE65D) - (#x8FFCC1 #xE65E) - (#x8FFCC2 #xE65F) - (#x8FFCC3 #xE660) - (#x8FFCC4 #xE661) - (#x8FFCC5 #xE662) - (#x8FFCC6 #xE663) - (#x8FFCC7 #xE664) - (#x8FFCC8 #xE665) - (#x8FFCC9 #xE666) - (#x8FFCCA #xE667) - (#x8FFCCB #xE668) - (#x8FFCCC #xE669) - (#x8FFCCD #xE66A) - (#x8FFCCE #xE66B) - (#x8FFCCF #xE66C) - (#x8FFCD0 #xE66D) - (#x8FFCD1 #xE66E) - (#x8FFCD2 #xE66F) - (#x8FFCD3 #xE670) - (#x8FFCD4 #xE671) - (#x8FFCD5 #xE672) - (#x8FFCD6 #xE673) - (#x8FFCD7 #xE674) - (#x8FFCD8 #xE675) - (#x8FFCD9 #xE676) - (#x8FFCDA #xE677) - (#x8FFCDB #xE678) - (#x8FFCDC #xE679) - (#x8FFCDD #xE67A) - (#x8FFCDE #xE67B) - (#x8FFCDF #xE67C) - (#x8FFCE0 #xE67D) - (#x8FFCE1 #xE67E) - (#x8FFCE2 #xE67F) - (#x8FFCE3 #xE680) - (#x8FFCE4 #xE681) - (#x8FFCE5 #xE682) - (#x8FFCE6 #xE683) - (#x8FFCE7 #xE684) - (#x8FFCE8 #xE685) - (#x8FFCE9 #xE686) - (#x8FFCEA #xE687) - (#x8FFCEB #xE688) - (#x8FFCEC #xE689) - (#x8FFCED #xE68A) - (#x8FFCEE #xE68B) - (#x8FFCEF #xE68C) - (#x8FFCF0 #xE68D) - (#x8FFCF1 #xE68E) - (#x8FFCF2 #xE68F) - (#x8FFCF3 #xE690) - (#x8FFCF4 #xE691) - (#x8FFCF5 #xE692) - (#x8FFCF6 #xE693) - (#x8FFCF7 #xE694) - (#x8FFCF8 #xE695) - (#x8FFCF9 #xE696) - (#x8FFCFA #xE697) - (#x8FFCFB #xE698) - (#x8FFCFC #xE699) - (#x8FFCFD #xE69A) - (#x8FFCFE #xE69B) - (#x8FFDA1 #xE69C) - (#x8FFDA2 #xE69D) - (#x8FFDA3 #xE69E) - (#x8FFDA4 #xE69F) - (#x8FFDA5 #xE6A0) - (#x8FFDA6 #xE6A1) - (#x8FFDA7 #xE6A2) - (#x8FFDA8 #xE6A3) - (#x8FFDA9 #xE6A4) - (#x8FFDAA #xE6A5) - (#x8FFDAB #xE6A6) - (#x8FFDAC #xE6A7) - (#x8FFDAD #xE6A8) - (#x8FFDAE #xE6A9) - (#x8FFDAF #xE6AA) - (#x8FFDB0 #xE6AB) - (#x8FFDB1 #xE6AC) - (#x8FFDB2 #xE6AD) - (#x8FFDB3 #xE6AE) - (#x8FFDB4 #xE6AF) - (#x8FFDB5 #xE6B0) - (#x8FFDB6 #xE6B1) - (#x8FFDB7 #xE6B2) - (#x8FFDB8 #xE6B3) - (#x8FFDB9 #xE6B4) - (#x8FFDBA #xE6B5) - (#x8FFDBB #xE6B6) - (#x8FFDBC #xE6B7) - (#x8FFDBD #xE6B8) - (#x8FFDBE #xE6B9) - (#x8FFDBF #xE6BA) - (#x8FFDC0 #xE6BB) - (#x8FFDC1 #xE6BC) - (#x8FFDC2 #xE6BD) - (#x8FFDC3 #xE6BE) - (#x8FFDC4 #xE6BF) - (#x8FFDC5 #xE6C0) - (#x8FFDC6 #xE6C1) - (#x8FFDC7 #xE6C2) - (#x8FFDC8 #xE6C3) - (#x8FFDC9 #xE6C4) - (#x8FFDCA #xE6C5) - (#x8FFDCB #xE6C6) - (#x8FFDCC #xE6C7) - (#x8FFDCD #xE6C8) - (#x8FFDCE #xE6C9) - (#x8FFDCF #xE6CA) - (#x8FFDD0 #xE6CB) - (#x8FFDD1 #xE6CC) - (#x8FFDD2 #xE6CD) - (#x8FFDD3 #xE6CE) - (#x8FFDD4 #xE6CF) - (#x8FFDD5 #xE6D0) - (#x8FFDD6 #xE6D1) - (#x8FFDD7 #xE6D2) - (#x8FFDD8 #xE6D3) - (#x8FFDD9 #xE6D4) - (#x8FFDDA #xE6D5) - (#x8FFDDB #xE6D6) - (#x8FFDDC #xE6D7) - (#x8FFDDD #xE6D8) - (#x8FFDDE #xE6D9) - (#x8FFDDF #xE6DA) - (#x8FFDE0 #xE6DB) - (#x8FFDE1 #xE6DC) - (#x8FFDE2 #xE6DD) - (#x8FFDE3 #xE6DE) - (#x8FFDE4 #xE6DF) - (#x8FFDE5 #xE6E0) - (#x8FFDE6 #xE6E1) - (#x8FFDE7 #xE6E2) - (#x8FFDE8 #xE6E3) - (#x8FFDE9 #xE6E4) - (#x8FFDEA #xE6E5) - (#x8FFDEB #xE6E6) - (#x8FFDEC #xE6E7) - (#x8FFDED #xE6E8) - (#x8FFDEE #xE6E9) - (#x8FFDEF #xE6EA) - (#x8FFDF0 #xE6EB) - (#x8FFDF1 #xE6EC) - (#x8FFDF2 #xE6ED) - (#x8FFDF3 #xE6EE) - (#x8FFDF4 #xE6EF) - (#x8FFDF5 #xE6F0) - (#x8FFDF6 #xE6F1) - (#x8FFDF7 #xE6F2) - (#x8FFDF8 #xE6F3) - (#x8FFDF9 #xE6F4) - (#x8FFDFA #xE6F5) - (#x8FFDFB #xE6F6) - (#x8FFDFC #xE6F7) - (#x8FFDFD #xE6F8) - (#x8FFDFE #xE6F9) - (#x8FFEA1 #xE6FA) - (#x8FFEA2 #xE6FB) - (#x8FFEA3 #xE6FC) - (#x8FFEA4 #xE6FD) - (#x8FFEA5 #xE6FE) - (#x8FFEA6 #xE6FF) - (#x8FFEA7 #xE700) - (#x8FFEA8 #xE701) - (#x8FFEA9 #xE702) - (#x8FFEAA #xE703) - (#x8FFEAB #xE704) - (#x8FFEAC #xE705) - (#x8FFEAD #xE706) - (#x8FFEAE #xE707) - (#x8FFEAF #xE708) - (#x8FFEB0 #xE709) - (#x8FFEB1 #xE70A) - (#x8FFEB2 #xE70B) - (#x8FFEB3 #xE70C) - (#x8FFEB4 #xE70D) - (#x8FFEB5 #xE70E) - (#x8FFEB6 #xE70F) - (#x8FFEB7 #xE710) - (#x8FFEB8 #xE711) - (#x8FFEB9 #xE712) - (#x8FFEBA #xE713) - (#x8FFEBB #xE714) - (#x8FFEBC #xE715) - (#x8FFEBD #xE716) - (#x8FFEBE #xE717) - (#x8FFEBF #xE718) - (#x8FFEC0 #xE719) - (#x8FFEC1 #xE71A) - (#x8FFEC2 #xE71B) - (#x8FFEC3 #xE71C) - (#x8FFEC4 #xE71D) - (#x8FFEC5 #xE71E) - (#x8FFEC6 #xE71F) - (#x8FFEC7 #xE720) - (#x8FFEC8 #xE721) - (#x8FFEC9 #xE722) - (#x8FFECA #xE723) - (#x8FFECB #xE724) - (#x8FFECC #xE725) - (#x8FFECD #xE726) - (#x8FFECE #xE727) - (#x8FFECF #xE728) - (#x8FFED0 #xE729) - (#x8FFED1 #xE72A) - (#x8FFED2 #xE72B) - (#x8FFED3 #xE72C) - (#x8FFED4 #xE72D) - (#x8FFED5 #xE72E) - (#x8FFED6 #xE72F) - (#x8FFED7 #xE730) - (#x8FFED8 #xE731) - (#x8FFED9 #xE732) - (#x8FFEDA #xE733) - (#x8FFEDB #xE734) - (#x8FFEDC #xE735) - (#x8FFEDD #xE736) - (#x8FFEDE #xE737) - (#x8FFEDF #xE738) - (#x8FFEE0 #xE739) - (#x8FFEE1 #xE73A) - (#x8FFEE2 #xE73B) - (#x8FFEE3 #xE73C) - (#x8FFEE4 #xE73D) - (#x8FFEE5 #xE73E) - (#x8FFEE6 #xE73F) - (#x8FFEE7 #xE740) - (#x8FFEE8 #xE741) - (#x8FFEE9 #xE742) - (#x8FFEEA #xE743) - (#x8FFEEB #xE744) - (#x8FFEEC #xE745) - (#x8FFEED #xE746) - (#x8FFEEE #xE747) - (#x8FFEEF #xE748) - (#x8FFEF0 #xE749) - (#x8FFEF1 #xE74A) - (#x8FFEF2 #xE74B) - (#x8FFEF3 #xE74C) - (#x8FFEF4 #xE74D) - (#x8FFEF5 #xE74E) - (#x8FFEF6 #xE74F) - (#x8FFEF7 #xE750) - (#x8FFEF8 #xE751) - (#x8FFEF9 #xE752) - (#x8FFEFA #xE753) - (#x8FFEFB #xE754) - (#x8FFEFC #xE755) - (#x8FFEFD #xE756) - (#x8FFEFE #xE757) - (#xA1A1 #x3000) - (#xA1A2 #x3001) - (#xA1A3 #x3002) - (#xA1A4 #xFF0C) - (#xA1A5 #xFF0E) - (#xA1A6 #x30FB) - (#xA1A7 #xFF1A) - (#xA1A8 #xFF1B) - (#xA1A9 #xFF1F) - (#xA1AA #xFF01) - (#xA1AB #x309B) - (#xA1AC #x309C) - (#xA1AD #xB4) - (#xA1AE #xFF40) - (#xA1AF #xA8) - (#xA1B0 #xFF3E) - (#xA1B1 #xFFE3) - (#xA1B2 #xFF3F) - (#xA1B3 #x30FD) - (#xA1B4 #x30FE) - (#xA1B5 #x309D) - (#xA1B6 #x309E) - (#xA1B7 #x3003) - (#xA1B8 #x4EDD) - (#xA1B9 #x3005) - (#xA1BA #x3006) - (#xA1BB #x3007) - (#xA1BC #x30FC) - (#xA1BD #x2015) - (#xA1BE #x2010) - (#xA1BF #xFF0F) - (#xA1C0 #xFF3C) - (#xA1C1 #x301C) - (#xA1C2 #x2016) - (#xA1C3 #xFF5C) - (#xA1C4 #x2026) - (#xA1C5 #x2025) - (#xA1C6 #x2018) - (#xA1C7 #x2019) - (#xA1C8 #x201C) - (#xA1C9 #x201D) - (#xA1CA #xFF08) - (#xA1CB #xFF09) - (#xA1CC #x3014) - (#xA1CD #x3015) - (#xA1CE #xFF3B) - (#xA1CF #xFF3D) - (#xA1D0 #xFF5B) - (#xA1D1 #xFF5D) - (#xA1D2 #x3008) - (#xA1D3 #x3009) - (#xA1D4 #x300A) - (#xA1D5 #x300B) - (#xA1D6 #x300C) - (#xA1D7 #x300D) - (#xA1D8 #x300E) - (#xA1D9 #x300F) - (#xA1DA #x3010) - (#xA1DB #x3011) - (#xA1DC #xFF0B) - (#xA1DD #x2212) - (#xA1DE #xB1) - (#xA1DF #xD7) - (#xA1E0 #xF7) - (#xA1E1 #xFF1D) - (#xA1E2 #x2260) - (#xA1E3 #xFF1C) - (#xA1E4 #xFF1E) - (#xA1E5 #x2266) - (#xA1E6 #x2267) - (#xA1E7 #x221E) - (#xA1E8 #x2234) - (#xA1E9 #x2642) - (#xA1EA #x2640) - (#xA1EB #xB0) - (#xA1EC #x2032) - (#xA1ED #x2033) - (#xA1EE #x2103) - (#xA1EF #xFFE5) - (#xA1F0 #xFF04) - (#xA1F1 #xA2) - (#xA1F2 #xA3) - (#xA1F3 #xFF05) - (#xA1F4 #xFF03) - (#xA1F5 #xFF06) - (#xA1F6 #xFF0A) - (#xA1F7 #xFF20) - (#xA1F8 #xA7) - (#xA1F9 #x2606) - (#xA1FA #x2605) - (#xA1FB #x25CB) - (#xA1FC #x25CF) - (#xA1FD #x25CE) - (#xA1FE #x25C7) - (#xA2A1 #x25C6) - (#xA2A2 #x25A1) - (#xA2A3 #x25A0) - (#xA2A4 #x25B3) - (#xA2A5 #x25B2) - (#xA2A6 #x25BD) - (#xA2A7 #x25BC) - (#xA2A8 #x203B) - (#xA2A9 #x3012) - (#xA2AA #x2192) - (#xA2AB #x2190) - (#xA2AC #x2191) - (#xA2AD #x2193) - (#xA2AE #x3013) - (#xA2BA #x2208) - (#xA2BB #x220B) - (#xA2BC #x2286) - (#xA2BD #x2287) - (#xA2BE #x2282) - (#xA2BF #x2283) - (#xA2C0 #x222A) - (#xA2C1 #x2229) - (#xA2CA #x2227) - (#xA2CB #x2228) - (#xA2CC #xAC) - (#xA2CD #x21D2) - (#xA2CE #x21D4) - (#xA2CF #x2200) - (#xA2D0 #x2203) - (#xA2DC #x2220) - (#xA2DD #x22A5) - (#xA2DE #x2312) - (#xA2DF #x2202) - (#xA2E0 #x2207) - (#xA2E1 #x2261) - (#xA2E2 #x2252) - (#xA2E3 #x226A) - (#xA2E4 #x226B) - (#xA2E5 #x221A) - (#xA2E6 #x223D) - (#xA2E7 #x221D) - (#xA2E8 #x2235) - (#xA2E9 #x222B) - (#xA2EA #x222C) - (#xA2F2 #x212B) - (#xA2F3 #x2030) - (#xA2F4 #x266F) - (#xA2F5 #x266D) - (#xA2F6 #x266A) - (#xA2F7 #x2020) - (#xA2F8 #x2021) - (#xA2F9 #xB6) - (#xA2FE #x25EF) - (#xA3B0 #xFF10) - (#xA3B1 #xFF11) - (#xA3B2 #xFF12) - (#xA3B3 #xFF13) - (#xA3B4 #xFF14) - (#xA3B5 #xFF15) - (#xA3B6 #xFF16) - (#xA3B7 #xFF17) - (#xA3B8 #xFF18) - (#xA3B9 #xFF19) - (#xA3C1 #xFF21) - (#xA3C2 #xFF22) - (#xA3C3 #xFF23) - (#xA3C4 #xFF24) - (#xA3C5 #xFF25) - (#xA3C6 #xFF26) - (#xA3C7 #xFF27) - (#xA3C8 #xFF28) - (#xA3C9 #xFF29) - (#xA3CA #xFF2A) - (#xA3CB #xFF2B) - (#xA3CC #xFF2C) - (#xA3CD #xFF2D) - (#xA3CE #xFF2E) - (#xA3CF #xFF2F) - (#xA3D0 #xFF30) - (#xA3D1 #xFF31) - (#xA3D2 #xFF32) - (#xA3D3 #xFF33) - (#xA3D4 #xFF34) - (#xA3D5 #xFF35) - (#xA3D6 #xFF36) - (#xA3D7 #xFF37) - (#xA3D8 #xFF38) - (#xA3D9 #xFF39) - (#xA3DA #xFF3A) - (#xA3E1 #xFF41) - (#xA3E2 #xFF42) - (#xA3E3 #xFF43) - (#xA3E4 #xFF44) - (#xA3E5 #xFF45) - (#xA3E6 #xFF46) - (#xA3E7 #xFF47) - (#xA3E8 #xFF48) - (#xA3E9 #xFF49) - (#xA3EA #xFF4A) - (#xA3EB #xFF4B) - (#xA3EC #xFF4C) - (#xA3ED #xFF4D) - (#xA3EE #xFF4E) - (#xA3EF #xFF4F) - (#xA3F0 #xFF50) - (#xA3F1 #xFF51) - (#xA3F2 #xFF52) - (#xA3F3 #xFF53) - (#xA3F4 #xFF54) - (#xA3F5 #xFF55) - (#xA3F6 #xFF56) - (#xA3F7 #xFF57) - (#xA3F8 #xFF58) - (#xA3F9 #xFF59) - (#xA3FA #xFF5A) - (#xA4A1 #x3041) - (#xA4A2 #x3042) - (#xA4A3 #x3043) - (#xA4A4 #x3044) - (#xA4A5 #x3045) - (#xA4A6 #x3046) - (#xA4A7 #x3047) - (#xA4A8 #x3048) - (#xA4A9 #x3049) - (#xA4AA #x304A) - (#xA4AB #x304B) - (#xA4AC #x304C) - (#xA4AD #x304D) - (#xA4AE #x304E) - (#xA4AF #x304F) - (#xA4B0 #x3050) - (#xA4B1 #x3051) - (#xA4B2 #x3052) - (#xA4B3 #x3053) - (#xA4B4 #x3054) - (#xA4B5 #x3055) - (#xA4B6 #x3056) - (#xA4B7 #x3057) - (#xA4B8 #x3058) - (#xA4B9 #x3059) - (#xA4BA #x305A) - (#xA4BB #x305B) - (#xA4BC #x305C) - (#xA4BD #x305D) - (#xA4BE #x305E) - (#xA4BF #x305F) - (#xA4C0 #x3060) - (#xA4C1 #x3061) - (#xA4C2 #x3062) - (#xA4C3 #x3063) - (#xA4C4 #x3064) - (#xA4C5 #x3065) - (#xA4C6 #x3066) - (#xA4C7 #x3067) - (#xA4C8 #x3068) - (#xA4C9 #x3069) - (#xA4CA #x306A) - (#xA4CB #x306B) - (#xA4CC #x306C) - (#xA4CD #x306D) - (#xA4CE #x306E) - (#xA4CF #x306F) - (#xA4D0 #x3070) - (#xA4D1 #x3071) - (#xA4D2 #x3072) - (#xA4D3 #x3073) - (#xA4D4 #x3074) - (#xA4D5 #x3075) - (#xA4D6 #x3076) - (#xA4D7 #x3077) - (#xA4D8 #x3078) - (#xA4D9 #x3079) - (#xA4DA #x307A) - (#xA4DB #x307B) - (#xA4DC #x307C) - (#xA4DD #x307D) - (#xA4DE #x307E) - (#xA4DF #x307F) - (#xA4E0 #x3080) - (#xA4E1 #x3081) - (#xA4E2 #x3082) - (#xA4E3 #x3083) - (#xA4E4 #x3084) - (#xA4E5 #x3085) - (#xA4E6 #x3086) - (#xA4E7 #x3087) - (#xA4E8 #x3088) - (#xA4E9 #x3089) - (#xA4EA #x308A) - (#xA4EB #x308B) - (#xA4EC #x308C) - (#xA4ED #x308D) - (#xA4EE #x308E) - (#xA4EF #x308F) - (#xA4F0 #x3090) - (#xA4F1 #x3091) - (#xA4F2 #x3092) - (#xA4F3 #x3093) - (#xA5A1 #x30A1) - (#xA5A2 #x30A2) - (#xA5A3 #x30A3) - (#xA5A4 #x30A4) - (#xA5A5 #x30A5) - (#xA5A6 #x30A6) - (#xA5A7 #x30A7) - (#xA5A8 #x30A8) - (#xA5A9 #x30A9) - (#xA5AA #x30AA) - (#xA5AB #x30AB) - (#xA5AC #x30AC) - (#xA5AD #x30AD) - (#xA5AE #x30AE) - (#xA5AF #x30AF) - (#xA5B0 #x30B0) - (#xA5B1 #x30B1) - (#xA5B2 #x30B2) - (#xA5B3 #x30B3) - (#xA5B4 #x30B4) - (#xA5B5 #x30B5) - (#xA5B6 #x30B6) - (#xA5B7 #x30B7) - (#xA5B8 #x30B8) - (#xA5B9 #x30B9) - (#xA5BA #x30BA) - (#xA5BB #x30BB) - (#xA5BC #x30BC) - (#xA5BD #x30BD) - (#xA5BE #x30BE) - (#xA5BF #x30BF) - (#xA5C0 #x30C0) - (#xA5C1 #x30C1) - (#xA5C2 #x30C2) - (#xA5C3 #x30C3) - (#xA5C4 #x30C4) - (#xA5C5 #x30C5) - (#xA5C6 #x30C6) - (#xA5C7 #x30C7) - (#xA5C8 #x30C8) - (#xA5C9 #x30C9) - (#xA5CA #x30CA) - (#xA5CB #x30CB) - (#xA5CC #x30CC) - (#xA5CD #x30CD) - (#xA5CE #x30CE) - (#xA5CF #x30CF) - (#xA5D0 #x30D0) - (#xA5D1 #x30D1) - (#xA5D2 #x30D2) - (#xA5D3 #x30D3) - (#xA5D4 #x30D4) - (#xA5D5 #x30D5) - (#xA5D6 #x30D6) - (#xA5D7 #x30D7) - (#xA5D8 #x30D8) - (#xA5D9 #x30D9) - (#xA5DA #x30DA) - (#xA5DB #x30DB) - (#xA5DC #x30DC) - (#xA5DD #x30DD) - (#xA5DE #x30DE) - (#xA5DF #x30DF) - (#xA5E0 #x30E0) - (#xA5E1 #x30E1) - (#xA5E2 #x30E2) - (#xA5E3 #x30E3) - (#xA5E4 #x30E4) - (#xA5E5 #x30E5) - (#xA5E6 #x30E6) - (#xA5E7 #x30E7) - (#xA5E8 #x30E8) - (#xA5E9 #x30E9) - (#xA5EA #x30EA) - (#xA5EB #x30EB) - (#xA5EC #x30EC) - (#xA5ED #x30ED) - (#xA5EE #x30EE) - (#xA5EF #x30EF) - (#xA5F0 #x30F0) - (#xA5F1 #x30F1) - (#xA5F2 #x30F2) - (#xA5F3 #x30F3) - (#xA5F4 #x30F4) - (#xA5F5 #x30F5) - (#xA5F6 #x30F6) - (#xA6A1 #x391) - (#xA6A2 #x392) - (#xA6A3 #x393) - (#xA6A4 #x394) - (#xA6A5 #x395) - (#xA6A6 #x396) - (#xA6A7 #x397) - (#xA6A8 #x398) - (#xA6A9 #x399) - (#xA6AA #x39A) - (#xA6AB #x39B) - (#xA6AC #x39C) - (#xA6AD #x39D) - (#xA6AE #x39E) - (#xA6AF #x39F) - (#xA6B0 #x3A0) - (#xA6B1 #x3A1) - (#xA6B2 #x3A3) - (#xA6B3 #x3A4) - (#xA6B4 #x3A5) - (#xA6B5 #x3A6) - (#xA6B6 #x3A7) - (#xA6B7 #x3A8) - (#xA6B8 #x3A9) - (#xA6C1 #x3B1) - (#xA6C2 #x3B2) - (#xA6C3 #x3B3) - (#xA6C4 #x3B4) - (#xA6C5 #x3B5) - (#xA6C6 #x3B6) - (#xA6C7 #x3B7) - (#xA6C8 #x3B8) - (#xA6C9 #x3B9) - (#xA6CA #x3BA) - (#xA6CB #x3BB) - (#xA6CC #x3BC) - (#xA6CD #x3BD) - (#xA6CE #x3BE) - (#xA6CF #x3BF) - (#xA6D0 #x3C0) - (#xA6D1 #x3C1) - (#xA6D2 #x3C3) - (#xA6D3 #x3C4) - (#xA6D4 #x3C5) - (#xA6D5 #x3C6) - (#xA6D6 #x3C7) - (#xA6D7 #x3C8) - (#xA6D8 #x3C9) - (#xA7A1 #x410) - (#xA7A2 #x411) - (#xA7A3 #x412) - (#xA7A4 #x413) - (#xA7A5 #x414) - (#xA7A6 #x415) - (#xA7A7 #x401) - (#xA7A8 #x416) - (#xA7A9 #x417) - (#xA7AA #x418) - (#xA7AB #x419) - (#xA7AC #x41A) - (#xA7AD #x41B) - (#xA7AE #x41C) - (#xA7AF #x41D) - (#xA7B0 #x41E) - (#xA7B1 #x41F) - (#xA7B2 #x420) - (#xA7B3 #x421) - (#xA7B4 #x422) - (#xA7B5 #x423) - (#xA7B6 #x424) - (#xA7B7 #x425) - (#xA7B8 #x426) - (#xA7B9 #x427) - (#xA7BA #x428) - (#xA7BB #x429) - (#xA7BC #x42A) - (#xA7BD #x42B) - (#xA7BE #x42C) - (#xA7BF #x42D) - (#xA7C0 #x42E) - (#xA7C1 #x42F) - (#xA7D1 #x430) - (#xA7D2 #x431) - (#xA7D3 #x432) - (#xA7D4 #x433) - (#xA7D5 #x434) - (#xA7D6 #x435) - (#xA7D7 #x451) - (#xA7D8 #x436) - (#xA7D9 #x437) - (#xA7DA #x438) - (#xA7DB #x439) - (#xA7DC #x43A) - (#xA7DD #x43B) - (#xA7DE #x43C) - (#xA7DF #x43D) - (#xA7E0 #x43E) - (#xA7E1 #x43F) - (#xA7E2 #x440) - (#xA7E3 #x441) - (#xA7E4 #x442) - (#xA7E5 #x443) - (#xA7E6 #x444) - (#xA7E7 #x445) - (#xA7E8 #x446) - (#xA7E9 #x447) - (#xA7EA #x448) - (#xA7EB #x449) - (#xA7EC #x44A) - (#xA7ED #x44B) - (#xA7EE #x44C) - (#xA7EF #x44D) - (#xA7F0 #x44E) - (#xA7F1 #x44F) - (#xA8A1 #x2500) - (#xA8A2 #x2502) - (#xA8A3 #x250C) - (#xA8A4 #x2510) - (#xA8A5 #x2518) - (#xA8A6 #x2514) - (#xA8A7 #x251C) - (#xA8A8 #x252C) - (#xA8A9 #x2524) - (#xA8AA #x2534) - (#xA8AB #x253C) - (#xA8AC #x2501) - (#xA8AD #x2503) - (#xA8AE #x250F) - (#xA8AF #x2513) - (#xA8B0 #x251B) - (#xA8B1 #x2517) - (#xA8B2 #x2523) - (#xA8B3 #x2533) - (#xA8B4 #x252B) - (#xA8B5 #x253B) - (#xA8B6 #x254B) - (#xA8B7 #x2520) - (#xA8B8 #x252F) - (#xA8B9 #x2528) - (#xA8BA #x2537) - (#xA8BB #x253F) - (#xA8BC #x251D) - (#xA8BD #x2530) - (#xA8BE #x2525) - (#xA8BF #x2538) - (#xA8C0 #x2542) - (#xB0A1 #x4E9C) - (#xB0A2 #x5516) - (#xB0A3 #x5A03) - (#xB0A4 #x963F) - (#xB0A5 #x54C0) - (#xB0A6 #x611B) - (#xB0A7 #x6328) - (#xB0A8 #x59F6) - (#xB0A9 #x9022) - (#xB0AA #x8475) - (#xB0AB #x831C) - (#xB0AC #x7A50) - (#xB0AD #x60AA) - (#xB0AE #x63E1) - (#xB0AF #x6E25) - (#xB0B0 #x65ED) - (#xB0B1 #x8466) - (#xB0B2 #x82A6) - (#xB0B3 #x9BF5) - (#xB0B4 #x6893) - (#xB0B5 #x5727) - (#xB0B6 #x65A1) - (#xB0B7 #x6271) - (#xB0B8 #x5B9B) - (#xB0B9 #x59D0) - (#xB0BA #x867B) - (#xB0BB #x98F4) - (#xB0BC #x7D62) - (#xB0BD #x7DBE) - (#xB0BE #x9B8E) - (#xB0BF #x6216) - (#xB0C0 #x7C9F) - (#xB0C1 #x88B7) - (#xB0C2 #x5B89) - (#xB0C3 #x5EB5) - (#xB0C4 #x6309) - (#xB0C5 #x6697) - (#xB0C6 #x6848) - (#xB0C7 #x95C7) - (#xB0C8 #x978D) - (#xB0C9 #x674F) - (#xB0CA #x4EE5) - (#xB0CB #x4F0A) - (#xB0CC #x4F4D) - (#xB0CD #x4F9D) - (#xB0CE #x5049) - (#xB0CF #x56F2) - (#xB0D0 #x5937) - (#xB0D1 #x59D4) - (#xB0D2 #x5A01) - (#xB0D3 #x5C09) - (#xB0D4 #x60DF) - (#xB0D5 #x610F) - (#xB0D6 #x6170) - (#xB0D7 #x6613) - (#xB0D8 #x6905) - (#xB0D9 #x70BA) - (#xB0DA #x754F) - (#xB0DB #x7570) - (#xB0DC #x79FB) - (#xB0DD #x7DAD) - (#xB0DE #x7DEF) - (#xB0DF #x80C3) - (#xB0E0 #x840E) - (#xB0E1 #x8863) - (#xB0E2 #x8B02) - (#xB0E3 #x9055) - (#xB0E4 #x907A) - (#xB0E5 #x533B) - (#xB0E6 #x4E95) - (#xB0E7 #x4EA5) - (#xB0E8 #x57DF) - (#xB0E9 #x80B2) - (#xB0EA #x90C1) - (#xB0EB #x78EF) - (#xB0EC #x4E00) - (#xB0ED #x58F1) - (#xB0EE #x6EA2) - (#xB0EF #x9038) - (#xB0F0 #x7A32) - (#xB0F1 #x8328) - (#xB0F2 #x828B) - (#xB0F3 #x9C2F) - (#xB0F4 #x5141) - (#xB0F5 #x5370) - (#xB0F6 #x54BD) - (#xB0F7 #x54E1) - (#xB0F8 #x56E0) - (#xB0F9 #x59FB) - (#xB0FA #x5F15) - (#xB0FB #x98F2) - (#xB0FC #x6DEB) - (#xB0FD #x80E4) - (#xB0FE #x852D) - (#xB1A1 #x9662) - (#xB1A2 #x9670) - (#xB1A3 #x96A0) - (#xB1A4 #x97FB) - (#xB1A5 #x540B) - (#xB1A6 #x53F3) - (#xB1A7 #x5B87) - (#xB1A8 #x70CF) - (#xB1A9 #x7FBD) - (#xB1AA #x8FC2) - (#xB1AB #x96E8) - (#xB1AC #x536F) - (#xB1AD #x9D5C) - (#xB1AE #x7ABA) - (#xB1AF #x4E11) - (#xB1B0 #x7893) - (#xB1B1 #x81FC) - (#xB1B2 #x6E26) - (#xB1B3 #x5618) - (#xB1B4 #x5504) - (#xB1B5 #x6B1D) - (#xB1B6 #x851A) - (#xB1B7 #x9C3B) - (#xB1B8 #x59E5) - (#xB1B9 #x53A9) - (#xB1BA #x6D66) - (#xB1BB #x74DC) - (#xB1BC #x958F) - (#xB1BD #x5642) - (#xB1BE #x4E91) - (#xB1BF #x904B) - (#xB1C0 #x96F2) - (#xB1C1 #x834F) - (#xB1C2 #x990C) - (#xB1C3 #x53E1) - (#xB1C4 #x55B6) - (#xB1C5 #x5B30) - (#xB1C6 #x5F71) - (#xB1C7 #x6620) - (#xB1C8 #x66F3) - (#xB1C9 #x6804) - (#xB1CA #x6C38) - (#xB1CB #x6CF3) - (#xB1CC #x6D29) - (#xB1CD #x745B) - (#xB1CE #x76C8) - (#xB1CF #x7A4E) - (#xB1D0 #x9834) - (#xB1D1 #x82F1) - (#xB1D2 #x885B) - (#xB1D3 #x8A60) - (#xB1D4 #x92ED) - (#xB1D5 #x6DB2) - (#xB1D6 #x75AB) - (#xB1D7 #x76CA) - (#xB1D8 #x99C5) - (#xB1D9 #x60A6) - (#xB1DA #x8B01) - (#xB1DB #x8D8A) - (#xB1DC #x95B2) - (#xB1DD #x698E) - (#xB1DE #x53AD) - (#xB1DF #x5186) - (#xB1E0 #x5712) - (#xB1E1 #x5830) - (#xB1E2 #x5944) - (#xB1E3 #x5BB4) - (#xB1E4 #x5EF6) - (#xB1E5 #x6028) - (#xB1E6 #x63A9) - (#xB1E7 #x63F4) - (#xB1E8 #x6CBF) - (#xB1E9 #x6F14) - (#xB1EA #x708E) - (#xB1EB #x7114) - (#xB1EC #x7159) - (#xB1ED #x71D5) - (#xB1EE #x733F) - (#xB1EF #x7E01) - (#xB1F0 #x8276) - (#xB1F1 #x82D1) - (#xB1F2 #x8597) - (#xB1F3 #x9060) - (#xB1F4 #x925B) - (#xB1F5 #x9D1B) - (#xB1F6 #x5869) - (#xB1F7 #x65BC) - (#xB1F8 #x6C5A) - (#xB1F9 #x7525) - (#xB1FA #x51F9) - (#xB1FB #x592E) - (#xB1FC #x5965) - (#xB1FD #x5F80) - (#xB1FE #x5FDC) - (#xB2A1 #x62BC) - (#xB2A2 #x65FA) - (#xB2A3 #x6A2A) - (#xB2A4 #x6B27) - (#xB2A5 #x6BB4) - (#xB2A6 #x738B) - (#xB2A7 #x7FC1) - (#xB2A8 #x8956) - (#xB2A9 #x9D2C) - (#xB2AA #x9D0E) - (#xB2AB #x9EC4) - (#xB2AC #x5CA1) - (#xB2AD #x6C96) - (#xB2AE #x837B) - (#xB2AF #x5104) - (#xB2B0 #x5C4B) - (#xB2B1 #x61B6) - (#xB2B2 #x81C6) - (#xB2B3 #x6876) - (#xB2B4 #x7261) - (#xB2B5 #x4E59) - (#xB2B6 #x4FFA) - (#xB2B7 #x5378) - (#xB2B8 #x6069) - (#xB2B9 #x6E29) - (#xB2BA #x7A4F) - (#xB2BB #x97F3) - (#xB2BC #x4E0B) - (#xB2BD #x5316) - (#xB2BE #x4EEE) - (#xB2BF #x4F55) - (#xB2C0 #x4F3D) - (#xB2C1 #x4FA1) - (#xB2C2 #x4F73) - (#xB2C3 #x52A0) - (#xB2C4 #x53EF) - (#xB2C5 #x5609) - (#xB2C6 #x590F) - (#xB2C7 #x5AC1) - (#xB2C8 #x5BB6) - (#xB2C9 #x5BE1) - (#xB2CA #x79D1) - (#xB2CB #x6687) - (#xB2CC #x679C) - (#xB2CD #x67B6) - (#xB2CE #x6B4C) - (#xB2CF #x6CB3) - (#xB2D0 #x706B) - (#xB2D1 #x73C2) - (#xB2D2 #x798D) - (#xB2D3 #x79BE) - (#xB2D4 #x7A3C) - (#xB2D5 #x7B87) - (#xB2D6 #x82B1) - (#xB2D7 #x82DB) - (#xB2D8 #x8304) - (#xB2D9 #x8377) - (#xB2DA #x83EF) - (#xB2DB #x83D3) - (#xB2DC #x8766) - (#xB2DD #x8AB2) - (#xB2DE #x5629) - (#xB2DF #x8CA8) - (#xB2E0 #x8FE6) - (#xB2E1 #x904E) - (#xB2E2 #x971E) - (#xB2E3 #x868A) - (#xB2E4 #x4FC4) - (#xB2E5 #x5CE8) - (#xB2E6 #x6211) - (#xB2E7 #x7259) - (#xB2E8 #x753B) - (#xB2E9 #x81E5) - (#xB2EA #x82BD) - (#xB2EB #x86FE) - (#xB2EC #x8CC0) - (#xB2ED #x96C5) - (#xB2EE #x9913) - (#xB2EF #x99D5) - (#xB2F0 #x4ECB) - (#xB2F1 #x4F1A) - (#xB2F2 #x89E3) - (#xB2F3 #x56DE) - (#xB2F4 #x584A) - (#xB2F5 #x58CA) - (#xB2F6 #x5EFB) - (#xB2F7 #x5FEB) - (#xB2F8 #x602A) - (#xB2F9 #x6094) - (#xB2FA #x6062) - (#xB2FB #x61D0) - (#xB2FC #x6212) - (#xB2FD #x62D0) - (#xB2FE #x6539) - (#xB3A1 #x9B41) - (#xB3A2 #x6666) - (#xB3A3 #x68B0) - (#xB3A4 #x6D77) - (#xB3A5 #x7070) - (#xB3A6 #x754C) - (#xB3A7 #x7686) - (#xB3A8 #x7D75) - (#xB3A9 #x82A5) - (#xB3AA #x87F9) - (#xB3AB #x958B) - (#xB3AC #x968E) - (#xB3AD #x8C9D) - (#xB3AE #x51F1) - (#xB3AF #x52BE) - (#xB3B0 #x5916) - (#xB3B1 #x54B3) - (#xB3B2 #x5BB3) - (#xB3B3 #x5D16) - (#xB3B4 #x6168) - (#xB3B5 #x6982) - (#xB3B6 #x6DAF) - (#xB3B7 #x788D) - (#xB3B8 #x84CB) - (#xB3B9 #x8857) - (#xB3BA #x8A72) - (#xB3BB #x93A7) - (#xB3BC #x9AB8) - (#xB3BD #x6D6C) - (#xB3BE #x99A8) - (#xB3BF #x86D9) - (#xB3C0 #x57A3) - (#xB3C1 #x67FF) - (#xB3C2 #x86CE) - (#xB3C3 #x920E) - (#xB3C4 #x5283) - (#xB3C5 #x5687) - (#xB3C6 #x5404) - (#xB3C7 #x5ED3) - (#xB3C8 #x62E1) - (#xB3C9 #x64B9) - (#xB3CA #x683C) - (#xB3CB #x6838) - (#xB3CC #x6BBB) - (#xB3CD #x7372) - (#xB3CE #x78BA) - (#xB3CF #x7A6B) - (#xB3D0 #x899A) - (#xB3D1 #x89D2) - (#xB3D2 #x8D6B) - (#xB3D3 #x8F03) - (#xB3D4 #x90ED) - (#xB3D5 #x95A3) - (#xB3D6 #x9694) - (#xB3D7 #x9769) - (#xB3D8 #x5B66) - (#xB3D9 #x5CB3) - (#xB3DA #x697D) - (#xB3DB #x984D) - (#xB3DC #x984E) - (#xB3DD #x639B) - (#xB3DE #x7B20) - (#xB3DF #x6A2B) - (#xB3E0 #x6A7F) - (#xB3E1 #x68B6) - (#xB3E2 #x9C0D) - (#xB3E3 #x6F5F) - (#xB3E4 #x5272) - (#xB3E5 #x559D) - (#xB3E6 #x6070) - (#xB3E7 #x62EC) - (#xB3E8 #x6D3B) - (#xB3E9 #x6E07) - (#xB3EA #x6ED1) - (#xB3EB #x845B) - (#xB3EC #x8910) - (#xB3ED #x8F44) - (#xB3EE #x4E14) - (#xB3EF #x9C39) - (#xB3F0 #x53F6) - (#xB3F1 #x691B) - (#xB3F2 #x6A3A) - (#xB3F3 #x9784) - (#xB3F4 #x682A) - (#xB3F5 #x515C) - (#xB3F6 #x7AC3) - (#xB3F7 #x84B2) - (#xB3F8 #x91DC) - (#xB3F9 #x938C) - (#xB3FA #x565B) - (#xB3FB #x9D28) - (#xB3FC #x6822) - (#xB3FD #x8305) - (#xB3FE #x8431) - (#xB4A1 #x7CA5) - (#xB4A2 #x5208) - (#xB4A3 #x82C5) - (#xB4A4 #x74E6) - (#xB4A5 #x4E7E) - (#xB4A6 #x4F83) - (#xB4A7 #x51A0) - (#xB4A8 #x5BD2) - (#xB4A9 #x520A) - (#xB4AA #x52D8) - (#xB4AB #x52E7) - (#xB4AC #x5DFB) - (#xB4AD #x559A) - (#xB4AE #x582A) - (#xB4AF #x59E6) - (#xB4B0 #x5B8C) - (#xB4B1 #x5B98) - (#xB4B2 #x5BDB) - (#xB4B3 #x5E72) - (#xB4B4 #x5E79) - (#xB4B5 #x60A3) - (#xB4B6 #x611F) - (#xB4B7 #x6163) - (#xB4B8 #x61BE) - (#xB4B9 #x63DB) - (#xB4BA #x6562) - (#xB4BB #x67D1) - (#xB4BC #x6853) - (#xB4BD #x68FA) - (#xB4BE #x6B3E) - (#xB4BF #x6B53) - (#xB4C0 #x6C57) - (#xB4C1 #x6F22) - (#xB4C2 #x6F97) - (#xB4C3 #x6F45) - (#xB4C4 #x74B0) - (#xB4C5 #x7518) - (#xB4C6 #x76E3) - (#xB4C7 #x770B) - (#xB4C8 #x7AFF) - (#xB4C9 #x7BA1) - (#xB4CA #x7C21) - (#xB4CB #x7DE9) - (#xB4CC #x7F36) - (#xB4CD #x7FF0) - (#xB4CE #x809D) - (#xB4CF #x8266) - (#xB4D0 #x839E) - (#xB4D1 #x89B3) - (#xB4D2 #x8ACC) - (#xB4D3 #x8CAB) - (#xB4D4 #x9084) - (#xB4D5 #x9451) - (#xB4D6 #x9593) - (#xB4D7 #x9591) - (#xB4D8 #x95A2) - (#xB4D9 #x9665) - (#xB4DA #x97D3) - (#xB4DB #x9928) - (#xB4DC #x8218) - (#xB4DD #x4E38) - (#xB4DE #x542B) - (#xB4DF #x5CB8) - (#xB4E0 #x5DCC) - (#xB4E1 #x73A9) - (#xB4E2 #x764C) - (#xB4E3 #x773C) - (#xB4E4 #x5CA9) - (#xB4E5 #x7FEB) - (#xB4E6 #x8D0B) - (#xB4E7 #x96C1) - (#xB4E8 #x9811) - (#xB4E9 #x9854) - (#xB4EA #x9858) - (#xB4EB #x4F01) - (#xB4EC #x4F0E) - (#xB4ED #x5371) - (#xB4EE #x559C) - (#xB4EF #x5668) - (#xB4F0 #x57FA) - (#xB4F1 #x5947) - (#xB4F2 #x5B09) - (#xB4F3 #x5BC4) - (#xB4F4 #x5C90) - (#xB4F5 #x5E0C) - (#xB4F6 #x5E7E) - (#xB4F7 #x5FCC) - (#xB4F8 #x63EE) - (#xB4F9 #x673A) - (#xB4FA #x65D7) - (#xB4FB #x65E2) - (#xB4FC #x671F) - (#xB4FD #x68CB) - (#xB4FE #x68C4) - (#xB5A1 #x6A5F) - (#xB5A2 #x5E30) - (#xB5A3 #x6BC5) - (#xB5A4 #x6C17) - (#xB5A5 #x6C7D) - (#xB5A6 #x757F) - (#xB5A7 #x7948) - (#xB5A8 #x5B63) - (#xB5A9 #x7A00) - (#xB5AA #x7D00) - (#xB5AB #x5FBD) - (#xB5AC #x898F) - (#xB5AD #x8A18) - (#xB5AE #x8CB4) - (#xB5AF #x8D77) - (#xB5B0 #x8ECC) - (#xB5B1 #x8F1D) - (#xB5B2 #x98E2) - (#xB5B3 #x9A0E) - (#xB5B4 #x9B3C) - (#xB5B5 #x4E80) - (#xB5B6 #x507D) - (#xB5B7 #x5100) - (#xB5B8 #x5993) - (#xB5B9 #x5B9C) - (#xB5BA #x622F) - (#xB5BB #x6280) - (#xB5BC #x64EC) - (#xB5BD #x6B3A) - (#xB5BE #x72A0) - (#xB5BF #x7591) - (#xB5C0 #x7947) - (#xB5C1 #x7FA9) - (#xB5C2 #x87FB) - (#xB5C3 #x8ABC) - (#xB5C4 #x8B70) - (#xB5C5 #x63AC) - (#xB5C6 #x83CA) - (#xB5C7 #x97A0) - (#xB5C8 #x5409) - (#xB5C9 #x5403) - (#xB5CA #x55AB) - (#xB5CB #x6854) - (#xB5CC #x6A58) - (#xB5CD #x8A70) - (#xB5CE #x7827) - (#xB5CF #x6775) - (#xB5D0 #x9ECD) - (#xB5D1 #x5374) - (#xB5D2 #x5BA2) - (#xB5D3 #x811A) - (#xB5D4 #x8650) - (#xB5D5 #x9006) - (#xB5D6 #x4E18) - (#xB5D7 #x4E45) - (#xB5D8 #x4EC7) - (#xB5D9 #x4F11) - (#xB5DA #x53CA) - (#xB5DB #x5438) - (#xB5DC #x5BAE) - (#xB5DD #x5F13) - (#xB5DE #x6025) - (#xB5DF #x6551) - (#xB5E0 #x673D) - (#xB5E1 #x6C42) - (#xB5E2 #x6C72) - (#xB5E3 #x6CE3) - (#xB5E4 #x7078) - (#xB5E5 #x7403) - (#xB5E6 #x7A76) - (#xB5E7 #x7AAE) - (#xB5E8 #x7B08) - (#xB5E9 #x7D1A) - (#xB5EA #x7CFE) - (#xB5EB #x7D66) - (#xB5EC #x65E7) - (#xB5ED #x725B) - (#xB5EE #x53BB) - (#xB5EF #x5C45) - (#xB5F0 #x5DE8) - (#xB5F1 #x62D2) - (#xB5F2 #x62E0) - (#xB5F3 #x6319) - (#xB5F4 #x6E20) - (#xB5F5 #x865A) - (#xB5F6 #x8A31) - (#xB5F7 #x8DDD) - (#xB5F8 #x92F8) - (#xB5F9 #x6F01) - (#xB5FA #x79A6) - (#xB5FB #x9B5A) - (#xB5FC #x4EA8) - (#xB5FD #x4EAB) - (#xB5FE #x4EAC) - (#xB6A1 #x4F9B) - (#xB6A2 #x4FA0) - (#xB6A3 #x50D1) - (#xB6A4 #x5147) - (#xB6A5 #x7AF6) - (#xB6A6 #x5171) - (#xB6A7 #x51F6) - (#xB6A8 #x5354) - (#xB6A9 #x5321) - (#xB6AA #x537F) - (#xB6AB #x53EB) - (#xB6AC #x55AC) - (#xB6AD #x5883) - (#xB6AE #x5CE1) - (#xB6AF #x5F37) - (#xB6B0 #x5F4A) - (#xB6B1 #x602F) - (#xB6B2 #x6050) - (#xB6B3 #x606D) - (#xB6B4 #x631F) - (#xB6B5 #x6559) - (#xB6B6 #x6A4B) - (#xB6B7 #x6CC1) - (#xB6B8 #x72C2) - (#xB6B9 #x72ED) - (#xB6BA #x77EF) - (#xB6BB #x80F8) - (#xB6BC #x8105) - (#xB6BD #x8208) - (#xB6BE #x854E) - (#xB6BF #x90F7) - (#xB6C0 #x93E1) - (#xB6C1 #x97FF) - (#xB6C2 #x9957) - (#xB6C3 #x9A5A) - (#xB6C4 #x4EF0) - (#xB6C5 #x51DD) - (#xB6C6 #x5C2D) - (#xB6C7 #x6681) - (#xB6C8 #x696D) - (#xB6C9 #x5C40) - (#xB6CA #x66F2) - (#xB6CB #x6975) - (#xB6CC #x7389) - (#xB6CD #x6850) - (#xB6CE #x7C81) - (#xB6CF #x50C5) - (#xB6D0 #x52E4) - (#xB6D1 #x5747) - (#xB6D2 #x5DFE) - (#xB6D3 #x9326) - (#xB6D4 #x65A4) - (#xB6D5 #x6B23) - (#xB6D6 #x6B3D) - (#xB6D7 #x7434) - (#xB6D8 #x7981) - (#xB6D9 #x79BD) - (#xB6DA #x7B4B) - (#xB6DB #x7DCA) - (#xB6DC #x82B9) - (#xB6DD #x83CC) - (#xB6DE #x887F) - (#xB6DF #x895F) - (#xB6E0 #x8B39) - (#xB6E1 #x8FD1) - (#xB6E2 #x91D1) - (#xB6E3 #x541F) - (#xB6E4 #x9280) - (#xB6E5 #x4E5D) - (#xB6E6 #x5036) - (#xB6E7 #x53E5) - (#xB6E8 #x533A) - (#xB6E9 #x72D7) - (#xB6EA #x7396) - (#xB6EB #x77E9) - (#xB6EC #x82E6) - (#xB6ED #x8EAF) - (#xB6EE #x99C6) - (#xB6EF #x99C8) - (#xB6F0 #x99D2) - (#xB6F1 #x5177) - (#xB6F2 #x611A) - (#xB6F3 #x865E) - (#xB6F4 #x55B0) - (#xB6F5 #x7A7A) - (#xB6F6 #x5076) - (#xB6F7 #x5BD3) - (#xB6F8 #x9047) - (#xB6F9 #x9685) - (#xB6FA #x4E32) - (#xB6FB #x6ADB) - (#xB6FC #x91E7) - (#xB6FD #x5C51) - (#xB6FE #x5C48) - (#xB7A1 #x6398) - (#xB7A2 #x7A9F) - (#xB7A3 #x6C93) - (#xB7A4 #x9774) - (#xB7A5 #x8F61) - (#xB7A6 #x7AAA) - (#xB7A7 #x718A) - (#xB7A8 #x9688) - (#xB7A9 #x7C82) - (#xB7AA #x6817) - (#xB7AB #x7E70) - (#xB7AC #x6851) - (#xB7AD #x936C) - (#xB7AE #x52F2) - (#xB7AF #x541B) - (#xB7B0 #x85AB) - (#xB7B1 #x8A13) - (#xB7B2 #x7FA4) - (#xB7B3 #x8ECD) - (#xB7B4 #x90E1) - (#xB7B5 #x5366) - (#xB7B6 #x8888) - (#xB7B7 #x7941) - (#xB7B8 #x4FC2) - (#xB7B9 #x50BE) - (#xB7BA #x5211) - (#xB7BB #x5144) - (#xB7BC #x5553) - (#xB7BD #x572D) - (#xB7BE #x73EA) - (#xB7BF #x578B) - (#xB7C0 #x5951) - (#xB7C1 #x5F62) - (#xB7C2 #x5F84) - (#xB7C3 #x6075) - (#xB7C4 #x6176) - (#xB7C5 #x6167) - (#xB7C6 #x61A9) - (#xB7C7 #x63B2) - (#xB7C8 #x643A) - (#xB7C9 #x656C) - (#xB7CA #x666F) - (#xB7CB #x6842) - (#xB7CC #x6E13) - (#xB7CD #x7566) - (#xB7CE #x7A3D) - (#xB7CF #x7CFB) - (#xB7D0 #x7D4C) - (#xB7D1 #x7D99) - (#xB7D2 #x7E4B) - (#xB7D3 #x7F6B) - (#xB7D4 #x830E) - (#xB7D5 #x834A) - (#xB7D6 #x86CD) - (#xB7D7 #x8A08) - (#xB7D8 #x8A63) - (#xB7D9 #x8B66) - (#xB7DA #x8EFD) - (#xB7DB #x981A) - (#xB7DC #x9D8F) - (#xB7DD #x82B8) - (#xB7DE #x8FCE) - (#xB7DF #x9BE8) - (#xB7E0 #x5287) - (#xB7E1 #x621F) - (#xB7E2 #x6483) - (#xB7E3 #x6FC0) - (#xB7E4 #x9699) - (#xB7E5 #x6841) - (#xB7E6 #x5091) - (#xB7E7 #x6B20) - (#xB7E8 #x6C7A) - (#xB7E9 #x6F54) - (#xB7EA #x7A74) - (#xB7EB #x7D50) - (#xB7EC #x8840) - (#xB7ED #x8A23) - (#xB7EE #x6708) - (#xB7EF #x4EF6) - (#xB7F0 #x5039) - (#xB7F1 #x5026) - (#xB7F2 #x5065) - (#xB7F3 #x517C) - (#xB7F4 #x5238) - (#xB7F5 #x5263) - (#xB7F6 #x55A7) - (#xB7F7 #x570F) - (#xB7F8 #x5805) - (#xB7F9 #x5ACC) - (#xB7FA #x5EFA) - (#xB7FB #x61B2) - (#xB7FC #x61F8) - (#xB7FD #x62F3) - (#xB7FE #x6372) - (#xB8A1 #x691C) - (#xB8A2 #x6A29) - (#xB8A3 #x727D) - (#xB8A4 #x72AC) - (#xB8A5 #x732E) - (#xB8A6 #x7814) - (#xB8A7 #x786F) - (#xB8A8 #x7D79) - (#xB8A9 #x770C) - (#xB8AA #x80A9) - (#xB8AB #x898B) - (#xB8AC #x8B19) - (#xB8AD #x8CE2) - (#xB8AE #x8ED2) - (#xB8AF #x9063) - (#xB8B0 #x9375) - (#xB8B1 #x967A) - (#xB8B2 #x9855) - (#xB8B3 #x9A13) - (#xB8B4 #x9E78) - (#xB8B5 #x5143) - (#xB8B6 #x539F) - (#xB8B7 #x53B3) - (#xB8B8 #x5E7B) - (#xB8B9 #x5F26) - (#xB8BA #x6E1B) - (#xB8BB #x6E90) - (#xB8BC #x7384) - (#xB8BD #x73FE) - (#xB8BE #x7D43) - (#xB8BF #x8237) - (#xB8C0 #x8A00) - (#xB8C1 #x8AFA) - (#xB8C2 #x9650) - (#xB8C3 #x4E4E) - (#xB8C4 #x500B) - (#xB8C5 #x53E4) - (#xB8C6 #x547C) - (#xB8C7 #x56FA) - (#xB8C8 #x59D1) - (#xB8C9 #x5B64) - (#xB8CA #x5DF1) - (#xB8CB #x5EAB) - (#xB8CC #x5F27) - (#xB8CD #x6238) - (#xB8CE #x6545) - (#xB8CF #x67AF) - (#xB8D0 #x6E56) - (#xB8D1 #x72D0) - (#xB8D2 #x7CCA) - (#xB8D3 #x88B4) - (#xB8D4 #x80A1) - (#xB8D5 #x80E1) - (#xB8D6 #x83F0) - (#xB8D7 #x864E) - (#xB8D8 #x8A87) - (#xB8D9 #x8DE8) - (#xB8DA #x9237) - (#xB8DB #x96C7) - (#xB8DC #x9867) - (#xB8DD #x9F13) - (#xB8DE #x4E94) - (#xB8DF #x4E92) - (#xB8E0 #x4F0D) - (#xB8E1 #x5348) - (#xB8E2 #x5449) - (#xB8E3 #x543E) - (#xB8E4 #x5A2F) - (#xB8E5 #x5F8C) - (#xB8E6 #x5FA1) - (#xB8E7 #x609F) - (#xB8E8 #x68A7) - (#xB8E9 #x6A8E) - (#xB8EA #x745A) - (#xB8EB #x7881) - (#xB8EC #x8A9E) - (#xB8ED #x8AA4) - (#xB8EE #x8B77) - (#xB8EF #x9190) - (#xB8F0 #x4E5E) - (#xB8F1 #x9BC9) - (#xB8F2 #x4EA4) - (#xB8F3 #x4F7C) - (#xB8F4 #x4FAF) - (#xB8F5 #x5019) - (#xB8F6 #x5016) - (#xB8F7 #x5149) - (#xB8F8 #x516C) - (#xB8F9 #x529F) - (#xB8FA #x52B9) - (#xB8FB #x52FE) - (#xB8FC #x539A) - (#xB8FD #x53E3) - (#xB8FE #x5411) - (#xB9A1 #x540E) - (#xB9A2 #x5589) - (#xB9A3 #x5751) - (#xB9A4 #x57A2) - (#xB9A5 #x597D) - (#xB9A6 #x5B54) - (#xB9A7 #x5B5D) - (#xB9A8 #x5B8F) - (#xB9A9 #x5DE5) - (#xB9AA #x5DE7) - (#xB9AB #x5DF7) - (#xB9AC #x5E78) - (#xB9AD #x5E83) - (#xB9AE #x5E9A) - (#xB9AF #x5EB7) - (#xB9B0 #x5F18) - (#xB9B1 #x6052) - (#xB9B2 #x614C) - (#xB9B3 #x6297) - (#xB9B4 #x62D8) - (#xB9B5 #x63A7) - (#xB9B6 #x653B) - (#xB9B7 #x6602) - (#xB9B8 #x6643) - (#xB9B9 #x66F4) - (#xB9BA #x676D) - (#xB9BB #x6821) - (#xB9BC #x6897) - (#xB9BD #x69CB) - (#xB9BE #x6C5F) - (#xB9BF #x6D2A) - (#xB9C0 #x6D69) - (#xB9C1 #x6E2F) - (#xB9C2 #x6E9D) - (#xB9C3 #x7532) - (#xB9C4 #x7687) - (#xB9C5 #x786C) - (#xB9C6 #x7A3F) - (#xB9C7 #x7CE0) - (#xB9C8 #x7D05) - (#xB9C9 #x7D18) - (#xB9CA #x7D5E) - (#xB9CB #x7DB1) - (#xB9CC #x8015) - (#xB9CD #x8003) - (#xB9CE #x80AF) - (#xB9CF #x80B1) - (#xB9D0 #x8154) - (#xB9D1 #x818F) - (#xB9D2 #x822A) - (#xB9D3 #x8352) - (#xB9D4 #x884C) - (#xB9D5 #x8861) - (#xB9D6 #x8B1B) - (#xB9D7 #x8CA2) - (#xB9D8 #x8CFC) - (#xB9D9 #x90CA) - (#xB9DA #x9175) - (#xB9DB #x9271) - (#xB9DC #x783F) - (#xB9DD #x92FC) - (#xB9DE #x95A4) - (#xB9DF #x964D) - (#xB9E0 #x9805) - (#xB9E1 #x9999) - (#xB9E2 #x9AD8) - (#xB9E3 #x9D3B) - (#xB9E4 #x525B) - (#xB9E5 #x52AB) - (#xB9E6 #x53F7) - (#xB9E7 #x5408) - (#xB9E8 #x58D5) - (#xB9E9 #x62F7) - (#xB9EA #x6FE0) - (#xB9EB #x8C6A) - (#xB9EC #x8F5F) - (#xB9ED #x9EB9) - (#xB9EE #x514B) - (#xB9EF #x523B) - (#xB9F0 #x544A) - (#xB9F1 #x56FD) - (#xB9F2 #x7A40) - (#xB9F3 #x9177) - (#xB9F4 #x9D60) - (#xB9F5 #x9ED2) - (#xB9F6 #x7344) - (#xB9F7 #x6F09) - (#xB9F8 #x8170) - (#xB9F9 #x7511) - (#xB9FA #x5FFD) - (#xB9FB #x60DA) - (#xB9FC #x9AA8) - (#xB9FD #x72DB) - (#xB9FE #x8FBC) - (#xBAA1 #x6B64) - (#xBAA2 #x9803) - (#xBAA3 #x4ECA) - (#xBAA4 #x56F0) - (#xBAA5 #x5764) - (#xBAA6 #x58BE) - (#xBAA7 #x5A5A) - (#xBAA8 #x6068) - (#xBAA9 #x61C7) - (#xBAAA #x660F) - (#xBAAB #x6606) - (#xBAAC #x6839) - (#xBAAD #x68B1) - (#xBAAE #x6DF7) - (#xBAAF #x75D5) - (#xBAB0 #x7D3A) - (#xBAB1 #x826E) - (#xBAB2 #x9B42) - (#xBAB3 #x4E9B) - (#xBAB4 #x4F50) - (#xBAB5 #x53C9) - (#xBAB6 #x5506) - (#xBAB7 #x5D6F) - (#xBAB8 #x5DE6) - (#xBAB9 #x5DEE) - (#xBABA #x67FB) - (#xBABB #x6C99) - (#xBABC #x7473) - (#xBABD #x7802) - (#xBABE #x8A50) - (#xBABF #x9396) - (#xBAC0 #x88DF) - (#xBAC1 #x5750) - (#xBAC2 #x5EA7) - (#xBAC3 #x632B) - (#xBAC4 #x50B5) - (#xBAC5 #x50AC) - (#xBAC6 #x518D) - (#xBAC7 #x6700) - (#xBAC8 #x54C9) - (#xBAC9 #x585E) - (#xBACA #x59BB) - (#xBACB #x5BB0) - (#xBACC #x5F69) - (#xBACD #x624D) - (#xBACE #x63A1) - (#xBACF #x683D) - (#xBAD0 #x6B73) - (#xBAD1 #x6E08) - (#xBAD2 #x707D) - (#xBAD3 #x91C7) - (#xBAD4 #x7280) - (#xBAD5 #x7815) - (#xBAD6 #x7826) - (#xBAD7 #x796D) - (#xBAD8 #x658E) - (#xBAD9 #x7D30) - (#xBADA #x83DC) - (#xBADB #x88C1) - (#xBADC #x8F09) - (#xBADD #x969B) - (#xBADE #x5264) - (#xBADF #x5728) - (#xBAE0 #x6750) - (#xBAE1 #x7F6A) - (#xBAE2 #x8CA1) - (#xBAE3 #x51B4) - (#xBAE4 #x5742) - (#xBAE5 #x962A) - (#xBAE6 #x583A) - (#xBAE7 #x698A) - (#xBAE8 #x80B4) - (#xBAE9 #x54B2) - (#xBAEA #x5D0E) - (#xBAEB #x57FC) - (#xBAEC #x7895) - (#xBAED #x9DFA) - (#xBAEE #x4F5C) - (#xBAEF #x524A) - (#xBAF0 #x548B) - (#xBAF1 #x643E) - (#xBAF2 #x6628) - (#xBAF3 #x6714) - (#xBAF4 #x67F5) - (#xBAF5 #x7A84) - (#xBAF6 #x7B56) - (#xBAF7 #x7D22) - (#xBAF8 #x932F) - (#xBAF9 #x685C) - (#xBAFA #x9BAD) - (#xBAFB #x7B39) - (#xBAFC #x5319) - (#xBAFD #x518A) - (#xBAFE #x5237) - (#xBBA1 #x5BDF) - (#xBBA2 #x62F6) - (#xBBA3 #x64AE) - (#xBBA4 #x64E6) - (#xBBA5 #x672D) - (#xBBA6 #x6BBA) - (#xBBA7 #x85A9) - (#xBBA8 #x96D1) - (#xBBA9 #x7690) - (#xBBAA #x9BD6) - (#xBBAB #x634C) - (#xBBAC #x9306) - (#xBBAD #x9BAB) - (#xBBAE #x76BF) - (#xBBAF #x6652) - (#xBBB0 #x4E09) - (#xBBB1 #x5098) - (#xBBB2 #x53C2) - (#xBBB3 #x5C71) - (#xBBB4 #x60E8) - (#xBBB5 #x6492) - (#xBBB6 #x6563) - (#xBBB7 #x685F) - (#xBBB8 #x71E6) - (#xBBB9 #x73CA) - (#xBBBA #x7523) - (#xBBBB #x7B97) - (#xBBBC #x7E82) - (#xBBBD #x8695) - (#xBBBE #x8B83) - (#xBBBF #x8CDB) - (#xBBC0 #x9178) - (#xBBC1 #x9910) - (#xBBC2 #x65AC) - (#xBBC3 #x66AB) - (#xBBC4 #x6B8B) - (#xBBC5 #x4ED5) - (#xBBC6 #x4ED4) - (#xBBC7 #x4F3A) - (#xBBC8 #x4F7F) - (#xBBC9 #x523A) - (#xBBCA #x53F8) - (#xBBCB #x53F2) - (#xBBCC #x55E3) - (#xBBCD #x56DB) - (#xBBCE #x58EB) - (#xBBCF #x59CB) - (#xBBD0 #x59C9) - (#xBBD1 #x59FF) - (#xBBD2 #x5B50) - (#xBBD3 #x5C4D) - (#xBBD4 #x5E02) - (#xBBD5 #x5E2B) - (#xBBD6 #x5FD7) - (#xBBD7 #x601D) - (#xBBD8 #x6307) - (#xBBD9 #x652F) - (#xBBDA #x5B5C) - (#xBBDB #x65AF) - (#xBBDC #x65BD) - (#xBBDD #x65E8) - (#xBBDE #x679D) - (#xBBDF #x6B62) - (#xBBE0 #x6B7B) - (#xBBE1 #x6C0F) - (#xBBE2 #x7345) - (#xBBE3 #x7949) - (#xBBE4 #x79C1) - (#xBBE5 #x7CF8) - (#xBBE6 #x7D19) - (#xBBE7 #x7D2B) - (#xBBE8 #x80A2) - (#xBBE9 #x8102) - (#xBBEA #x81F3) - (#xBBEB #x8996) - (#xBBEC #x8A5E) - (#xBBED #x8A69) - (#xBBEE #x8A66) - (#xBBEF #x8A8C) - (#xBBF0 #x8AEE) - (#xBBF1 #x8CC7) - (#xBBF2 #x8CDC) - (#xBBF3 #x96CC) - (#xBBF4 #x98FC) - (#xBBF5 #x6B6F) - (#xBBF6 #x4E8B) - (#xBBF7 #x4F3C) - (#xBBF8 #x4F8D) - (#xBBF9 #x5150) - (#xBBFA #x5B57) - (#xBBFB #x5BFA) - (#xBBFC #x6148) - (#xBBFD #x6301) - (#xBBFE #x6642) - (#xBCA1 #x6B21) - (#xBCA2 #x6ECB) - (#xBCA3 #x6CBB) - (#xBCA4 #x723E) - (#xBCA5 #x74BD) - (#xBCA6 #x75D4) - (#xBCA7 #x78C1) - (#xBCA8 #x793A) - (#xBCA9 #x800C) - (#xBCAA #x8033) - (#xBCAB #x81EA) - (#xBCAC #x8494) - (#xBCAD #x8F9E) - (#xBCAE #x6C50) - (#xBCAF #x9E7F) - (#xBCB0 #x5F0F) - (#xBCB1 #x8B58) - (#xBCB2 #x9D2B) - (#xBCB3 #x7AFA) - (#xBCB4 #x8EF8) - (#xBCB5 #x5B8D) - (#xBCB6 #x96EB) - (#xBCB7 #x4E03) - (#xBCB8 #x53F1) - (#xBCB9 #x57F7) - (#xBCBA #x5931) - (#xBCBB #x5AC9) - (#xBCBC #x5BA4) - (#xBCBD #x6089) - (#xBCBE #x6E7F) - (#xBCBF #x6F06) - (#xBCC0 #x75BE) - (#xBCC1 #x8CEA) - (#xBCC2 #x5B9F) - (#xBCC3 #x8500) - (#xBCC4 #x7BE0) - (#xBCC5 #x5072) - (#xBCC6 #x67F4) - (#xBCC7 #x829D) - (#xBCC8 #x5C61) - (#xBCC9 #x854A) - (#xBCCA #x7E1E) - (#xBCCB #x820E) - (#xBCCC #x5199) - (#xBCCD #x5C04) - (#xBCCE #x6368) - (#xBCCF #x8D66) - (#xBCD0 #x659C) - (#xBCD1 #x716E) - (#xBCD2 #x793E) - (#xBCD3 #x7D17) - (#xBCD4 #x8005) - (#xBCD5 #x8B1D) - (#xBCD6 #x8ECA) - (#xBCD7 #x906E) - (#xBCD8 #x86C7) - (#xBCD9 #x90AA) - (#xBCDA #x501F) - (#xBCDB #x52FA) - (#xBCDC #x5C3A) - (#xBCDD #x6753) - (#xBCDE #x707C) - (#xBCDF #x7235) - (#xBCE0 #x914C) - (#xBCE1 #x91C8) - (#xBCE2 #x932B) - (#xBCE3 #x82E5) - (#xBCE4 #x5BC2) - (#xBCE5 #x5F31) - (#xBCE6 #x60F9) - (#xBCE7 #x4E3B) - (#xBCE8 #x53D6) - (#xBCE9 #x5B88) - (#xBCEA #x624B) - (#xBCEB #x6731) - (#xBCEC #x6B8A) - (#xBCED #x72E9) - (#xBCEE #x73E0) - (#xBCEF #x7A2E) - (#xBCF0 #x816B) - (#xBCF1 #x8DA3) - (#xBCF2 #x9152) - (#xBCF3 #x9996) - (#xBCF4 #x5112) - (#xBCF5 #x53D7) - (#xBCF6 #x546A) - (#xBCF7 #x5BFF) - (#xBCF8 #x6388) - (#xBCF9 #x6A39) - (#xBCFA #x7DAC) - (#xBCFB #x9700) - (#xBCFC #x56DA) - (#xBCFD #x53CE) - (#xBCFE #x5468) - (#xBDA1 #x5B97) - (#xBDA2 #x5C31) - (#xBDA3 #x5DDE) - (#xBDA4 #x4FEE) - (#xBDA5 #x6101) - (#xBDA6 #x62FE) - (#xBDA7 #x6D32) - (#xBDA8 #x79C0) - (#xBDA9 #x79CB) - (#xBDAA #x7D42) - (#xBDAB #x7E4D) - (#xBDAC #x7FD2) - (#xBDAD #x81ED) - (#xBDAE #x821F) - (#xBDAF #x8490) - (#xBDB0 #x8846) - (#xBDB1 #x8972) - (#xBDB2 #x8B90) - (#xBDB3 #x8E74) - (#xBDB4 #x8F2F) - (#xBDB5 #x9031) - (#xBDB6 #x914B) - (#xBDB7 #x916C) - (#xBDB8 #x96C6) - (#xBDB9 #x919C) - (#xBDBA #x4EC0) - (#xBDBB #x4F4F) - (#xBDBC #x5145) - (#xBDBD #x5341) - (#xBDBE #x5F93) - (#xBDBF #x620E) - (#xBDC0 #x67D4) - (#xBDC1 #x6C41) - (#xBDC2 #x6E0B) - (#xBDC3 #x7363) - (#xBDC4 #x7E26) - (#xBDC5 #x91CD) - (#xBDC6 #x9283) - (#xBDC7 #x53D4) - (#xBDC8 #x5919) - (#xBDC9 #x5BBF) - (#xBDCA #x6DD1) - (#xBDCB #x795D) - (#xBDCC #x7E2E) - (#xBDCD #x7C9B) - (#xBDCE #x587E) - (#xBDCF #x719F) - (#xBDD0 #x51FA) - (#xBDD1 #x8853) - (#xBDD2 #x8FF0) - (#xBDD3 #x4FCA) - (#xBDD4 #x5CFB) - (#xBDD5 #x6625) - (#xBDD6 #x77AC) - (#xBDD7 #x7AE3) - (#xBDD8 #x821C) - (#xBDD9 #x99FF) - (#xBDDA #x51C6) - (#xBDDB #x5FAA) - (#xBDDC #x65EC) - (#xBDDD #x696F) - (#xBDDE #x6B89) - (#xBDDF #x6DF3) - (#xBDE0 #x6E96) - (#xBDE1 #x6F64) - (#xBDE2 #x76FE) - (#xBDE3 #x7D14) - (#xBDE4 #x5DE1) - (#xBDE5 #x9075) - (#xBDE6 #x9187) - (#xBDE7 #x9806) - (#xBDE8 #x51E6) - (#xBDE9 #x521D) - (#xBDEA #x6240) - (#xBDEB #x6691) - (#xBDEC #x66D9) - (#xBDED #x6E1A) - (#xBDEE #x5EB6) - (#xBDEF #x7DD2) - (#xBDF0 #x7F72) - (#xBDF1 #x66F8) - (#xBDF2 #x85AF) - (#xBDF3 #x85F7) - (#xBDF4 #x8AF8) - (#xBDF5 #x52A9) - (#xBDF6 #x53D9) - (#xBDF7 #x5973) - (#xBDF8 #x5E8F) - (#xBDF9 #x5F90) - (#xBDFA #x6055) - (#xBDFB #x92E4) - (#xBDFC #x9664) - (#xBDFD #x50B7) - (#xBDFE #x511F) - (#xBEA1 #x52DD) - (#xBEA2 #x5320) - (#xBEA3 #x5347) - (#xBEA4 #x53EC) - (#xBEA5 #x54E8) - (#xBEA6 #x5546) - (#xBEA7 #x5531) - (#xBEA8 #x5617) - (#xBEA9 #x5968) - (#xBEAA #x59BE) - (#xBEAB #x5A3C) - (#xBEAC #x5BB5) - (#xBEAD #x5C06) - (#xBEAE #x5C0F) - (#xBEAF #x5C11) - (#xBEB0 #x5C1A) - (#xBEB1 #x5E84) - (#xBEB2 #x5E8A) - (#xBEB3 #x5EE0) - (#xBEB4 #x5F70) - (#xBEB5 #x627F) - (#xBEB6 #x6284) - (#xBEB7 #x62DB) - (#xBEB8 #x638C) - (#xBEB9 #x6377) - (#xBEBA #x6607) - (#xBEBB #x660C) - (#xBEBC #x662D) - (#xBEBD #x6676) - (#xBEBE #x677E) - (#xBEBF #x68A2) - (#xBEC0 #x6A1F) - (#xBEC1 #x6A35) - (#xBEC2 #x6CBC) - (#xBEC3 #x6D88) - (#xBEC4 #x6E09) - (#xBEC5 #x6E58) - (#xBEC6 #x713C) - (#xBEC7 #x7126) - (#xBEC8 #x7167) - (#xBEC9 #x75C7) - (#xBECA #x7701) - (#xBECB #x785D) - (#xBECC #x7901) - (#xBECD #x7965) - (#xBECE #x79F0) - (#xBECF #x7AE0) - (#xBED0 #x7B11) - (#xBED1 #x7CA7) - (#xBED2 #x7D39) - (#xBED3 #x8096) - (#xBED4 #x83D6) - (#xBED5 #x848B) - (#xBED6 #x8549) - (#xBED7 #x885D) - (#xBED8 #x88F3) - (#xBED9 #x8A1F) - (#xBEDA #x8A3C) - (#xBEDB #x8A54) - (#xBEDC #x8A73) - (#xBEDD #x8C61) - (#xBEDE #x8CDE) - (#xBEDF #x91A4) - (#xBEE0 #x9266) - (#xBEE1 #x937E) - (#xBEE2 #x9418) - (#xBEE3 #x969C) - (#xBEE4 #x9798) - (#xBEE5 #x4E0A) - (#xBEE6 #x4E08) - (#xBEE7 #x4E1E) - (#xBEE8 #x4E57) - (#xBEE9 #x5197) - (#xBEEA #x5270) - (#xBEEB #x57CE) - (#xBEEC #x5834) - (#xBEED #x58CC) - (#xBEEE #x5B22) - (#xBEEF #x5E38) - (#xBEF0 #x60C5) - (#xBEF1 #x64FE) - (#xBEF2 #x6761) - (#xBEF3 #x6756) - (#xBEF4 #x6D44) - (#xBEF5 #x72B6) - (#xBEF6 #x7573) - (#xBEF7 #x7A63) - (#xBEF8 #x84B8) - (#xBEF9 #x8B72) - (#xBEFA #x91B8) - (#xBEFB #x9320) - (#xBEFC #x5631) - (#xBEFD #x57F4) - (#xBEFE #x98FE) - (#xBFA1 #x62ED) - (#xBFA2 #x690D) - (#xBFA3 #x6B96) - (#xBFA4 #x71ED) - (#xBFA5 #x7E54) - (#xBFA6 #x8077) - (#xBFA7 #x8272) - (#xBFA8 #x89E6) - (#xBFA9 #x98DF) - (#xBFAA #x8755) - (#xBFAB #x8FB1) - (#xBFAC #x5C3B) - (#xBFAD #x4F38) - (#xBFAE #x4FE1) - (#xBFAF #x4FB5) - (#xBFB0 #x5507) - (#xBFB1 #x5A20) - (#xBFB2 #x5BDD) - (#xBFB3 #x5BE9) - (#xBFB4 #x5FC3) - (#xBFB5 #x614E) - (#xBFB6 #x632F) - (#xBFB7 #x65B0) - (#xBFB8 #x664B) - (#xBFB9 #x68EE) - (#xBFBA #x699B) - (#xBFBB #x6D78) - (#xBFBC #x6DF1) - (#xBFBD #x7533) - (#xBFBE #x75B9) - (#xBFBF #x771F) - (#xBFC0 #x795E) - (#xBFC1 #x79E6) - (#xBFC2 #x7D33) - (#xBFC3 #x81E3) - (#xBFC4 #x82AF) - (#xBFC5 #x85AA) - (#xBFC6 #x89AA) - (#xBFC7 #x8A3A) - (#xBFC8 #x8EAB) - (#xBFC9 #x8F9B) - (#xBFCA #x9032) - (#xBFCB #x91DD) - (#xBFCC #x9707) - (#xBFCD #x4EBA) - (#xBFCE #x4EC1) - (#xBFCF #x5203) - (#xBFD0 #x5875) - (#xBFD1 #x58EC) - (#xBFD2 #x5C0B) - (#xBFD3 #x751A) - (#xBFD4 #x5C3D) - (#xBFD5 #x814E) - (#xBFD6 #x8A0A) - (#xBFD7 #x8FC5) - (#xBFD8 #x9663) - (#xBFD9 #x976D) - (#xBFDA #x7B25) - (#xBFDB #x8ACF) - (#xBFDC #x9808) - (#xBFDD #x9162) - (#xBFDE #x56F3) - (#xBFDF #x53A8) - (#xBFE0 #x9017) - (#xBFE1 #x5439) - (#xBFE2 #x5782) - (#xBFE3 #x5E25) - (#xBFE4 #x63A8) - (#xBFE5 #x6C34) - (#xBFE6 #x708A) - (#xBFE7 #x7761) - (#xBFE8 #x7C8B) - (#xBFE9 #x7FE0) - (#xBFEA #x8870) - (#xBFEB #x9042) - (#xBFEC #x9154) - (#xBFED #x9310) - (#xBFEE #x9318) - (#xBFEF #x968F) - (#xBFF0 #x745E) - (#xBFF1 #x9AC4) - (#xBFF2 #x5D07) - (#xBFF3 #x5D69) - (#xBFF4 #x6570) - (#xBFF5 #x67A2) - (#xBFF6 #x8DA8) - (#xBFF7 #x96DB) - (#xBFF8 #x636E) - (#xBFF9 #x6749) - (#xBFFA #x6919) - (#xBFFB #x83C5) - (#xBFFC #x9817) - (#xBFFD #x96C0) - (#xBFFE #x88FE) - (#xC0A1 #x6F84) - (#xC0A2 #x647A) - (#xC0A3 #x5BF8) - (#xC0A4 #x4E16) - (#xC0A5 #x702C) - (#xC0A6 #x755D) - (#xC0A7 #x662F) - (#xC0A8 #x51C4) - (#xC0A9 #x5236) - (#xC0AA #x52E2) - (#xC0AB #x59D3) - (#xC0AC #x5F81) - (#xC0AD #x6027) - (#xC0AE #x6210) - (#xC0AF #x653F) - (#xC0B0 #x6574) - (#xC0B1 #x661F) - (#xC0B2 #x6674) - (#xC0B3 #x68F2) - (#xC0B4 #x6816) - (#xC0B5 #x6B63) - (#xC0B6 #x6E05) - (#xC0B7 #x7272) - (#xC0B8 #x751F) - (#xC0B9 #x76DB) - (#xC0BA #x7CBE) - (#xC0BB #x8056) - (#xC0BC #x58F0) - (#xC0BD #x88FD) - (#xC0BE #x897F) - (#xC0BF #x8AA0) - (#xC0C0 #x8A93) - (#xC0C1 #x8ACB) - (#xC0C2 #x901D) - (#xC0C3 #x9192) - (#xC0C4 #x9752) - (#xC0C5 #x9759) - (#xC0C6 #x6589) - (#xC0C7 #x7A0E) - (#xC0C8 #x8106) - (#xC0C9 #x96BB) - (#xC0CA #x5E2D) - (#xC0CB #x60DC) - (#xC0CC #x621A) - (#xC0CD #x65A5) - (#xC0CE #x6614) - (#xC0CF #x6790) - (#xC0D0 #x77F3) - (#xC0D1 #x7A4D) - (#xC0D2 #x7C4D) - (#xC0D3 #x7E3E) - (#xC0D4 #x810A) - (#xC0D5 #x8CAC) - (#xC0D6 #x8D64) - (#xC0D7 #x8DE1) - (#xC0D8 #x8E5F) - (#xC0D9 #x78A9) - (#xC0DA #x5207) - (#xC0DB #x62D9) - (#xC0DC #x63A5) - (#xC0DD #x6442) - (#xC0DE #x6298) - (#xC0DF #x8A2D) - (#xC0E0 #x7A83) - (#xC0E1 #x7BC0) - (#xC0E2 #x8AAC) - (#xC0E3 #x96EA) - (#xC0E4 #x7D76) - (#xC0E5 #x820C) - (#xC0E6 #x8749) - (#xC0E7 #x4ED9) - (#xC0E8 #x5148) - (#xC0E9 #x5343) - (#xC0EA #x5360) - (#xC0EB #x5BA3) - (#xC0EC #x5C02) - (#xC0ED #x5C16) - (#xC0EE #x5DDD) - (#xC0EF #x6226) - (#xC0F0 #x6247) - (#xC0F1 #x64B0) - (#xC0F2 #x6813) - (#xC0F3 #x6834) - (#xC0F4 #x6CC9) - (#xC0F5 #x6D45) - (#xC0F6 #x6D17) - (#xC0F7 #x67D3) - (#xC0F8 #x6F5C) - (#xC0F9 #x714E) - (#xC0FA #x717D) - (#xC0FB #x65CB) - (#xC0FC #x7A7F) - (#xC0FD #x7BAD) - (#xC0FE #x7DDA) - (#xC1A1 #x7E4A) - (#xC1A2 #x7FA8) - (#xC1A3 #x817A) - (#xC1A4 #x821B) - (#xC1A5 #x8239) - (#xC1A6 #x85A6) - (#xC1A7 #x8A6E) - (#xC1A8 #x8CCE) - (#xC1A9 #x8DF5) - (#xC1AA #x9078) - (#xC1AB #x9077) - (#xC1AC #x92AD) - (#xC1AD #x9291) - (#xC1AE #x9583) - (#xC1AF #x9BAE) - (#xC1B0 #x524D) - (#xC1B1 #x5584) - (#xC1B2 #x6F38) - (#xC1B3 #x7136) - (#xC1B4 #x5168) - (#xC1B5 #x7985) - (#xC1B6 #x7E55) - (#xC1B7 #x81B3) - (#xC1B8 #x7CCE) - (#xC1B9 #x564C) - (#xC1BA #x5851) - (#xC1BB #x5CA8) - (#xC1BC #x63AA) - (#xC1BD #x66FE) - (#xC1BE #x66FD) - (#xC1BF #x695A) - (#xC1C0 #x72D9) - (#xC1C1 #x758F) - (#xC1C2 #x758E) - (#xC1C3 #x790E) - (#xC1C4 #x7956) - (#xC1C5 #x79DF) - (#xC1C6 #x7C97) - (#xC1C7 #x7D20) - (#xC1C8 #x7D44) - (#xC1C9 #x8607) - (#xC1CA #x8A34) - (#xC1CB #x963B) - (#xC1CC #x9061) - (#xC1CD #x9F20) - (#xC1CE #x50E7) - (#xC1CF #x5275) - (#xC1D0 #x53CC) - (#xC1D1 #x53E2) - (#xC1D2 #x5009) - (#xC1D3 #x55AA) - (#xC1D4 #x58EE) - (#xC1D5 #x594F) - (#xC1D6 #x723D) - (#xC1D7 #x5B8B) - (#xC1D8 #x5C64) - (#xC1D9 #x531D) - (#xC1DA #x60E3) - (#xC1DB #x60F3) - (#xC1DC #x635C) - (#xC1DD #x6383) - (#xC1DE #x633F) - (#xC1DF #x63BB) - (#xC1E0 #x64CD) - (#xC1E1 #x65E9) - (#xC1E2 #x66F9) - (#xC1E3 #x5DE3) - (#xC1E4 #x69CD) - (#xC1E5 #x69FD) - (#xC1E6 #x6F15) - (#xC1E7 #x71E5) - (#xC1E8 #x4E89) - (#xC1E9 #x75E9) - (#xC1EA #x76F8) - (#xC1EB #x7A93) - (#xC1EC #x7CDF) - (#xC1ED #x7DCF) - (#xC1EE #x7D9C) - (#xC1EF #x8061) - (#xC1F0 #x8349) - (#xC1F1 #x8358) - (#xC1F2 #x846C) - (#xC1F3 #x84BC) - (#xC1F4 #x85FB) - (#xC1F5 #x88C5) - (#xC1F6 #x8D70) - (#xC1F7 #x9001) - (#xC1F8 #x906D) - (#xC1F9 #x9397) - (#xC1FA #x971C) - (#xC1FB #x9A12) - (#xC1FC #x50CF) - (#xC1FD #x5897) - (#xC1FE #x618E) - (#xC2A1 #x81D3) - (#xC2A2 #x8535) - (#xC2A3 #x8D08) - (#xC2A4 #x9020) - (#xC2A5 #x4FC3) - (#xC2A6 #x5074) - (#xC2A7 #x5247) - (#xC2A8 #x5373) - (#xC2A9 #x606F) - (#xC2AA #x6349) - (#xC2AB #x675F) - (#xC2AC #x6E2C) - (#xC2AD #x8DB3) - (#xC2AE #x901F) - (#xC2AF #x4FD7) - (#xC2B0 #x5C5E) - (#xC2B1 #x8CCA) - (#xC2B2 #x65CF) - (#xC2B3 #x7D9A) - (#xC2B4 #x5352) - (#xC2B5 #x8896) - (#xC2B6 #x5176) - (#xC2B7 #x63C3) - (#xC2B8 #x5B58) - (#xC2B9 #x5B6B) - (#xC2BA #x5C0A) - (#xC2BB #x640D) - (#xC2BC #x6751) - (#xC2BD #x905C) - (#xC2BE #x4ED6) - (#xC2BF #x591A) - (#xC2C0 #x592A) - (#xC2C1 #x6C70) - (#xC2C2 #x8A51) - (#xC2C3 #x553E) - (#xC2C4 #x5815) - (#xC2C5 #x59A5) - (#xC2C6 #x60F0) - (#xC2C7 #x6253) - (#xC2C8 #x67C1) - (#xC2C9 #x8235) - (#xC2CA #x6955) - (#xC2CB #x9640) - (#xC2CC #x99C4) - (#xC2CD #x9A28) - (#xC2CE #x4F53) - (#xC2CF #x5806) - (#xC2D0 #x5BFE) - (#xC2D1 #x8010) - (#xC2D2 #x5CB1) - (#xC2D3 #x5E2F) - (#xC2D4 #x5F85) - (#xC2D5 #x6020) - (#xC2D6 #x614B) - (#xC2D7 #x6234) - (#xC2D8 #x66FF) - (#xC2D9 #x6CF0) - (#xC2DA #x6EDE) - (#xC2DB #x80CE) - (#xC2DC #x817F) - (#xC2DD #x82D4) - (#xC2DE #x888B) - (#xC2DF #x8CB8) - (#xC2E0 #x9000) - (#xC2E1 #x902E) - (#xC2E2 #x968A) - (#xC2E3 #x9EDB) - (#xC2E4 #x9BDB) - (#xC2E5 #x4EE3) - (#xC2E6 #x53F0) - (#xC2E7 #x5927) - (#xC2E8 #x7B2C) - (#xC2E9 #x918D) - (#xC2EA #x984C) - (#xC2EB #x9DF9) - (#xC2EC #x6EDD) - (#xC2ED #x7027) - (#xC2EE #x5353) - (#xC2EF #x5544) - (#xC2F0 #x5B85) - (#xC2F1 #x6258) - (#xC2F2 #x629E) - (#xC2F3 #x62D3) - (#xC2F4 #x6CA2) - (#xC2F5 #x6FEF) - (#xC2F6 #x7422) - (#xC2F7 #x8A17) - (#xC2F8 #x9438) - (#xC2F9 #x6FC1) - (#xC2FA #x8AFE) - (#xC2FB #x8338) - (#xC2FC #x51E7) - (#xC2FD #x86F8) - (#xC2FE #x53EA) - (#xC3A1 #x53E9) - (#xC3A2 #x4F46) - (#xC3A3 #x9054) - (#xC3A4 #x8FB0) - (#xC3A5 #x596A) - (#xC3A6 #x8131) - (#xC3A7 #x5DFD) - (#xC3A8 #x7AEA) - (#xC3A9 #x8FBF) - (#xC3AA #x68DA) - (#xC3AB #x8C37) - (#xC3AC #x72F8) - (#xC3AD #x9C48) - (#xC3AE #x6A3D) - (#xC3AF #x8AB0) - (#xC3B0 #x4E39) - (#xC3B1 #x5358) - (#xC3B2 #x5606) - (#xC3B3 #x5766) - (#xC3B4 #x62C5) - (#xC3B5 #x63A2) - (#xC3B6 #x65E6) - (#xC3B7 #x6B4E) - (#xC3B8 #x6DE1) - (#xC3B9 #x6E5B) - (#xC3BA #x70AD) - (#xC3BB #x77ED) - (#xC3BC #x7AEF) - (#xC3BD #x7BAA) - (#xC3BE #x7DBB) - (#xC3BF #x803D) - (#xC3C0 #x80C6) - (#xC3C1 #x86CB) - (#xC3C2 #x8A95) - (#xC3C3 #x935B) - (#xC3C4 #x56E3) - (#xC3C5 #x58C7) - (#xC3C6 #x5F3E) - (#xC3C7 #x65AD) - (#xC3C8 #x6696) - (#xC3C9 #x6A80) - (#xC3CA #x6BB5) - (#xC3CB #x7537) - (#xC3CC #x8AC7) - (#xC3CD #x5024) - (#xC3CE #x77E5) - (#xC3CF #x5730) - (#xC3D0 #x5F1B) - (#xC3D1 #x6065) - (#xC3D2 #x667A) - (#xC3D3 #x6C60) - (#xC3D4 #x75F4) - (#xC3D5 #x7A1A) - (#xC3D6 #x7F6E) - (#xC3D7 #x81F4) - (#xC3D8 #x8718) - (#xC3D9 #x9045) - (#xC3DA #x99B3) - (#xC3DB #x7BC9) - (#xC3DC #x755C) - (#xC3DD #x7AF9) - (#xC3DE #x7B51) - (#xC3DF #x84C4) - (#xC3E0 #x9010) - (#xC3E1 #x79E9) - (#xC3E2 #x7A92) - (#xC3E3 #x8336) - (#xC3E4 #x5AE1) - (#xC3E5 #x7740) - (#xC3E6 #x4E2D) - (#xC3E7 #x4EF2) - (#xC3E8 #x5B99) - (#xC3E9 #x5FE0) - (#xC3EA #x62BD) - (#xC3EB #x663C) - (#xC3EC #x67F1) - (#xC3ED #x6CE8) - (#xC3EE #x866B) - (#xC3EF #x8877) - (#xC3F0 #x8A3B) - (#xC3F1 #x914E) - (#xC3F2 #x92F3) - (#xC3F3 #x99D0) - (#xC3F4 #x6A17) - (#xC3F5 #x7026) - (#xC3F6 #x732A) - (#xC3F7 #x82E7) - (#xC3F8 #x8457) - (#xC3F9 #x8CAF) - (#xC3FA #x4E01) - (#xC3FB #x5146) - (#xC3FC #x51CB) - (#xC3FD #x558B) - (#xC3FE #x5BF5) - (#xC4A1 #x5E16) - (#xC4A2 #x5E33) - (#xC4A3 #x5E81) - (#xC4A4 #x5F14) - (#xC4A5 #x5F35) - (#xC4A6 #x5F6B) - (#xC4A7 #x5FB4) - (#xC4A8 #x61F2) - (#xC4A9 #x6311) - (#xC4AA #x66A2) - (#xC4AB #x671D) - (#xC4AC #x6F6E) - (#xC4AD #x7252) - (#xC4AE #x753A) - (#xC4AF #x773A) - (#xC4B0 #x8074) - (#xC4B1 #x8139) - (#xC4B2 #x8178) - (#xC4B3 #x8776) - (#xC4B4 #x8ABF) - (#xC4B5 #x8ADC) - (#xC4B6 #x8D85) - (#xC4B7 #x8DF3) - (#xC4B8 #x929A) - (#xC4B9 #x9577) - (#xC4BA #x9802) - (#xC4BB #x9CE5) - (#xC4BC #x52C5) - (#xC4BD #x6357) - (#xC4BE #x76F4) - (#xC4BF #x6715) - (#xC4C0 #x6C88) - (#xC4C1 #x73CD) - (#xC4C2 #x8CC3) - (#xC4C3 #x93AE) - (#xC4C4 #x9673) - (#xC4C5 #x6D25) - (#xC4C6 #x589C) - (#xC4C7 #x690E) - (#xC4C8 #x69CC) - (#xC4C9 #x8FFD) - (#xC4CA #x939A) - (#xC4CB #x75DB) - (#xC4CC #x901A) - (#xC4CD #x585A) - (#xC4CE #x6802) - (#xC4CF #x63B4) - (#xC4D0 #x69FB) - (#xC4D1 #x4F43) - (#xC4D2 #x6F2C) - (#xC4D3 #x67D8) - (#xC4D4 #x8FBB) - (#xC4D5 #x8526) - (#xC4D6 #x7DB4) - (#xC4D7 #x9354) - (#xC4D8 #x693F) - (#xC4D9 #x6F70) - (#xC4DA #x576A) - (#xC4DB #x58F7) - (#xC4DC #x5B2C) - (#xC4DD #x7D2C) - (#xC4DE #x722A) - (#xC4DF #x540A) - (#xC4E0 #x91E3) - (#xC4E1 #x9DB4) - (#xC4E2 #x4EAD) - (#xC4E3 #x4F4E) - (#xC4E4 #x505C) - (#xC4E5 #x5075) - (#xC4E6 #x5243) - (#xC4E7 #x8C9E) - (#xC4E8 #x5448) - (#xC4E9 #x5824) - (#xC4EA #x5B9A) - (#xC4EB #x5E1D) - (#xC4EC #x5E95) - (#xC4ED #x5EAD) - (#xC4EE #x5EF7) - (#xC4EF #x5F1F) - (#xC4F0 #x608C) - (#xC4F1 #x62B5) - (#xC4F2 #x633A) - (#xC4F3 #x63D0) - (#xC4F4 #x68AF) - (#xC4F5 #x6C40) - (#xC4F6 #x7887) - (#xC4F7 #x798E) - (#xC4F8 #x7A0B) - (#xC4F9 #x7DE0) - (#xC4FA #x8247) - (#xC4FB #x8A02) - (#xC4FC #x8AE6) - (#xC4FD #x8E44) - (#xC4FE #x9013) - (#xC5A1 #x90B8) - (#xC5A2 #x912D) - (#xC5A3 #x91D8) - (#xC5A4 #x9F0E) - (#xC5A5 #x6CE5) - (#xC5A6 #x6458) - (#xC5A7 #x64E2) - (#xC5A8 #x6575) - (#xC5A9 #x6EF4) - (#xC5AA #x7684) - (#xC5AB #x7B1B) - (#xC5AC #x9069) - (#xC5AD #x93D1) - (#xC5AE #x6EBA) - (#xC5AF #x54F2) - (#xC5B0 #x5FB9) - (#xC5B1 #x64A4) - (#xC5B2 #x8F4D) - (#xC5B3 #x8FED) - (#xC5B4 #x9244) - (#xC5B5 #x5178) - (#xC5B6 #x586B) - (#xC5B7 #x5929) - (#xC5B8 #x5C55) - (#xC5B9 #x5E97) - (#xC5BA #x6DFB) - (#xC5BB #x7E8F) - (#xC5BC #x751C) - (#xC5BD #x8CBC) - (#xC5BE #x8EE2) - (#xC5BF #x985B) - (#xC5C0 #x70B9) - (#xC5C1 #x4F1D) - (#xC5C2 #x6BBF) - (#xC5C3 #x6FB1) - (#xC5C4 #x7530) - (#xC5C5 #x96FB) - (#xC5C6 #x514E) - (#xC5C7 #x5410) - (#xC5C8 #x5835) - (#xC5C9 #x5857) - (#xC5CA #x59AC) - (#xC5CB #x5C60) - (#xC5CC #x5F92) - (#xC5CD #x6597) - (#xC5CE #x675C) - (#xC5CF #x6E21) - (#xC5D0 #x767B) - (#xC5D1 #x83DF) - (#xC5D2 #x8CED) - (#xC5D3 #x9014) - (#xC5D4 #x90FD) - (#xC5D5 #x934D) - (#xC5D6 #x7825) - (#xC5D7 #x783A) - (#xC5D8 #x52AA) - (#xC5D9 #x5EA6) - (#xC5DA #x571F) - (#xC5DB #x5974) - (#xC5DC #x6012) - (#xC5DD #x5012) - (#xC5DE #x515A) - (#xC5DF #x51AC) - (#xC5E0 #x51CD) - (#xC5E1 #x5200) - (#xC5E2 #x5510) - (#xC5E3 #x5854) - (#xC5E4 #x5858) - (#xC5E5 #x5957) - (#xC5E6 #x5B95) - (#xC5E7 #x5CF6) - (#xC5E8 #x5D8B) - (#xC5E9 #x60BC) - (#xC5EA #x6295) - (#xC5EB #x642D) - (#xC5EC #x6771) - (#xC5ED #x6843) - (#xC5EE #x68BC) - (#xC5EF #x68DF) - (#xC5F0 #x76D7) - (#xC5F1 #x6DD8) - (#xC5F2 #x6E6F) - (#xC5F3 #x6D9B) - (#xC5F4 #x706F) - (#xC5F5 #x71C8) - (#xC5F6 #x5F53) - (#xC5F7 #x75D8) - (#xC5F8 #x7977) - (#xC5F9 #x7B49) - (#xC5FA #x7B54) - (#xC5FB #x7B52) - (#xC5FC #x7CD6) - (#xC5FD #x7D71) - (#xC5FE #x5230) - (#xC6A1 #x8463) - (#xC6A2 #x8569) - (#xC6A3 #x85E4) - (#xC6A4 #x8A0E) - (#xC6A5 #x8B04) - (#xC6A6 #x8C46) - (#xC6A7 #x8E0F) - (#xC6A8 #x9003) - (#xC6A9 #x900F) - (#xC6AA #x9419) - (#xC6AB #x9676) - (#xC6AC #x982D) - (#xC6AD #x9A30) - (#xC6AE #x95D8) - (#xC6AF #x50CD) - (#xC6B0 #x52D5) - (#xC6B1 #x540C) - (#xC6B2 #x5802) - (#xC6B3 #x5C0E) - (#xC6B4 #x61A7) - (#xC6B5 #x649E) - (#xC6B6 #x6D1E) - (#xC6B7 #x77B3) - (#xC6B8 #x7AE5) - (#xC6B9 #x80F4) - (#xC6BA #x8404) - (#xC6BB #x9053) - (#xC6BC #x9285) - (#xC6BD #x5CE0) - (#xC6BE #x9D07) - (#xC6BF #x533F) - (#xC6C0 #x5F97) - (#xC6C1 #x5FB3) - (#xC6C2 #x6D9C) - (#xC6C3 #x7279) - (#xC6C4 #x7763) - (#xC6C5 #x79BF) - (#xC6C6 #x7BE4) - (#xC6C7 #x6BD2) - (#xC6C8 #x72EC) - (#xC6C9 #x8AAD) - (#xC6CA #x6803) - (#xC6CB #x6A61) - (#xC6CC #x51F8) - (#xC6CD #x7A81) - (#xC6CE #x6934) - (#xC6CF #x5C4A) - (#xC6D0 #x9CF6) - (#xC6D1 #x82EB) - (#xC6D2 #x5BC5) - (#xC6D3 #x9149) - (#xC6D4 #x701E) - (#xC6D5 #x5678) - (#xC6D6 #x5C6F) - (#xC6D7 #x60C7) - (#xC6D8 #x6566) - (#xC6D9 #x6C8C) - (#xC6DA #x8C5A) - (#xC6DB #x9041) - (#xC6DC #x9813) - (#xC6DD #x5451) - (#xC6DE #x66C7) - (#xC6DF #x920D) - (#xC6E0 #x5948) - (#xC6E1 #x90A3) - (#xC6E2 #x5185) - (#xC6E3 #x4E4D) - (#xC6E4 #x51EA) - (#xC6E5 #x8599) - (#xC6E6 #x8B0E) - (#xC6E7 #x7058) - (#xC6E8 #x637A) - (#xC6E9 #x934B) - (#xC6EA #x6962) - (#xC6EB #x99B4) - (#xC6EC #x7E04) - (#xC6ED #x7577) - (#xC6EE #x5357) - (#xC6EF #x6960) - (#xC6F0 #x8EDF) - (#xC6F1 #x96E3) - (#xC6F2 #x6C5D) - (#xC6F3 #x4E8C) - (#xC6F4 #x5C3C) - (#xC6F5 #x5F10) - (#xC6F6 #x8FE9) - (#xC6F7 #x5302) - (#xC6F8 #x8CD1) - (#xC6F9 #x8089) - (#xC6FA #x8679) - (#xC6FB #x5EFF) - (#xC6FC #x65E5) - (#xC6FD #x4E73) - (#xC6FE #x5165) - (#xC7A1 #x5982) - (#xC7A2 #x5C3F) - (#xC7A3 #x97EE) - (#xC7A4 #x4EFB) - (#xC7A5 #x598A) - (#xC7A6 #x5FCD) - (#xC7A7 #x8A8D) - (#xC7A8 #x6FE1) - (#xC7A9 #x79B0) - (#xC7AA #x7962) - (#xC7AB #x5BE7) - (#xC7AC #x8471) - (#xC7AD #x732B) - (#xC7AE #x71B1) - (#xC7AF #x5E74) - (#xC7B0 #x5FF5) - (#xC7B1 #x637B) - (#xC7B2 #x649A) - (#xC7B3 #x71C3) - (#xC7B4 #x7C98) - (#xC7B5 #x4E43) - (#xC7B6 #x5EFC) - (#xC7B7 #x4E4B) - (#xC7B8 #x57DC) - (#xC7B9 #x56A2) - (#xC7BA #x60A9) - (#xC7BB #x6FC3) - (#xC7BC #x7D0D) - (#xC7BD #x80FD) - (#xC7BE #x8133) - (#xC7BF #x81BF) - (#xC7C0 #x8FB2) - (#xC7C1 #x8997) - (#xC7C2 #x86A4) - (#xC7C3 #x5DF4) - (#xC7C4 #x628A) - (#xC7C5 #x64AD) - (#xC7C6 #x8987) - (#xC7C7 #x6777) - (#xC7C8 #x6CE2) - (#xC7C9 #x6D3E) - (#xC7CA #x7436) - (#xC7CB #x7834) - (#xC7CC #x5A46) - (#xC7CD #x7F75) - (#xC7CE #x82AD) - (#xC7CF #x99AC) - (#xC7D0 #x4FF3) - (#xC7D1 #x5EC3) - (#xC7D2 #x62DD) - (#xC7D3 #x6392) - (#xC7D4 #x6557) - (#xC7D5 #x676F) - (#xC7D6 #x76C3) - (#xC7D7 #x724C) - (#xC7D8 #x80CC) - (#xC7D9 #x80BA) - (#xC7DA #x8F29) - (#xC7DB #x914D) - (#xC7DC #x500D) - (#xC7DD #x57F9) - (#xC7DE #x5A92) - (#xC7DF #x6885) - (#xC7E0 #x6973) - (#xC7E1 #x7164) - (#xC7E2 #x72FD) - (#xC7E3 #x8CB7) - (#xC7E4 #x58F2) - (#xC7E5 #x8CE0) - (#xC7E6 #x966A) - (#xC7E7 #x9019) - (#xC7E8 #x877F) - (#xC7E9 #x79E4) - (#xC7EA #x77E7) - (#xC7EB #x8429) - (#xC7EC #x4F2F) - (#xC7ED #x5265) - (#xC7EE #x535A) - (#xC7EF #x62CD) - (#xC7F0 #x67CF) - (#xC7F1 #x6CCA) - (#xC7F2 #x767D) - (#xC7F3 #x7B94) - (#xC7F4 #x7C95) - (#xC7F5 #x8236) - (#xC7F6 #x8584) - (#xC7F7 #x8FEB) - (#xC7F8 #x66DD) - (#xC7F9 #x6F20) - (#xC7FA #x7206) - (#xC7FB #x7E1B) - (#xC7FC #x83AB) - (#xC7FD #x99C1) - (#xC7FE #x9EA6) - (#xC8A1 #x51FD) - (#xC8A2 #x7BB1) - (#xC8A3 #x7872) - (#xC8A4 #x7BB8) - (#xC8A5 #x8087) - (#xC8A6 #x7B48) - (#xC8A7 #x6AE8) - (#xC8A8 #x5E61) - (#xC8A9 #x808C) - (#xC8AA #x7551) - (#xC8AB #x7560) - (#xC8AC #x516B) - (#xC8AD #x9262) - (#xC8AE #x6E8C) - (#xC8AF #x767A) - (#xC8B0 #x9197) - (#xC8B1 #x9AEA) - (#xC8B2 #x4F10) - (#xC8B3 #x7F70) - (#xC8B4 #x629C) - (#xC8B5 #x7B4F) - (#xC8B6 #x95A5) - (#xC8B7 #x9CE9) - (#xC8B8 #x567A) - (#xC8B9 #x5859) - (#xC8BA #x86E4) - (#xC8BB #x96BC) - (#xC8BC #x4F34) - (#xC8BD #x5224) - (#xC8BE #x534A) - (#xC8BF #x53CD) - (#xC8C0 #x53DB) - (#xC8C1 #x5E06) - (#xC8C2 #x642C) - (#xC8C3 #x6591) - (#xC8C4 #x677F) - (#xC8C5 #x6C3E) - (#xC8C6 #x6C4E) - (#xC8C7 #x7248) - (#xC8C8 #x72AF) - (#xC8C9 #x73ED) - (#xC8CA #x7554) - (#xC8CB #x7E41) - (#xC8CC #x822C) - (#xC8CD #x85E9) - (#xC8CE #x8CA9) - (#xC8CF #x7BC4) - (#xC8D0 #x91C6) - (#xC8D1 #x7169) - (#xC8D2 #x9812) - (#xC8D3 #x98EF) - (#xC8D4 #x633D) - (#xC8D5 #x6669) - (#xC8D6 #x756A) - (#xC8D7 #x76E4) - (#xC8D8 #x78D0) - (#xC8D9 #x8543) - (#xC8DA #x86EE) - (#xC8DB #x532A) - (#xC8DC #x5351) - (#xC8DD #x5426) - (#xC8DE #x5983) - (#xC8DF #x5E87) - (#xC8E0 #x5F7C) - (#xC8E1 #x60B2) - (#xC8E2 #x6249) - (#xC8E3 #x6279) - (#xC8E4 #x62AB) - (#xC8E5 #x6590) - (#xC8E6 #x6BD4) - (#xC8E7 #x6CCC) - (#xC8E8 #x75B2) - (#xC8E9 #x76AE) - (#xC8EA #x7891) - (#xC8EB #x79D8) - (#xC8EC #x7DCB) - (#xC8ED #x7F77) - (#xC8EE #x80A5) - (#xC8EF #x88AB) - (#xC8F0 #x8AB9) - (#xC8F1 #x8CBB) - (#xC8F2 #x907F) - (#xC8F3 #x975E) - (#xC8F4 #x98DB) - (#xC8F5 #x6A0B) - (#xC8F6 #x7C38) - (#xC8F7 #x5099) - (#xC8F8 #x5C3E) - (#xC8F9 #x5FAE) - (#xC8FA #x6787) - (#xC8FB #x6BD8) - (#xC8FC #x7435) - (#xC8FD #x7709) - (#xC8FE #x7F8E) - (#xC9A1 #x9F3B) - (#xC9A2 #x67CA) - (#xC9A3 #x7A17) - (#xC9A4 #x5339) - (#xC9A5 #x758B) - (#xC9A6 #x9AED) - (#xC9A7 #x5F66) - (#xC9A8 #x819D) - (#xC9A9 #x83F1) - (#xC9AA #x8098) - (#xC9AB #x5F3C) - (#xC9AC #x5FC5) - (#xC9AD #x7562) - (#xC9AE #x7B46) - (#xC9AF #x903C) - (#xC9B0 #x6867) - (#xC9B1 #x59EB) - (#xC9B2 #x5A9B) - (#xC9B3 #x7D10) - (#xC9B4 #x767E) - (#xC9B5 #x8B2C) - (#xC9B6 #x4FF5) - (#xC9B7 #x5F6A) - (#xC9B8 #x6A19) - (#xC9B9 #x6C37) - (#xC9BA #x6F02) - (#xC9BB #x74E2) - (#xC9BC #x7968) - (#xC9BD #x8868) - (#xC9BE #x8A55) - (#xC9BF #x8C79) - (#xC9C0 #x5EDF) - (#xC9C1 #x63CF) - (#xC9C2 #x75C5) - (#xC9C3 #x79D2) - (#xC9C4 #x82D7) - (#xC9C5 #x9328) - (#xC9C6 #x92F2) - (#xC9C7 #x849C) - (#xC9C8 #x86ED) - (#xC9C9 #x9C2D) - (#xC9CA #x54C1) - (#xC9CB #x5F6C) - (#xC9CC #x658C) - (#xC9CD #x6D5C) - (#xC9CE #x7015) - (#xC9CF #x8CA7) - (#xC9D0 #x8CD3) - (#xC9D1 #x983B) - (#xC9D2 #x654F) - (#xC9D3 #x74F6) - (#xC9D4 #x4E0D) - (#xC9D5 #x4ED8) - (#xC9D6 #x57E0) - (#xC9D7 #x592B) - (#xC9D8 #x5A66) - (#xC9D9 #x5BCC) - (#xC9DA #x51A8) - (#xC9DB #x5E03) - (#xC9DC #x5E9C) - (#xC9DD #x6016) - (#xC9DE #x6276) - (#xC9DF #x6577) - (#xC9E0 #x65A7) - (#xC9E1 #x666E) - (#xC9E2 #x6D6E) - (#xC9E3 #x7236) - (#xC9E4 #x7B26) - (#xC9E5 #x8150) - (#xC9E6 #x819A) - (#xC9E7 #x8299) - (#xC9E8 #x8B5C) - (#xC9E9 #x8CA0) - (#xC9EA #x8CE6) - (#xC9EB #x8D74) - (#xC9EC #x961C) - (#xC9ED #x9644) - (#xC9EE #x4FAE) - (#xC9EF #x64AB) - (#xC9F0 #x6B66) - (#xC9F1 #x821E) - (#xC9F2 #x8461) - (#xC9F3 #x856A) - (#xC9F4 #x90E8) - (#xC9F5 #x5C01) - (#xC9F6 #x6953) - (#xC9F7 #x98A8) - (#xC9F8 #x847A) - (#xC9F9 #x8557) - (#xC9FA #x4F0F) - (#xC9FB #x526F) - (#xC9FC #x5FA9) - (#xC9FD #x5E45) - (#xC9FE #x670D) - (#xCAA1 #x798F) - (#xCAA2 #x8179) - (#xCAA3 #x8907) - (#xCAA4 #x8986) - (#xCAA5 #x6DF5) - (#xCAA6 #x5F17) - (#xCAA7 #x6255) - (#xCAA8 #x6CB8) - (#xCAA9 #x4ECF) - (#xCAAA #x7269) - (#xCAAB #x9B92) - (#xCAAC #x5206) - (#xCAAD #x543B) - (#xCAAE #x5674) - (#xCAAF #x58B3) - (#xCAB0 #x61A4) - (#xCAB1 #x626E) - (#xCAB2 #x711A) - (#xCAB3 #x596E) - (#xCAB4 #x7C89) - (#xCAB5 #x7CDE) - (#xCAB6 #x7D1B) - (#xCAB7 #x96F0) - (#xCAB8 #x6587) - (#xCAB9 #x805E) - (#xCABA #x4E19) - (#xCABB #x4F75) - (#xCABC #x5175) - (#xCABD #x5840) - (#xCABE #x5E63) - (#xCABF #x5E73) - (#xCAC0 #x5F0A) - (#xCAC1 #x67C4) - (#xCAC2 #x4E26) - (#xCAC3 #x853D) - (#xCAC4 #x9589) - (#xCAC5 #x965B) - (#xCAC6 #x7C73) - (#xCAC7 #x9801) - (#xCAC8 #x50FB) - (#xCAC9 #x58C1) - (#xCACA #x7656) - (#xCACB #x78A7) - (#xCACC #x5225) - (#xCACD #x77A5) - (#xCACE #x8511) - (#xCACF #x7B86) - (#xCAD0 #x504F) - (#xCAD1 #x5909) - (#xCAD2 #x7247) - (#xCAD3 #x7BC7) - (#xCAD4 #x7DE8) - (#xCAD5 #x8FBA) - (#xCAD6 #x8FD4) - (#xCAD7 #x904D) - (#xCAD8 #x4FBF) - (#xCAD9 #x52C9) - (#xCADA #x5A29) - (#xCADB #x5F01) - (#xCADC #x97AD) - (#xCADD #x4FDD) - (#xCADE #x8217) - (#xCADF #x92EA) - (#xCAE0 #x5703) - (#xCAE1 #x6355) - (#xCAE2 #x6B69) - (#xCAE3 #x752B) - (#xCAE4 #x88DC) - (#xCAE5 #x8F14) - (#xCAE6 #x7A42) - (#xCAE7 #x52DF) - (#xCAE8 #x5893) - (#xCAE9 #x6155) - (#xCAEA #x620A) - (#xCAEB #x66AE) - (#xCAEC #x6BCD) - (#xCAED #x7C3F) - (#xCAEE #x83E9) - (#xCAEF #x5023) - (#xCAF0 #x4FF8) - (#xCAF1 #x5305) - (#xCAF2 #x5446) - (#xCAF3 #x5831) - (#xCAF4 #x5949) - (#xCAF5 #x5B9D) - (#xCAF6 #x5CF0) - (#xCAF7 #x5CEF) - (#xCAF8 #x5D29) - (#xCAF9 #x5E96) - (#xCAFA #x62B1) - (#xCAFB #x6367) - (#xCAFC #x653E) - (#xCAFD #x65B9) - (#xCAFE #x670B) - (#xCBA1 #x6CD5) - (#xCBA2 #x6CE1) - (#xCBA3 #x70F9) - (#xCBA4 #x7832) - (#xCBA5 #x7E2B) - (#xCBA6 #x80DE) - (#xCBA7 #x82B3) - (#xCBA8 #x840C) - (#xCBA9 #x84EC) - (#xCBAA #x8702) - (#xCBAB #x8912) - (#xCBAC #x8A2A) - (#xCBAD #x8C4A) - (#xCBAE #x90A6) - (#xCBAF #x92D2) - (#xCBB0 #x98FD) - (#xCBB1 #x9CF3) - (#xCBB2 #x9D6C) - (#xCBB3 #x4E4F) - (#xCBB4 #x4EA1) - (#xCBB5 #x508D) - (#xCBB6 #x5256) - (#xCBB7 #x574A) - (#xCBB8 #x59A8) - (#xCBB9 #x5E3D) - (#xCBBA #x5FD8) - (#xCBBB #x5FD9) - (#xCBBC #x623F) - (#xCBBD #x66B4) - (#xCBBE #x671B) - (#xCBBF #x67D0) - (#xCBC0 #x68D2) - (#xCBC1 #x5192) - (#xCBC2 #x7D21) - (#xCBC3 #x80AA) - (#xCBC4 #x81A8) - (#xCBC5 #x8B00) - (#xCBC6 #x8C8C) - (#xCBC7 #x8CBF) - (#xCBC8 #x927E) - (#xCBC9 #x9632) - (#xCBCA #x5420) - (#xCBCB #x982C) - (#xCBCC #x5317) - (#xCBCD #x50D5) - (#xCBCE #x535C) - (#xCBCF #x58A8) - (#xCBD0 #x64B2) - (#xCBD1 #x6734) - (#xCBD2 #x7267) - (#xCBD3 #x7766) - (#xCBD4 #x7A46) - (#xCBD5 #x91E6) - (#xCBD6 #x52C3) - (#xCBD7 #x6CA1) - (#xCBD8 #x6B86) - (#xCBD9 #x5800) - (#xCBDA #x5E4C) - (#xCBDB #x5954) - (#xCBDC #x672C) - (#xCBDD #x7FFB) - (#xCBDE #x51E1) - (#xCBDF #x76C6) - (#xCBE0 #x6469) - (#xCBE1 #x78E8) - (#xCBE2 #x9B54) - (#xCBE3 #x9EBB) - (#xCBE4 #x57CB) - (#xCBE5 #x59B9) - (#xCBE6 #x6627) - (#xCBE7 #x679A) - (#xCBE8 #x6BCE) - (#xCBE9 #x54E9) - (#xCBEA #x69D9) - (#xCBEB #x5E55) - (#xCBEC #x819C) - (#xCBED #x6795) - (#xCBEE #x9BAA) - (#xCBEF #x67FE) - (#xCBF0 #x9C52) - (#xCBF1 #x685D) - (#xCBF2 #x4EA6) - (#xCBF3 #x4FE3) - (#xCBF4 #x53C8) - (#xCBF5 #x62B9) - (#xCBF6 #x672B) - (#xCBF7 #x6CAB) - (#xCBF8 #x8FC4) - (#xCBF9 #x4FAD) - (#xCBFA #x7E6D) - (#xCBFB #x9EBF) - (#xCBFC #x4E07) - (#xCBFD #x6162) - (#xCBFE #x6E80) - (#xCCA1 #x6F2B) - (#xCCA2 #x8513) - (#xCCA3 #x5473) - (#xCCA4 #x672A) - (#xCCA5 #x9B45) - (#xCCA6 #x5DF3) - (#xCCA7 #x7B95) - (#xCCA8 #x5CAC) - (#xCCA9 #x5BC6) - (#xCCAA #x871C) - (#xCCAB #x6E4A) - (#xCCAC #x84D1) - (#xCCAD #x7A14) - (#xCCAE #x8108) - (#xCCAF #x5999) - (#xCCB0 #x7C8D) - (#xCCB1 #x6C11) - (#xCCB2 #x7720) - (#xCCB3 #x52D9) - (#xCCB4 #x5922) - (#xCCB5 #x7121) - (#xCCB6 #x725F) - (#xCCB7 #x77DB) - (#xCCB8 #x9727) - (#xCCB9 #x9D61) - (#xCCBA #x690B) - (#xCCBB #x5A7F) - (#xCCBC #x5A18) - (#xCCBD #x51A5) - (#xCCBE #x540D) - (#xCCBF #x547D) - (#xCCC0 #x660E) - (#xCCC1 #x76DF) - (#xCCC2 #x8FF7) - (#xCCC3 #x9298) - (#xCCC4 #x9CF4) - (#xCCC5 #x59EA) - (#xCCC6 #x725D) - (#xCCC7 #x6EC5) - (#xCCC8 #x514D) - (#xCCC9 #x68C9) - (#xCCCA #x7DBF) - (#xCCCB #x7DEC) - (#xCCCC #x9762) - (#xCCCD #x9EBA) - (#xCCCE #x6478) - (#xCCCF #x6A21) - (#xCCD0 #x8302) - (#xCCD1 #x5984) - (#xCCD2 #x5B5F) - (#xCCD3 #x6BDB) - (#xCCD4 #x731B) - (#xCCD5 #x76F2) - (#xCCD6 #x7DB2) - (#xCCD7 #x8017) - (#xCCD8 #x8499) - (#xCCD9 #x5132) - (#xCCDA #x6728) - (#xCCDB #x9ED9) - (#xCCDC #x76EE) - (#xCCDD #x6762) - (#xCCDE #x52FF) - (#xCCDF #x9905) - (#xCCE0 #x5C24) - (#xCCE1 #x623B) - (#xCCE2 #x7C7E) - (#xCCE3 #x8CB0) - (#xCCE4 #x554F) - (#xCCE5 #x60B6) - (#xCCE6 #x7D0B) - (#xCCE7 #x9580) - (#xCCE8 #x5301) - (#xCCE9 #x4E5F) - (#xCCEA #x51B6) - (#xCCEB #x591C) - (#xCCEC #x723A) - (#xCCED #x8036) - (#xCCEE #x91CE) - (#xCCEF #x5F25) - (#xCCF0 #x77E2) - (#xCCF1 #x5384) - (#xCCF2 #x5F79) - (#xCCF3 #x7D04) - (#xCCF4 #x85AC) - (#xCCF5 #x8A33) - (#xCCF6 #x8E8D) - (#xCCF7 #x9756) - (#xCCF8 #x67F3) - (#xCCF9 #x85AE) - (#xCCFA #x9453) - (#xCCFB #x6109) - (#xCCFC #x6108) - (#xCCFD #x6CB9) - (#xCCFE #x7652) - (#xCDA1 #x8AED) - (#xCDA2 #x8F38) - (#xCDA3 #x552F) - (#xCDA4 #x4F51) - (#xCDA5 #x512A) - (#xCDA6 #x52C7) - (#xCDA7 #x53CB) - (#xCDA8 #x5BA5) - (#xCDA9 #x5E7D) - (#xCDAA #x60A0) - (#xCDAB #x6182) - (#xCDAC #x63D6) - (#xCDAD #x6709) - (#xCDAE #x67DA) - (#xCDAF #x6E67) - (#xCDB0 #x6D8C) - (#xCDB1 #x7336) - (#xCDB2 #x7337) - (#xCDB3 #x7531) - (#xCDB4 #x7950) - (#xCDB5 #x88D5) - (#xCDB6 #x8A98) - (#xCDB7 #x904A) - (#xCDB8 #x9091) - (#xCDB9 #x90F5) - (#xCDBA #x96C4) - (#xCDBB #x878D) - (#xCDBC #x5915) - (#xCDBD #x4E88) - (#xCDBE #x4F59) - (#xCDBF #x4E0E) - (#xCDC0 #x8A89) - (#xCDC1 #x8F3F) - (#xCDC2 #x9810) - (#xCDC3 #x50AD) - (#xCDC4 #x5E7C) - (#xCDC5 #x5996) - (#xCDC6 #x5BB9) - (#xCDC7 #x5EB8) - (#xCDC8 #x63DA) - (#xCDC9 #x63FA) - (#xCDCA #x64C1) - (#xCDCB #x66DC) - (#xCDCC #x694A) - (#xCDCD #x69D8) - (#xCDCE #x6D0B) - (#xCDCF #x6EB6) - (#xCDD0 #x7194) - (#xCDD1 #x7528) - (#xCDD2 #x7AAF) - (#xCDD3 #x7F8A) - (#xCDD4 #x8000) - (#xCDD5 #x8449) - (#xCDD6 #x84C9) - (#xCDD7 #x8981) - (#xCDD8 #x8B21) - (#xCDD9 #x8E0A) - (#xCDDA #x9065) - (#xCDDB #x967D) - (#xCDDC #x990A) - (#xCDDD #x617E) - (#xCDDE #x6291) - (#xCDDF #x6B32) - (#xCDE0 #x6C83) - (#xCDE1 #x6D74) - (#xCDE2 #x7FCC) - (#xCDE3 #x7FFC) - (#xCDE4 #x6DC0) - (#xCDE5 #x7F85) - (#xCDE6 #x87BA) - (#xCDE7 #x88F8) - (#xCDE8 #x6765) - (#xCDE9 #x83B1) - (#xCDEA #x983C) - (#xCDEB #x96F7) - (#xCDEC #x6D1B) - (#xCDED #x7D61) - (#xCDEE #x843D) - (#xCDEF #x916A) - (#xCDF0 #x4E71) - (#xCDF1 #x5375) - (#xCDF2 #x5D50) - (#xCDF3 #x6B04) - (#xCDF4 #x6FEB) - (#xCDF5 #x85CD) - (#xCDF6 #x862D) - (#xCDF7 #x89A7) - (#xCDF8 #x5229) - (#xCDF9 #x540F) - (#xCDFA #x5C65) - (#xCDFB #x674E) - (#xCDFC #x68A8) - (#xCDFD #x7406) - (#xCDFE #x7483) - (#xCEA1 #x75E2) - (#xCEA2 #x88CF) - (#xCEA3 #x88E1) - (#xCEA4 #x91CC) - (#xCEA5 #x96E2) - (#xCEA6 #x9678) - (#xCEA7 #x5F8B) - (#xCEA8 #x7387) - (#xCEA9 #x7ACB) - (#xCEAA #x844E) - (#xCEAB #x63A0) - (#xCEAC #x7565) - (#xCEAD #x5289) - (#xCEAE #x6D41) - (#xCEAF #x6E9C) - (#xCEB0 #x7409) - (#xCEB1 #x7559) - (#xCEB2 #x786B) - (#xCEB3 #x7C92) - (#xCEB4 #x9686) - (#xCEB5 #x7ADC) - (#xCEB6 #x9F8D) - (#xCEB7 #x4FB6) - (#xCEB8 #x616E) - (#xCEB9 #x65C5) - (#xCEBA #x865C) - (#xCEBB #x4E86) - (#xCEBC #x4EAE) - (#xCEBD #x50DA) - (#xCEBE #x4E21) - (#xCEBF #x51CC) - (#xCEC0 #x5BEE) - (#xCEC1 #x6599) - (#xCEC2 #x6881) - (#xCEC3 #x6DBC) - (#xCEC4 #x731F) - (#xCEC5 #x7642) - (#xCEC6 #x77AD) - (#xCEC7 #x7A1C) - (#xCEC8 #x7CE7) - (#xCEC9 #x826F) - (#xCECA #x8AD2) - (#xCECB #x907C) - (#xCECC #x91CF) - (#xCECD #x9675) - (#xCECE #x9818) - (#xCECF #x529B) - (#xCED0 #x7DD1) - (#xCED1 #x502B) - (#xCED2 #x5398) - (#xCED3 #x6797) - (#xCED4 #x6DCB) - (#xCED5 #x71D0) - (#xCED6 #x7433) - (#xCED7 #x81E8) - (#xCED8 #x8F2A) - (#xCED9 #x96A3) - (#xCEDA #x9C57) - (#xCEDB #x9E9F) - (#xCEDC #x7460) - (#xCEDD #x5841) - (#xCEDE #x6D99) - (#xCEDF #x7D2F) - (#xCEE0 #x985E) - (#xCEE1 #x4EE4) - (#xCEE2 #x4F36) - (#xCEE3 #x4F8B) - (#xCEE4 #x51B7) - (#xCEE5 #x52B1) - (#xCEE6 #x5DBA) - (#xCEE7 #x601C) - (#xCEE8 #x73B2) - (#xCEE9 #x793C) - (#xCEEA #x82D3) - (#xCEEB #x9234) - (#xCEEC #x96B7) - (#xCEED #x96F6) - (#xCEEE #x970A) - (#xCEEF #x9E97) - (#xCEF0 #x9F62) - (#xCEF1 #x66A6) - (#xCEF2 #x6B74) - (#xCEF3 #x5217) - (#xCEF4 #x52A3) - (#xCEF5 #x70C8) - (#xCEF6 #x88C2) - (#xCEF7 #x5EC9) - (#xCEF8 #x604B) - (#xCEF9 #x6190) - (#xCEFA #x6F23) - (#xCEFB #x7149) - (#xCEFC #x7C3E) - (#xCEFD #x7DF4) - (#xCEFE #x806F) - (#xCFA1 #x84EE) - (#xCFA2 #x9023) - (#xCFA3 #x932C) - (#xCFA4 #x5442) - (#xCFA5 #x9B6F) - (#xCFA6 #x6AD3) - (#xCFA7 #x7089) - (#xCFA8 #x8CC2) - (#xCFA9 #x8DEF) - (#xCFAA #x9732) - (#xCFAB #x52B4) - (#xCFAC #x5A41) - (#xCFAD #x5ECA) - (#xCFAE #x5F04) - (#xCFAF #x6717) - (#xCFB0 #x697C) - (#xCFB1 #x6994) - (#xCFB2 #x6D6A) - (#xCFB3 #x6F0F) - (#xCFB4 #x7262) - (#xCFB5 #x72FC) - (#xCFB6 #x7BED) - (#xCFB7 #x8001) - (#xCFB8 #x807E) - (#xCFB9 #x874B) - (#xCFBA #x90CE) - (#xCFBB #x516D) - (#xCFBC #x9E93) - (#xCFBD #x7984) - (#xCFBE #x808B) - (#xCFBF #x9332) - (#xCFC0 #x8AD6) - (#xCFC1 #x502D) - (#xCFC2 #x548C) - (#xCFC3 #x8A71) - (#xCFC4 #x6B6A) - (#xCFC5 #x8CC4) - (#xCFC6 #x8107) - (#xCFC7 #x60D1) - (#xCFC8 #x67A0) - (#xCFC9 #x9DF2) - (#xCFCA #x4E99) - (#xCFCB #x4E98) - (#xCFCC #x9C10) - (#xCFCD #x8A6B) - (#xCFCE #x85C1) - (#xCFCF #x8568) - (#xCFD0 #x6900) - (#xCFD1 #x6E7E) - (#xCFD2 #x7897) - (#xCFD3 #x8155) - (#xD0A1 #x5F0C) - (#xD0A2 #x4E10) - (#xD0A3 #x4E15) - (#xD0A4 #x4E2A) - (#xD0A5 #x4E31) - (#xD0A6 #x4E36) - (#xD0A7 #x4E3C) - (#xD0A8 #x4E3F) - (#xD0A9 #x4E42) - (#xD0AA #x4E56) - (#xD0AB #x4E58) - (#xD0AC #x4E82) - (#xD0AD #x4E85) - (#xD0AE #x8C6B) - (#xD0AF #x4E8A) - (#xD0B0 #x8212) - (#xD0B1 #x5F0D) - (#xD0B2 #x4E8E) - (#xD0B3 #x4E9E) - (#xD0B4 #x4E9F) - (#xD0B5 #x4EA0) - (#xD0B6 #x4EA2) - (#xD0B7 #x4EB0) - (#xD0B8 #x4EB3) - (#xD0B9 #x4EB6) - (#xD0BA #x4ECE) - (#xD0BB #x4ECD) - (#xD0BC #x4EC4) - (#xD0BD #x4EC6) - (#xD0BE #x4EC2) - (#xD0BF #x4ED7) - (#xD0C0 #x4EDE) - (#xD0C1 #x4EED) - (#xD0C2 #x4EDF) - (#xD0C3 #x4EF7) - (#xD0C4 #x4F09) - (#xD0C5 #x4F5A) - (#xD0C6 #x4F30) - (#xD0C7 #x4F5B) - (#xD0C8 #x4F5D) - (#xD0C9 #x4F57) - (#xD0CA #x4F47) - (#xD0CB #x4F76) - (#xD0CC #x4F88) - (#xD0CD #x4F8F) - (#xD0CE #x4F98) - (#xD0CF #x4F7B) - (#xD0D0 #x4F69) - (#xD0D1 #x4F70) - (#xD0D2 #x4F91) - (#xD0D3 #x4F6F) - (#xD0D4 #x4F86) - (#xD0D5 #x4F96) - (#xD0D6 #x5118) - (#xD0D7 #x4FD4) - (#xD0D8 #x4FDF) - (#xD0D9 #x4FCE) - (#xD0DA #x4FD8) - (#xD0DB #x4FDB) - (#xD0DC #x4FD1) - (#xD0DD #x4FDA) - (#xD0DE #x4FD0) - (#xD0DF #x4FE4) - (#xD0E0 #x4FE5) - (#xD0E1 #x501A) - (#xD0E2 #x5028) - (#xD0E3 #x5014) - (#xD0E4 #x502A) - (#xD0E5 #x5025) - (#xD0E6 #x5005) - (#xD0E7 #x4F1C) - (#xD0E8 #x4FF6) - (#xD0E9 #x5021) - (#xD0EA #x5029) - (#xD0EB #x502C) - (#xD0EC #x4FFE) - (#xD0ED #x4FEF) - (#xD0EE #x5011) - (#xD0EF #x5006) - (#xD0F0 #x5043) - (#xD0F1 #x5047) - (#xD0F2 #x6703) - (#xD0F3 #x5055) - (#xD0F4 #x5050) - (#xD0F5 #x5048) - (#xD0F6 #x505A) - (#xD0F7 #x5056) - (#xD0F8 #x506C) - (#xD0F9 #x5078) - (#xD0FA #x5080) - (#xD0FB #x509A) - (#xD0FC #x5085) - (#xD0FD #x50B4) - (#xD0FE #x50B2) - (#xD1A1 #x50C9) - (#xD1A2 #x50CA) - (#xD1A3 #x50B3) - (#xD1A4 #x50C2) - (#xD1A5 #x50D6) - (#xD1A6 #x50DE) - (#xD1A7 #x50E5) - (#xD1A8 #x50ED) - (#xD1A9 #x50E3) - (#xD1AA #x50EE) - (#xD1AB #x50F9) - (#xD1AC #x50F5) - (#xD1AD #x5109) - (#xD1AE #x5101) - (#xD1AF #x5102) - (#xD1B0 #x5116) - (#xD1B1 #x5115) - (#xD1B2 #x5114) - (#xD1B3 #x511A) - (#xD1B4 #x5121) - (#xD1B5 #x513A) - (#xD1B6 #x5137) - (#xD1B7 #x513C) - (#xD1B8 #x513B) - (#xD1B9 #x513F) - (#xD1BA #x5140) - (#xD1BB #x5152) - (#xD1BC #x514C) - (#xD1BD #x5154) - (#xD1BE #x5162) - (#xD1BF #x7AF8) - (#xD1C0 #x5169) - (#xD1C1 #x516A) - (#xD1C2 #x516E) - (#xD1C3 #x5180) - (#xD1C4 #x5182) - (#xD1C5 #x56D8) - (#xD1C6 #x518C) - (#xD1C7 #x5189) - (#xD1C8 #x518F) - (#xD1C9 #x5191) - (#xD1CA #x5193) - (#xD1CB #x5195) - (#xD1CC #x5196) - (#xD1CD #x51A4) - (#xD1CE #x51A6) - (#xD1CF #x51A2) - (#xD1D0 #x51A9) - (#xD1D1 #x51AA) - (#xD1D2 #x51AB) - (#xD1D3 #x51B3) - (#xD1D4 #x51B1) - (#xD1D5 #x51B2) - (#xD1D6 #x51B0) - (#xD1D7 #x51B5) - (#xD1D8 #x51BD) - (#xD1D9 #x51C5) - (#xD1DA #x51C9) - (#xD1DB #x51DB) - (#xD1DC #x51E0) - (#xD1DD #x8655) - (#xD1DE #x51E9) - (#xD1DF #x51ED) - (#xD1E0 #x51F0) - (#xD1E1 #x51F5) - (#xD1E2 #x51FE) - (#xD1E3 #x5204) - (#xD1E4 #x520B) - (#xD1E5 #x5214) - (#xD1E6 #x520E) - (#xD1E7 #x5227) - (#xD1E8 #x522A) - (#xD1E9 #x522E) - (#xD1EA #x5233) - (#xD1EB #x5239) - (#xD1EC #x524F) - (#xD1ED #x5244) - (#xD1EE #x524B) - (#xD1EF #x524C) - (#xD1F0 #x525E) - (#xD1F1 #x5254) - (#xD1F2 #x526A) - (#xD1F3 #x5274) - (#xD1F4 #x5269) - (#xD1F5 #x5273) - (#xD1F6 #x527F) - (#xD1F7 #x527D) - (#xD1F8 #x528D) - (#xD1F9 #x5294) - (#xD1FA #x5292) - (#xD1FB #x5271) - (#xD1FC #x5288) - (#xD1FD #x5291) - (#xD1FE #x8FA8) - (#xD2A1 #x8FA7) - (#xD2A2 #x52AC) - (#xD2A3 #x52AD) - (#xD2A4 #x52BC) - (#xD2A5 #x52B5) - (#xD2A6 #x52C1) - (#xD2A7 #x52CD) - (#xD2A8 #x52D7) - (#xD2A9 #x52DE) - (#xD2AA #x52E3) - (#xD2AB #x52E6) - (#xD2AC #x98ED) - (#xD2AD #x52E0) - (#xD2AE #x52F3) - (#xD2AF #x52F5) - (#xD2B0 #x52F8) - (#xD2B1 #x52F9) - (#xD2B2 #x5306) - (#xD2B3 #x5308) - (#xD2B4 #x7538) - (#xD2B5 #x530D) - (#xD2B6 #x5310) - (#xD2B7 #x530F) - (#xD2B8 #x5315) - (#xD2B9 #x531A) - (#xD2BA #x5323) - (#xD2BB #x532F) - (#xD2BC #x5331) - (#xD2BD #x5333) - (#xD2BE #x5338) - (#xD2BF #x5340) - (#xD2C0 #x5346) - (#xD2C1 #x5345) - (#xD2C2 #x4E17) - (#xD2C3 #x5349) - (#xD2C4 #x534D) - (#xD2C5 #x51D6) - (#xD2C6 #x535E) - (#xD2C7 #x5369) - (#xD2C8 #x536E) - (#xD2C9 #x5918) - (#xD2CA #x537B) - (#xD2CB #x5377) - (#xD2CC #x5382) - (#xD2CD #x5396) - (#xD2CE #x53A0) - (#xD2CF #x53A6) - (#xD2D0 #x53A5) - (#xD2D1 #x53AE) - (#xD2D2 #x53B0) - (#xD2D3 #x53B6) - (#xD2D4 #x53C3) - (#xD2D5 #x7C12) - (#xD2D6 #x96D9) - (#xD2D7 #x53DF) - (#xD2D8 #x66FC) - (#xD2D9 #x71EE) - (#xD2DA #x53EE) - (#xD2DB #x53E8) - (#xD2DC #x53ED) - (#xD2DD #x53FA) - (#xD2DE #x5401) - (#xD2DF #x543D) - (#xD2E0 #x5440) - (#xD2E1 #x542C) - (#xD2E2 #x542D) - (#xD2E3 #x543C) - (#xD2E4 #x542E) - (#xD2E5 #x5436) - (#xD2E6 #x5429) - (#xD2E7 #x541D) - (#xD2E8 #x544E) - (#xD2E9 #x548F) - (#xD2EA #x5475) - (#xD2EB #x548E) - (#xD2EC #x545F) - (#xD2ED #x5471) - (#xD2EE #x5477) - (#xD2EF #x5470) - (#xD2F0 #x5492) - (#xD2F1 #x547B) - (#xD2F2 #x5480) - (#xD2F3 #x5476) - (#xD2F4 #x5484) - (#xD2F5 #x5490) - (#xD2F6 #x5486) - (#xD2F7 #x54C7) - (#xD2F8 #x54A2) - (#xD2F9 #x54B8) - (#xD2FA #x54A5) - (#xD2FB #x54AC) - (#xD2FC #x54C4) - (#xD2FD #x54C8) - (#xD2FE #x54A8) - (#xD3A1 #x54AB) - (#xD3A2 #x54C2) - (#xD3A3 #x54A4) - (#xD3A4 #x54BE) - (#xD3A5 #x54BC) - (#xD3A6 #x54D8) - (#xD3A7 #x54E5) - (#xD3A8 #x54E6) - (#xD3A9 #x550F) - (#xD3AA #x5514) - (#xD3AB #x54FD) - (#xD3AC #x54EE) - (#xD3AD #x54ED) - (#xD3AE #x54FA) - (#xD3AF #x54E2) - (#xD3B0 #x5539) - (#xD3B1 #x5540) - (#xD3B2 #x5563) - (#xD3B3 #x554C) - (#xD3B4 #x552E) - (#xD3B5 #x555C) - (#xD3B6 #x5545) - (#xD3B7 #x5556) - (#xD3B8 #x5557) - (#xD3B9 #x5538) - (#xD3BA #x5533) - (#xD3BB #x555D) - (#xD3BC #x5599) - (#xD3BD #x5580) - (#xD3BE #x54AF) - (#xD3BF #x558A) - (#xD3C0 #x559F) - (#xD3C1 #x557B) - (#xD3C2 #x557E) - (#xD3C3 #x5598) - (#xD3C4 #x559E) - (#xD3C5 #x55AE) - (#xD3C6 #x557C) - (#xD3C7 #x5583) - (#xD3C8 #x55A9) - (#xD3C9 #x5587) - (#xD3CA #x55A8) - (#xD3CB #x55DA) - (#xD3CC #x55C5) - (#xD3CD #x55DF) - (#xD3CE #x55C4) - (#xD3CF #x55DC) - (#xD3D0 #x55E4) - (#xD3D1 #x55D4) - (#xD3D2 #x5614) - (#xD3D3 #x55F7) - (#xD3D4 #x5616) - (#xD3D5 #x55FE) - (#xD3D6 #x55FD) - (#xD3D7 #x561B) - (#xD3D8 #x55F9) - (#xD3D9 #x564E) - (#xD3DA #x5650) - (#xD3DB #x71DF) - (#xD3DC #x5634) - (#xD3DD #x5636) - (#xD3DE #x5632) - (#xD3DF #x5638) - (#xD3E0 #x566B) - (#xD3E1 #x5664) - (#xD3E2 #x562F) - (#xD3E3 #x566C) - (#xD3E4 #x566A) - (#xD3E5 #x5686) - (#xD3E6 #x5680) - (#xD3E7 #x568A) - (#xD3E8 #x56A0) - (#xD3E9 #x5694) - (#xD3EA #x568F) - (#xD3EB #x56A5) - (#xD3EC #x56AE) - (#xD3ED #x56B6) - (#xD3EE #x56B4) - (#xD3EF #x56C2) - (#xD3F0 #x56BC) - (#xD3F1 #x56C1) - (#xD3F2 #x56C3) - (#xD3F3 #x56C0) - (#xD3F4 #x56C8) - (#xD3F5 #x56CE) - (#xD3F6 #x56D1) - (#xD3F7 #x56D3) - (#xD3F8 #x56D7) - (#xD3F9 #x56EE) - (#xD3FA #x56F9) - (#xD3FB #x5700) - (#xD3FC #x56FF) - (#xD3FD #x5704) - (#xD3FE #x5709) - (#xD4A1 #x5708) - (#xD4A2 #x570B) - (#xD4A3 #x570D) - (#xD4A4 #x5713) - (#xD4A5 #x5718) - (#xD4A6 #x5716) - (#xD4A7 #x55C7) - (#xD4A8 #x571C) - (#xD4A9 #x5726) - (#xD4AA #x5737) - (#xD4AB #x5738) - (#xD4AC #x574E) - (#xD4AD #x573B) - (#xD4AE #x5740) - (#xD4AF #x574F) - (#xD4B0 #x5769) - (#xD4B1 #x57C0) - (#xD4B2 #x5788) - (#xD4B3 #x5761) - (#xD4B4 #x577F) - (#xD4B5 #x5789) - (#xD4B6 #x5793) - (#xD4B7 #x57A0) - (#xD4B8 #x57B3) - (#xD4B9 #x57A4) - (#xD4BA #x57AA) - (#xD4BB #x57B0) - (#xD4BC #x57C3) - (#xD4BD #x57C6) - (#xD4BE #x57D4) - (#xD4BF #x57D2) - (#xD4C0 #x57D3) - (#xD4C1 #x580A) - (#xD4C2 #x57D6) - (#xD4C3 #x57E3) - (#xD4C4 #x580B) - (#xD4C5 #x5819) - (#xD4C6 #x581D) - (#xD4C7 #x5872) - (#xD4C8 #x5821) - (#xD4C9 #x5862) - (#xD4CA #x584B) - (#xD4CB #x5870) - (#xD4CC #x6BC0) - (#xD4CD #x5852) - (#xD4CE #x583D) - (#xD4CF #x5879) - (#xD4D0 #x5885) - (#xD4D1 #x58B9) - (#xD4D2 #x589F) - (#xD4D3 #x58AB) - (#xD4D4 #x58BA) - (#xD4D5 #x58DE) - (#xD4D6 #x58BB) - (#xD4D7 #x58B8) - (#xD4D8 #x58AE) - (#xD4D9 #x58C5) - (#xD4DA #x58D3) - (#xD4DB #x58D1) - (#xD4DC #x58D7) - (#xD4DD #x58D9) - (#xD4DE #x58D8) - (#xD4DF #x58E5) - (#xD4E0 #x58DC) - (#xD4E1 #x58E4) - (#xD4E2 #x58DF) - (#xD4E3 #x58EF) - (#xD4E4 #x58FA) - (#xD4E5 #x58F9) - (#xD4E6 #x58FB) - (#xD4E7 #x58FC) - (#xD4E8 #x58FD) - (#xD4E9 #x5902) - (#xD4EA #x590A) - (#xD4EB #x5910) - (#xD4EC #x591B) - (#xD4ED #x68A6) - (#xD4EE #x5925) - (#xD4EF #x592C) - (#xD4F0 #x592D) - (#xD4F1 #x5932) - (#xD4F2 #x5938) - (#xD4F3 #x593E) - (#xD4F4 #x7AD2) - (#xD4F5 #x5955) - (#xD4F6 #x5950) - (#xD4F7 #x594E) - (#xD4F8 #x595A) - (#xD4F9 #x5958) - (#xD4FA #x5962) - (#xD4FB #x5960) - (#xD4FC #x5967) - (#xD4FD #x596C) - (#xD4FE #x5969) - (#xD5A1 #x5978) - (#xD5A2 #x5981) - (#xD5A3 #x599D) - (#xD5A4 #x4F5E) - (#xD5A5 #x4FAB) - (#xD5A6 #x59A3) - (#xD5A7 #x59B2) - (#xD5A8 #x59C6) - (#xD5A9 #x59E8) - (#xD5AA #x59DC) - (#xD5AB #x598D) - (#xD5AC #x59D9) - (#xD5AD #x59DA) - (#xD5AE #x5A25) - (#xD5AF #x5A1F) - (#xD5B0 #x5A11) - (#xD5B1 #x5A1C) - (#xD5B2 #x5A09) - (#xD5B3 #x5A1A) - (#xD5B4 #x5A40) - (#xD5B5 #x5A6C) - (#xD5B6 #x5A49) - (#xD5B7 #x5A35) - (#xD5B8 #x5A36) - (#xD5B9 #x5A62) - (#xD5BA #x5A6A) - (#xD5BB #x5A9A) - (#xD5BC #x5ABC) - (#xD5BD #x5ABE) - (#xD5BE #x5ACB) - (#xD5BF #x5AC2) - (#xD5C0 #x5ABD) - (#xD5C1 #x5AE3) - (#xD5C2 #x5AD7) - (#xD5C3 #x5AE6) - (#xD5C4 #x5AE9) - (#xD5C5 #x5AD6) - (#xD5C6 #x5AFA) - (#xD5C7 #x5AFB) - (#xD5C8 #x5B0C) - (#xD5C9 #x5B0B) - (#xD5CA #x5B16) - (#xD5CB #x5B32) - (#xD5CC #x5AD0) - (#xD5CD #x5B2A) - (#xD5CE #x5B36) - (#xD5CF #x5B3E) - (#xD5D0 #x5B43) - (#xD5D1 #x5B45) - (#xD5D2 #x5B40) - (#xD5D3 #x5B51) - (#xD5D4 #x5B55) - (#xD5D5 #x5B5A) - (#xD5D6 #x5B5B) - (#xD5D7 #x5B65) - (#xD5D8 #x5B69) - (#xD5D9 #x5B70) - (#xD5DA #x5B73) - (#xD5DB #x5B75) - (#xD5DC #x5B78) - (#xD5DD #x6588) - (#xD5DE #x5B7A) - (#xD5DF #x5B80) - (#xD5E0 #x5B83) - (#xD5E1 #x5BA6) - (#xD5E2 #x5BB8) - (#xD5E3 #x5BC3) - (#xD5E4 #x5BC7) - (#xD5E5 #x5BC9) - (#xD5E6 #x5BD4) - (#xD5E7 #x5BD0) - (#xD5E8 #x5BE4) - (#xD5E9 #x5BE6) - (#xD5EA #x5BE2) - (#xD5EB #x5BDE) - (#xD5EC #x5BE5) - (#xD5ED #x5BEB) - (#xD5EE #x5BF0) - (#xD5EF #x5BF6) - (#xD5F0 #x5BF3) - (#xD5F1 #x5C05) - (#xD5F2 #x5C07) - (#xD5F3 #x5C08) - (#xD5F4 #x5C0D) - (#xD5F5 #x5C13) - (#xD5F6 #x5C20) - (#xD5F7 #x5C22) - (#xD5F8 #x5C28) - (#xD5F9 #x5C38) - (#xD5FA #x5C39) - (#xD5FB #x5C41) - (#xD5FC #x5C46) - (#xD5FD #x5C4E) - (#xD5FE #x5C53) - (#xD6A1 #x5C50) - (#xD6A2 #x5C4F) - (#xD6A3 #x5B71) - (#xD6A4 #x5C6C) - (#xD6A5 #x5C6E) - (#xD6A6 #x4E62) - (#xD6A7 #x5C76) - (#xD6A8 #x5C79) - (#xD6A9 #x5C8C) - (#xD6AA #x5C91) - (#xD6AB #x5C94) - (#xD6AC #x599B) - (#xD6AD #x5CAB) - (#xD6AE #x5CBB) - (#xD6AF #x5CB6) - (#xD6B0 #x5CBC) - (#xD6B1 #x5CB7) - (#xD6B2 #x5CC5) - (#xD6B3 #x5CBE) - (#xD6B4 #x5CC7) - (#xD6B5 #x5CD9) - (#xD6B6 #x5CE9) - (#xD6B7 #x5CFD) - (#xD6B8 #x5CFA) - (#xD6B9 #x5CED) - (#xD6BA #x5D8C) - (#xD6BB #x5CEA) - (#xD6BC #x5D0B) - (#xD6BD #x5D15) - (#xD6BE #x5D17) - (#xD6BF #x5D5C) - (#xD6C0 #x5D1F) - (#xD6C1 #x5D1B) - (#xD6C2 #x5D11) - (#xD6C3 #x5D14) - (#xD6C4 #x5D22) - (#xD6C5 #x5D1A) - (#xD6C6 #x5D19) - (#xD6C7 #x5D18) - (#xD6C8 #x5D4C) - (#xD6C9 #x5D52) - (#xD6CA #x5D4E) - (#xD6CB #x5D4B) - (#xD6CC #x5D6C) - (#xD6CD #x5D73) - (#xD6CE #x5D76) - (#xD6CF #x5D87) - (#xD6D0 #x5D84) - (#xD6D1 #x5D82) - (#xD6D2 #x5DA2) - (#xD6D3 #x5D9D) - (#xD6D4 #x5DAC) - (#xD6D5 #x5DAE) - (#xD6D6 #x5DBD) - (#xD6D7 #x5D90) - (#xD6D8 #x5DB7) - (#xD6D9 #x5DBC) - (#xD6DA #x5DC9) - (#xD6DB #x5DCD) - (#xD6DC #x5DD3) - (#xD6DD #x5DD2) - (#xD6DE #x5DD6) - (#xD6DF #x5DDB) - (#xD6E0 #x5DEB) - (#xD6E1 #x5DF2) - (#xD6E2 #x5DF5) - (#xD6E3 #x5E0B) - (#xD6E4 #x5E1A) - (#xD6E5 #x5E19) - (#xD6E6 #x5E11) - (#xD6E7 #x5E1B) - (#xD6E8 #x5E36) - (#xD6E9 #x5E37) - (#xD6EA #x5E44) - (#xD6EB #x5E43) - (#xD6EC #x5E40) - (#xD6ED #x5E4E) - (#xD6EE #x5E57) - (#xD6EF #x5E54) - (#xD6F0 #x5E5F) - (#xD6F1 #x5E62) - (#xD6F2 #x5E64) - (#xD6F3 #x5E47) - (#xD6F4 #x5E75) - (#xD6F5 #x5E76) - (#xD6F6 #x5E7A) - (#xD6F7 #x9EBC) - (#xD6F8 #x5E7F) - (#xD6F9 #x5EA0) - (#xD6FA #x5EC1) - (#xD6FB #x5EC2) - (#xD6FC #x5EC8) - (#xD6FD #x5ED0) - (#xD6FE #x5ECF) - (#xD7A1 #x5ED6) - (#xD7A2 #x5EE3) - (#xD7A3 #x5EDD) - (#xD7A4 #x5EDA) - (#xD7A5 #x5EDB) - (#xD7A6 #x5EE2) - (#xD7A7 #x5EE1) - (#xD7A8 #x5EE8) - (#xD7A9 #x5EE9) - (#xD7AA #x5EEC) - (#xD7AB #x5EF1) - (#xD7AC #x5EF3) - (#xD7AD #x5EF0) - (#xD7AE #x5EF4) - (#xD7AF #x5EF8) - (#xD7B0 #x5EFE) - (#xD7B1 #x5F03) - (#xD7B2 #x5F09) - (#xD7B3 #x5F5D) - (#xD7B4 #x5F5C) - (#xD7B5 #x5F0B) - (#xD7B6 #x5F11) - (#xD7B7 #x5F16) - (#xD7B8 #x5F29) - (#xD7B9 #x5F2D) - (#xD7BA #x5F38) - (#xD7BB #x5F41) - (#xD7BC #x5F48) - (#xD7BD #x5F4C) - (#xD7BE #x5F4E) - (#xD7BF #x5F2F) - (#xD7C0 #x5F51) - (#xD7C1 #x5F56) - (#xD7C2 #x5F57) - (#xD7C3 #x5F59) - (#xD7C4 #x5F61) - (#xD7C5 #x5F6D) - (#xD7C6 #x5F73) - (#xD7C7 #x5F77) - (#xD7C8 #x5F83) - (#xD7C9 #x5F82) - (#xD7CA #x5F7F) - (#xD7CB #x5F8A) - (#xD7CC #x5F88) - (#xD7CD #x5F91) - (#xD7CE #x5F87) - (#xD7CF #x5F9E) - (#xD7D0 #x5F99) - (#xD7D1 #x5F98) - (#xD7D2 #x5FA0) - (#xD7D3 #x5FA8) - (#xD7D4 #x5FAD) - (#xD7D5 #x5FBC) - (#xD7D6 #x5FD6) - (#xD7D7 #x5FFB) - (#xD7D8 #x5FE4) - (#xD7D9 #x5FF8) - (#xD7DA #x5FF1) - (#xD7DB #x5FDD) - (#xD7DC #x60B3) - (#xD7DD #x5FFF) - (#xD7DE #x6021) - (#xD7DF #x6060) - (#xD7E0 #x6019) - (#xD7E1 #x6010) - (#xD7E2 #x6029) - (#xD7E3 #x600E) - (#xD7E4 #x6031) - (#xD7E5 #x601B) - (#xD7E6 #x6015) - (#xD7E7 #x602B) - (#xD7E8 #x6026) - (#xD7E9 #x600F) - (#xD7EA #x603A) - (#xD7EB #x605A) - (#xD7EC #x6041) - (#xD7ED #x606A) - (#xD7EE #x6077) - (#xD7EF #x605F) - (#xD7F0 #x604A) - (#xD7F1 #x6046) - (#xD7F2 #x604D) - (#xD7F3 #x6063) - (#xD7F4 #x6043) - (#xD7F5 #x6064) - (#xD7F6 #x6042) - (#xD7F7 #x606C) - (#xD7F8 #x606B) - (#xD7F9 #x6059) - (#xD7FA #x6081) - (#xD7FB #x608D) - (#xD7FC #x60E7) - (#xD7FD #x6083) - (#xD7FE #x609A) - (#xD8A1 #x6084) - (#xD8A2 #x609B) - (#xD8A3 #x6096) - (#xD8A4 #x6097) - (#xD8A5 #x6092) - (#xD8A6 #x60A7) - (#xD8A7 #x608B) - (#xD8A8 #x60E1) - (#xD8A9 #x60B8) - (#xD8AA #x60E0) - (#xD8AB #x60D3) - (#xD8AC #x60B4) - (#xD8AD #x5FF0) - (#xD8AE #x60BD) - (#xD8AF #x60C6) - (#xD8B0 #x60B5) - (#xD8B1 #x60D8) - (#xD8B2 #x614D) - (#xD8B3 #x6115) - (#xD8B4 #x6106) - (#xD8B5 #x60F6) - (#xD8B6 #x60F7) - (#xD8B7 #x6100) - (#xD8B8 #x60F4) - (#xD8B9 #x60FA) - (#xD8BA #x6103) - (#xD8BB #x6121) - (#xD8BC #x60FB) - (#xD8BD #x60F1) - (#xD8BE #x610D) - (#xD8BF #x610E) - (#xD8C0 #x6147) - (#xD8C1 #x613E) - (#xD8C2 #x6128) - (#xD8C3 #x6127) - (#xD8C4 #x614A) - (#xD8C5 #x613F) - (#xD8C6 #x613C) - (#xD8C7 #x612C) - (#xD8C8 #x6134) - (#xD8C9 #x613D) - (#xD8CA #x6142) - (#xD8CB #x6144) - (#xD8CC #x6173) - (#xD8CD #x6177) - (#xD8CE #x6158) - (#xD8CF #x6159) - (#xD8D0 #x615A) - (#xD8D1 #x616B) - (#xD8D2 #x6174) - (#xD8D3 #x616F) - (#xD8D4 #x6165) - (#xD8D5 #x6171) - (#xD8D6 #x615F) - (#xD8D7 #x615D) - (#xD8D8 #x6153) - (#xD8D9 #x6175) - (#xD8DA #x6199) - (#xD8DB #x6196) - (#xD8DC #x6187) - (#xD8DD #x61AC) - (#xD8DE #x6194) - (#xD8DF #x619A) - (#xD8E0 #x618A) - (#xD8E1 #x6191) - (#xD8E2 #x61AB) - (#xD8E3 #x61AE) - (#xD8E4 #x61CC) - (#xD8E5 #x61CA) - (#xD8E6 #x61C9) - (#xD8E7 #x61F7) - (#xD8E8 #x61C8) - (#xD8E9 #x61C3) - (#xD8EA #x61C6) - (#xD8EB #x61BA) - (#xD8EC #x61CB) - (#xD8ED #x7F79) - (#xD8EE #x61CD) - (#xD8EF #x61E6) - (#xD8F0 #x61E3) - (#xD8F1 #x61F6) - (#xD8F2 #x61FA) - (#xD8F3 #x61F4) - (#xD8F4 #x61FF) - (#xD8F5 #x61FD) - (#xD8F6 #x61FC) - (#xD8F7 #x61FE) - (#xD8F8 #x6200) - (#xD8F9 #x6208) - (#xD8FA #x6209) - (#xD8FB #x620D) - (#xD8FC #x620C) - (#xD8FD #x6214) - (#xD8FE #x621B) - (#xD9A1 #x621E) - (#xD9A2 #x6221) - (#xD9A3 #x622A) - (#xD9A4 #x622E) - (#xD9A5 #x6230) - (#xD9A6 #x6232) - (#xD9A7 #x6233) - (#xD9A8 #x6241) - (#xD9A9 #x624E) - (#xD9AA #x625E) - (#xD9AB #x6263) - (#xD9AC #x625B) - (#xD9AD #x6260) - (#xD9AE #x6268) - (#xD9AF #x627C) - (#xD9B0 #x6282) - (#xD9B1 #x6289) - (#xD9B2 #x627E) - (#xD9B3 #x6292) - (#xD9B4 #x6293) - (#xD9B5 #x6296) - (#xD9B6 #x62D4) - (#xD9B7 #x6283) - (#xD9B8 #x6294) - (#xD9B9 #x62D7) - (#xD9BA #x62D1) - (#xD9BB #x62BB) - (#xD9BC #x62CF) - (#xD9BD #x62FF) - (#xD9BE #x62C6) - (#xD9BF #x64D4) - (#xD9C0 #x62C8) - (#xD9C1 #x62DC) - (#xD9C2 #x62CC) - (#xD9C3 #x62CA) - (#xD9C4 #x62C2) - (#xD9C5 #x62C7) - (#xD9C6 #x629B) - (#xD9C7 #x62C9) - (#xD9C8 #x630C) - (#xD9C9 #x62EE) - (#xD9CA #x62F1) - (#xD9CB #x6327) - (#xD9CC #x6302) - (#xD9CD #x6308) - (#xD9CE #x62EF) - (#xD9CF #x62F5) - (#xD9D0 #x6350) - (#xD9D1 #x633E) - (#xD9D2 #x634D) - (#xD9D3 #x641C) - (#xD9D4 #x634F) - (#xD9D5 #x6396) - (#xD9D6 #x638E) - (#xD9D7 #x6380) - (#xD9D8 #x63AB) - (#xD9D9 #x6376) - (#xD9DA #x63A3) - (#xD9DB #x638F) - (#xD9DC #x6389) - (#xD9DD #x639F) - (#xD9DE #x63B5) - (#xD9DF #x636B) - (#xD9E0 #x6369) - (#xD9E1 #x63BE) - (#xD9E2 #x63E9) - (#xD9E3 #x63C0) - (#xD9E4 #x63C6) - (#xD9E5 #x63E3) - (#xD9E6 #x63C9) - (#xD9E7 #x63D2) - (#xD9E8 #x63F6) - (#xD9E9 #x63C4) - (#xD9EA #x6416) - (#xD9EB #x6434) - (#xD9EC #x6406) - (#xD9ED #x6413) - (#xD9EE #x6426) - (#xD9EF #x6436) - (#xD9F0 #x651D) - (#xD9F1 #x6417) - (#xD9F2 #x6428) - (#xD9F3 #x640F) - (#xD9F4 #x6467) - (#xD9F5 #x646F) - (#xD9F6 #x6476) - (#xD9F7 #x644E) - (#xD9F8 #x652A) - (#xD9F9 #x6495) - (#xD9FA #x6493) - (#xD9FB #x64A5) - (#xD9FC #x64A9) - (#xD9FD #x6488) - (#xD9FE #x64BC) - (#xDAA1 #x64DA) - (#xDAA2 #x64D2) - (#xDAA3 #x64C5) - (#xDAA4 #x64C7) - (#xDAA5 #x64BB) - (#xDAA6 #x64D8) - (#xDAA7 #x64C2) - (#xDAA8 #x64F1) - (#xDAA9 #x64E7) - (#xDAAA #x8209) - (#xDAAB #x64E0) - (#xDAAC #x64E1) - (#xDAAD #x62AC) - (#xDAAE #x64E3) - (#xDAAF #x64EF) - (#xDAB0 #x652C) - (#xDAB1 #x64F6) - (#xDAB2 #x64F4) - (#xDAB3 #x64F2) - (#xDAB4 #x64FA) - (#xDAB5 #x6500) - (#xDAB6 #x64FD) - (#xDAB7 #x6518) - (#xDAB8 #x651C) - (#xDAB9 #x6505) - (#xDABA #x6524) - (#xDABB #x6523) - (#xDABC #x652B) - (#xDABD #x6534) - (#xDABE #x6535) - (#xDABF #x6537) - (#xDAC0 #x6536) - (#xDAC1 #x6538) - (#xDAC2 #x754B) - (#xDAC3 #x6548) - (#xDAC4 #x6556) - (#xDAC5 #x6555) - (#xDAC6 #x654D) - (#xDAC7 #x6558) - (#xDAC8 #x655E) - (#xDAC9 #x655D) - (#xDACA #x6572) - (#xDACB #x6578) - (#xDACC #x6582) - (#xDACD #x6583) - (#xDACE #x8B8A) - (#xDACF #x659B) - (#xDAD0 #x659F) - (#xDAD1 #x65AB) - (#xDAD2 #x65B7) - (#xDAD3 #x65C3) - (#xDAD4 #x65C6) - (#xDAD5 #x65C1) - (#xDAD6 #x65C4) - (#xDAD7 #x65CC) - (#xDAD8 #x65D2) - (#xDAD9 #x65DB) - (#xDADA #x65D9) - (#xDADB #x65E0) - (#xDADC #x65E1) - (#xDADD #x65F1) - (#xDADE #x6772) - (#xDADF #x660A) - (#xDAE0 #x6603) - (#xDAE1 #x65FB) - (#xDAE2 #x6773) - (#xDAE3 #x6635) - (#xDAE4 #x6636) - (#xDAE5 #x6634) - (#xDAE6 #x661C) - (#xDAE7 #x664F) - (#xDAE8 #x6644) - (#xDAE9 #x6649) - (#xDAEA #x6641) - (#xDAEB #x665E) - (#xDAEC #x665D) - (#xDAED #x6664) - (#xDAEE #x6667) - (#xDAEF #x6668) - (#xDAF0 #x665F) - (#xDAF1 #x6662) - (#xDAF2 #x6670) - (#xDAF3 #x6683) - (#xDAF4 #x6688) - (#xDAF5 #x668E) - (#xDAF6 #x6689) - (#xDAF7 #x6684) - (#xDAF8 #x6698) - (#xDAF9 #x669D) - (#xDAFA #x66C1) - (#xDAFB #x66B9) - (#xDAFC #x66C9) - (#xDAFD #x66BE) - (#xDAFE #x66BC) - (#xDBA1 #x66C4) - (#xDBA2 #x66B8) - (#xDBA3 #x66D6) - (#xDBA4 #x66DA) - (#xDBA5 #x66E0) - (#xDBA6 #x663F) - (#xDBA7 #x66E6) - (#xDBA8 #x66E9) - (#xDBA9 #x66F0) - (#xDBAA #x66F5) - (#xDBAB #x66F7) - (#xDBAC #x670F) - (#xDBAD #x6716) - (#xDBAE #x671E) - (#xDBAF #x6726) - (#xDBB0 #x6727) - (#xDBB1 #x9738) - (#xDBB2 #x672E) - (#xDBB3 #x673F) - (#xDBB4 #x6736) - (#xDBB5 #x6741) - (#xDBB6 #x6738) - (#xDBB7 #x6737) - (#xDBB8 #x6746) - (#xDBB9 #x675E) - (#xDBBA #x6760) - (#xDBBB #x6759) - (#xDBBC #x6763) - (#xDBBD #x6764) - (#xDBBE #x6789) - (#xDBBF #x6770) - (#xDBC0 #x67A9) - (#xDBC1 #x677C) - (#xDBC2 #x676A) - (#xDBC3 #x678C) - (#xDBC4 #x678B) - (#xDBC5 #x67A6) - (#xDBC6 #x67A1) - (#xDBC7 #x6785) - (#xDBC8 #x67B7) - (#xDBC9 #x67EF) - (#xDBCA #x67B4) - (#xDBCB #x67EC) - (#xDBCC #x67B3) - (#xDBCD #x67E9) - (#xDBCE #x67B8) - (#xDBCF #x67E4) - (#xDBD0 #x67DE) - (#xDBD1 #x67DD) - (#xDBD2 #x67E2) - (#xDBD3 #x67EE) - (#xDBD4 #x67B9) - (#xDBD5 #x67CE) - (#xDBD6 #x67C6) - (#xDBD7 #x67E7) - (#xDBD8 #x6A9C) - (#xDBD9 #x681E) - (#xDBDA #x6846) - (#xDBDB #x6829) - (#xDBDC #x6840) - (#xDBDD #x684D) - (#xDBDE #x6832) - (#xDBDF #x684E) - (#xDBE0 #x68B3) - (#xDBE1 #x682B) - (#xDBE2 #x6859) - (#xDBE3 #x6863) - (#xDBE4 #x6877) - (#xDBE5 #x687F) - (#xDBE6 #x689F) - (#xDBE7 #x688F) - (#xDBE8 #x68AD) - (#xDBE9 #x6894) - (#xDBEA #x689D) - (#xDBEB #x689B) - (#xDBEC #x6883) - (#xDBED #x6AAE) - (#xDBEE #x68B9) - (#xDBEF #x6874) - (#xDBF0 #x68B5) - (#xDBF1 #x68A0) - (#xDBF2 #x68BA) - (#xDBF3 #x690F) - (#xDBF4 #x688D) - (#xDBF5 #x687E) - (#xDBF6 #x6901) - (#xDBF7 #x68CA) - (#xDBF8 #x6908) - (#xDBF9 #x68D8) - (#xDBFA #x6922) - (#xDBFB #x6926) - (#xDBFC #x68E1) - (#xDBFD #x690C) - (#xDBFE #x68CD) - (#xDCA1 #x68D4) - (#xDCA2 #x68E7) - (#xDCA3 #x68D5) - (#xDCA4 #x6936) - (#xDCA5 #x6912) - (#xDCA6 #x6904) - (#xDCA7 #x68D7) - (#xDCA8 #x68E3) - (#xDCA9 #x6925) - (#xDCAA #x68F9) - (#xDCAB #x68E0) - (#xDCAC #x68EF) - (#xDCAD #x6928) - (#xDCAE #x692A) - (#xDCAF #x691A) - (#xDCB0 #x6923) - (#xDCB1 #x6921) - (#xDCB2 #x68C6) - (#xDCB3 #x6979) - (#xDCB4 #x6977) - (#xDCB5 #x695C) - (#xDCB6 #x6978) - (#xDCB7 #x696B) - (#xDCB8 #x6954) - (#xDCB9 #x697E) - (#xDCBA #x696E) - (#xDCBB #x6939) - (#xDCBC #x6974) - (#xDCBD #x693D) - (#xDCBE #x6959) - (#xDCBF #x6930) - (#xDCC0 #x6961) - (#xDCC1 #x695E) - (#xDCC2 #x695D) - (#xDCC3 #x6981) - (#xDCC4 #x696A) - (#xDCC5 #x69B2) - (#xDCC6 #x69AE) - (#xDCC7 #x69D0) - (#xDCC8 #x69BF) - (#xDCC9 #x69C1) - (#xDCCA #x69D3) - (#xDCCB #x69BE) - (#xDCCC #x69CE) - (#xDCCD #x5BE8) - (#xDCCE #x69CA) - (#xDCCF #x69DD) - (#xDCD0 #x69BB) - (#xDCD1 #x69C3) - (#xDCD2 #x69A7) - (#xDCD3 #x6A2E) - (#xDCD4 #x6991) - (#xDCD5 #x69A0) - (#xDCD6 #x699C) - (#xDCD7 #x6995) - (#xDCD8 #x69B4) - (#xDCD9 #x69DE) - (#xDCDA #x69E8) - (#xDCDB #x6A02) - (#xDCDC #x6A1B) - (#xDCDD #x69FF) - (#xDCDE #x6B0A) - (#xDCDF #x69F9) - (#xDCE0 #x69F2) - (#xDCE1 #x69E7) - (#xDCE2 #x6A05) - (#xDCE3 #x69B1) - (#xDCE4 #x6A1E) - (#xDCE5 #x69ED) - (#xDCE6 #x6A14) - (#xDCE7 #x69EB) - (#xDCE8 #x6A0A) - (#xDCE9 #x6A12) - (#xDCEA #x6AC1) - (#xDCEB #x6A23) - (#xDCEC #x6A13) - (#xDCED #x6A44) - (#xDCEE #x6A0C) - (#xDCEF #x6A72) - (#xDCF0 #x6A36) - (#xDCF1 #x6A78) - (#xDCF2 #x6A47) - (#xDCF3 #x6A62) - (#xDCF4 #x6A59) - (#xDCF5 #x6A66) - (#xDCF6 #x6A48) - (#xDCF7 #x6A38) - (#xDCF8 #x6A22) - (#xDCF9 #x6A90) - (#xDCFA #x6A8D) - (#xDCFB #x6AA0) - (#xDCFC #x6A84) - (#xDCFD #x6AA2) - (#xDCFE #x6AA3) - (#xDDA1 #x6A97) - (#xDDA2 #x8617) - (#xDDA3 #x6ABB) - (#xDDA4 #x6AC3) - (#xDDA5 #x6AC2) - (#xDDA6 #x6AB8) - (#xDDA7 #x6AB3) - (#xDDA8 #x6AAC) - (#xDDA9 #x6ADE) - (#xDDAA #x6AD1) - (#xDDAB #x6ADF) - (#xDDAC #x6AAA) - (#xDDAD #x6ADA) - (#xDDAE #x6AEA) - (#xDDAF #x6AFB) - (#xDDB0 #x6B05) - (#xDDB1 #x8616) - (#xDDB2 #x6AFA) - (#xDDB3 #x6B12) - (#xDDB4 #x6B16) - (#xDDB5 #x9B31) - (#xDDB6 #x6B1F) - (#xDDB7 #x6B38) - (#xDDB8 #x6B37) - (#xDDB9 #x76DC) - (#xDDBA #x6B39) - (#xDDBB #x98EE) - (#xDDBC #x6B47) - (#xDDBD #x6B43) - (#xDDBE #x6B49) - (#xDDBF #x6B50) - (#xDDC0 #x6B59) - (#xDDC1 #x6B54) - (#xDDC2 #x6B5B) - (#xDDC3 #x6B5F) - (#xDDC4 #x6B61) - (#xDDC5 #x6B78) - (#xDDC6 #x6B79) - (#xDDC7 #x6B7F) - (#xDDC8 #x6B80) - (#xDDC9 #x6B84) - (#xDDCA #x6B83) - (#xDDCB #x6B8D) - (#xDDCC #x6B98) - (#xDDCD #x6B95) - (#xDDCE #x6B9E) - (#xDDCF #x6BA4) - (#xDDD0 #x6BAA) - (#xDDD1 #x6BAB) - (#xDDD2 #x6BAF) - (#xDDD3 #x6BB2) - (#xDDD4 #x6BB1) - (#xDDD5 #x6BB3) - (#xDDD6 #x6BB7) - (#xDDD7 #x6BBC) - (#xDDD8 #x6BC6) - (#xDDD9 #x6BCB) - (#xDDDA #x6BD3) - (#xDDDB #x6BDF) - (#xDDDC #x6BEC) - (#xDDDD #x6BEB) - (#xDDDE #x6BF3) - (#xDDDF #x6BEF) - (#xDDE0 #x9EBE) - (#xDDE1 #x6C08) - (#xDDE2 #x6C13) - (#xDDE3 #x6C14) - (#xDDE4 #x6C1B) - (#xDDE5 #x6C24) - (#xDDE6 #x6C23) - (#xDDE7 #x6C5E) - (#xDDE8 #x6C55) - (#xDDE9 #x6C62) - (#xDDEA #x6C6A) - (#xDDEB #x6C82) - (#xDDEC #x6C8D) - (#xDDED #x6C9A) - (#xDDEE #x6C81) - (#xDDEF #x6C9B) - (#xDDF0 #x6C7E) - (#xDDF1 #x6C68) - (#xDDF2 #x6C73) - (#xDDF3 #x6C92) - (#xDDF4 #x6C90) - (#xDDF5 #x6CC4) - (#xDDF6 #x6CF1) - (#xDDF7 #x6CD3) - (#xDDF8 #x6CBD) - (#xDDF9 #x6CD7) - (#xDDFA #x6CC5) - (#xDDFB #x6CDD) - (#xDDFC #x6CAE) - (#xDDFD #x6CB1) - (#xDDFE #x6CBE) - (#xDEA1 #x6CBA) - (#xDEA2 #x6CDB) - (#xDEA3 #x6CEF) - (#xDEA4 #x6CD9) - (#xDEA5 #x6CEA) - (#xDEA6 #x6D1F) - (#xDEA7 #x884D) - (#xDEA8 #x6D36) - (#xDEA9 #x6D2B) - (#xDEAA #x6D3D) - (#xDEAB #x6D38) - (#xDEAC #x6D19) - (#xDEAD #x6D35) - (#xDEAE #x6D33) - (#xDEAF #x6D12) - (#xDEB0 #x6D0C) - (#xDEB1 #x6D63) - (#xDEB2 #x6D93) - (#xDEB3 #x6D64) - (#xDEB4 #x6D5A) - (#xDEB5 #x6D79) - (#xDEB6 #x6D59) - (#xDEB7 #x6D8E) - (#xDEB8 #x6D95) - (#xDEB9 #x6FE4) - (#xDEBA #x6D85) - (#xDEBB #x6DF9) - (#xDEBC #x6E15) - (#xDEBD #x6E0A) - (#xDEBE #x6DB5) - (#xDEBF #x6DC7) - (#xDEC0 #x6DE6) - (#xDEC1 #x6DB8) - (#xDEC2 #x6DC6) - (#xDEC3 #x6DEC) - (#xDEC4 #x6DDE) - (#xDEC5 #x6DCC) - (#xDEC6 #x6DE8) - (#xDEC7 #x6DD2) - (#xDEC8 #x6DC5) - (#xDEC9 #x6DFA) - (#xDECA #x6DD9) - (#xDECB #x6DE4) - (#xDECC #x6DD5) - (#xDECD #x6DEA) - (#xDECE #x6DEE) - (#xDECF #x6E2D) - (#xDED0 #x6E6E) - (#xDED1 #x6E2E) - (#xDED2 #x6E19) - (#xDED3 #x6E72) - (#xDED4 #x6E5F) - (#xDED5 #x6E3E) - (#xDED6 #x6E23) - (#xDED7 #x6E6B) - (#xDED8 #x6E2B) - (#xDED9 #x6E76) - (#xDEDA #x6E4D) - (#xDEDB #x6E1F) - (#xDEDC #x6E43) - (#xDEDD #x6E3A) - (#xDEDE #x6E4E) - (#xDEDF #x6E24) - (#xDEE0 #x6EFF) - (#xDEE1 #x6E1D) - (#xDEE2 #x6E38) - (#xDEE3 #x6E82) - (#xDEE4 #x6EAA) - (#xDEE5 #x6E98) - (#xDEE6 #x6EC9) - (#xDEE7 #x6EB7) - (#xDEE8 #x6ED3) - (#xDEE9 #x6EBD) - (#xDEEA #x6EAF) - (#xDEEB #x6EC4) - (#xDEEC #x6EB2) - (#xDEED #x6ED4) - (#xDEEE #x6ED5) - (#xDEEF #x6E8F) - (#xDEF0 #x6EA5) - (#xDEF1 #x6EC2) - (#xDEF2 #x6E9F) - (#xDEF3 #x6F41) - (#xDEF4 #x6F11) - (#xDEF5 #x704C) - (#xDEF6 #x6EEC) - (#xDEF7 #x6EF8) - (#xDEF8 #x6EFE) - (#xDEF9 #x6F3F) - (#xDEFA #x6EF2) - (#xDEFB #x6F31) - (#xDEFC #x6EEF) - (#xDEFD #x6F32) - (#xDEFE #x6ECC) - (#xDFA1 #x6F3E) - (#xDFA2 #x6F13) - (#xDFA3 #x6EF7) - (#xDFA4 #x6F86) - (#xDFA5 #x6F7A) - (#xDFA6 #x6F78) - (#xDFA7 #x6F81) - (#xDFA8 #x6F80) - (#xDFA9 #x6F6F) - (#xDFAA #x6F5B) - (#xDFAB #x6FF3) - (#xDFAC #x6F6D) - (#xDFAD #x6F82) - (#xDFAE #x6F7C) - (#xDFAF #x6F58) - (#xDFB0 #x6F8E) - (#xDFB1 #x6F91) - (#xDFB2 #x6FC2) - (#xDFB3 #x6F66) - (#xDFB4 #x6FB3) - (#xDFB5 #x6FA3) - (#xDFB6 #x6FA1) - (#xDFB7 #x6FA4) - (#xDFB8 #x6FB9) - (#xDFB9 #x6FC6) - (#xDFBA #x6FAA) - (#xDFBB #x6FDF) - (#xDFBC #x6FD5) - (#xDFBD #x6FEC) - (#xDFBE #x6FD4) - (#xDFBF #x6FD8) - (#xDFC0 #x6FF1) - (#xDFC1 #x6FEE) - (#xDFC2 #x6FDB) - (#xDFC3 #x7009) - (#xDFC4 #x700B) - (#xDFC5 #x6FFA) - (#xDFC6 #x7011) - (#xDFC7 #x7001) - (#xDFC8 #x700F) - (#xDFC9 #x6FFE) - (#xDFCA #x701B) - (#xDFCB #x701A) - (#xDFCC #x6F74) - (#xDFCD #x701D) - (#xDFCE #x7018) - (#xDFCF #x701F) - (#xDFD0 #x7030) - (#xDFD1 #x703E) - (#xDFD2 #x7032) - (#xDFD3 #x7051) - (#xDFD4 #x7063) - (#xDFD5 #x7099) - (#xDFD6 #x7092) - (#xDFD7 #x70AF) - (#xDFD8 #x70F1) - (#xDFD9 #x70AC) - (#xDFDA #x70B8) - (#xDFDB #x70B3) - (#xDFDC #x70AE) - (#xDFDD #x70DF) - (#xDFDE #x70CB) - (#xDFDF #x70DD) - (#xDFE0 #x70D9) - (#xDFE1 #x7109) - (#xDFE2 #x70FD) - (#xDFE3 #x711C) - (#xDFE4 #x7119) - (#xDFE5 #x7165) - (#xDFE6 #x7155) - (#xDFE7 #x7188) - (#xDFE8 #x7166) - (#xDFE9 #x7162) - (#xDFEA #x714C) - (#xDFEB #x7156) - (#xDFEC #x716C) - (#xDFED #x718F) - (#xDFEE #x71FB) - (#xDFEF #x7184) - (#xDFF0 #x7195) - (#xDFF1 #x71A8) - (#xDFF2 #x71AC) - (#xDFF3 #x71D7) - (#xDFF4 #x71B9) - (#xDFF5 #x71BE) - (#xDFF6 #x71D2) - (#xDFF7 #x71C9) - (#xDFF8 #x71D4) - (#xDFF9 #x71CE) - (#xDFFA #x71E0) - (#xDFFB #x71EC) - (#xDFFC #x71E7) - (#xDFFD #x71F5) - (#xDFFE #x71FC) - (#xE0A1 #x71F9) - (#xE0A2 #x71FF) - (#xE0A3 #x720D) - (#xE0A4 #x7210) - (#xE0A5 #x721B) - (#xE0A6 #x7228) - (#xE0A7 #x722D) - (#xE0A8 #x722C) - (#xE0A9 #x7230) - (#xE0AA #x7232) - (#xE0AB #x723B) - (#xE0AC #x723C) - (#xE0AD #x723F) - (#xE0AE #x7240) - (#xE0AF #x7246) - (#xE0B0 #x724B) - (#xE0B1 #x7258) - (#xE0B2 #x7274) - (#xE0B3 #x727E) - (#xE0B4 #x7282) - (#xE0B5 #x7281) - (#xE0B6 #x7287) - (#xE0B7 #x7292) - (#xE0B8 #x7296) - (#xE0B9 #x72A2) - (#xE0BA #x72A7) - (#xE0BB #x72B9) - (#xE0BC #x72B2) - (#xE0BD #x72C3) - (#xE0BE #x72C6) - (#xE0BF #x72C4) - (#xE0C0 #x72CE) - (#xE0C1 #x72D2) - (#xE0C2 #x72E2) - (#xE0C3 #x72E0) - (#xE0C4 #x72E1) - (#xE0C5 #x72F9) - (#xE0C6 #x72F7) - (#xE0C7 #x500F) - (#xE0C8 #x7317) - (#xE0C9 #x730A) - (#xE0CA #x731C) - (#xE0CB #x7316) - (#xE0CC #x731D) - (#xE0CD #x7334) - (#xE0CE #x732F) - (#xE0CF #x7329) - (#xE0D0 #x7325) - (#xE0D1 #x733E) - (#xE0D2 #x734E) - (#xE0D3 #x734F) - (#xE0D4 #x9ED8) - (#xE0D5 #x7357) - (#xE0D6 #x736A) - (#xE0D7 #x7368) - (#xE0D8 #x7370) - (#xE0D9 #x7378) - (#xE0DA #x7375) - (#xE0DB #x737B) - (#xE0DC #x737A) - (#xE0DD #x73C8) - (#xE0DE #x73B3) - (#xE0DF #x73CE) - (#xE0E0 #x73BB) - (#xE0E1 #x73C0) - (#xE0E2 #x73E5) - (#xE0E3 #x73EE) - (#xE0E4 #x73DE) - (#xE0E5 #x74A2) - (#xE0E6 #x7405) - (#xE0E7 #x746F) - (#xE0E8 #x7425) - (#xE0E9 #x73F8) - (#xE0EA #x7432) - (#xE0EB #x743A) - (#xE0EC #x7455) - (#xE0ED #x743F) - (#xE0EE #x745F) - (#xE0EF #x7459) - (#xE0F0 #x7441) - (#xE0F1 #x745C) - (#xE0F2 #x7469) - (#xE0F3 #x7470) - (#xE0F4 #x7463) - (#xE0F5 #x746A) - (#xE0F6 #x7476) - (#xE0F7 #x747E) - (#xE0F8 #x748B) - (#xE0F9 #x749E) - (#xE0FA #x74A7) - (#xE0FB #x74CA) - (#xE0FC #x74CF) - (#xE0FD #x74D4) - (#xE0FE #x73F1) - (#xE1A1 #x74E0) - (#xE1A2 #x74E3) - (#xE1A3 #x74E7) - (#xE1A4 #x74E9) - (#xE1A5 #x74EE) - (#xE1A6 #x74F2) - (#xE1A7 #x74F0) - (#xE1A8 #x74F1) - (#xE1A9 #x74F8) - (#xE1AA #x74F7) - (#xE1AB #x7504) - (#xE1AC #x7503) - (#xE1AD #x7505) - (#xE1AE #x750C) - (#xE1AF #x750E) - (#xE1B0 #x750D) - (#xE1B1 #x7515) - (#xE1B2 #x7513) - (#xE1B3 #x751E) - (#xE1B4 #x7526) - (#xE1B5 #x752C) - (#xE1B6 #x753C) - (#xE1B7 #x7544) - (#xE1B8 #x754D) - (#xE1B9 #x754A) - (#xE1BA #x7549) - (#xE1BB #x755B) - (#xE1BC #x7546) - (#xE1BD #x755A) - (#xE1BE #x7569) - (#xE1BF #x7564) - (#xE1C0 #x7567) - (#xE1C1 #x756B) - (#xE1C2 #x756D) - (#xE1C3 #x7578) - (#xE1C4 #x7576) - (#xE1C5 #x7586) - (#xE1C6 #x7587) - (#xE1C7 #x7574) - (#xE1C8 #x758A) - (#xE1C9 #x7589) - (#xE1CA #x7582) - (#xE1CB #x7594) - (#xE1CC #x759A) - (#xE1CD #x759D) - (#xE1CE #x75A5) - (#xE1CF #x75A3) - (#xE1D0 #x75C2) - (#xE1D1 #x75B3) - (#xE1D2 #x75C3) - (#xE1D3 #x75B5) - (#xE1D4 #x75BD) - (#xE1D5 #x75B8) - (#xE1D6 #x75BC) - (#xE1D7 #x75B1) - (#xE1D8 #x75CD) - (#xE1D9 #x75CA) - (#xE1DA #x75D2) - (#xE1DB #x75D9) - (#xE1DC #x75E3) - (#xE1DD #x75DE) - (#xE1DE #x75FE) - (#xE1DF #x75FF) - (#xE1E0 #x75FC) - (#xE1E1 #x7601) - (#xE1E2 #x75F0) - (#xE1E3 #x75FA) - (#xE1E4 #x75F2) - (#xE1E5 #x75F3) - (#xE1E6 #x760B) - (#xE1E7 #x760D) - (#xE1E8 #x7609) - (#xE1E9 #x761F) - (#xE1EA #x7627) - (#xE1EB #x7620) - (#xE1EC #x7621) - (#xE1ED #x7622) - (#xE1EE #x7624) - (#xE1EF #x7634) - (#xE1F0 #x7630) - (#xE1F1 #x763B) - (#xE1F2 #x7647) - (#xE1F3 #x7648) - (#xE1F4 #x7646) - (#xE1F5 #x765C) - (#xE1F6 #x7658) - (#xE1F7 #x7661) - (#xE1F8 #x7662) - (#xE1F9 #x7668) - (#xE1FA #x7669) - (#xE1FB #x766A) - (#xE1FC #x7667) - (#xE1FD #x766C) - (#xE1FE #x7670) - (#xE2A1 #x7672) - (#xE2A2 #x7676) - (#xE2A3 #x7678) - (#xE2A4 #x767C) - (#xE2A5 #x7680) - (#xE2A6 #x7683) - (#xE2A7 #x7688) - (#xE2A8 #x768B) - (#xE2A9 #x768E) - (#xE2AA #x7696) - (#xE2AB #x7693) - (#xE2AC #x7699) - (#xE2AD #x769A) - (#xE2AE #x76B0) - (#xE2AF #x76B4) - (#xE2B0 #x76B8) - (#xE2B1 #x76B9) - (#xE2B2 #x76BA) - (#xE2B3 #x76C2) - (#xE2B4 #x76CD) - (#xE2B5 #x76D6) - (#xE2B6 #x76D2) - (#xE2B7 #x76DE) - (#xE2B8 #x76E1) - (#xE2B9 #x76E5) - (#xE2BA #x76E7) - (#xE2BB #x76EA) - (#xE2BC #x862F) - (#xE2BD #x76FB) - (#xE2BE #x7708) - (#xE2BF #x7707) - (#xE2C0 #x7704) - (#xE2C1 #x7729) - (#xE2C2 #x7724) - (#xE2C3 #x771E) - (#xE2C4 #x7725) - (#xE2C5 #x7726) - (#xE2C6 #x771B) - (#xE2C7 #x7737) - (#xE2C8 #x7738) - (#xE2C9 #x7747) - (#xE2CA #x775A) - (#xE2CB #x7768) - (#xE2CC #x776B) - (#xE2CD #x775B) - (#xE2CE #x7765) - (#xE2CF #x777F) - (#xE2D0 #x777E) - (#xE2D1 #x7779) - (#xE2D2 #x778E) - (#xE2D3 #x778B) - (#xE2D4 #x7791) - (#xE2D5 #x77A0) - (#xE2D6 #x779E) - (#xE2D7 #x77B0) - (#xE2D8 #x77B6) - (#xE2D9 #x77B9) - (#xE2DA #x77BF) - (#xE2DB #x77BC) - (#xE2DC #x77BD) - (#xE2DD #x77BB) - (#xE2DE #x77C7) - (#xE2DF #x77CD) - (#xE2E0 #x77D7) - (#xE2E1 #x77DA) - (#xE2E2 #x77DC) - (#xE2E3 #x77E3) - (#xE2E4 #x77EE) - (#xE2E5 #x77FC) - (#xE2E6 #x780C) - (#xE2E7 #x7812) - (#xE2E8 #x7926) - (#xE2E9 #x7820) - (#xE2EA #x792A) - (#xE2EB #x7845) - (#xE2EC #x788E) - (#xE2ED #x7874) - (#xE2EE #x7886) - (#xE2EF #x787C) - (#xE2F0 #x789A) - (#xE2F1 #x788C) - (#xE2F2 #x78A3) - (#xE2F3 #x78B5) - (#xE2F4 #x78AA) - (#xE2F5 #x78AF) - (#xE2F6 #x78D1) - (#xE2F7 #x78C6) - (#xE2F8 #x78CB) - (#xE2F9 #x78D4) - (#xE2FA #x78BE) - (#xE2FB #x78BC) - (#xE2FC #x78C5) - (#xE2FD #x78CA) - (#xE2FE #x78EC) - (#xE3A1 #x78E7) - (#xE3A2 #x78DA) - (#xE3A3 #x78FD) - (#xE3A4 #x78F4) - (#xE3A5 #x7907) - (#xE3A6 #x7912) - (#xE3A7 #x7911) - (#xE3A8 #x7919) - (#xE3A9 #x792C) - (#xE3AA #x792B) - (#xE3AB #x7940) - (#xE3AC #x7960) - (#xE3AD #x7957) - (#xE3AE #x795F) - (#xE3AF #x795A) - (#xE3B0 #x7955) - (#xE3B1 #x7953) - (#xE3B2 #x797A) - (#xE3B3 #x797F) - (#xE3B4 #x798A) - (#xE3B5 #x799D) - (#xE3B6 #x79A7) - (#xE3B7 #x9F4B) - (#xE3B8 #x79AA) - (#xE3B9 #x79AE) - (#xE3BA #x79B3) - (#xE3BB #x79B9) - (#xE3BC #x79BA) - (#xE3BD #x79C9) - (#xE3BE #x79D5) - (#xE3BF #x79E7) - (#xE3C0 #x79EC) - (#xE3C1 #x79E1) - (#xE3C2 #x79E3) - (#xE3C3 #x7A08) - (#xE3C4 #x7A0D) - (#xE3C5 #x7A18) - (#xE3C6 #x7A19) - (#xE3C7 #x7A20) - (#xE3C8 #x7A1F) - (#xE3C9 #x7980) - (#xE3CA #x7A31) - (#xE3CB #x7A3B) - (#xE3CC #x7A3E) - (#xE3CD #x7A37) - (#xE3CE #x7A43) - (#xE3CF #x7A57) - (#xE3D0 #x7A49) - (#xE3D1 #x7A61) - (#xE3D2 #x7A62) - (#xE3D3 #x7A69) - (#xE3D4 #x9F9D) - (#xE3D5 #x7A70) - (#xE3D6 #x7A79) - (#xE3D7 #x7A7D) - (#xE3D8 #x7A88) - (#xE3D9 #x7A97) - (#xE3DA #x7A95) - (#xE3DB #x7A98) - (#xE3DC #x7A96) - (#xE3DD #x7AA9) - (#xE3DE #x7AC8) - (#xE3DF #x7AB0) - (#xE3E0 #x7AB6) - (#xE3E1 #x7AC5) - (#xE3E2 #x7AC4) - (#xE3E3 #x7ABF) - (#xE3E4 #x9083) - (#xE3E5 #x7AC7) - (#xE3E6 #x7ACA) - (#xE3E7 #x7ACD) - (#xE3E8 #x7ACF) - (#xE3E9 #x7AD5) - (#xE3EA #x7AD3) - (#xE3EB #x7AD9) - (#xE3EC #x7ADA) - (#xE3ED #x7ADD) - (#xE3EE #x7AE1) - (#xE3EF #x7AE2) - (#xE3F0 #x7AE6) - (#xE3F1 #x7AED) - (#xE3F2 #x7AF0) - (#xE3F3 #x7B02) - (#xE3F4 #x7B0F) - (#xE3F5 #x7B0A) - (#xE3F6 #x7B06) - (#xE3F7 #x7B33) - (#xE3F8 #x7B18) - (#xE3F9 #x7B19) - (#xE3FA #x7B1E) - (#xE3FB #x7B35) - (#xE3FC #x7B28) - (#xE3FD #x7B36) - (#xE3FE #x7B50) - (#xE4A1 #x7B7A) - (#xE4A2 #x7B04) - (#xE4A3 #x7B4D) - (#xE4A4 #x7B0B) - (#xE4A5 #x7B4C) - (#xE4A6 #x7B45) - (#xE4A7 #x7B75) - (#xE4A8 #x7B65) - (#xE4A9 #x7B74) - (#xE4AA #x7B67) - (#xE4AB #x7B70) - (#xE4AC #x7B71) - (#xE4AD #x7B6C) - (#xE4AE #x7B6E) - (#xE4AF #x7B9D) - (#xE4B0 #x7B98) - (#xE4B1 #x7B9F) - (#xE4B2 #x7B8D) - (#xE4B3 #x7B9C) - (#xE4B4 #x7B9A) - (#xE4B5 #x7B8B) - (#xE4B6 #x7B92) - (#xE4B7 #x7B8F) - (#xE4B8 #x7B5D) - (#xE4B9 #x7B99) - (#xE4BA #x7BCB) - (#xE4BB #x7BC1) - (#xE4BC #x7BCC) - (#xE4BD #x7BCF) - (#xE4BE #x7BB4) - (#xE4BF #x7BC6) - (#xE4C0 #x7BDD) - (#xE4C1 #x7BE9) - (#xE4C2 #x7C11) - (#xE4C3 #x7C14) - (#xE4C4 #x7BE6) - (#xE4C5 #x7BE5) - (#xE4C6 #x7C60) - (#xE4C7 #x7C00) - (#xE4C8 #x7C07) - (#xE4C9 #x7C13) - (#xE4CA #x7BF3) - (#xE4CB #x7BF7) - (#xE4CC #x7C17) - (#xE4CD #x7C0D) - (#xE4CE #x7BF6) - (#xE4CF #x7C23) - (#xE4D0 #x7C27) - (#xE4D1 #x7C2A) - (#xE4D2 #x7C1F) - (#xE4D3 #x7C37) - (#xE4D4 #x7C2B) - (#xE4D5 #x7C3D) - (#xE4D6 #x7C4C) - (#xE4D7 #x7C43) - (#xE4D8 #x7C54) - (#xE4D9 #x7C4F) - (#xE4DA #x7C40) - (#xE4DB #x7C50) - (#xE4DC #x7C58) - (#xE4DD #x7C5F) - (#xE4DE #x7C64) - (#xE4DF #x7C56) - (#xE4E0 #x7C65) - (#xE4E1 #x7C6C) - (#xE4E2 #x7C75) - (#xE4E3 #x7C83) - (#xE4E4 #x7C90) - (#xE4E5 #x7CA4) - (#xE4E6 #x7CAD) - (#xE4E7 #x7CA2) - (#xE4E8 #x7CAB) - (#xE4E9 #x7CA1) - (#xE4EA #x7CA8) - (#xE4EB #x7CB3) - (#xE4EC #x7CB2) - (#xE4ED #x7CB1) - (#xE4EE #x7CAE) - (#xE4EF #x7CB9) - (#xE4F0 #x7CBD) - (#xE4F1 #x7CC0) - (#xE4F2 #x7CC5) - (#xE4F3 #x7CC2) - (#xE4F4 #x7CD8) - (#xE4F5 #x7CD2) - (#xE4F6 #x7CDC) - (#xE4F7 #x7CE2) - (#xE4F8 #x9B3B) - (#xE4F9 #x7CEF) - (#xE4FA #x7CF2) - (#xE4FB #x7CF4) - (#xE4FC #x7CF6) - (#xE4FD #x7CFA) - (#xE4FE #x7D06) - (#xE5A1 #x7D02) - (#xE5A2 #x7D1C) - (#xE5A3 #x7D15) - (#xE5A4 #x7D0A) - (#xE5A5 #x7D45) - (#xE5A6 #x7D4B) - (#xE5A7 #x7D2E) - (#xE5A8 #x7D32) - (#xE5A9 #x7D3F) - (#xE5AA #x7D35) - (#xE5AB #x7D46) - (#xE5AC #x7D73) - (#xE5AD #x7D56) - (#xE5AE #x7D4E) - (#xE5AF #x7D72) - (#xE5B0 #x7D68) - (#xE5B1 #x7D6E) - (#xE5B2 #x7D4F) - (#xE5B3 #x7D63) - (#xE5B4 #x7D93) - (#xE5B5 #x7D89) - (#xE5B6 #x7D5B) - (#xE5B7 #x7D8F) - (#xE5B8 #x7D7D) - (#xE5B9 #x7D9B) - (#xE5BA #x7DBA) - (#xE5BB #x7DAE) - (#xE5BC #x7DA3) - (#xE5BD #x7DB5) - (#xE5BE #x7DC7) - (#xE5BF #x7DBD) - (#xE5C0 #x7DAB) - (#xE5C1 #x7E3D) - (#xE5C2 #x7DA2) - (#xE5C3 #x7DAF) - (#xE5C4 #x7DDC) - (#xE5C5 #x7DB8) - (#xE5C6 #x7D9F) - (#xE5C7 #x7DB0) - (#xE5C8 #x7DD8) - (#xE5C9 #x7DDD) - (#xE5CA #x7DE4) - (#xE5CB #x7DDE) - (#xE5CC #x7DFB) - (#xE5CD #x7DF2) - (#xE5CE #x7DE1) - (#xE5CF #x7E05) - (#xE5D0 #x7E0A) - (#xE5D1 #x7E23) - (#xE5D2 #x7E21) - (#xE5D3 #x7E12) - (#xE5D4 #x7E31) - (#xE5D5 #x7E1F) - (#xE5D6 #x7E09) - (#xE5D7 #x7E0B) - (#xE5D8 #x7E22) - (#xE5D9 #x7E46) - (#xE5DA #x7E66) - (#xE5DB #x7E3B) - (#xE5DC #x7E35) - (#xE5DD #x7E39) - (#xE5DE #x7E43) - (#xE5DF #x7E37) - (#xE5E0 #x7E32) - (#xE5E1 #x7E3A) - (#xE5E2 #x7E67) - (#xE5E3 #x7E5D) - (#xE5E4 #x7E56) - (#xE5E5 #x7E5E) - (#xE5E6 #x7E59) - (#xE5E7 #x7E5A) - (#xE5E8 #x7E79) - (#xE5E9 #x7E6A) - (#xE5EA #x7E69) - (#xE5EB #x7E7C) - (#xE5EC #x7E7B) - (#xE5ED #x7E83) - (#xE5EE #x7DD5) - (#xE5EF #x7E7D) - (#xE5F0 #x8FAE) - (#xE5F1 #x7E7F) - (#xE5F2 #x7E88) - (#xE5F3 #x7E89) - (#xE5F4 #x7E8C) - (#xE5F5 #x7E92) - (#xE5F6 #x7E90) - (#xE5F7 #x7E93) - (#xE5F8 #x7E94) - (#xE5F9 #x7E96) - (#xE5FA #x7E8E) - (#xE5FB #x7E9B) - (#xE5FC #x7E9C) - (#xE5FD #x7F38) - (#xE5FE #x7F3A) - (#xE6A1 #x7F45) - (#xE6A2 #x7F4C) - (#xE6A3 #x7F4D) - (#xE6A4 #x7F4E) - (#xE6A5 #x7F50) - (#xE6A6 #x7F51) - (#xE6A7 #x7F55) - (#xE6A8 #x7F54) - (#xE6A9 #x7F58) - (#xE6AA #x7F5F) - (#xE6AB #x7F60) - (#xE6AC #x7F68) - (#xE6AD #x7F69) - (#xE6AE #x7F67) - (#xE6AF #x7F78) - (#xE6B0 #x7F82) - (#xE6B1 #x7F86) - (#xE6B2 #x7F83) - (#xE6B3 #x7F88) - (#xE6B4 #x7F87) - (#xE6B5 #x7F8C) - (#xE6B6 #x7F94) - (#xE6B7 #x7F9E) - (#xE6B8 #x7F9D) - (#xE6B9 #x7F9A) - (#xE6BA #x7FA3) - (#xE6BB #x7FAF) - (#xE6BC #x7FB2) - (#xE6BD #x7FB9) - (#xE6BE #x7FAE) - (#xE6BF #x7FB6) - (#xE6C0 #x7FB8) - (#xE6C1 #x8B71) - (#xE6C2 #x7FC5) - (#xE6C3 #x7FC6) - (#xE6C4 #x7FCA) - (#xE6C5 #x7FD5) - (#xE6C6 #x7FD4) - (#xE6C7 #x7FE1) - (#xE6C8 #x7FE6) - (#xE6C9 #x7FE9) - (#xE6CA #x7FF3) - (#xE6CB #x7FF9) - (#xE6CC #x98DC) - (#xE6CD #x8006) - (#xE6CE #x8004) - (#xE6CF #x800B) - (#xE6D0 #x8012) - (#xE6D1 #x8018) - (#xE6D2 #x8019) - (#xE6D3 #x801C) - (#xE6D4 #x8021) - (#xE6D5 #x8028) - (#xE6D6 #x803F) - (#xE6D7 #x803B) - (#xE6D8 #x804A) - (#xE6D9 #x8046) - (#xE6DA #x8052) - (#xE6DB #x8058) - (#xE6DC #x805A) - (#xE6DD #x805F) - (#xE6DE #x8062) - (#xE6DF #x8068) - (#xE6E0 #x8073) - (#xE6E1 #x8072) - (#xE6E2 #x8070) - (#xE6E3 #x8076) - (#xE6E4 #x8079) - (#xE6E5 #x807D) - (#xE6E6 #x807F) - (#xE6E7 #x8084) - (#xE6E8 #x8086) - (#xE6E9 #x8085) - (#xE6EA #x809B) - (#xE6EB #x8093) - (#xE6EC #x809A) - (#xE6ED #x80AD) - (#xE6EE #x5190) - (#xE6EF #x80AC) - (#xE6F0 #x80DB) - (#xE6F1 #x80E5) - (#xE6F2 #x80D9) - (#xE6F3 #x80DD) - (#xE6F4 #x80C4) - (#xE6F5 #x80DA) - (#xE6F6 #x80D6) - (#xE6F7 #x8109) - (#xE6F8 #x80EF) - (#xE6F9 #x80F1) - (#xE6FA #x811B) - (#xE6FB #x8129) - (#xE6FC #x8123) - (#xE6FD #x812F) - (#xE6FE #x814B) - (#xE7A1 #x968B) - (#xE7A2 #x8146) - (#xE7A3 #x813E) - (#xE7A4 #x8153) - (#xE7A5 #x8151) - (#xE7A6 #x80FC) - (#xE7A7 #x8171) - (#xE7A8 #x816E) - (#xE7A9 #x8165) - (#xE7AA #x8166) - (#xE7AB #x8174) - (#xE7AC #x8183) - (#xE7AD #x8188) - (#xE7AE #x818A) - (#xE7AF #x8180) - (#xE7B0 #x8182) - (#xE7B1 #x81A0) - (#xE7B2 #x8195) - (#xE7B3 #x81A4) - (#xE7B4 #x81A3) - (#xE7B5 #x815F) - (#xE7B6 #x8193) - (#xE7B7 #x81A9) - (#xE7B8 #x81B0) - (#xE7B9 #x81B5) - (#xE7BA #x81BE) - (#xE7BB #x81B8) - (#xE7BC #x81BD) - (#xE7BD #x81C0) - (#xE7BE #x81C2) - (#xE7BF #x81BA) - (#xE7C0 #x81C9) - (#xE7C1 #x81CD) - (#xE7C2 #x81D1) - (#xE7C3 #x81D9) - (#xE7C4 #x81D8) - (#xE7C5 #x81C8) - (#xE7C6 #x81DA) - (#xE7C7 #x81DF) - (#xE7C8 #x81E0) - (#xE7C9 #x81E7) - (#xE7CA #x81FA) - (#xE7CB #x81FB) - (#xE7CC #x81FE) - (#xE7CD #x8201) - (#xE7CE #x8202) - (#xE7CF #x8205) - (#xE7D0 #x8207) - (#xE7D1 #x820A) - (#xE7D2 #x820D) - (#xE7D3 #x8210) - (#xE7D4 #x8216) - (#xE7D5 #x8229) - (#xE7D6 #x822B) - (#xE7D7 #x8238) - (#xE7D8 #x8233) - (#xE7D9 #x8240) - (#xE7DA #x8259) - (#xE7DB #x8258) - (#xE7DC #x825D) - (#xE7DD #x825A) - (#xE7DE #x825F) - (#xE7DF #x8264) - (#xE7E0 #x8262) - (#xE7E1 #x8268) - (#xE7E2 #x826A) - (#xE7E3 #x826B) - (#xE7E4 #x822E) - (#xE7E5 #x8271) - (#xE7E6 #x8277) - (#xE7E7 #x8278) - (#xE7E8 #x827E) - (#xE7E9 #x828D) - (#xE7EA #x8292) - (#xE7EB #x82AB) - (#xE7EC #x829F) - (#xE7ED #x82BB) - (#xE7EE #x82AC) - (#xE7EF #x82E1) - (#xE7F0 #x82E3) - (#xE7F1 #x82DF) - (#xE7F2 #x82D2) - (#xE7F3 #x82F4) - (#xE7F4 #x82F3) - (#xE7F5 #x82FA) - (#xE7F6 #x8393) - (#xE7F7 #x8303) - (#xE7F8 #x82FB) - (#xE7F9 #x82F9) - (#xE7FA #x82DE) - (#xE7FB #x8306) - (#xE7FC #x82DC) - (#xE7FD #x8309) - (#xE7FE #x82D9) - (#xE8A1 #x8335) - (#xE8A2 #x8334) - (#xE8A3 #x8316) - (#xE8A4 #x8332) - (#xE8A5 #x8331) - (#xE8A6 #x8340) - (#xE8A7 #x8339) - (#xE8A8 #x8350) - (#xE8A9 #x8345) - (#xE8AA #x832F) - (#xE8AB #x832B) - (#xE8AC #x8317) - (#xE8AD #x8318) - (#xE8AE #x8385) - (#xE8AF #x839A) - (#xE8B0 #x83AA) - (#xE8B1 #x839F) - (#xE8B2 #x83A2) - (#xE8B3 #x8396) - (#xE8B4 #x8323) - (#xE8B5 #x838E) - (#xE8B6 #x8387) - (#xE8B7 #x838A) - (#xE8B8 #x837C) - (#xE8B9 #x83B5) - (#xE8BA #x8373) - (#xE8BB #x8375) - (#xE8BC #x83A0) - (#xE8BD #x8389) - (#xE8BE #x83A8) - (#xE8BF #x83F4) - (#xE8C0 #x8413) - (#xE8C1 #x83EB) - (#xE8C2 #x83CE) - (#xE8C3 #x83FD) - (#xE8C4 #x8403) - (#xE8C5 #x83D8) - (#xE8C6 #x840B) - (#xE8C7 #x83C1) - (#xE8C8 #x83F7) - (#xE8C9 #x8407) - (#xE8CA #x83E0) - (#xE8CB #x83F2) - (#xE8CC #x840D) - (#xE8CD #x8422) - (#xE8CE #x8420) - (#xE8CF #x83BD) - (#xE8D0 #x8438) - (#xE8D1 #x8506) - (#xE8D2 #x83FB) - (#xE8D3 #x846D) - (#xE8D4 #x842A) - (#xE8D5 #x843C) - (#xE8D6 #x855A) - (#xE8D7 #x8484) - (#xE8D8 #x8477) - (#xE8D9 #x846B) - (#xE8DA #x84AD) - (#xE8DB #x846E) - (#xE8DC #x8482) - (#xE8DD #x8469) - (#xE8DE #x8446) - (#xE8DF #x842C) - (#xE8E0 #x846F) - (#xE8E1 #x8479) - (#xE8E2 #x8435) - (#xE8E3 #x84CA) - (#xE8E4 #x8462) - (#xE8E5 #x84B9) - (#xE8E6 #x84BF) - (#xE8E7 #x849F) - (#xE8E8 #x84D9) - (#xE8E9 #x84CD) - (#xE8EA #x84BB) - (#xE8EB #x84DA) - (#xE8EC #x84D0) - (#xE8ED #x84C1) - (#xE8EE #x84C6) - (#xE8EF #x84D6) - (#xE8F0 #x84A1) - (#xE8F1 #x8521) - (#xE8F2 #x84FF) - (#xE8F3 #x84F4) - (#xE8F4 #x8517) - (#xE8F5 #x8518) - (#xE8F6 #x852C) - (#xE8F7 #x851F) - (#xE8F8 #x8515) - (#xE8F9 #x8514) - (#xE8FA #x84FC) - (#xE8FB #x8540) - (#xE8FC #x8563) - (#xE8FD #x8558) - (#xE8FE #x8548) - (#xE9A1 #x8541) - (#xE9A2 #x8602) - (#xE9A3 #x854B) - (#xE9A4 #x8555) - (#xE9A5 #x8580) - (#xE9A6 #x85A4) - (#xE9A7 #x8588) - (#xE9A8 #x8591) - (#xE9A9 #x858A) - (#xE9AA #x85A8) - (#xE9AB #x856D) - (#xE9AC #x8594) - (#xE9AD #x859B) - (#xE9AE #x85EA) - (#xE9AF #x8587) - (#xE9B0 #x859C) - (#xE9B1 #x8577) - (#xE9B2 #x857E) - (#xE9B3 #x8590) - (#xE9B4 #x85C9) - (#xE9B5 #x85BA) - (#xE9B6 #x85CF) - (#xE9B7 #x85B9) - (#xE9B8 #x85D0) - (#xE9B9 #x85D5) - (#xE9BA #x85DD) - (#xE9BB #x85E5) - (#xE9BC #x85DC) - (#xE9BD #x85F9) - (#xE9BE #x860A) - (#xE9BF #x8613) - (#xE9C0 #x860B) - (#xE9C1 #x85FE) - (#xE9C2 #x85FA) - (#xE9C3 #x8606) - (#xE9C4 #x8622) - (#xE9C5 #x861A) - (#xE9C6 #x8630) - (#xE9C7 #x863F) - (#xE9C8 #x864D) - (#xE9C9 #x4E55) - (#xE9CA #x8654) - (#xE9CB #x865F) - (#xE9CC #x8667) - (#xE9CD #x8671) - (#xE9CE #x8693) - (#xE9CF #x86A3) - (#xE9D0 #x86A9) - (#xE9D1 #x86AA) - (#xE9D2 #x868B) - (#xE9D3 #x868C) - (#xE9D4 #x86B6) - (#xE9D5 #x86AF) - (#xE9D6 #x86C4) - (#xE9D7 #x86C6) - (#xE9D8 #x86B0) - (#xE9D9 #x86C9) - (#xE9DA #x8823) - (#xE9DB #x86AB) - (#xE9DC #x86D4) - (#xE9DD #x86DE) - (#xE9DE #x86E9) - (#xE9DF #x86EC) - (#xE9E0 #x86DF) - (#xE9E1 #x86DB) - (#xE9E2 #x86EF) - (#xE9E3 #x8712) - (#xE9E4 #x8706) - (#xE9E5 #x8708) - (#xE9E6 #x8700) - (#xE9E7 #x8703) - (#xE9E8 #x86FB) - (#xE9E9 #x8711) - (#xE9EA #x8709) - (#xE9EB #x870D) - (#xE9EC #x86F9) - (#xE9ED #x870A) - (#xE9EE #x8734) - (#xE9EF #x873F) - (#xE9F0 #x8737) - (#xE9F1 #x873B) - (#xE9F2 #x8725) - (#xE9F3 #x8729) - (#xE9F4 #x871A) - (#xE9F5 #x8760) - (#xE9F6 #x875F) - (#xE9F7 #x8778) - (#xE9F8 #x874C) - (#xE9F9 #x874E) - (#xE9FA #x8774) - (#xE9FB #x8757) - (#xE9FC #x8768) - (#xE9FD #x876E) - (#xE9FE #x8759) - (#xEAA1 #x8753) - (#xEAA2 #x8763) - (#xEAA3 #x876A) - (#xEAA4 #x8805) - (#xEAA5 #x87A2) - (#xEAA6 #x879F) - (#xEAA7 #x8782) - (#xEAA8 #x87AF) - (#xEAA9 #x87CB) - (#xEAAA #x87BD) - (#xEAAB #x87C0) - (#xEAAC #x87D0) - (#xEAAD #x96D6) - (#xEAAE #x87AB) - (#xEAAF #x87C4) - (#xEAB0 #x87B3) - (#xEAB1 #x87C7) - (#xEAB2 #x87C6) - (#xEAB3 #x87BB) - (#xEAB4 #x87EF) - (#xEAB5 #x87F2) - (#xEAB6 #x87E0) - (#xEAB7 #x880F) - (#xEAB8 #x880D) - (#xEAB9 #x87FE) - (#xEABA #x87F6) - (#xEABB #x87F7) - (#xEABC #x880E) - (#xEABD #x87D2) - (#xEABE #x8811) - (#xEABF #x8816) - (#xEAC0 #x8815) - (#xEAC1 #x8822) - (#xEAC2 #x8821) - (#xEAC3 #x8831) - (#xEAC4 #x8836) - (#xEAC5 #x8839) - (#xEAC6 #x8827) - (#xEAC7 #x883B) - (#xEAC8 #x8844) - (#xEAC9 #x8842) - (#xEACA #x8852) - (#xEACB #x8859) - (#xEACC #x885E) - (#xEACD #x8862) - (#xEACE #x886B) - (#xEACF #x8881) - (#xEAD0 #x887E) - (#xEAD1 #x889E) - (#xEAD2 #x8875) - (#xEAD3 #x887D) - (#xEAD4 #x88B5) - (#xEAD5 #x8872) - (#xEAD6 #x8882) - (#xEAD7 #x8897) - (#xEAD8 #x8892) - (#xEAD9 #x88AE) - (#xEADA #x8899) - (#xEADB #x88A2) - (#xEADC #x888D) - (#xEADD #x88A4) - (#xEADE #x88B0) - (#xEADF #x88BF) - (#xEAE0 #x88B1) - (#xEAE1 #x88C3) - (#xEAE2 #x88C4) - (#xEAE3 #x88D4) - (#xEAE4 #x88D8) - (#xEAE5 #x88D9) - (#xEAE6 #x88DD) - (#xEAE7 #x88F9) - (#xEAE8 #x8902) - (#xEAE9 #x88FC) - (#xEAEA #x88F4) - (#xEAEB #x88E8) - (#xEAEC #x88F2) - (#xEAED #x8904) - (#xEAEE #x890C) - (#xEAEF #x890A) - (#xEAF0 #x8913) - (#xEAF1 #x8943) - (#xEAF2 #x891E) - (#xEAF3 #x8925) - (#xEAF4 #x892A) - (#xEAF5 #x892B) - (#xEAF6 #x8941) - (#xEAF7 #x8944) - (#xEAF8 #x893B) - (#xEAF9 #x8936) - (#xEAFA #x8938) - (#xEAFB #x894C) - (#xEAFC #x891D) - (#xEAFD #x8960) - (#xEAFE #x895E) - (#xEBA1 #x8966) - (#xEBA2 #x8964) - (#xEBA3 #x896D) - (#xEBA4 #x896A) - (#xEBA5 #x896F) - (#xEBA6 #x8974) - (#xEBA7 #x8977) - (#xEBA8 #x897E) - (#xEBA9 #x8983) - (#xEBAA #x8988) - (#xEBAB #x898A) - (#xEBAC #x8993) - (#xEBAD #x8998) - (#xEBAE #x89A1) - (#xEBAF #x89A9) - (#xEBB0 #x89A6) - (#xEBB1 #x89AC) - (#xEBB2 #x89AF) - (#xEBB3 #x89B2) - (#xEBB4 #x89BA) - (#xEBB5 #x89BD) - (#xEBB6 #x89BF) - (#xEBB7 #x89C0) - (#xEBB8 #x89DA) - (#xEBB9 #x89DC) - (#xEBBA #x89DD) - (#xEBBB #x89E7) - (#xEBBC #x89F4) - (#xEBBD #x89F8) - (#xEBBE #x8A03) - (#xEBBF #x8A16) - (#xEBC0 #x8A10) - (#xEBC1 #x8A0C) - (#xEBC2 #x8A1B) - (#xEBC3 #x8A1D) - (#xEBC4 #x8A25) - (#xEBC5 #x8A36) - (#xEBC6 #x8A41) - (#xEBC7 #x8A5B) - (#xEBC8 #x8A52) - (#xEBC9 #x8A46) - (#xEBCA #x8A48) - (#xEBCB #x8A7C) - (#xEBCC #x8A6D) - (#xEBCD #x8A6C) - (#xEBCE #x8A62) - (#xEBCF #x8A85) - (#xEBD0 #x8A82) - (#xEBD1 #x8A84) - (#xEBD2 #x8AA8) - (#xEBD3 #x8AA1) - (#xEBD4 #x8A91) - (#xEBD5 #x8AA5) - (#xEBD6 #x8AA6) - (#xEBD7 #x8A9A) - (#xEBD8 #x8AA3) - (#xEBD9 #x8AC4) - (#xEBDA #x8ACD) - (#xEBDB #x8AC2) - (#xEBDC #x8ADA) - (#xEBDD #x8AEB) - (#xEBDE #x8AF3) - (#xEBDF #x8AE7) - (#xEBE0 #x8AE4) - (#xEBE1 #x8AF1) - (#xEBE2 #x8B14) - (#xEBE3 #x8AE0) - (#xEBE4 #x8AE2) - (#xEBE5 #x8AF7) - (#xEBE6 #x8ADE) - (#xEBE7 #x8ADB) - (#xEBE8 #x8B0C) - (#xEBE9 #x8B07) - (#xEBEA #x8B1A) - (#xEBEB #x8AE1) - (#xEBEC #x8B16) - (#xEBED #x8B10) - (#xEBEE #x8B17) - (#xEBEF #x8B20) - (#xEBF0 #x8B33) - (#xEBF1 #x97AB) - (#xEBF2 #x8B26) - (#xEBF3 #x8B2B) - (#xEBF4 #x8B3E) - (#xEBF5 #x8B28) - (#xEBF6 #x8B41) - (#xEBF7 #x8B4C) - (#xEBF8 #x8B4F) - (#xEBF9 #x8B4E) - (#xEBFA #x8B49) - (#xEBFB #x8B56) - (#xEBFC #x8B5B) - (#xEBFD #x8B5A) - (#xEBFE #x8B6B) - (#xECA1 #x8B5F) - (#xECA2 #x8B6C) - (#xECA3 #x8B6F) - (#xECA4 #x8B74) - (#xECA5 #x8B7D) - (#xECA6 #x8B80) - (#xECA7 #x8B8C) - (#xECA8 #x8B8E) - (#xECA9 #x8B92) - (#xECAA #x8B93) - (#xECAB #x8B96) - (#xECAC #x8B99) - (#xECAD #x8B9A) - (#xECAE #x8C3A) - (#xECAF #x8C41) - (#xECB0 #x8C3F) - (#xECB1 #x8C48) - (#xECB2 #x8C4C) - (#xECB3 #x8C4E) - (#xECB4 #x8C50) - (#xECB5 #x8C55) - (#xECB6 #x8C62) - (#xECB7 #x8C6C) - (#xECB8 #x8C78) - (#xECB9 #x8C7A) - (#xECBA #x8C82) - (#xECBB #x8C89) - (#xECBC #x8C85) - (#xECBD #x8C8A) - (#xECBE #x8C8D) - (#xECBF #x8C8E) - (#xECC0 #x8C94) - (#xECC1 #x8C7C) - (#xECC2 #x8C98) - (#xECC3 #x621D) - (#xECC4 #x8CAD) - (#xECC5 #x8CAA) - (#xECC6 #x8CBD) - (#xECC7 #x8CB2) - (#xECC8 #x8CB3) - (#xECC9 #x8CAE) - (#xECCA #x8CB6) - (#xECCB #x8CC8) - (#xECCC #x8CC1) - (#xECCD #x8CE4) - (#xECCE #x8CE3) - (#xECCF #x8CDA) - (#xECD0 #x8CFD) - (#xECD1 #x8CFA) - (#xECD2 #x8CFB) - (#xECD3 #x8D04) - (#xECD4 #x8D05) - (#xECD5 #x8D0A) - (#xECD6 #x8D07) - (#xECD7 #x8D0F) - (#xECD8 #x8D0D) - (#xECD9 #x8D10) - (#xECDA #x9F4E) - (#xECDB #x8D13) - (#xECDC #x8CCD) - (#xECDD #x8D14) - (#xECDE #x8D16) - (#xECDF #x8D67) - (#xECE0 #x8D6D) - (#xECE1 #x8D71) - (#xECE2 #x8D73) - (#xECE3 #x8D81) - (#xECE4 #x8D99) - (#xECE5 #x8DC2) - (#xECE6 #x8DBE) - (#xECE7 #x8DBA) - (#xECE8 #x8DCF) - (#xECE9 #x8DDA) - (#xECEA #x8DD6) - (#xECEB #x8DCC) - (#xECEC #x8DDB) - (#xECED #x8DCB) - (#xECEE #x8DEA) - (#xECEF #x8DEB) - (#xECF0 #x8DDF) - (#xECF1 #x8DE3) - (#xECF2 #x8DFC) - (#xECF3 #x8E08) - (#xECF4 #x8E09) - (#xECF5 #x8DFF) - (#xECF6 #x8E1D) - (#xECF7 #x8E1E) - (#xECF8 #x8E10) - (#xECF9 #x8E1F) - (#xECFA #x8E42) - (#xECFB #x8E35) - (#xECFC #x8E30) - (#xECFD #x8E34) - (#xECFE #x8E4A) - (#xEDA1 #x8E47) - (#xEDA2 #x8E49) - (#xEDA3 #x8E4C) - (#xEDA4 #x8E50) - (#xEDA5 #x8E48) - (#xEDA6 #x8E59) - (#xEDA7 #x8E64) - (#xEDA8 #x8E60) - (#xEDA9 #x8E2A) - (#xEDAA #x8E63) - (#xEDAB #x8E55) - (#xEDAC #x8E76) - (#xEDAD #x8E72) - (#xEDAE #x8E7C) - (#xEDAF #x8E81) - (#xEDB0 #x8E87) - (#xEDB1 #x8E85) - (#xEDB2 #x8E84) - (#xEDB3 #x8E8B) - (#xEDB4 #x8E8A) - (#xEDB5 #x8E93) - (#xEDB6 #x8E91) - (#xEDB7 #x8E94) - (#xEDB8 #x8E99) - (#xEDB9 #x8EAA) - (#xEDBA #x8EA1) - (#xEDBB #x8EAC) - (#xEDBC #x8EB0) - (#xEDBD #x8EC6) - (#xEDBE #x8EB1) - (#xEDBF #x8EBE) - (#xEDC0 #x8EC5) - (#xEDC1 #x8EC8) - (#xEDC2 #x8ECB) - (#xEDC3 #x8EDB) - (#xEDC4 #x8EE3) - (#xEDC5 #x8EFC) - (#xEDC6 #x8EFB) - (#xEDC7 #x8EEB) - (#xEDC8 #x8EFE) - (#xEDC9 #x8F0A) - (#xEDCA #x8F05) - (#xEDCB #x8F15) - (#xEDCC #x8F12) - (#xEDCD #x8F19) - (#xEDCE #x8F13) - (#xEDCF #x8F1C) - (#xEDD0 #x8F1F) - (#xEDD1 #x8F1B) - (#xEDD2 #x8F0C) - (#xEDD3 #x8F26) - (#xEDD4 #x8F33) - (#xEDD5 #x8F3B) - (#xEDD6 #x8F39) - (#xEDD7 #x8F45) - (#xEDD8 #x8F42) - (#xEDD9 #x8F3E) - (#xEDDA #x8F4C) - (#xEDDB #x8F49) - (#xEDDC #x8F46) - (#xEDDD #x8F4E) - (#xEDDE #x8F57) - (#xEDDF #x8F5C) - (#xEDE0 #x8F62) - (#xEDE1 #x8F63) - (#xEDE2 #x8F64) - (#xEDE3 #x8F9C) - (#xEDE4 #x8F9F) - (#xEDE5 #x8FA3) - (#xEDE6 #x8FAD) - (#xEDE7 #x8FAF) - (#xEDE8 #x8FB7) - (#xEDE9 #x8FDA) - (#xEDEA #x8FE5) - (#xEDEB #x8FE2) - (#xEDEC #x8FEA) - (#xEDED #x8FEF) - (#xEDEE #x9087) - (#xEDEF #x8FF4) - (#xEDF0 #x9005) - (#xEDF1 #x8FF9) - (#xEDF2 #x8FFA) - (#xEDF3 #x9011) - (#xEDF4 #x9015) - (#xEDF5 #x9021) - (#xEDF6 #x900D) - (#xEDF7 #x901E) - (#xEDF8 #x9016) - (#xEDF9 #x900B) - (#xEDFA #x9027) - (#xEDFB #x9036) - (#xEDFC #x9035) - (#xEDFD #x9039) - (#xEDFE #x8FF8) - (#xEEA1 #x904F) - (#xEEA2 #x9050) - (#xEEA3 #x9051) - (#xEEA4 #x9052) - (#xEEA5 #x900E) - (#xEEA6 #x9049) - (#xEEA7 #x903E) - (#xEEA8 #x9056) - (#xEEA9 #x9058) - (#xEEAA #x905E) - (#xEEAB #x9068) - (#xEEAC #x906F) - (#xEEAD #x9076) - (#xEEAE #x96A8) - (#xEEAF #x9072) - (#xEEB0 #x9082) - (#xEEB1 #x907D) - (#xEEB2 #x9081) - (#xEEB3 #x9080) - (#xEEB4 #x908A) - (#xEEB5 #x9089) - (#xEEB6 #x908F) - (#xEEB7 #x90A8) - (#xEEB8 #x90AF) - (#xEEB9 #x90B1) - (#xEEBA #x90B5) - (#xEEBB #x90E2) - (#xEEBC #x90E4) - (#xEEBD #x6248) - (#xEEBE #x90DB) - (#xEEBF #x9102) - (#xEEC0 #x9112) - (#xEEC1 #x9119) - (#xEEC2 #x9132) - (#xEEC3 #x9130) - (#xEEC4 #x914A) - (#xEEC5 #x9156) - (#xEEC6 #x9158) - (#xEEC7 #x9163) - (#xEEC8 #x9165) - (#xEEC9 #x9169) - (#xEECA #x9173) - (#xEECB #x9172) - (#xEECC #x918B) - (#xEECD #x9189) - (#xEECE #x9182) - (#xEECF #x91A2) - (#xEED0 #x91AB) - (#xEED1 #x91AF) - (#xEED2 #x91AA) - (#xEED3 #x91B5) - (#xEED4 #x91B4) - (#xEED5 #x91BA) - (#xEED6 #x91C0) - (#xEED7 #x91C1) - (#xEED8 #x91C9) - (#xEED9 #x91CB) - (#xEEDA #x91D0) - (#xEEDB #x91D6) - (#xEEDC #x91DF) - (#xEEDD #x91E1) - (#xEEDE #x91DB) - (#xEEDF #x91FC) - (#xEEE0 #x91F5) - (#xEEE1 #x91F6) - (#xEEE2 #x921E) - (#xEEE3 #x91FF) - (#xEEE4 #x9214) - (#xEEE5 #x922C) - (#xEEE6 #x9215) - (#xEEE7 #x9211) - (#xEEE8 #x925E) - (#xEEE9 #x9257) - (#xEEEA #x9245) - (#xEEEB #x9249) - (#xEEEC #x9264) - (#xEEED #x9248) - (#xEEEE #x9295) - (#xEEEF #x923F) - (#xEEF0 #x924B) - (#xEEF1 #x9250) - (#xEEF2 #x929C) - (#xEEF3 #x9296) - (#xEEF4 #x9293) - (#xEEF5 #x929B) - (#xEEF6 #x925A) - (#xEEF7 #x92CF) - (#xEEF8 #x92B9) - (#xEEF9 #x92B7) - (#xEEFA #x92E9) - (#xEEFB #x930F) - (#xEEFC #x92FA) - (#xEEFD #x9344) - (#xEEFE #x932E) - (#xEFA1 #x9319) - (#xEFA2 #x9322) - (#xEFA3 #x931A) - (#xEFA4 #x9323) - (#xEFA5 #x933A) - (#xEFA6 #x9335) - (#xEFA7 #x933B) - (#xEFA8 #x935C) - (#xEFA9 #x9360) - (#xEFAA #x937C) - (#xEFAB #x936E) - (#xEFAC #x9356) - (#xEFAD #x93B0) - (#xEFAE #x93AC) - (#xEFAF #x93AD) - (#xEFB0 #x9394) - (#xEFB1 #x93B9) - (#xEFB2 #x93D6) - (#xEFB3 #x93D7) - (#xEFB4 #x93E8) - (#xEFB5 #x93E5) - (#xEFB6 #x93D8) - (#xEFB7 #x93C3) - (#xEFB8 #x93DD) - (#xEFB9 #x93D0) - (#xEFBA #x93C8) - (#xEFBB #x93E4) - (#xEFBC #x941A) - (#xEFBD #x9414) - (#xEFBE #x9413) - (#xEFBF #x9403) - (#xEFC0 #x9407) - (#xEFC1 #x9410) - (#xEFC2 #x9436) - (#xEFC3 #x942B) - (#xEFC4 #x9435) - (#xEFC5 #x9421) - (#xEFC6 #x943A) - (#xEFC7 #x9441) - (#xEFC8 #x9452) - (#xEFC9 #x9444) - (#xEFCA #x945B) - (#xEFCB #x9460) - (#xEFCC #x9462) - (#xEFCD #x945E) - (#xEFCE #x946A) - (#xEFCF #x9229) - (#xEFD0 #x9470) - (#xEFD1 #x9475) - (#xEFD2 #x9477) - (#xEFD3 #x947D) - (#xEFD4 #x945A) - (#xEFD5 #x947C) - (#xEFD6 #x947E) - (#xEFD7 #x9481) - (#xEFD8 #x947F) - (#xEFD9 #x9582) - (#xEFDA #x9587) - (#xEFDB #x958A) - (#xEFDC #x9594) - (#xEFDD #x9596) - (#xEFDE #x9598) - (#xEFDF #x9599) - (#xEFE0 #x95A0) - (#xEFE1 #x95A8) - (#xEFE2 #x95A7) - (#xEFE3 #x95AD) - (#xEFE4 #x95BC) - (#xEFE5 #x95BB) - (#xEFE6 #x95B9) - (#xEFE7 #x95BE) - (#xEFE8 #x95CA) - (#xEFE9 #x6FF6) - (#xEFEA #x95C3) - (#xEFEB #x95CD) - (#xEFEC #x95CC) - (#xEFED #x95D5) - (#xEFEE #x95D4) - (#xEFEF #x95D6) - (#xEFF0 #x95DC) - (#xEFF1 #x95E1) - (#xEFF2 #x95E5) - (#xEFF3 #x95E2) - (#xEFF4 #x9621) - (#xEFF5 #x9628) - (#xEFF6 #x962E) - (#xEFF7 #x962F) - (#xEFF8 #x9642) - (#xEFF9 #x964C) - (#xEFFA #x964F) - (#xEFFB #x964B) - (#xEFFC #x9677) - (#xEFFD #x965C) - (#xEFFE #x965E) - (#xF0A1 #x965D) - (#xF0A2 #x965F) - (#xF0A3 #x9666) - (#xF0A4 #x9672) - (#xF0A5 #x966C) - (#xF0A6 #x968D) - (#xF0A7 #x9698) - (#xF0A8 #x9695) - (#xF0A9 #x9697) - (#xF0AA #x96AA) - (#xF0AB #x96A7) - (#xF0AC #x96B1) - (#xF0AD #x96B2) - (#xF0AE #x96B0) - (#xF0AF #x96B4) - (#xF0B0 #x96B6) - (#xF0B1 #x96B8) - (#xF0B2 #x96B9) - (#xF0B3 #x96CE) - (#xF0B4 #x96CB) - (#xF0B5 #x96C9) - (#xF0B6 #x96CD) - (#xF0B7 #x894D) - (#xF0B8 #x96DC) - (#xF0B9 #x970D) - (#xF0BA #x96D5) - (#xF0BB #x96F9) - (#xF0BC #x9704) - (#xF0BD #x9706) - (#xF0BE #x9708) - (#xF0BF #x9713) - (#xF0C0 #x970E) - (#xF0C1 #x9711) - (#xF0C2 #x970F) - (#xF0C3 #x9716) - (#xF0C4 #x9719) - (#xF0C5 #x9724) - (#xF0C6 #x972A) - (#xF0C7 #x9730) - (#xF0C8 #x9739) - (#xF0C9 #x973D) - (#xF0CA #x973E) - (#xF0CB #x9744) - (#xF0CC #x9746) - (#xF0CD #x9748) - (#xF0CE #x9742) - (#xF0CF #x9749) - (#xF0D0 #x975C) - (#xF0D1 #x9760) - (#xF0D2 #x9764) - (#xF0D3 #x9766) - (#xF0D4 #x9768) - (#xF0D5 #x52D2) - (#xF0D6 #x976B) - (#xF0D7 #x9771) - (#xF0D8 #x9779) - (#xF0D9 #x9785) - (#xF0DA #x977C) - (#xF0DB #x9781) - (#xF0DC #x977A) - (#xF0DD #x9786) - (#xF0DE #x978B) - (#xF0DF #x978F) - (#xF0E0 #x9790) - (#xF0E1 #x979C) - (#xF0E2 #x97A8) - (#xF0E3 #x97A6) - (#xF0E4 #x97A3) - (#xF0E5 #x97B3) - (#xF0E6 #x97B4) - (#xF0E7 #x97C3) - (#xF0E8 #x97C6) - (#xF0E9 #x97C8) - (#xF0EA #x97CB) - (#xF0EB #x97DC) - (#xF0EC #x97ED) - (#xF0ED #x9F4F) - (#xF0EE #x97F2) - (#xF0EF #x7ADF) - (#xF0F0 #x97F6) - (#xF0F1 #x97F5) - (#xF0F2 #x980F) - (#xF0F3 #x980C) - (#xF0F4 #x9838) - (#xF0F5 #x9824) - (#xF0F6 #x9821) - (#xF0F7 #x9837) - (#xF0F8 #x983D) - (#xF0F9 #x9846) - (#xF0FA #x984F) - (#xF0FB #x984B) - (#xF0FC #x986B) - (#xF0FD #x986F) - (#xF0FE #x9870) - (#xF1A1 #x9871) - (#xF1A2 #x9874) - (#xF1A3 #x9873) - (#xF1A4 #x98AA) - (#xF1A5 #x98AF) - (#xF1A6 #x98B1) - (#xF1A7 #x98B6) - (#xF1A8 #x98C4) - (#xF1A9 #x98C3) - (#xF1AA #x98C6) - (#xF1AB #x98E9) - (#xF1AC #x98EB) - (#xF1AD #x9903) - (#xF1AE #x9909) - (#xF1AF #x9912) - (#xF1B0 #x9914) - (#xF1B1 #x9918) - (#xF1B2 #x9921) - (#xF1B3 #x991D) - (#xF1B4 #x991E) - (#xF1B5 #x9924) - (#xF1B6 #x9920) - (#xF1B7 #x992C) - (#xF1B8 #x992E) - (#xF1B9 #x993D) - (#xF1BA #x993E) - (#xF1BB #x9942) - (#xF1BC #x9949) - (#xF1BD #x9945) - (#xF1BE #x9950) - (#xF1BF #x994B) - (#xF1C0 #x9951) - (#xF1C1 #x9952) - (#xF1C2 #x994C) - (#xF1C3 #x9955) - (#xF1C4 #x9997) - (#xF1C5 #x9998) - (#xF1C6 #x99A5) - (#xF1C7 #x99AD) - (#xF1C8 #x99AE) - (#xF1C9 #x99BC) - (#xF1CA #x99DF) - (#xF1CB #x99DB) - (#xF1CC #x99DD) - (#xF1CD #x99D8) - (#xF1CE #x99D1) - (#xF1CF #x99ED) - (#xF1D0 #x99EE) - (#xF1D1 #x99F1) - (#xF1D2 #x99F2) - (#xF1D3 #x99FB) - (#xF1D4 #x99F8) - (#xF1D5 #x9A01) - (#xF1D6 #x9A0F) - (#xF1D7 #x9A05) - (#xF1D8 #x99E2) - (#xF1D9 #x9A19) - (#xF1DA #x9A2B) - (#xF1DB #x9A37) - (#xF1DC #x9A45) - (#xF1DD #x9A42) - (#xF1DE #x9A40) - (#xF1DF #x9A43) - (#xF1E0 #x9A3E) - (#xF1E1 #x9A55) - (#xF1E2 #x9A4D) - (#xF1E3 #x9A5B) - (#xF1E4 #x9A57) - (#xF1E5 #x9A5F) - (#xF1E6 #x9A62) - (#xF1E7 #x9A65) - (#xF1E8 #x9A64) - (#xF1E9 #x9A69) - (#xF1EA #x9A6B) - (#xF1EB #x9A6A) - (#xF1EC #x9AAD) - (#xF1ED #x9AB0) - (#xF1EE #x9ABC) - (#xF1EF #x9AC0) - (#xF1F0 #x9ACF) - (#xF1F1 #x9AD1) - (#xF1F2 #x9AD3) - (#xF1F3 #x9AD4) - (#xF1F4 #x9ADE) - (#xF1F5 #x9ADF) - (#xF1F6 #x9AE2) - (#xF1F7 #x9AE3) - (#xF1F8 #x9AE6) - (#xF1F9 #x9AEF) - (#xF1FA #x9AEB) - (#xF1FB #x9AEE) - (#xF1FC #x9AF4) - (#xF1FD #x9AF1) - (#xF1FE #x9AF7) - (#xF2A1 #x9AFB) - (#xF2A2 #x9B06) - (#xF2A3 #x9B18) - (#xF2A4 #x9B1A) - (#xF2A5 #x9B1F) - (#xF2A6 #x9B22) - (#xF2A7 #x9B23) - (#xF2A8 #x9B25) - (#xF2A9 #x9B27) - (#xF2AA #x9B28) - (#xF2AB #x9B29) - (#xF2AC #x9B2A) - (#xF2AD #x9B2E) - (#xF2AE #x9B2F) - (#xF2AF #x9B32) - (#xF2B0 #x9B44) - (#xF2B1 #x9B43) - (#xF2B2 #x9B4F) - (#xF2B3 #x9B4D) - (#xF2B4 #x9B4E) - (#xF2B5 #x9B51) - (#xF2B6 #x9B58) - (#xF2B7 #x9B74) - (#xF2B8 #x9B93) - (#xF2B9 #x9B83) - (#xF2BA #x9B91) - (#xF2BB #x9B96) - (#xF2BC #x9B97) - (#xF2BD #x9B9F) - (#xF2BE #x9BA0) - (#xF2BF #x9BA8) - (#xF2C0 #x9BB4) - (#xF2C1 #x9BC0) - (#xF2C2 #x9BCA) - (#xF2C3 #x9BB9) - (#xF2C4 #x9BC6) - (#xF2C5 #x9BCF) - (#xF2C6 #x9BD1) - (#xF2C7 #x9BD2) - (#xF2C8 #x9BE3) - (#xF2C9 #x9BE2) - (#xF2CA #x9BE4) - (#xF2CB #x9BD4) - (#xF2CC #x9BE1) - (#xF2CD #x9C3A) - (#xF2CE #x9BF2) - (#xF2CF #x9BF1) - (#xF2D0 #x9BF0) - (#xF2D1 #x9C15) - (#xF2D2 #x9C14) - (#xF2D3 #x9C09) - (#xF2D4 #x9C13) - (#xF2D5 #x9C0C) - (#xF2D6 #x9C06) - (#xF2D7 #x9C08) - (#xF2D8 #x9C12) - (#xF2D9 #x9C0A) - (#xF2DA #x9C04) - (#xF2DB #x9C2E) - (#xF2DC #x9C1B) - (#xF2DD #x9C25) - (#xF2DE #x9C24) - (#xF2DF #x9C21) - (#xF2E0 #x9C30) - (#xF2E1 #x9C47) - (#xF2E2 #x9C32) - (#xF2E3 #x9C46) - (#xF2E4 #x9C3E) - (#xF2E5 #x9C5A) - (#xF2E6 #x9C60) - (#xF2E7 #x9C67) - (#xF2E8 #x9C76) - (#xF2E9 #x9C78) - (#xF2EA #x9CE7) - (#xF2EB #x9CEC) - (#xF2EC #x9CF0) - (#xF2ED #x9D09) - (#xF2EE #x9D08) - (#xF2EF #x9CEB) - (#xF2F0 #x9D03) - (#xF2F1 #x9D06) - (#xF2F2 #x9D2A) - (#xF2F3 #x9D26) - (#xF2F4 #x9DAF) - (#xF2F5 #x9D23) - (#xF2F6 #x9D1F) - (#xF2F7 #x9D44) - (#xF2F8 #x9D15) - (#xF2F9 #x9D12) - (#xF2FA #x9D41) - (#xF2FB #x9D3F) - (#xF2FC #x9D3E) - (#xF2FD #x9D46) - (#xF2FE #x9D48) - (#xF3A1 #x9D5D) - (#xF3A2 #x9D5E) - (#xF3A3 #x9D64) - (#xF3A4 #x9D51) - (#xF3A5 #x9D50) - (#xF3A6 #x9D59) - (#xF3A7 #x9D72) - (#xF3A8 #x9D89) - (#xF3A9 #x9D87) - (#xF3AA #x9DAB) - (#xF3AB #x9D6F) - (#xF3AC #x9D7A) - (#xF3AD #x9D9A) - (#xF3AE #x9DA4) - (#xF3AF #x9DA9) - (#xF3B0 #x9DB2) - (#xF3B1 #x9DC4) - (#xF3B2 #x9DC1) - (#xF3B3 #x9DBB) - (#xF3B4 #x9DB8) - (#xF3B5 #x9DBA) - (#xF3B6 #x9DC6) - (#xF3B7 #x9DCF) - (#xF3B8 #x9DC2) - (#xF3B9 #x9DD9) - (#xF3BA #x9DD3) - (#xF3BB #x9DF8) - (#xF3BC #x9DE6) - (#xF3BD #x9DED) - (#xF3BE #x9DEF) - (#xF3BF #x9DFD) - (#xF3C0 #x9E1A) - (#xF3C1 #x9E1B) - (#xF3C2 #x9E1E) - (#xF3C3 #x9E75) - (#xF3C4 #x9E79) - (#xF3C5 #x9E7D) - (#xF3C6 #x9E81) - (#xF3C7 #x9E88) - (#xF3C8 #x9E8B) - (#xF3C9 #x9E8C) - (#xF3CA #x9E92) - (#xF3CB #x9E95) - (#xF3CC #x9E91) - (#xF3CD #x9E9D) - (#xF3CE #x9EA5) - (#xF3CF #x9EA9) - (#xF3D0 #x9EB8) - (#xF3D1 #x9EAA) - (#xF3D2 #x9EAD) - (#xF3D3 #x9761) - (#xF3D4 #x9ECC) - (#xF3D5 #x9ECE) - (#xF3D6 #x9ECF) - (#xF3D7 #x9ED0) - (#xF3D8 #x9ED4) - (#xF3D9 #x9EDC) - (#xF3DA #x9EDE) - (#xF3DB #x9EDD) - (#xF3DC #x9EE0) - (#xF3DD #x9EE5) - (#xF3DE #x9EE8) - (#xF3DF #x9EEF) - (#xF3E0 #x9EF4) - (#xF3E1 #x9EF6) - (#xF3E2 #x9EF7) - (#xF3E3 #x9EF9) - (#xF3E4 #x9EFB) - (#xF3E5 #x9EFC) - (#xF3E6 #x9EFD) - (#xF3E7 #x9F07) - (#xF3E8 #x9F08) - (#xF3E9 #x76B7) - (#xF3EA #x9F15) - (#xF3EB #x9F21) - (#xF3EC #x9F2C) - (#xF3ED #x9F3E) - (#xF3EE #x9F4A) - (#xF3EF #x9F52) - (#xF3F0 #x9F54) - (#xF3F1 #x9F63) - (#xF3F2 #x9F5F) - (#xF3F3 #x9F60) - (#xF3F4 #x9F61) - (#xF3F5 #x9F66) - (#xF3F6 #x9F67) - (#xF3F7 #x9F6C) - (#xF3F8 #x9F6A) - (#xF3F9 #x9F77) - (#xF3FA #x9F72) - (#xF3FB #x9F76) - (#xF3FC #x9F95) - (#xF3FD #x9F9C) - (#xF3FE #x9FA0) - (#xF4A1 #x582F) - (#xF4A2 #x69C7) - (#xF4A3 #x9059) - (#xF4A4 #x7464) - (#xF4A5 #x51DC) - (#xF4A6 #x7199) - )) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/packages.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/packages.lisp deleted file mode 100644 index ace36e8..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/packages.lisp +++ /dev/null @@ -1,115 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; package.lisp --- Package definition for Babel -;;; -;;; Copyright (C) 2007, Luis Oliveira -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(in-package #:cl-user) - -(defpackage #:babel-encodings - (:use #:common-lisp #:alexandria) - (:export - ;; character encoding objects - #:list-character-encodings - #:character-encoding - #:*default-character-encoding* - #:get-character-encoding - #:enc-name - #:enc-aliases - #:enc-code-unit-size - #:enc-max-units-per-char - #:enc-native-endianness - #:enc-decode-literal-code-unit-limit - #:enc-encode-literal-code-unit-limit - #:enc-use-bom - #:enc-bom-encoding - #:enc-nul-encoding - #:enc-default-replacement - #:ambiguous-encoding-p - ;; concrete mappings - #:instantiate-concrete-mappings - #:encoder - #:decoder - #:octet-counter - #:code-point-counter - #:lookup-mapping - #:with-simple-vector - #:with-checked-simple-vector - #:*suppress-character-coding-errors* - ;; errors - #:character-coding-error - #:character-coding-error-encoding ; accessor - #:character-coding-error-buffer ; accessor - #:character-coding-error-position ; accessor - #:character-decoding-error - #:character-decoding-error-octets ; accessor - #:character-encoding-error - #:character-encoding-error-code ; accessor - #:end-of-input-in-character - #:character-out-of-range - #:invalid-utf8-starter-byte - #:invalid-utf8-continuation-byte - #:overlong-utf8-sequence)) - -(defpackage #:babel - (:use #:common-lisp #:babel-encodings #:alexandria) - (:import-from #:babel-encodings) - (:export - ;; types - #:unicode-char - #:unicode-char-code-limit - #:unicode-string - #:simple-unicode-string - ;; fixed sharp-backslash reader - #:enable-sharp-backslash-syntax - #:set-sharp-backslash-syntax-in-readtable - ;; external formats - #:external-format - #:make-external-format - #:ensure-external-format - #:external-format-encoding - #:external-format-eol-style - #:external-format-equal - #:*default-eol-style* - ;; general user API - #:*default-character-encoding* - #:list-character-encodings - #:string-to-octets - #:octets-to-string - #:concatenate-strings-to-octets - #:string-size-in-octets - #:vector-size-in-chars - ;; errors - #:character-coding-error - #:character-coding-error-encoding ; accessor - #:character-coding-error-buffer ; accessor - #:character-coding-error-position ; accessor - #:character-decoding-error - #:character-decoding-error-octets ; accessor - #:character-encoding-error - #:character-encoding-error-code ; accessor - #:end-of-input-in-character - #:character-out-of-range - #:invalid-utf8-starter-byte - #:invalid-utf8-continuation-byte - #:overlong-utf8-sequence)) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/sharp-backslash.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/sharp-backslash.lisp deleted file mode 100644 index d4e772e..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/sharp-backslash.lisp +++ /dev/null @@ -1,82 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; sharp-backslash.lisp --- Alternative #\ dispatch code. -;;; -;;; Copyright (C) 2007-2009, Luis Oliveira -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(in-package #:babel) - -#-allegro -(defun sharp-backslash-reader (original-reader stream char numarg) - (let ((1st-char (read-char stream))) - (if (and (char-equal 1st-char #\u) - ;; because #\z is not a digit char... - (digit-char-p (peek-char nil stream nil #\z) 16)) - ;; something better than READ would be nice here - (let ((token (let ((*read-base* 16)) (read stream)))) - (if (typep token 'babel-encodings::code-point) - (code-char token) - (if *read-suppress* - nil - (simple-reader-error - stream "Unrecognized character name: u~A" token)))) - (funcall original-reader - (make-concatenated-stream (make-string-input-stream - (string 1st-char)) - stream) - char - numarg)))) - -;;; Allegro's PEEK-CHAR seems broken in some situations, and the code -;;; above would generate an error about too many calls to UNREAD-CHAR. -;;; Then Allegro's original SHARP-BACKSLASH wants to UNREAD-CHAR -;;; twice, very weird. This is the best workaround I could think of. -;;; It sucks. -#+allegro -(defun sharp-backslash-reader (original-reader stream char numarg) - (let* ((1st-char (read-char stream)) - (rest (ignore-errors (excl::read-extended-token stream))) - (code (when (and rest (char-equal 1st-char #\u)) - (ignore-errors (parse-integer rest :radix 16))))) - (if code - (code-char code) - (with-input-from-string - (s (concatenate 'string "#\\" (string 1st-char) rest)) - (read-char s) - (read-char s) - (funcall original-reader s char numarg))))) - -(defun make-sharp-backslash-reader () - (let ((original-sharp-backslash (get-dispatch-macro-character #\# #\\))) - (lambda (stream char numarg) - (sharp-backslash-reader original-sharp-backslash stream char numarg)))) - -(defmacro enable-sharp-backslash-syntax () - `(eval-when (:compile-toplevel :execute) - (setf *readtable* (copy-readtable *readtable*)) - (set-sharp-backslash-syntax-in-readtable) - (values))) - -(defun set-sharp-backslash-syntax-in-readtable () - (set-dispatch-macro-character #\# #\\ (make-sharp-backslash-reader)) - (values)) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/streams.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/streams.lisp deleted file mode 100644 index a272f22..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/streams.lisp +++ /dev/null @@ -1,437 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; streams.lisp --- Conversions between strings and UB8 vectors. -;;; -;;; Copyright (c) 2005-2007, Dr. Edmund Weitz. All rights reserved. -;;; Copyright (c) 2008, Attila Lendvai. All rights reserved. -;;; -;;; Redistribution and use in source and binary forms, with or without -;;; modification, are permitted provided that the following conditions -;;; are met: -;;; -;;; * Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. -;;; -;;; * Redistributions in binary form must reproduce the above -;;; copyright notice, this list of conditions and the following -;;; disclaimer in the documentation and/or other materials -;;; provided with the distribution. -;;; -;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED -;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -;;; STATUS -;;; -;;; - in-memory output streams support binary/bivalent/character -;;; element-types and file-position - -;;; TODO -;;; -;;; - filter-stream types/mixins that can wrap a binary stream and -;;; turn it into a bivalent/character stream -;;; - in-memory input streams with file-position similar to in-memory -;;; output streams -;;; - in-memory input/output streams? - -(in-package #:babel) - -(defpackage #:babel-streams - (:use #:common-lisp #:babel #:trivial-gray-streams #:alexandria) - (:export - #:in-memory-stream - #:vector-output-stream - #:vector-input-stream - #:make-in-memory-output-stream - #:make-in-memory-input-stream - #:get-output-stream-sequence - #:with-output-to-sequence - #:with-input-from-sequence)) - -(in-package :babel-streams) - -(declaim (inline check-if-open check-if-accepts-octets - check-if-accepts-characters stream-accepts-characters? - stream-accepts-octets? vector-extend - extend-vector-output-stream-buffer)) - -(defgeneric get-output-stream-sequence (stream &key &allow-other-keys)) - -;;;; Some utilities (on top due to inlining) - -(defun vector-extend (extension vector &key (start 0) (end (length extension))) - ;; copied over from cl-quasi-quote - (declare (optimize speed) - (type vector extension vector) - (type array-index start end)) - (let* ((original-length (length vector)) - (extension-length (- end start)) - (new-length (+ original-length extension-length)) - (original-dimension (array-dimension vector 0))) - (when (< original-dimension new-length) - (setf vector - (adjust-array vector (max (* 2 original-dimension) new-length)))) - (setf (fill-pointer vector) new-length) - (replace vector extension :start1 original-length :start2 start :end2 end) - vector)) - -(defclass in-memory-stream (trivial-gray-stream-mixin) - ((element-type ; :default means bivalent - :initform :default :initarg :element-type :accessor element-type-of) - (%external-format - :initform (ensure-external-format *default-character-encoding*) - :initarg :%external-format :accessor external-format-of) - #+cmu - (open-p - :initform t :accessor in-memory-stream-open-p - :documentation "For CMUCL we have to keep track of this manually.")) - (:documentation "An IN-MEMORY-STREAM is a binary stream that reads octets - from or writes octets to a sequence in RAM.")) - -(defmethod stream-element-type ((self in-memory-stream)) - ;; stream-element-type is a CL symbol, we may not install an accessor on it. - ;; so, go through this extra step. - (element-type-of self)) - -(defun stream-accepts-octets? (stream) - (let ((element-type (element-type-of stream))) - (or (eq element-type :default) - (equal element-type '(unsigned-byte 8)) - (subtypep element-type '(unsigned-byte 8))))) - -(defun stream-accepts-characters? (stream) - (let ((element-type (element-type-of stream))) - (member element-type '(:default character base-char)))) - -(defclass in-memory-input-stream (in-memory-stream fundamental-binary-input-stream) - () - (:documentation "An IN-MEMORY-INPUT-STREAM is a binary stream that reads - octets from a sequence in RAM.")) - -#+cmu -(defmethod output-stream-p ((stream in-memory-input-stream)) - "Explicitly states whether this is an output stream." - (declare (optimize speed)) - nil) - -(defclass in-memory-output-stream (in-memory-stream - fundamental-binary-output-stream) - () - (:documentation "An IN-MEMORY-OUTPUT-STREAM is a binary stream that - writes octets to a sequence in RAM.")) - -#+cmu -(defmethod input-stream-p ((stream in-memory-output-stream)) - "Explicitly states whether this is an input stream." - (declare (optimize speed)) - nil) - -(defun make-in-memory-output-stream (&key (element-type :default) - external-format - initial-buffer-size) - "Returns a binary output stream which accepts objects of type -ELEMENT-TYPE \(a subtype of OCTET) and makes available a sequence that -contains the octes that were actually output." - (declare (optimize speed)) - (unless external-format - (setf external-format *default-character-encoding*)) - (when (eq element-type :bivalent) - (setf element-type :default)) - (make-instance 'vector-output-stream - :vector (make-vector-stream-buffer - :element-type - (cond - ((or (eq element-type :default) - (equal element-type '(unsigned-byte 8))) - '(unsigned-byte 8)) - ((eq element-type 'character) - 'character) - ((subtypep element-type '(unsigned-byte 8)) - '(unsigned-byte 8)) - (t (error "Illegal element-type ~S" element-type))) - :initial-size initial-buffer-size) - :element-type element-type - :%external-format (ensure-external-format external-format))) - -(defun make-in-memory-input-stream (data &key (element-type :default) - external-format) - "Returns a binary input stream which provides the elements of DATA when read." - (declare (optimize speed)) - (unless external-format - (setf external-format *default-character-encoding*)) - (when (eq element-type :bivalent) - (setf element-type :default)) - (make-instance 'vector-input-stream - :vector data - :element-type element-type - :end (length data) - :%external-format (ensure-external-format external-format))) - -(defclass vector-stream () - ((vector - :initarg :vector :accessor vector-stream-vector - :documentation "The underlying vector of the stream which \(for output) - must always be adjustable and have a fill pointer.") - (index - :initform 0 :initarg :index :accessor vector-stream-index - :type (integer 0 #.array-dimension-limit) - :documentation "An index into the underlying vector denoting the - current position.")) - (:documentation - "A VECTOR-STREAM is a mixin for IN-MEMORY streams where the underlying - sequence is a vector.")) - -(defclass vector-input-stream (vector-stream in-memory-input-stream) - ((end - :initarg :end :accessor vector-stream-end - :type (integer 0 #.array-dimension-limit) - :documentation "An index into the underlying vector denoting the end - of the available data.")) - (:documentation "A binary input stream that gets its data from an - associated vector of octets.")) - -(defclass vector-output-stream (vector-stream in-memory-output-stream) - () - (:documentation - "A binary output stream that writes its data to an associated vector.")) - -(define-condition in-memory-stream-error (stream-error) - () - (:documentation "Superclass for all errors related to IN-MEMORY streams.")) - -(define-condition in-memory-stream-closed-error (in-memory-stream-error) - () - (:report (lambda (condition stream) - (format stream "~S is closed." - (stream-error-stream condition)))) - (:documentation "An error that is signalled when someone is trying to read - from or write to a closed IN-MEMORY stream.")) - -(define-condition wrong-element-type-stream-error (stream-error) - ((expected-type :accessor expected-type-of :initarg :expected-type)) - (:report (lambda (condition output) - (let ((stream (stream-error-stream condition))) - (format output "The element-type of ~S is ~S while expecting ~ - a stream that accepts ~S." - stream (element-type-of stream) - (expected-type-of condition)))))) - -(defun wrong-element-type-stream-error (stream expected-type) - (error 'wrong-element-type-stream-error - :stream stream :expected-type expected-type)) - -#+cmu -(defmethod open-stream-p ((stream in-memory-stream)) - "Returns a true value if STREAM is open. See ANSI standard." - (declare (optimize speed)) - (in-memory-stream-open-p stream)) - -#+cmu -(defmethod close ((stream in-memory-stream) &key abort) - "Closes the stream STREAM. See ANSI standard." - (declare (ignore abort) (optimize speed)) - (prog1 - (in-memory-stream-open-p stream) - (setf (in-memory-stream-open-p stream) nil))) - -(defun check-if-open (stream) - "Checks if STREAM is open and signals an error otherwise." - (declare (optimize speed)) - (unless (open-stream-p stream) - (error 'in-memory-stream-closed-error :stream stream))) - -(defun check-if-accepts-octets (stream) - (declare (optimize speed)) - (unless (stream-accepts-octets? stream) - (wrong-element-type-stream-error stream '(unsigned-byte 8)))) - -(defun check-if-accepts-characters (stream) - (declare (optimize speed)) - (unless (stream-accepts-characters? stream) - (wrong-element-type-stream-error stream 'character))) - -(defmethod stream-read-byte ((stream vector-input-stream)) - "Reads one byte and increments INDEX pointer unless we're beyond END pointer." - (declare (optimize speed)) - (check-if-open stream) - (let ((index (vector-stream-index stream))) - (cond ((< index (vector-stream-end stream)) - (incf (vector-stream-index stream)) - (aref (vector-stream-vector stream) index)) - (t :eof)))) - -#+#:ignore -(defmethod stream-read-char ((stream vector-input-stream)) - ;; TODO - ) - -(defmethod stream-listen ((stream vector-input-stream)) - "Checking whether INDEX is beyond END." - (declare (optimize speed)) - (check-if-open stream) - (< (vector-stream-index stream) (vector-stream-end stream))) - -(defmethod stream-read-sequence ((stream vector-input-stream) - sequence start end &key) - (declare (optimize speed) (type array-index start end)) - ;; TODO check the sequence type, assert for the element-type and use - ;; the external-format. - (loop with vector-end of-type array-index = (vector-stream-end stream) - with vector = (vector-stream-vector stream) - for index from start below end - for vector-index of-type array-index = (vector-stream-index stream) - while (< vector-index vector-end) - do (setf (elt sequence index) - (aref vector vector-index)) - (incf (vector-stream-index stream)) - finally (return index))) - -(defmethod stream-write-byte ((stream vector-output-stream) byte) - "Writes a byte \(octet) by extending the underlying vector." - (declare (optimize speed)) - (check-if-open stream) - (check-if-accepts-octets stream) - (vector-push-extend byte (vector-stream-vector stream)) - (incf (vector-stream-index stream)) - byte) - -(defun extend-vector-output-stream-buffer (extension stream &key (start 0) - (end (length extension))) - (declare (optimize speed) - (type array-index start end) - (type vector extension)) - (vector-extend extension (vector-stream-vector stream) :start start :end end) - (incf (vector-stream-index stream) (- end start)) - (values)) - -(defmethod stream-write-char ((stream vector-output-stream) char) - (declare (optimize speed)) - (check-if-open stream) - (if (eq (element-type-of stream) 'character) - (vector-push-extend char (vector-stream-vector stream)) - (let ((octets (string-to-octets (string char) - :encoding (external-format-of stream)))) - (extend-vector-output-stream-buffer octets stream))) - char) - -(defmethod stream-write-sequence ((stream vector-output-stream) - sequence start end &key) - "Just calls VECTOR-PUSH-EXTEND repeatedly." - (declare (optimize speed) - (type array-index start end)) - (etypecase sequence - (string - (if (stream-accepts-octets? stream) - ;; TODO this is naiive here, there's room for optimization - (let ((octets (string-to-octets sequence - :encoding (external-format-of stream) - :start start - :end end))) - (extend-vector-output-stream-buffer octets stream)) - (progn - (assert (stream-accepts-characters? stream)) - (extend-vector-output-stream-buffer sequence stream - :start start :end end)))) - ((vector (unsigned-byte 8)) - ;; specialized branch to help inlining - (check-if-accepts-octets stream) - (extend-vector-output-stream-buffer sequence stream :start start :end end)) - (vector - (check-if-accepts-octets stream) - (extend-vector-output-stream-buffer sequence stream :start start :end end))) - sequence) - -(defmethod stream-write-string ((stream vector-output-stream) - string &optional (start 0) (end (length string))) - (stream-write-sequence stream string start (or end (length string)))) - -(defmethod stream-line-column ((stream vector-output-stream)) - "Dummy line-column method that always returns NIL. Needed for -character output streams." - nil) - -(defmethod stream-file-position ((stream vector-stream)) - "Simply returns the index into the underlying vector." - (declare (optimize speed)) - (vector-stream-index stream)) - -(defun make-vector-stream-buffer (&key (element-type '(unsigned-byte 8)) - initial-size) - "Creates and returns an array which can be used as the underlying vector - for a VECTOR-OUTPUT-STREAM." - (declare (optimize speed) - (type (or null array-index) initial-size)) - (make-array (the array-index (or initial-size 32)) - :adjustable t - :fill-pointer 0 - :element-type element-type)) - -(defmethod get-output-stream-sequence ((stream in-memory-output-stream) &key (return-as 'vector)) - "Returns a vector containing, in order, all the octets that have -been output to the IN-MEMORY stream STREAM. This operation clears any -octets on STREAM, so the vector contains only those octets which have -been output since the last call to GET-OUTPUT-STREAM-SEQUENCE or since -the creation of the stream, whichever occurred most recently. If -AS-LIST is true the return value is coerced to a list." - (declare (optimize speed)) - (let ((vector (vector-stream-vector stream))) - (prog1 - (ecase return-as - (vector vector) - (string (octets-to-string vector :encoding (external-format-of stream))) - (list (coerce vector 'list))) - (setf (vector-stream-vector stream) - (make-vector-stream-buffer :element-type (element-type-of stream)))))) - -(defmacro with-output-to-sequence - ((var &key (return-as ''vector) (element-type '':default) - (external-format '*default-character-encoding*) initial-buffer-size) - &body body) - "Creates an IN-MEMORY output stream, binds VAR to this stream and -then executes the code in BODY. The stream stores data of type -ELEMENT-TYPE \(a subtype of OCTET). The stream is automatically closed -on exit from WITH-OUTPUT-TO-SEQUENCE, no matter whether the exit is -normal or abnormal. The return value of this macro is a vector \(or a -list if AS-LIST is true) containing the octets that were sent to the -stream within BODY." - (multiple-value-bind (body declarations) (parse-body body) - ;; this is here to stop SBCL complaining about binding them to NIL - `(let ((,var (make-in-memory-output-stream - :element-type ,element-type - :external-format ,external-format - :initial-buffer-size ,initial-buffer-size))) - ,@declarations - (unwind-protect - (progn - ,@body - (get-output-stream-sequence ,var :return-as ,return-as)) - (close ,var))))) - -(defmacro with-input-from-sequence - ((var data &key (element-type '':default) - (external-format '*default-character-encoding*)) - &body body) - "Creates an IN-MEMORY input stream that will return the values -available in DATA, binds VAR to this stream and then executes the code -in BODY. The stream stores data of type ELEMENT-TYPE \(a subtype of -OCTET). The stream is automatically closed on exit from -WITH-INPUT-FROM-SEQUENCE, no matter whether the exit is normal or -abnormal. The return value of this macro is the return value of BODY." - (multiple-value-bind (body declarations) (parse-body body) - ;; this is here to stop SBCL complaining about binding them to NIL - `(let ((,var (make-in-memory-input-stream - ,data :element-type ,element-type - :external-format ,external-format))) - ,@declarations - (unwind-protect - (progn - ,@body) - (close ,var))))) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/strings.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/src/strings.lisp deleted file mode 100644 index ba02089..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/src/strings.lisp +++ /dev/null @@ -1,353 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; strings.lisp --- Conversions between strings and UB8 vectors. -;;; -;;; Copyright (C) 2007, Luis Oliveira -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(in-package #:babel) - -;;; The usefulness of this string/octets interface of Babel's is very -;;; limited on Lisps with 8-bit characters which will in effect only -;;; support the latin-1 subset of Unicode. That is, all encodings are -;;; supported but we can only store the first 256 code points in Lisp -;;; strings. Support for using other 8-bit encodings for strings on -;;; these Lisps could be added with an extra encoding/decoding step. -;;; Supporting other encodings with larger code units would be silly -;;; (it would break expectations about common string operations) and -;;; better done with something like Closure's runes. - -;;; Can we handle unicode fully? -(eval-when (:compile-toplevel :load-toplevel :execute) - ;; The EVAL is just here to avoid warnings... - (case (eval char-code-limit) - (#x100 (pushnew '8-bit-chars *features*)) - (#x10000 (pushnew 'ucs-2-chars *features*)) - (#x110000 #| yay |#) - ;; This is here mostly because if the CHAR-CODE-LIMIT is bigger - ;; than #x11000, strange things might happen but we probably - ;; shouldn't descriminate against other, smaller, values. - (t (error "Strange CHAR-CODE-LIMIT (#x~X), bailing out." - char-code-limit)))) - -;;; Adapted from Ironclad. TODO: check if it's worthwhile adding -;;; implementation-specific accessors such as SAP-REF-* for SBCL. -(defmacro ub-get (vector index &optional (bytes 1) (endianness :ne)) - (let ((big-endian (member endianness - '(:be #+big-endian :ne #+little-endian :re)))) - (once-only (vector index) - `(logand - ,(1- (ash 1 (* 8 bytes))) - (logior - ,@(loop for i from 0 below bytes - for offset = (if big-endian i (- bytes i 1)) - for shift = (if big-endian - (* (- bytes i 1) 8) - (* offset 8)) - collect `(ash (aref ,vector (+ ,index ,offset)) ,shift))))))) - -(defmacro ub-set (value vector index &optional (bytes 1) (endianness :ne)) - (let ((big-endian (member endianness - '(:be #+big-endian :ne #+little-endian :re)))) - `(progn - ,@(loop for i from 1 to bytes - for offset = (if big-endian (- bytes i) (1- i)) collect - `(setf (aref ,vector (+ ,index ,offset)) - (ldb (byte 8 ,(* 8 (1- i))) ,value))) - (values)))) - -(defmacro string-get (string index) - `(char-code (schar ,string ,index))) - -(defmacro string-set (code string index) - `(setf (schar ,string ,index) (code-char ,code))) - -;;; SIMPLE-BASE-STRING would also be a subtype of SIMPLE-STRING so we -;;; don't use that because on SBCL BASE-CHARs can only hold ASCII. -;;; Also, with (> SPEED SAFETY) (setf (schar base-str n) big-char) -;;; will quietly work, sort of. -;;; -;;; XXX: test this on various lisps. - -(defconstant unicode-char-code-limit - char-code-limit - "An alias for CL:CHAR-CODE-LIMIT which might be lower than -#x110000 on some Lisps.") - -(deftype unicode-char () - "This character type can hold any characters whose CHAR-CODEs -are less than UNICODE-CHAR-CODE-LIMIT." - #+lispworks 'lw:simple-char - #-lispworks 'character) - -(deftype simple-unicode-string () - "Alias for (SIMPLE-ARRAY UNICODE-CHAR (*))." - '(simple-array unicode-char (*))) - -(deftype unicode-string () - "Alias for (VECTOR UNICODE-CHAR *)." - '(vector unicode-char *)) - -(defparameter *string-vector-mappings* - (instantiate-concrete-mappings - ;; :optimize ((speed 3) (safety 0) (debug 0) (compilation-speed 0)) - :octet-seq-setter ub-set - :octet-seq-getter ub-get - :octet-seq-type (simple-array (unsigned-byte 8) (*)) - :code-point-seq-setter string-set - :code-point-seq-getter string-get - :code-point-seq-type simple-unicode-string)) - -#+sbcl -(defparameter *simple-base-string-vector-mappings* - (instantiate-concrete-mappings - ;; :optimize ((speed 3) (safety 0) (debug 0) (compilation-speed 0)) - :instantiate-decoders nil - :octet-seq-setter ub-set - :octet-seq-getter ub-get - :octet-seq-type (simple-array (unsigned-byte 8) (*)) - :code-point-seq-setter string-set - :code-point-seq-getter string-get - :code-point-seq-type simple-base-string)) - -;;; Do we want a more a specific error condition here? -(defun check-vector-bounds (vector start end) - (unless (<= 0 start end (length vector)) - (error "Invalid start (~A) and end (~A) values for vector of length ~A." - start end (length vector)))) - -(defmacro with-simple-vector (((v vector) (s start) (e end)) &body body) - "If VECTOR is a displaced or adjustable array, binds V to the -underlying simple vector, adds an adequate offset to START and -END and binds those offset values to S and E. Otherwise, if -VECTOR is already a simple array, it's simply bound to V with no -further changes. - -START and END are unchecked and assumed to be within bounds. - -Note that in some Lisps, a slow copying implementation is -necessary to obtain a simple vector thus V will be bound to a -copy of VECTOR coerced to a simple-vector. Therefore, you -shouldn't attempt to modify V." - #+sbcl - `(sb-kernel:with-array-data ((,v ,vector) (,s ,start) (,e ,end)) - ,@body) - #+(or cmu scl) - `(lisp::with-array-data ((,v ,vector) (,s ,start) (,e ,end)) - ,@body) - #+openmcl - (with-unique-names (offset) - `(multiple-value-bind (,v ,offset) - (ccl::array-data-and-offset ,vector) - (let ((,s (+ ,start ,offset)) - (,e (+ ,end ,offset))) - ,@body))) - #+allegro - (with-unique-names (offset) - `(excl::with-underlying-simple-vector (,vector ,v ,offset) - (let ((,e (+ ,end ,offset)) - (,s (+ ,start ,offset))) - ,@body))) - ;; slow, copying implementation - #-(or sbcl cmu scl openmcl allegro) - (once-only (vector) - `(funcall (if (adjustable-array-p ,vector) - #'call-with-array-data/copy - #'call-with-array-data/fast) - ,vector ,start ,end - (lambda (,v ,s ,e) ,@body)))) - -#-(or sbcl cmu scl openmcl allegro) -(progn - ;; Stolen from f2cl. - (defun array-data-and-offset (array) - (loop with offset = 0 do - (multiple-value-bind (displaced-to index-offset) - (array-displacement array) - (when (null displaced-to) - (return-from array-data-and-offset - (values array offset))) - (incf offset index-offset) - (setf array displaced-to)))) - - (defun call-with-array-data/fast (vector start end fn) - (multiple-value-bind (data offset) - (array-data-and-offset vector) - (funcall fn data (+ offset start) (+ offset end)))) - - (defun call-with-array-data/copy (vector start end fn) - (funcall fn (replace (make-array (- end start) :element-type - (array-element-type vector)) - vector :start2 start :end2 end) - 0 (- end start)))) - -(defmacro with-checked-simple-vector (((v vector) (s start) (e end)) &body body) - "Like WITH-SIMPLE-VECTOR but bound-checks START and END." - (once-only (vector start) - `(let ((,e (or ,end (length ,vector)))) - (check-vector-bounds ,vector ,start ,e) - (with-simple-vector ((,v ,vector) (,s ,start) (,e ,e)) - ,@body)))) - -;;; Future features these functions should have: -;;; -;;; * null-terminate -;;; * specify target vector/string + offset -;;; * documentation :) - -(declaim (inline octets-to-string string-to-octets string-size-in-octets - vector-size-in-chars concatenate-strings-to-octets - bom-vector)) - -(defun octets-to-string (vector &key (start 0) end - (errorp (not *suppress-character-coding-errors*)) - (encoding *default-character-encoding*)) - (check-type vector (vector (unsigned-byte 8))) - (with-checked-simple-vector ((vector vector) (start start) (end end)) - (declare (type (simple-array (unsigned-byte 8) (*)) vector)) - (let ((*suppress-character-coding-errors* (not errorp)) - (mapping (lookup-mapping *string-vector-mappings* encoding))) - (multiple-value-bind (size new-end) - (funcall (code-point-counter mapping) vector start end -1) - ;; TODO we could optimize ASCII here: the result should - ;; be a simple-base-string filled using code-char... - (let ((string (make-string size :element-type 'unicode-char))) - (funcall (decoder mapping) vector start new-end string 0) - string))))) - -(defun bom-vector (encoding use-bom) - (check-type use-bom (member :default t nil)) - (the simple-vector - (if (null use-bom) - #() - (let ((enc (typecase encoding - (external-format (external-format-encoding encoding)) - (t (get-character-encoding encoding))))) - (if (or (eq use-bom t) - (and (eq use-bom :default) (enc-use-bom enc))) - ;; VALUES avoids a "type assertion too complex to check" note. - (values (enc-bom-encoding enc)) - #()))))) - -(defun string-to-octets (string &key (encoding *default-character-encoding*) - (start 0) end (use-bom :default) - (errorp (not *suppress-character-coding-errors*))) - (declare (optimize (speed 3) (safety 2))) - (let ((*suppress-character-coding-errors* (not errorp))) - (etypecase string - ;; On some lisps (e.g. clisp and ccl) all strings are BASE-STRING and all - ;; characters are BASE-CHAR. So, only enable this optimization for - ;; selected targets. - #+sbcl - (simple-base-string - (unless end - (setf end (length string))) - (check-vector-bounds string start end) - (let* ((mapping (lookup-mapping *simple-base-string-vector-mappings* - encoding)) - (bom (bom-vector encoding use-bom)) - (bom-length (length bom)) - ;; OPTIMIZE: we could use the (length string) information here - ;; because it's a simple-base-string where each character <= 127 - (result (make-array - (+ (the array-index - (funcall (the function (octet-counter mapping)) - string start end -1)) - bom-length) - :element-type '(unsigned-byte 8)))) - (replace result bom) - (funcall (the function (encoder mapping)) - string start end result bom-length) - result)) - (string - ;; FIXME: we shouldn't really need that coercion to UNICODE-STRING - ;; but we kind of because it's declared all over. To avoid that, - ;; we'd need different types for input and output strings. Or maybe - ;; this is not a problem; figure that out. - (with-checked-simple-vector ((string (coerce string 'unicode-string)) - (start start) (end end)) - (declare (type simple-unicode-string string)) - (let* ((mapping (lookup-mapping *string-vector-mappings* encoding)) - (bom (bom-vector encoding use-bom)) - (bom-length (length bom)) - (result (make-array - (+ (the array-index - (funcall (the function (octet-counter mapping)) - string start end -1)) - bom-length) - :element-type '(unsigned-byte 8)))) - (replace result bom) - (funcall (the function (encoder mapping)) - string start end result bom-length) - result)))))) - -(defun concatenate-strings-to-octets (encoding &rest strings) - "Optimized equivalent of -\(string-to-octets \(apply #'concatenate 'string strings) - :encoding encoding)" - (declare (dynamic-extent strings)) - (let* ((mapping (lookup-mapping *string-vector-mappings* encoding)) - (octet-counter (octet-counter mapping)) - (vector (make-array - (the array-index - (reduce #'+ strings - :key (lambda (string) - (funcall octet-counter - string 0 (length string) -1)))) - :element-type '(unsigned-byte 8))) - (current-index 0)) - (declare (type array-index current-index)) - (dolist (string strings) - (check-type string string) - (with-checked-simple-vector ((string (coerce string 'unicode-string)) - (start 0) (end (length string))) - (declare (type simple-unicode-string string)) - (incf current-index - (funcall (encoder mapping) - string start end vector current-index)))) - vector)) - -(defun string-size-in-octets (string &key (start 0) end (max -1 maxp) - (errorp (not *suppress-character-coding-errors*)) - (encoding *default-character-encoding*)) - (check-type string string) - (with-checked-simple-vector ((string (coerce string 'unicode-string)) - (start start) (end end)) - (declare (type simple-unicode-string string)) - (let ((mapping (lookup-mapping *string-vector-mappings* encoding)) - (*suppress-character-coding-errors* (not errorp))) - (when maxp (assert (plusp max))) - (funcall (octet-counter mapping) string start end max)))) - -(defun vector-size-in-chars (vector &key (start 0) end (max -1 maxp) - (errorp (not *suppress-character-coding-errors*)) - (encoding *default-character-encoding*)) - (check-type vector (vector (unsigned-byte 8))) - (with-checked-simple-vector ((vector vector) (start start) (end end)) - (declare (type (simple-array (unsigned-byte 8) (*)) vector)) - (let ((mapping (lookup-mapping *string-vector-mappings* encoding)) - (*suppress-character-coding-errors* (not errorp))) - (when maxp (assert (plusp max))) - (funcall (code-point-counter mapping) vector start end max)))) - -(declaim (notinline octets-to-string string-to-octets string-size-in-octets - vector-size-in-chars concatenate-strings-to-octets)) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/ascii.txt b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/ascii.txt deleted file mode 100644 index d430ef4..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/ascii.txt +++ /dev/null @@ -1,212 +0,0 @@ - -UTF-8 encoded sample plain-text file - - -Markus Kuhn [maks kun] 2002-07-25 - - -The ASCII compatible UTF-8 encoding used in this plain-text file -is defined in Unicode, ISO 10646-1, and RFC 2279. - - -Using Unicode/UTF-8, you can write in emails and source code things such as - -Mathematics and sciences: - - Eda = Q, n , f(i) = g(i), - a+b - x: x = x, = ( ), - c - , - - < a b c d (A B), - a-b - 2H + O 2HO, R = 4.7 k, 200 mm i=1 - -Linguistics and dictionaries: - - i ntnnl fntk sosien - Y [psiln], Yen [jn], Yoga [jog] - -APL: - - ((VV)=V)/V,V - -Nicer typography in plain text files: - - - - single and double quotes - - Curly apostrophes: Weve been here - - Latin-1 apostrophe and accents: '` - - deutsche Anfhrungszeichen - - , , , , 34, , 5/+5, , - - ASCII safety test: 1lI|, 0OD, 8B - - the euro symbol: 14.95 - - - -Combining characters: - - STARGTE SG-1, a = v = r, a b - -Greek (in Polytonic): - - The Greek anthem: - - - , - - . - - - - - , , ! - - From a speech of Demosthenes in the 4th century BC: - - , , - - - , - , - . - , , - . , - - , , - - , - . , - - , - . - - , - -Georgian: - - From a Unicode conference invitation: - - Unicode- - , 10-12 , - . , . - Unicode-, - , Unicode- - , , , - . - -Russian: - - From a Unicode conference invitation: - - - Unicode, 10-12 1997 . - - Unicode, , - Unicode - , , . - -Thai (UCS Level 2): - - Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese - classic 'San Gua'): - - [----------------------------|------------------------] - - - - - - - - - - (The above is a two-column text. If combining characters are handled - correctly, the lines of the second column should be aligned with the - | character above.) - -Ethiopian: - - Proverbs in the Amharic language: - - - - - - - - - - - - - - - - - - - - -Runes: - - - - (Old English, which transcribed into Latin reads 'He cwaeth that he - bude thaem lande northweardum with tha Westsae.' and means 'He said - that he lived in the northern land near the Western Sea.') - -Braille: - - - - - - - - - - - - - - - - - - - - - - - (The first couple of paragraphs of "A Christmas Carol" by Dickens) - -Compact font selection example text: - - ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 - abcdefghijklmnopqrstuvwxyz - - - -Greetings in various languages: - - Hello world, , - -Box drawing alignment tests: - - - - - - - - - diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/ascii.txt-utf8 b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/ascii.txt-utf8 deleted file mode 100644 index d430ef4..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/ascii.txt-utf8 +++ /dev/null @@ -1,212 +0,0 @@ - -UTF-8 encoded sample plain-text file - - -Markus Kuhn [maks kun] 2002-07-25 - - -The ASCII compatible UTF-8 encoding used in this plain-text file -is defined in Unicode, ISO 10646-1, and RFC 2279. - - -Using Unicode/UTF-8, you can write in emails and source code things such as - -Mathematics and sciences: - - Eda = Q, n , f(i) = g(i), - a+b - x: x = x, = ( ), - c - , - - < a b c d (A B), - a-b - 2H + O 2HO, R = 4.7 k, 200 mm i=1 - -Linguistics and dictionaries: - - i ntnnl fntk sosien - Y [psiln], Yen [jn], Yoga [jog] - -APL: - - ((VV)=V)/V,V - -Nicer typography in plain text files: - - - - single and double quotes - - Curly apostrophes: Weve been here - - Latin-1 apostrophe and accents: '` - - deutsche Anfhrungszeichen - - , , , , 34, , 5/+5, , - - ASCII safety test: 1lI|, 0OD, 8B - - the euro symbol: 14.95 - - - -Combining characters: - - STARGTE SG-1, a = v = r, a b - -Greek (in Polytonic): - - The Greek anthem: - - - , - - . - - - - - , , ! - - From a speech of Demosthenes in the 4th century BC: - - , , - - - , - , - . - , , - . , - - , , - - , - . , - - , - . - - , - -Georgian: - - From a Unicode conference invitation: - - Unicode- - , 10-12 , - . , . - Unicode-, - , Unicode- - , , , - . - -Russian: - - From a Unicode conference invitation: - - - Unicode, 10-12 1997 . - - Unicode, , - Unicode - , , . - -Thai (UCS Level 2): - - Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese - classic 'San Gua'): - - [----------------------------|------------------------] - - - - - - - - - - (The above is a two-column text. If combining characters are handled - correctly, the lines of the second column should be aligned with the - | character above.) - -Ethiopian: - - Proverbs in the Amharic language: - - - - - - - - - - - - - - - - - - - - -Runes: - - - - (Old English, which transcribed into Latin reads 'He cwaeth that he - bude thaem lande northweardum with tha Westsae.' and means 'He said - that he lived in the northern land near the Western Sea.') - -Braille: - - - - - - - - - - - - - - - - - - - - - - - (The first couple of paragraphs of "A Christmas Carol" by Dickens) - -Compact font selection example text: - - ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 - abcdefghijklmnopqrstuvwxyz - - - -Greetings in various languages: - - Hello world, , - -Box drawing alignment tests: - - - - - - - - - diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/benchmarks.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/benchmarks.lisp deleted file mode 100644 index 1b1d294..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/benchmarks.lisp +++ /dev/null @@ -1,43 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; benchmarks.lisp --- Benchmarks, Babel vs. other implementations. -;;; -;;; Copyright (C) 2007, Luis Oliveira -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(defpackage #:babel-benchmarks - (:use #:cl #:babel)) -(in-package #:babel-benchmarks) - -(defun benchmark (enc file-name file-type &optional (n 100)) - (let* ((octets (read-test-file file-name file-type)) - (string (octets-to-string octets :encoding enc))) - (write-line ";; testing SB-EXT:STRING-TO-OCTETS") - (time (loop repeat n do - (sb-ext:string-to-octets string :external-format enc))) - (write-line ";; testing BABEL:STRING-TO-OCTETS") - (time (loop repeat n do (string-to-octets string :encoding enc))) - (write-line ";; testing SB-EXT:OCTETS-TO-STRING") - (time (loop repeat n do - (sb-ext:octets-to-string octets :external-format enc))) - (write-line ";; testing BABEL:OCTETS-TO-STRING") - (time (loop repeat n do (octets-to-string octets :encoding enc))))) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/ebcdic-fi.txt b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/ebcdic-fi.txt deleted file mode 100644 index e69de29..0000000 diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/ebcdic-fi.txt-utf8 b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/ebcdic-fi.txt-utf8 deleted file mode 100644 index e69de29..0000000 diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/ebcdic-us.txt b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/ebcdic-us.txt deleted file mode 100644 index 910ad2d..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/ebcdic-us.txt +++ /dev/null @@ -1 +0,0 @@ -%äãÆ`ø@…•ƒ–„…„@¢”—“…@—“‰•`£…§£@†‰“…%%%Ô™’¤¢@Ò¤ˆ•@”’¢@’¤•@Lˆ££—zaa¦¦¦Kƒ“Kƒ”KƒK¤’a¡”‡’òõan@@òððò`ð÷`òõ%%%㈅@ÁâÃÉÉ@ƒ–”—£‰‚“…@äãÆ`ø@…•ƒ–„‰•‡@¤¢…„@‰•@£ˆ‰¢@—“‰•`£…§£@†‰“…%‰¢@„…†‰•…„@‰•@䕉ƒ–„…k@ÉâÖ@ñðöôö`ñk@•„@ÙÆÃ@òò÷ùK%%%䢉•‡@䕉ƒ–„…aäãÆ`øk@¨–¤@ƒ•@¦™‰£…@‰•@…”‰“¢@•„@¢–¤™ƒ…@ƒ–„…@£ˆ‰•‡¢@¢¤ƒˆ@¢%%Ô£ˆ…”£‰ƒ¢@•„@¢ƒ‰…•ƒ…¢z%%@@@Å„@~@Øk@@•@@k@@†M‰]@~@@‡M‰]k@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N‚@%@@§z@§@~@§k@@@_@~@_M_@@]k@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ƒ@@@%@@@@@@@@@@@@k@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@L@@@‚@@ƒ@@„@@@@MÁ@@Â]k@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`‚%@@òÈ@N@Ö@@òÈÖk@Ù@~@ôK÷@’k@@òðð@””@@@@@‰~ñ@@@@%%Ó‰•‡¤‰¢£‰ƒ¢@•„@„‰ƒ£‰–•™‰…¢z%%@@‰@•£••“@†•£’@¢–¢‰…•%@@è@—¢‰“•k@è…•@‘•k@è–‡@‘–‡%%Á×Óz%%@@MMåå]~å]aåkå@@@@%%Õ‰ƒ…™@£¨—–‡™—ˆ¨@‰•@—“‰•@£…§£@†‰“…¢z%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@¢‰•‡“…@•„@„–¤‚“…@˜¤–£…¢@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@䙓¨@—–¢£™–—ˆ…¢z@æ…¥…@‚……•@ˆ…™…@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@Ó£‰•`ñ@—–¢£™–—ˆ…@•„@ƒƒ…•£¢z@}y@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@„…¤£¢ƒˆ…@Á•†ˆ™¤•‡¢©…‰ƒˆ…•@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@k@k@k@k@óôk@k@õaNõk@k@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@ÁâÃÉÉ@¢†…£¨@£…¢£z@ñ“ÉOk@ðÖÄk@øÂ@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@£ˆ…@…¤™–@¢¨”‚–“z@@ñôKùõ@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%Ö”‚‰•‰•‡@ƒˆ™ƒ£…™¢z%%@@âãÁÙÇãÅ@âÇ`ñk@@~@¥@~@™k@@@‚%%Ç™……’@M‰•@×–“¨£–•‰ƒ]z%%@@㈅@Ç™……’@•£ˆ…”z%%@@@@@@%@@@@@k%@@@@@@%@@@@@@@K%%@@@@@%@@@@@%@@@@@%@@k@@k@Z%%@@Æ™–”@@¢—……ƒˆ@–†@Ä…”–¢£ˆ…•…¢@‰•@£ˆ…@ô£ˆ@ƒ…•£¤™¨@ÂÃz%%@@@@@@k@@@k%@@@@@@@@@@@%@@@@@@@@@@%@@@@@k@@@%@@@@k@@@@@@%@@@@@K@@@@@%@@@@@@@@k@@@k%@@@@@@@K@@k@@%@@@@@@@@@@@@%@@k@@@@@@@k@@%@@@@@@@@@%@@@@@@k@@@%@@K@@@@@k@@@@%@@@@@@@@@@@%@@@@@k@@@@%@@@@@K%%@@k@@%%Ç…–™‡‰•z%%@@Æ™–”@@䕉ƒ–„…@ƒ–•†…™…•ƒ…@‰•¥‰££‰–•z%%@@@@@@䕉ƒ–„…`@@%@@@k@@@ñð`ñò@k%@@K@k@K@@@@%@@@@@@@@䕉ƒ–„…`k%@@@@k@䕉ƒ–„…`@%@@@k@@@k@k%@@@@@@@K%%Ù¤¢¢‰•z%%@@Æ™–”@@䕉ƒ–„…@ƒ–•†…™…•ƒ…@‰•¥‰££‰–•z%%@@@@@@@@%@@䕉ƒ–„…k@@@ñð`ñò@@ñùù÷@@@@@K%@@@@@@@@@@%@@@@䕉ƒ–„…k@@@k@@%@@@䕉ƒ–„…@@@@@@%@@k@k@@@@@K%%㈉@MäÃâ@Ó…¥…“@ò]z%%@@ŧƒ…™—£@†™–”@@—–…£™¨@–•@㈅@Ù–”•ƒ…@–†@㈅@㈙……@Ò‰•‡„–”¢@M@ȉ•…¢…%@@ƒ“¢¢‰ƒ@}â•@Ǥ}]z%%@@````````````````````````````O````````````````````````%@@@@@@@%@@@@@@@@@%@@@@@@@@@@@@@@@%@@@@@@@@@@@%@@@@@@@@@@%@@@@@@@@@@@@%@@@@@@@@@@@@@@%@@@@@@@@@@@@@@%%@@M㈅@‚–¥…@‰¢@@£¦–`ƒ–“¤”•@£…§£K@Ɇ@ƒ–”‚‰•‰•‡@ƒˆ™ƒ£…™¢@™…@ˆ•„“…„%@@ƒ–™™…ƒ£“¨k@£ˆ…@“‰•…¢@–†@£ˆ…@¢…ƒ–•„@ƒ–“¤”•@¢ˆ–¤“„@‚…@“‰‡•…„@¦‰£ˆ@£ˆ…%@@O@ƒˆ™ƒ£…™@‚–¥…K]%%Å£ˆ‰–—‰•z%%@@×™–¥…™‚¢@‰•@£ˆ…@Á”ˆ™‰ƒ@“•‡¤‡…z%%@@@@@%@@@@@%@@@@@%@@@@@@@%@@@@@%@@@@@%@@@%@@@@@@%@@@@@%@@@@@@@%@@@@@@%@@@@@@@%@@@@@%@@@@@@@%@@@@@@@%@@@@@%@@@@@@%@@@@@%%Ù¤•…¢z%%@@@@@@@@@@@@@%%@@MÖ“„@Å•‡“‰¢ˆk@¦ˆ‰ƒˆ@£™•¢ƒ™‰‚…„@‰•£–@Ó£‰•@™…„¢@}È…@ƒ¦…£ˆ@£ˆ£@ˆ…%@@‚¤„…@£ˆ…”@“•„…@•–™£ˆ¦…™„¤”@¦‰£ˆ@£ˆ@æ…¢£¢…K}@•„@”…•¢@}È…@¢‰„%@@£ˆ£@ˆ…@“‰¥…„@‰•@£ˆ…@•–™£ˆ…™•@“•„@•…™@£ˆ…@æ…¢£…™•@â…K}]%%™‰““…z%%@@@@@@%%@@@@@@@@@@@%@@@@@@@@@@%@@@@@@@@@%@@@@@@@@@%@@@@@@@@@@%@@@@@@@%%@@@@@@@@@%%@@@@@@@@@@@@%@@@@@@@@@%@@@@@@@@@@%@@@@@@@@@@%@@@@@@@@@@%@@@@@@@@@%@@@@@@@@@@@%@@@@@@@@@%@@@@@@@@%%@@M㈅@†‰™¢£@ƒ–¤—“…@–†@—™‡™—ˆ¢@–†@Á@È™‰¢£”¢@Ù–“@‚¨@ĉƒ’…•¢]%%Ö”—ƒ£@†–•£@¢…“…ƒ£‰–•@…§”—“…@£…§£z%%@@ÁÂÃÄÅÆÇÈÉÑÒÓÔÕÖרÙâãäåæçèé@aðñòóôõö÷øù%@@‚ƒ„…†‡ˆ‰‘’“”•–—˜™¢£¤¥¦§¨©@%@@@@%@@@@@%%Ç™……£‰•‡¢@‰•@¥™‰–¤¢@“•‡¤‡…¢z%%@@È…““–@¦–™“„k@@k@%%–§@„™¦‰•‡@“‰‡•”…•£@£…¢£¢z@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@% \ No newline at end of file diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/ebcdic-us.txt-utf8 b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/ebcdic-us.txt-utf8 deleted file mode 100644 index e7ea1ac..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/ebcdic-us.txt-utf8 +++ /dev/null @@ -1,212 +0,0 @@ - -UTF-8 encoded sample plain-text file - - -Markus Kuhn maks kun 2002-07-25 - - -The ASCII compatible UTF-8 encoding used in this plain-text file -is defined in Unicode, ISO 10646-1, and RFC 2279. - - -Using Unicode/UTF-8, you can write in emails and source code things such as - -Mathematics and sciences: - - Eda = Q, n , f(i) = g(i), - a+b - x: x = x, ¬ = ¬(¬ ), - c - , - - < a b c d (A B), - a-b - 2H + O 2HO, R = 4.7 k, 200 mm i=1 - -Linguistics and dictionaries: - - i ntnnl fntk sosien - Y psiln, Yen jn, Yoga jog - -APL: - - ((VV)=V)/V,V - -Nicer typography in plain text files: - - - - single and double quotes - - Curly apostrophes: Weve been here - - Latin-1 apostrophe and accents: '` - - deutsche Anfhrungszeichen - - , , , , 34, , 5/+5, , - - ASCII safety test: 1lI|, 0OD, 8B - - the euro symbol: 14.95 - - - -Combining characters: - - STARGTE SG-1, a = v = r, a b - -Greek (in Polytonic): - - The Greek anthem: - - - , - - . - - - - - , , ! - - From a speech of Demosthenes in the 4th century BC: - - , , - - - , - , - . - , , - . , - - , , - - , - . , - - , - . - - , - -Georgian: - - From a Unicode conference invitation: - - Unicode- - , 10-12 , - . , . - Unicode-, - , Unicode- - , , , - . - -Russian: - - From a Unicode conference invitation: - - - Unicode, 10-12 1997 . - - Unicode, , - Unicode - , , . - -Thai (UCS Level 2): - - Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese - classic 'San Gua'): - - ----------------------------|------------------------ - - - - - - - - - - (The above is a two-column text. If combining characters are handled - correctly, the lines of the second column should be aligned with the - | character above.) - -Ethiopian: - - Proverbs in the Amharic language: - - - - - - - - - - - - - - - - - - - - -Runes: - - - - (Old English, which transcribed into Latin reads 'He cwaeth that he - bude thaem lande northweardum with tha Westsae.' and means 'He said - that he lived in the northern land near the Western Sea.') - -Braille: - - - - - - - - - - - - - - - - - - - - - - - (The first couple of paragraphs of "A Christmas Carol" by Dickens) - -Compact font selection example text: - - ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 - abcdefghijklmnopqrstuvwxyz - - - -Greetings in various languages: - - Hello world, , - -Box drawing alignment tests: - - - - - - - - - diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/gen-test-files.sh b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/gen-test-files.sh deleted file mode 100644 index cd0e343..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/gen-test-files.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -# -*- indent-tabs-mode: nil -*- -# -# gen-test-files.sh --- Generates test files with iconv. -# -# Copyright (C) 2007, Luis Oliveira -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, copy, -# modify, merge, publish, distribute, sublicense, and/or sell copies -# of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -# DEALINGS IN THE SOFTWARE. - -INPUT_FILE="utf-8.txt" -INPUT_ENC="utf-8" -CHARSETS=('ebcdic-us' 'ascii' 'iso-8859-1' 'utf-16' 'utf-32') - -echo "Converting $INPUT_FILE..." -for c in ${CHARSETS[@]}; do - echo " ${c}.txt"; - iconv -c -f $INPUT_ENC -t $c $INPUT_FILE > ${c}.txt; - iconv -f $c -t 'utf-8' ${c}.txt > ${c}.txt-utf8; -done diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/streams.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/streams.lisp deleted file mode 100644 index 9dd53df..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/streams.lisp +++ /dev/null @@ -1,45 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; streams.lisp --- Unit and regression tests for Babel streams. -;;; -;;; Copyright (C) 2007, Attila Lendva -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(in-package #:babel-tests) - -(eval-when (:compile-toplevel :load-toplevel :execute) - (use-package :babel-streams)) - -(deftest in-memory-vector-stream - (with-output-to-sequence (output) - ;; TODO use a better test lib and inject asserts for the file position - ;(print (file-position output)) - (write-sequence "éáőűú" output) - ;(print (file-position output)) - (write-char #\ű output) - ;(print (file-position output)) - (write-byte 12 output) - (write-sequence (string-to-octets "körte") output) - (write-string "körte" output) - ;(print (file-position output)) - ) - #(195 169 195 161 197 145 197 177 195 186 197 177 12 107 195 182 114 116 101)) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/tests.lisp b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/tests.lisp deleted file mode 100644 index 627f56e..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/tests.lisp +++ /dev/null @@ -1,927 +0,0 @@ -;;;; -*- Mode: lisp; indent-tabs-mode: nil -*- -;;; -;;; tests.lisp --- Unit and regression tests for Babel. -;;; -;;; Copyright (C) 2007-2009, Luis Oliveira -;;; -;;; Permission is hereby granted, free of charge, to any person -;;; obtaining a copy of this software and associated documentation -;;; files (the "Software"), to deal in the Software without -;;; restriction, including without limitation the rights to use, copy, -;;; modify, merge, publish, distribute, sublicense, and/or sell copies -;;; of the Software, and to permit persons to whom the Software is -;;; furnished to do so, subject to the following conditions: -;;; -;;; The above copyright notice and this permission notice shall be -;;; included in all copies or substantial portions of the Software. -;;; -;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -;;; DEALINGS IN THE SOFTWARE. - -(in-package #:cl-user) -(defpackage #:babel-tests - (:use #:common-lisp #:babel #:babel-encodings #:hu.dwim.stefil) - (:import-from #:alexandria #:ignore-some-conditions) - (:export #:run)) -(in-package #:babel-tests) - -(defun indented-format (level stream format-control &rest format-arguments) - (let ((line-prefix (make-string level :initial-element #\Space))) - (let ((output (format nil "~?~%" format-control format-arguments))) - (with-input-from-string (s output) - (loop for line = (read-line s nil nil) until (null line) - do (format stream "~A~A~%" line-prefix line)))))) - -;; adapted from https://github.com/luismbo/stefil/blob/master/source/suite.lisp -(defun describe-failed-tests (&key (result *last-test-result*) (stream t)) - "Prints out a report for RESULT in STREAM. - -RESULT defaults to `*last-test-result*' and STREAM defaults to t" - (let ((descs (hu.dwim.stefil::failure-descriptions-of result))) - (cond ((zerop (length descs)) - (format stream "~&~%[no failures!]")) - (t - (format stream "~&~%Test failures:~%") - (dotimes (i (length descs)) - (let ((desc (aref descs i)) - format-control format-arguments) - ;; XXX: most of Stefil's conditions specialise DESCRIBE-OBJECT - ;; with nice human-readable messages. We should add any missing - ;; ones (like UNEXPECTED-ERROR) and ditch this code. - (etypecase desc - (hu.dwim.stefil::unexpected-error - (let ((c (hu.dwim.stefil::condition-of desc))) - (typecase c - (simple-condition - (setf format-control (simple-condition-format-control c)) - (setf format-arguments - (simple-condition-format-arguments c))) - (t - (setf format-control "~S" - format-arguments (list c)))))) - (hu.dwim.stefil::failed-assertion - (setf format-control (hu.dwim.stefil::format-control-of desc) - format-arguments (hu.dwim.stefil::format-arguments-of desc))) - (hu.dwim.stefil::missing-condition - (setf format-control "~A" - format-arguments (list (with-output-to-string (stream) - (describe desc stream))))) - (null - (setf format-control "Test succeeded!"))) - (format stream "~%Failure ~A: ~A when running ~S~%~%" - (1+ i) - (type-of desc) - (hu.dwim.stefil::name-of (hu.dwim.stefil::test-of (first (hu.dwim.stefil::test-context-backtrace-of desc))))) - (indented-format 4 stream "~?" format-control format-arguments))))))) - -(defun run () - (let ((test-run (without-debugging (babel-tests)))) - (print test-run) - (describe-failed-tests :result test-run) - (values (zerop (length (hu.dwim.stefil::failure-descriptions-of test-run))) - test-run))) - -(defsuite* (babel-tests :in root-suite)) - -(defun ub8v (&rest contents) - (make-array (length contents) :element-type '(unsigned-byte 8) - :initial-contents contents)) - -(defun make-ub8-vector (size) - (make-array size :element-type '(unsigned-byte 8) - :initial-element 0)) - -(defmacro returns (form &rest values) - "Asserts, through EQUALP, that FORM returns VALUES." - `(is (equalp (multiple-value-list ,form) (list ,@values)))) - -(defmacro defstest (name form &body return-values) - "Similar to RT's DEFTEST." - `(deftest ,name () - (returns ,form ,@(mapcar (lambda (x) `',x) return-values)))) - -(defun fail (control-string &rest arguments) - (hu.dwim.stefil::record/failure 'hu.dwim.stefil::failed-assertion - :format-control control-string - :format-arguments arguments)) - -(defun expected (expected &key got) - (fail "expected ~A, got ~A instead" expected got)) - -(enable-sharp-backslash-syntax) - -;;;; Simple tests using ASCII - -(defstest enc.ascii.1 - (string-to-octets "abc" :encoding :ascii) - #(97 98 99)) - -(defstest enc.ascii.2 - (string-to-octets (string #\uED) :encoding :ascii :errorp nil) - #(#x1a)) - -(deftest enc.ascii.3 () - (handler-case - (string-to-octets (string #\uED) :encoding :ascii :errorp t) - (character-encoding-error (c) - (is (eql 0 (character-coding-error-position c))) - (is (eq :ascii (character-coding-error-encoding c))) - (is (eql #xed (character-encoding-error-code c)))) - (:no-error (result) - (expected 'character-encoding-error :got result)))) - -(defstest dec.ascii.1 - (octets-to-string (ub8v 97 98 99) :encoding :ascii) - "abc") - -(deftest dec.ascii.2 () - (handler-case - (octets-to-string (ub8v 97 128 99) :encoding :ascii :errorp t) - (character-decoding-error (c) - (is (equalp #(128) (character-decoding-error-octets c))) - (is (eql 1 (character-coding-error-position c))) - (is (eq :ascii (character-coding-error-encoding c)))) - (:no-error (result) - (expected 'character-decoding-error :got result)))) - -(defstest dec.ascii.3 - (octets-to-string (ub8v 97 255 98 99) :encoding :ascii :errorp nil) - #(#\a #\Sub #\b #\c)) - -(defstest oct-count.ascii.1 - (string-size-in-octets "abc" :encoding :ascii) - 3 3) - -(defstest char-count.ascii.1 - (vector-size-in-chars (ub8v 97 98 99) :encoding :ascii) - 3 3) - -;;;; UTF-8 - -(defstest char-count.utf-8.1 - ;; "ni hao" in hanzi with the last octet missing - (vector-size-in-chars (ub8v 228 189 160 229 165) :errorp nil) - 2 5) - -(deftest char-count.utf-8.2 () - ;; same as above with the last 2 octets missing - (handler-case - (vector-size-in-chars (ub8v 228 189 160 229) :errorp t) - (end-of-input-in-character (c) - (is (equalp #(229) (character-decoding-error-octets c))) - (is (eql 3 (character-coding-error-position c))) - (is (eq :utf-8 (character-coding-error-encoding c)))) - (:no-error (result) - (expected 'end-of-input-in-character :got result)))) - -;;; Lispworks bug? -;; #+lispworks -;; (pushnew 'dec.utf-8.1 rtest::*expected-failures*) - -(defstest dec.utf-8.1 - (octets-to-string (ub8v 228 189 160 229) :errorp nil) - #(#\u4f60 #\ufffd)) - -(deftest dec.utf-8.2 () - (handler-case - (octets-to-string (ub8v 228 189 160 229) :errorp t) - (end-of-input-in-character (c) - (is (equalp #(229) (character-decoding-error-octets c))) - (is (eql 3 (character-coding-error-position c))) - (is (eq :utf-8 (character-coding-error-encoding c)))) - (:no-error (result) - (expected 'end-of-input-in-character :got result)))) - -;;;; UTF-16 - -;;; Test that the BOM is not being counted as a character. -(deftest char-count.utf-16.bom () - (is (eql (vector-size-in-chars (ub8v #xfe #xff #x00 #x55 #x00 #x54 #x00 #x46) - :encoding :utf-16) - 3)) - (is (eql (vector-size-in-chars (ub8v #xff #xfe #x00 #x55 #x00 #x54 #x00 #x46) - :encoding :utf-16) - 3))) - -;;;; UTF-32 - -;;; RT: check that UTF-32 characters without a BOM are treated as -;;; little-endian. -(deftest endianness.utf-32.no-bom () - (is (string= "a" (octets-to-string (ub8v 0 0 0 97) :encoding :utf-32)))) - -;;;; MORE TESTS - -(defparameter *standard-characters* - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!$\"'(),_-./:;?+<=>#%&*@[\\]{|}`^~") - -;;; Testing consistency by encoding and decoding a simple string for -;;; all character encodings. -(deftest rw-equiv.1 () - (let ((compatible-encodings (remove :ebcdic-international (list-character-encodings)))) - (dolist (*default-character-encoding* compatible-encodings) - (let ((octets (string-to-octets *standard-characters*))) - (is (string= (octets-to-string octets) *standard-characters*)))))) - -;;; FIXME: assumes little-endianness. Easily fixable when we -;;; implement the BE and LE variants of :UTF-16. -(deftest concatenate-strings-to-octets-equiv.1 () - (let ((foo (octets-to-string (ub8v 102 195 186 195 186) - :encoding :utf-8)) - (bar (octets-to-string (ub8v 98 195 161 114) - :encoding :utf-8))) - ;; note: FOO and BAR are not ascii - (is (equalp (concatenate-strings-to-octets :utf-8 foo bar) - (ub8v 102 195 186 195 186 98 195 161 114))) - (is (equalp (concatenate-strings-to-octets :utf-16 foo bar) - (ub8v 102 0 250 0 250 0 98 0 225 0 114 0))))) - -;;;; Testing against files generated by GNU iconv. - -(defun test-file (name type) - (uiop:subpathname (asdf:system-relative-pathname "babel-tests" "tests/") - name :type type)) - -(defun read-test-file (name type) - (with-open-file (in (test-file name type) :element-type '(unsigned-byte 8)) - (let* ((data (loop for byte = (read-byte in nil nil) - until (null byte) collect byte))) - (make-array (length data) :element-type '(unsigned-byte 8) - :initial-contents data)))) - -(deftest test-encoding (enc &optional input-enc-name) - (let* ((*default-character-encoding* enc) - (enc-name (string-downcase (symbol-name enc))) - (utf8-octets (read-test-file enc-name "txt-utf8")) - (foo-octets (read-test-file (or input-enc-name enc-name) "txt")) - (utf8-string (octets-to-string utf8-octets :encoding :utf-8 :errorp t)) - (foo-string (octets-to-string foo-octets :errorp t))) - (is (string= utf8-string foo-string)) - (is (= (length foo-string) (vector-size-in-chars foo-octets :errorp t))) - (unless (member enc '(:utf-16 :utf-32)) - ;; FIXME: skipping UTF-16 and UTF-32 because of the BOMs and - ;; because the input might not be in native-endian order so the - ;; comparison will fail there. - (let ((new-octets (string-to-octets foo-string :errorp t))) - (is (equalp new-octets foo-octets)) - (is (eql (length foo-octets) - (string-size-in-octets foo-string :errorp t))))))) - -(deftest iconv-test () - (dolist (enc '(:ascii :ebcdic-us :ebcdic-fi :utf-8 :utf-16 :utf-32)) - (case enc - (:utf-16 (test-encoding :utf-16 "utf-16-with-le-bom")) - (:utf-32 (test-encoding :utf-32 "utf-32-with-le-bom"))) - (test-encoding enc))) - -;;; RT: accept encoding objects in LOOKUP-MAPPING etc. -(defstest encoding-objects.1 - (string-to-octets "abc" :encoding (get-character-encoding :ascii)) - #(97 98 99)) - -(defmacro with-sharp-backslash-syntax (&body body) - `(let ((*readtable* (copy-readtable *readtable*))) - (set-sharp-backslash-syntax-in-readtable) - ,@body)) - -(defstest sharp-backslash.1 - (with-sharp-backslash-syntax - (loop for string in '("#\\a" "#\\u" "#\\ued") - collect (char-code (read-from-string string)))) - (97 117 #xed)) - -(deftest sharp-backslash.2 () - (signals reader-error (with-sharp-backslash-syntax - (read-from-string "#\\u12zz")))) - -(deftest test-read-from-string (string object position) - "Test that (read-from-string STRING) returns values OBJECT and POSITION." - (multiple-value-bind (obj pos) - (read-from-string string) - (is (eql object obj)) - (is (eql position pos)))) - -;;; RT: our #\ reader didn't honor *READ-SUPPRESS*. -(deftest sharp-backslash.3 () - (with-sharp-backslash-syntax - (let ((*read-suppress* t)) - (test-read-from-string "#\\ujunk" nil 7) - (test-read-from-string "#\\u12zz" nil 7)))) - -;;; RT: the slow implementation of with-simple-vector was buggy. -(defstest string-to-octets.1 - (code-char (aref (string-to-octets "abc" :start 1 :end 2) 0)) - #\b) - -(defstest simple-base-string.1 - (string-to-octets (coerce "abc" 'base-string) :encoding :ascii) - #(97 98 99)) - -;;; For now, disable this tests for Lisps that are strict about -;;; non-character code points. In the future, simply mark them as -;;; expected failures. -#-(or abcl ccl) -(progn - (defstest utf-8b.1 - (string-to-octets (coerce #(#\a #\b #\udcf0) 'unicode-string) - :encoding :utf-8b) - #(97 98 #xf0)) - - #+#:temporarily-disabled - (defstest utf-8b.2 - (octets-to-string (ub8v 97 98 #xcd) :encoding :utf-8b) - #(#\a #\b #\udccd)) - - (defstest utf-8b.3 - (octets-to-string (ub8v 97 #xf0 #xf1 #xff #x01) :encoding :utf-8b) - #(#\a #\udcf0 #\udcf1 #\udcff #\udc01)) - - (deftest utf-8b.4 () - (let* ((octets (coerce (loop repeat 8192 collect (random (+ #x82))) - '(array (unsigned-byte 8) (*)))) - (string (octets-to-string octets :encoding :utf-8b))) - (is (equalp octets (string-to-octets string :encoding :utf-8b)))))) - -;;; The following tests have been adapted from SBCL's -;;; tests/octets.pure.lisp file. - -(deftest ensure-roundtrip-ascii () - (let ((octets (make-ub8-vector 128))) - (dotimes (i 128) - (setf (aref octets i) i)) - (let* ((str (octets-to-string octets :encoding :ascii)) - (oct2 (string-to-octets str :encoding :ascii))) - (is (= (length octets) (length oct2))) - (is (every #'= octets oct2))))) - -(deftest test-8bit-roundtrip (enc) - (let ((octets (make-ub8-vector 256))) - (dotimes (i 256) - (setf (aref octets i) i)) - (let* ((str (octets-to-string octets :encoding enc))) - ;; remove the undefined code-points because they translate - ;; to #xFFFD and string-to-octets raises an error when - ;; encoding #xFFFD - (multiple-value-bind (filtered-str filtered-octets) - (let ((s (make-array 0 :element-type 'character - :adjustable t :fill-pointer 0)) - (o (make-array 0 :element-type '(unsigned-byte 16) - :adjustable t :fill-pointer 0))) - (loop for i below 256 - for c = (aref str i) - when (/= (char-code c) #xFFFD) - do (vector-push-extend c s) - (vector-push-extend (aref octets i) o)) - (values s o)) - (let ((oct2 (string-to-octets filtered-str :encoding enc))) - (is (eql (length filtered-octets) (length oct2))) - (is (every #'eql filtered-octets oct2))))))) - -(defparameter *iso-8859-charsets* - '(:iso-8859-1 :iso-8859-2 :iso-8859-3 :iso-8859-4 :iso-8859-5 :iso-8859-6 - :iso-8859-7 :iso-8859-8 :iso-8859-9 :iso-8859-10 :iso-8859-11 :iso-8859-13 - :iso-8859-14 :iso-8859-15 :iso-8859-16)) - -;;; Don't actually see what comes out, but there shouldn't be any -;;; errors. -(deftest iso-8859-roundtrip-no-checking () - (loop for enc in *iso-8859-charsets* do (test-8bit-roundtrip enc))) - -(deftest ensure-roundtrip-latin () - (loop for enc in '(:latin1 :latin9) do (test-8bit-roundtrip enc))) - -;;; Latin-9 chars; the previous test checked roundtrip from -;;; octets->char and back, now test that the latin-9 characters did in -;;; fact appear during that trip. -(deftest ensure-roundtrip-latin9 () - (let ((l9c (map 'string #'code-char '(8364 352 353 381 382 338 339 376)))) - (is (string= (octets-to-string (string-to-octets l9c :encoding :latin9) - :encoding :latin9) - l9c)))) - -;; Expected to fail on Lisps that are strict about non-character code -;; points. Mark this as an expected failure when Stefil supports such -;; a feature. -#-(or abcl ccl) -(deftest code-char-nilness () - (is (loop for i below unicode-char-code-limit - never (null (code-char i))))) - -(deftest test-unicode-roundtrip (enc) - (let ((string (make-string unicode-char-code-limit))) - (dotimes (i unicode-char-code-limit) - (setf (char string i) - (if (or (<= #xD800 i #xDFFF) - (<= #xFDD0 i #xFDEF) - (eql (logand i #xFFFF) #xFFFF) - (eql (logand i #xFFFF) #xFFFE)) - #\? ; don't try to encode non-characters. - (code-char i)))) - (let ((string2 (octets-to-string - (string-to-octets string :encoding enc :errorp t) - :encoding enc :errorp t))) - (is (eql (length string2) (length string))) - (is (string= string string2))))) - -(deftest ensure-roundtrip.utf8 () - (test-unicode-roundtrip :utf-8)) - -(deftest ensure-roundtrip.utf16 () - (test-unicode-roundtrip :utf-16)) - -(deftest ensure-roundtrip.utf32 () - (test-unicode-roundtrip :utf-32)) - -#+sbcl -(progn - (deftest test-encode-against-sbcl (enc) - (let ((string (make-string unicode-char-code-limit))) - (dotimes (i unicode-char-code-limit) - (setf (char string i) (code-char i))) - (loop for ch across string - for babel = (string-to-octets (string ch) :encoding enc) - for sbcl = (sb-ext:string-to-octets (string ch) - :external-format enc) - do (is (equalp babel sbcl))))) - - ;; not run automatically because it's a bit slow (1114112 assertions) - (deftest (test-encode-against-sbcl.utf-8 :auto-call nil) () - (test-encode-against-sbcl :utf-8))) - -(deftest non-ascii-bytes () - (let ((octets (make-array 128 - :element-type '(unsigned-byte 8) - :initial-contents (loop for i from 128 below 256 - collect i)))) - (is (string= (octets-to-string octets :encoding :ascii :errorp nil) - (make-string 128 :initial-element #\Sub))))) - -(deftest non-ascii-chars () - (let ((string (make-array 128 - :element-type 'character - :initial-contents (loop for i from 128 below 256 - collect (code-char i))))) - (is (equalp (string-to-octets string :encoding :ascii :errorp nil) - (make-array 128 :initial-element (char-code #\Sub)))))) - -;;;; The following UTF-8 decoding tests are adapted from -;;;; . - -(deftest utf8-decode-test (octets expected-results expected-errors) - (let ((string (octets-to-string (coerce octets '(vector (unsigned-byte 8) *)) - :encoding :utf-8 :errorp nil))) - (is (string= expected-results string)) - (is (= (count #\ufffd string) expected-errors)))) - -(deftest utf8-decode-tests (octets expected-results) - (setf expected-results (coerce expected-results '(simple-array character (*)))) - (let ((expected-errors (count #\? expected-results)) - (expected-results (substitute #\ufffd #\? expected-results))) - (utf8-decode-test octets expected-results expected-errors) - (utf8-decode-test (concatenate 'vector '(34) octets '(34)) - (format nil "\"~A\"" expected-results) - expected-errors))) - -(deftest utf8-too-big-characters () - (utf8-decode-tests #(#xf4 #x90 #x80 #x80) "?") ; #x110000 - (utf8-decode-tests #(#xf7 #xbf #xbf #xbf) "?") ; #x1fffff - (utf8-decode-tests #(#xf8 #x88 #x80 #x80 #x80) "?") ; #x200000 - (utf8-decode-tests #(#xfb #xbf #xbf #xbf #xbf) "?") ; #x3ffffff - (utf8-decode-tests #(#xfc #x84 #x80 #x80 #x80 #x80) "?") ; #x4000000e - (utf8-decode-tests #(#xfd #xbf #xbf #xbf #xbf #xbf) "?")) ; #x7fffffff - -(deftest utf8-unexpected-continuation-bytes () - (utf8-decode-tests #(#x80) "?") - (utf8-decode-tests #(#xbf) "?") - (utf8-decode-tests #(#x80 #xbf) "??") - (utf8-decode-tests #(#x80 #xbf #x80) "???") - (utf8-decode-tests #(#x80 #xbf #x80 #xbf) "????") - (utf8-decode-tests #(#x80 #xbf #x80 #xbf #x80) "?????") - (utf8-decode-tests #(#x80 #xbf #x80 #xbf #x80 #xbf) "??????") - (utf8-decode-tests #(#x80 #xbf #x80 #xbf #x80 #xbf #x80) "???????")) - -;;; All 64 continuation bytes in a row. -(deftest utf8-continuation-bytes () - (apply #'utf8-decode-tests - (loop for i from #x80 to #xbf - collect i into bytes - collect #\? into chars - finally (return (list bytes - (coerce chars 'string)))))) - -(deftest utf8-lonely-start-characters () - (flet ((lsc (first last) - (apply #'utf8-decode-tests - (loop for i from first to last - nconc (list i 32) into bytes - nconc (list #\? #\Space) into chars - finally (return (list bytes (coerce chars 'string))))) - (apply #'utf8-decode-tests - (loop for i from first to last - collect i into bytes - collect #\? into chars - finally (return - (list bytes (coerce chars 'string))))))) - (lsc #xc0 #xdf) ; 2-byte sequence start chars - (lsc #xe0 #xef) ; 3-byte - (lsc #xf0 #xf7) ; 4-byte - (lsc #xf8 #xfb) ; 5-byte - (lsc #xfc #xfd))) ; 6-byte - -;;; Otherwise incomplete sequences (last continuation byte missing) -(deftest utf8-incomplete-sequences () - (utf8-decode-tests #0=#(#xc0) "?") - (utf8-decode-tests #1=#(#xe0 #x80) "?") - (utf8-decode-tests #2=#(#xf0 #x80 #x80) "?") - (utf8-decode-tests #3=#(#xf8 #x80 #x80 #x80) "?") - (utf8-decode-tests #4=#(#xfc #x80 #x80 #x80 #x80) "?") - (utf8-decode-tests #5=#(#xdf) "?") - (utf8-decode-tests #6=#(#xef #xbf) "?") - (utf8-decode-tests #7=#(#xf7 #xbf #xbf) "?") - (utf8-decode-tests #8=#(#xfb #xbf #xbf #xbf) "?") - (utf8-decode-tests #9=#(#xfd #xbf #xbf #xbf #xbf) "?") - ;; All ten previous tests concatenated - (utf8-decode-tests (concatenate 'vector - #0# #1# #2# #3# #4# #5# #6# #7# #8# #9#) - "??????????")) - -(deftest utf8-random-impossible-bytes () - (utf8-decode-tests #(#xfe) "?") - (utf8-decode-tests #(#xff) "?") - (utf8-decode-tests #(#xfe #xfe #xff #xff) "????")) - -(deftest utf8-overlong-sequences-/ () - (utf8-decode-tests #(#xc0 #xaf) "?") - (utf8-decode-tests #(#xe0 #x80 #xaf) "?") - (utf8-decode-tests #(#xf0 #x80 #x80 #xaf) "?") - (utf8-decode-tests #(#xf8 #x80 #x80 #x80 #xaf) "?") - (utf8-decode-tests #(#xfc #x80 #x80 #x80 #x80 #xaf) "?")) - -(deftest utf8-overlong-sequences-rubout () - (utf8-decode-tests #(#xc1 #xbf) "?") - (utf8-decode-tests #(#xe0 #x9f #xbf) "?") - (utf8-decode-tests #(#xf0 #x8f #xbf #xbf) "?") - (utf8-decode-tests #(#xf8 #x87 #xbf #xbf #xbf) "?") - (utf8-decode-tests #(#xfc #x83 #xbf #xbf #xbf #xbf) "?")) - -(deftest utf8-overlong-sequences-null () - (utf8-decode-tests #(#xc0 #x80) "?") - (utf8-decode-tests #(#xe0 #x80 #x80) "?") - (utf8-decode-tests #(#xf0 #x80 #x80 #x80) "?") - (utf8-decode-tests #(#xf8 #x80 #x80 #x80 #x80) "?") - (utf8-decode-tests #(#xfc #x80 #x80 #x80 #x80 #x80) "?")) - -;;;; End of adapted SBCL tests. - -;;; Expected to fail, for now. -#+#:ignore -(deftest utf8-illegal-code-positions () - ;; single UTF-16 surrogates - (utf8-decode-tests #(#xed #xa0 #x80) "?") - (utf8-decode-tests #(#xed #xad #xbf) "?") - (utf8-decode-tests #(#xed #xae #x80) "?") - (utf8-decode-tests #(#xed #xaf #xbf) "?") - (utf8-decode-tests #(#xed #xb0 #x80) "?") - (utf8-decode-tests #(#xed #xbe #x80) "?") - (utf8-decode-tests #(#xed #xbf #xbf) "?") - ;; paired UTF-16 surrogates - (utf8-decode-tests #(ed a0 80 ed b0 80) "??") - (utf8-decode-tests #(ed a0 80 ed bf bf) "??") - (utf8-decode-tests #(ed ad bf ed b0 80) "??") - (utf8-decode-tests #(ed ad bf ed bf bf) "??") - (utf8-decode-tests #(ed ae 80 ed b0 80) "??") - (utf8-decode-tests #(ed ae 80 ed bf bf) "??") - (utf8-decode-tests #(ed af bf ed b0 80) "??") - (utf8-decode-tests #(ed af bf ed bf bf) "??") - ;; other illegal code positions - (utf8-decode-tests #(#xef #xbf #xbe) "?") ; #\uFFFE - (utf8-decode-tests #(#xef #xbf #xbf) "?")) ; #\uFFFF - -;;; A list of the ISO-8859 encodings where each element is a cons with -;;; the car being a keyword denoting the encoding and the cdr being a -;;; vector enumerating the corresponding character codes. -;;; -;;; It was auto-generated from files which can be found at -;;; . -;;; -;;; Taken from flexi-streams. -(defparameter *iso-8859-tables* - '((:iso-8859-1 . - #(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 - 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 - 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 - 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 - 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 - 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 - 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 - 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 - 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 - 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 - 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 - 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 - 243 244 245 246 247 248 249 250 251 252 253 254 255)) - - (:iso-8859-2 . - #(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 - 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 - 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 - 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 - 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 - 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 - 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 - 153 154 155 156 157 158 159 160 260 728 321 164 317 346 167 168 352 350 - 356 377 173 381 379 176 261 731 322 180 318 347 711 184 353 351 357 378 - 733 382 380 340 193 194 258 196 313 262 199 268 201 280 203 282 205 206 - 270 272 323 327 211 212 336 214 215 344 366 218 368 220 221 354 223 341 - 225 226 259 228 314 263 231 269 233 281 235 283 237 238 271 273 324 328 - 243 244 337 246 247 345 367 250 369 252 253 355 729)) - - (:iso-8859-3 . - #(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 - 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 - 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 - 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 - 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 - 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 - 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 - 153 154 155 156 157 158 159 160 294 728 163 164 65533 292 167 168 304 - 350 286 308 173 65533 379 176 295 178 179 180 181 293 183 184 305 351 - 287 309 189 65533 380 192 193 194 65533 196 266 264 199 200 201 202 203 - 204 205 206 207 65533 209 210 211 212 288 214 215 284 217 218 219 220 - 364 348 223 224 225 226 65533 228 267 265 231 232 233 234 235 236 237 - 238 239 65533 241 242 243 244 289 246 247 285 249 250 251 252 365 349 - 729)) - - (:iso-8859-4 . - #(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 - 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 - 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 - 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 - 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 - 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 - 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 - 153 154 155 156 157 158 159 160 260 312 342 164 296 315 167 168 352 274 - 290 358 173 381 175 176 261 731 343 180 297 316 711 184 353 275 291 359 - 330 382 331 256 193 194 195 196 197 198 302 268 201 280 203 278 205 206 - 298 272 325 332 310 212 213 214 215 216 370 218 219 220 360 362 223 257 - 225 226 227 228 229 230 303 269 233 281 235 279 237 238 299 273 326 333 - 311 244 245 246 247 248 371 250 251 252 361 363 729)) - - (:iso-8859-5 . - #(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 - 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 - 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 - 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 - 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 - 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 - 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 - 153 154 155 156 157 158 159 160 1025 1026 1027 1028 1029 1030 1031 1032 - 1033 1034 1035 1036 173 1038 1039 1040 1041 1042 1043 1044 1045 1046 - 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 - 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 - 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 - 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 - 1103 8470 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 - 167 1118 1119)) - - (:iso-8859-6 . - #(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 - 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 - 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 - 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 - 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 - 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 - 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 - 153 154 155 156 157 158 159 160 65533 65533 65533 164 65533 65533 65533 - 65533 65533 65533 65533 1548 173 65533 65533 65533 65533 65533 65533 - 65533 65533 65533 65533 65533 65533 65533 1563 65533 65533 65533 1567 - 65533 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 - 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 65533 - 65533 65533 65533 65533 1600 1601 1602 1603 1604 1605 1606 1607 1608 - 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 65533 65533 65533 - 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533)) - - (:iso-8859-7 . - #(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 - 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 - 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 - 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 - 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 - 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 - 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 - 153 154 155 156 157 158 159 160 8216 8217 163 8364 8367 166 167 168 169 - 890 171 172 173 65533 8213 176 177 178 179 900 901 902 183 904 905 906 - 187 908 189 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 - 925 926 927 928 929 65533 931 932 933 934 935 936 937 938 939 940 941 - 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 - 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 65533)) - - (:iso-8859-8 . - #(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 - 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 - 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 - 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 - 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 - 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 - 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 - 153 154 155 156 157 158 159 160 65533 162 163 164 165 166 167 168 169 - 215 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 247 187 - 188 189 190 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 - 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 - 65533 65533 65533 65533 65533 65533 65533 65533 65533 65533 8215 1488 - 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 - 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 65533 65533 - 8206 8207 65533)) - - (:iso-8859-9 . - #(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 - 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 - 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 - 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 - 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 - 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 - 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 - 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 - 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 - 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 - 207 286 209 210 211 212 213 214 215 216 217 218 219 220 304 350 223 224 - 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 287 241 242 - 243 244 245 246 247 248 249 250 251 252 305 351 255)) - - (:iso-8859-10 . - #(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 - 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 - 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 - 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 - 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 - 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 - 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 - 153 154 155 156 157 158 159 160 260 274 290 298 296 310 167 315 272 352 - 358 381 173 362 330 176 261 275 291 299 297 311 183 316 273 353 359 382 - 8213 363 331 256 193 194 195 196 197 198 302 268 201 280 203 278 205 206 - 207 208 325 332 211 212 213 214 360 216 370 218 219 220 221 222 223 257 - 225 226 227 228 229 230 303 269 233 281 235 279 237 238 239 240 326 333 - 243 244 245 246 361 248 371 250 251 252 253 254 312)) - - (:iso-8859-11 . - #(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 - 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 - 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 - 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 - 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 - 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 - 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 - 153 154 155 156 157 158 159 160 3585 3586 3587 3588 3589 3590 3591 3592 - 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 - 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 - 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 - 3635 3636 3637 3638 3639 3640 3641 3642 65533 65533 65533 65533 3647 - 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 - 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 - 65533 65533 65533 65533)) - - (:iso-8859-13 . - #(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 - 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 - 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 - 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 - 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 - 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 - 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 - 153 154 155 156 157 158 159 160 8221 162 163 164 8222 166 167 216 169 - 342 171 172 173 174 198 176 177 178 179 8220 181 182 183 248 185 343 187 - 188 189 190 230 260 302 256 262 196 197 280 274 268 201 377 278 290 310 - 298 315 352 323 325 211 332 213 214 215 370 321 346 362 220 379 381 223 - 261 303 257 263 228 229 281 275 269 233 378 279 291 311 299 316 353 324 - 326 243 333 245 246 247 371 322 347 363 252 380 382 8217)) - - (:iso-8859-14 . - #(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 - 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 - 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 - 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 - 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 - 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 - 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 - 153 154 155 156 157 158 159 160 7682 7683 163 266 267 7690 167 7808 169 - 7810 7691 7922 173 174 376 7710 7711 288 289 7744 7745 182 7766 7809 - 7767 7811 7776 7923 7812 7813 7777 192 193 194 195 196 197 198 199 200 - 201 202 203 204 205 206 207 372 209 210 211 212 213 214 7786 216 217 218 - 219 220 221 374 223 224 225 226 227 228 229 230 231 232 233 234 235 236 - 237 238 239 373 241 242 243 244 245 246 7787 248 249 250 251 252 253 375 - 255)) - - (:iso-8859-15 . - #(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 - 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 - 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 - 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 - 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 - 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 - 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 - 153 154 155 156 157 158 159 160 161 162 163 8364 165 352 167 353 169 170 - 171 172 173 174 175 176 177 178 179 381 181 182 183 382 185 186 187 338 - 339 376 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 - 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 - 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 - 243 244 245 246 247 248 249 250 251 252 253 254 255)) - - (:iso-8859-16 . - #(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 - 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 - 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 - 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 - 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 - 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 - 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 - 153 154 155 156 157 158 159 160 260 261 321 8364 8222 352 167 353 169 - 536 171 377 173 378 379 176 177 268 322 381 8221 182 183 382 269 537 187 - 338 339 376 380 192 193 194 258 196 262 198 199 200 201 202 203 204 205 - 206 207 272 323 210 211 212 336 214 346 368 217 218 219 220 280 538 223 - 224 225 226 259 228 263 230 231 232 233 234 235 236 237 238 239 273 324 - 242 243 244 337 246 347 369 249 250 251 252 281 539 255)))) - -(deftest iso-8859-decode-check () - (loop for enc in *iso-8859-charsets* - for octets = (let ((octets (make-ub8-vector 256))) - (dotimes (i 256 octets) - (setf (aref octets i) i))) - for string = (octets-to-string octets :encoding enc) - do (is (equalp (map 'vector #'char-code string) - (cdr (assoc enc *iso-8859-tables*)))))) - -(deftest character-out-of-range.utf-32 () - (signals character-out-of-range - (octets-to-string (ub8v 0 0 #xfe #xff 0 #x11 0 0) - :encoding :utf-32 :errorp t))) - -;;; RT: encoders and decoders were returning bogus values. -(deftest encoder/decoder-retvals (encoding &optional (test-string (coerce "abc" '(simple-array character (*))))) - (let* ((mapping (lookup-mapping babel::*string-vector-mappings* encoding)) - (strlen (length test-string)) - ;; encoding - (octet-precount (funcall (octet-counter mapping) - test-string 0 strlen -1)) - (array (make-array octet-precount :element-type '(unsigned-byte 8))) - (encoded-octet-count (funcall (encoder mapping) - test-string 0 strlen array 0)) - ;; decoding - (string (make-string strlen)) - (char-precount (funcall (code-point-counter mapping) - array 0 octet-precount -1)) - (char-count (funcall (decoder mapping) - array 0 octet-precount string 0))) - (is (= octet-precount encoded-octet-count)) - (is (= char-precount char-count)) - (is (string= test-string string)))) - -(deftest encoder-and-decoder-return-values () - (mapcar 'encoder/decoder-retvals - (remove-if 'ambiguous-encoding-p - (list-character-encodings)))) - -(deftest code-point-sweep (encoding) - (finishes - (dotimes (i char-code-limit) - (let ((char (ignore-errors (code-char i)))) - (when char - (ignore-some-conditions (character-encoding-error) - (string-to-octets (string char) :encoding encoding))))))) - -#+enable-slow-babel-tests -(deftest code-point-sweep-all-encodings () - (mapc #'code-point-sweep (list-character-encodings))) - -(deftest octet-sweep (encoding) - (finishes - (loop for b1 upto #xff do - (loop for b2 upto #xff do - (loop for b3 upto #xff do - (loop for b4 upto #xff do - (ignore-some-conditions (character-decoding-error) - (octets-to-string (ub8v b1 b2 b3 b4) :encoding encoding)))))))) - -#+enable-slow-babel-tests -(deftest octet-sweep-all-encodings () - (mapc #'octet-sweep (list-character-encodings))) - -;; Test currency sign on localized ebcdic encodings -(deftest ebcdic-fi-diaeresis-and-euro () - (let ((utf8-diaeresis-string "ÄäöÖ") - (utf8-euro-string "€") - (ebcdic-diaeresis-expected (make-array 4 :element-type '(unsigned-byte 8) - :initial-contents '(#x7b #xc0 #x6a #x7c))) - (ebcdic-euro-expected (make-array 1 :element-type '(unsigned-byte 8) - :initial-contents '(#x5a)))) - (is (equalp (babel:octets-to-string ebcdic-diaeresis-expected :encoding :ebcdic-fi) - utf8-diaeresis-string)) - (is (equalp (babel:octets-to-string ebcdic-diaeresis-expected :encoding :ebcdic-fi-euro) - utf8-diaeresis-string)) - (is (equalp (babel:octets-to-string ebcdic-euro-expected :encoding :ebcdic-fi-euro) - utf8-euro-string)))) diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-16-with-le-bom.txt b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-16-with-le-bom.txt deleted file mode 100644 index 7c40274..0000000 Binary files a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-16-with-le-bom.txt and /dev/null differ diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-16.txt b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-16.txt deleted file mode 100644 index ca4a8e6..0000000 Binary files a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-16.txt and /dev/null differ diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-16.txt-utf8 b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-16.txt-utf8 deleted file mode 100644 index 4363f27..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-16.txt-utf8 +++ /dev/null @@ -1,212 +0,0 @@ - -UTF-8 encoded sample plain-text file -‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ - -Markus Kuhn [ˈmaʳkÊŠs kuËn] — 2002-07-25 - - -The ASCII compatible UTF-8 encoding used in this plain-text file -is defined in Unicode, ISO 10646-1, and RFC 2279. - - -Using Unicode/UTF-8, you can write in emails and source code things such as - -Mathematics and sciences: - - ∮ Eâ‹…da = Q, n → ∞, ∑ f(i) = ∠g(i), ⎧⎡⎛┌─────â”⎞⎤⎫ - ⎪⎢⎜│a²+b³ ⎟⎥⎪ - ∀x∈â„: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), ⎪⎢⎜│───── ⎟⎥⎪ - ⎪⎢⎜⎷ c₈ ⎟⎥⎪ - â„• ⊆ â„•â‚€ ⊂ ℤ ⊂ ℚ ⊂ ℠⊂ â„‚, ⎨⎢⎜ ⎟⎥⎬ - ⎪⎢⎜ ∞ ⎟⎥⎪ - ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫), ⎪⎢⎜ ⎲ ⎟⎥⎪ - ⎪⎢⎜ ⎳aâ±-bâ±âŽŸâŽ¥âŽª - 2Hâ‚‚ + Oâ‚‚ ⇌ 2Hâ‚‚O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣âŽi=1 ⎠⎦⎭ - -Linguistics and dictionaries: - - ði ıntəˈnæʃənÉ™l fəˈnÉ›tık É™soÊŠsiˈeıʃn - Y [ˈÊpsilÉ”n], Yen [jÉ›n], Yoga [ˈjoËgÉ‘] - -APL: - - ((Vâ³V)=â³â´V)/Vâ†,V ⌷â†â³â†’â´âˆ†âˆ‡âŠƒâ€¾âŽâ•⌈ - -Nicer typography in plain text files: - - â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•— - â•‘ â•‘ - â•‘ • ‘single’ and “double†quotes â•‘ - â•‘ â•‘ - â•‘ • Curly apostrophes: “We’ve been here†║ - â•‘ â•‘ - â•‘ • Latin-1 apostrophe and accents: '´` â•‘ - â•‘ â•‘ - â•‘ • ‚deutsche‘ „Anführungszeichen“ â•‘ - â•‘ â•‘ - â•‘ • †, ‡, ‰, •, 3–4, —, −5/+5, â„¢, … â•‘ - â•‘ â•‘ - â•‘ • ASCII safety test: 1lI|, 0OD, 8B â•‘ - â•‘ ╭─────────╮ â•‘ - â•‘ • the euro symbol: │ 14.95 € │ â•‘ - â•‘ ╰─────────╯ â•‘ - ╚â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• - -Combining characters: - - STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑ - -Greek (in Polytonic): - - The Greek anthem: - - Σὲ γνωÏίζω ἀπὸ τὴν κόψη - τοῦ σπαθιοῦ τὴν Ï„ÏομεÏá½µ, - σὲ γνωÏίζω ἀπὸ τὴν ὄψη - ποὺ μὲ βία μετÏάει τὴ γῆ. - - ᾿Απ᾿ τὰ κόκκαλα βγαλμένη - τῶν ῾Ελλήνων τὰ ἱεÏá½± - καὶ σὰν Ï€Ïῶτα ἀνδÏειωμένη - χαῖÏε, ὦ χαῖÏε, ᾿ΕλευθεÏιά! - - From a speech of Demosthenes in the 4th century BC: - - Οá½Ï‡á½¶ ταá½Ï„á½° παÏίσταταί μοι γιγνώσκειν, ὦ ἄνδÏες ᾿Αθηναῖοι, - ὅταν τ᾿ εἰς τὰ Ï€Ïάγματα ἀποβλέψω καὶ ὅταν Ï€Ïὸς τοὺς - λόγους οὓς ἀκούω· τοὺς μὲν Î³á½°Ï Î»á½¹Î³Î¿Ï…Ï‚ πεÏá½¶ τοῦ - τιμωÏήσασθαι Φίλιππον á½Ïá¿¶ γιγνομένους, τὰ δὲ Ï€Ïάγματ᾿ - εἰς τοῦτο Ï€Ïοήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αá½Ï„οὶ - Ï€ÏότεÏον κακῶς σκέψασθαι δέον. οá½Î´á½³Î½ οὖν ἄλλο μοι δοκοῦσιν - οἱ τὰ τοιαῦτα λέγοντες á¼¢ τὴν ὑπόθεσιν, πεÏá½¶ á¼§Ï‚ βουλεύεσθαι, - οá½Ï‡á½¶ τὴν οὖσαν παÏιστάντες ὑμῖν á¼Î¼Î±Ïτάνειν. á¼Î³á½¼ δέ, ὅτι μέν - ποτ᾿ á¼Î¾á¿†Î½ τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον - τιμωÏήσασθαι, καὶ μάλ᾿ ἀκÏιβῶς οἶδα· á¼Ï€á¾¿ á¼Î¼Î¿á¿¦ γάÏ, οὠπάλαι - γέγονεν ταῦτ᾿ ἀμφότεÏα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν - Ï€Ïολαβεῖν ἡμῖν εἶναι τὴν Ï€Ïώτην, ὅπως τοὺς συμμάχους - σώσομεν. á¼á½°Î½ Î³á½°Ï Ï„Î¿á¿¦Ï„Î¿ βεβαίως ὑπάÏξῃ, τότε καὶ πεÏá½¶ τοῦ - τίνα τιμωÏήσεταί τις καὶ ὃν Ï„Ïόπον á¼Î¾á½³ÏƒÏ„αι σκοπεῖν· Ï€Ïὶν δὲ - τὴν á¼€Ïχὴν á½€Ïθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι πεÏá½¶ τῆς - τελευτῆς á½Î½Ï„ινοῦν ποιεῖσθαι λόγον. - - Δημοσθένους, Γ´ ᾿Ολυνθιακὸς - -Georgian: - - From a Unicode conference invitation: - - გთხáƒáƒ•თ áƒáƒ®áƒšáƒáƒ•ე გáƒáƒ˜áƒáƒ áƒáƒ— რეგისტრáƒáƒªáƒ˜áƒ Unicode-ის მეáƒáƒ—ე სáƒáƒ”რთáƒáƒ¨áƒáƒ áƒ˜áƒ¡áƒ - კáƒáƒœáƒ¤áƒ”რენციáƒáƒ–ე დáƒáƒ¡áƒáƒ¡áƒ¬áƒ áƒ”ბáƒáƒ“, რáƒáƒ›áƒ”ლიც გáƒáƒ˜áƒ›áƒáƒ áƒ—ებრ10-12 მáƒáƒ áƒ¢áƒ¡, - ქ. მáƒáƒ˜áƒœáƒªáƒ¨áƒ˜, გერმáƒáƒœáƒ˜áƒáƒ¨áƒ˜. კáƒáƒœáƒ¤áƒ”რენცირშეჰკრებს ერთáƒáƒ“ მსáƒáƒ¤áƒšáƒ˜áƒáƒ¡ - ექსპერტებს ისეთ დáƒáƒ áƒ’ებში რáƒáƒ’áƒáƒ áƒ˜áƒªáƒáƒ ინტერნეტი დრUnicode-ი, - ინტერნáƒáƒªáƒ˜áƒáƒœáƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ დრლáƒáƒ™áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ, Unicode-ის გáƒáƒ›áƒáƒ§áƒ”ნებრ- áƒáƒžáƒ”რáƒáƒªáƒ˜áƒ£áƒš სისტემებსáƒ, დრგáƒáƒ›áƒáƒ§áƒ”ნებით პრáƒáƒ’რáƒáƒ›áƒ”ბში, შრიფტებში, - ტექსტების დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒáƒ¡áƒ დრმრáƒáƒ•áƒáƒšáƒ”ნáƒáƒ•áƒáƒœ კáƒáƒ›áƒžáƒ˜áƒ£áƒ¢áƒ”რულ სისტემებში. - -Russian: - - From a Unicode conference invitation: - - ЗарегиÑтрируйтеÑÑŒ ÑÐµÐ¹Ñ‡Ð°Ñ Ð½Ð° ДеÑÑтую Международную Конференцию по - Unicode, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑоÑтоитÑÑ 10-12 марта 1997 года в Майнце в Германии. - ÐšÐ¾Ð½Ñ„ÐµÑ€ÐµÐ½Ñ†Ð¸Ñ Ñоберет широкий круг ÑкÑпертов по вопроÑам глобального - Интернета и Unicode, локализации и интернационализации, воплощению и - применению Unicode в различных операционных ÑиÑтемах и программных - приложениÑÑ…, шрифтах, верÑтке и многоÑзычных компьютерных ÑиÑтемах. - -Thai (UCS Level 2): - - Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese - classic 'San Gua'): - - [----------------------------|------------------------] - ๠à¹à¸œà¹ˆà¸™à¸”ินฮั่นเสื่อมโทรมà¹à¸ªà¸™à¸ªà¸±à¸‡à¹€à¸§à¸Š พระปà¸à¹€à¸à¸¨à¸à¸­à¸‡à¸šà¸¹à¹Šà¸à¸¹à¹‰à¸‚ึ้นใหม่ - สิบสองà¸à¸©à¸±à¸•ริย์à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¹à¸¥à¸–ัดไป สององค์ไซร้โง่เขลาเบาปัà¸à¸à¸² - ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนัà¸à¸«à¸™à¸² - โฮจิ๋นเรียà¸à¸—ัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัภ- เหมือนขับไสไล่เสือจาà¸à¹€à¸„หา รับหมาป่าเข้ามาเลยอาสัภ- à¸à¹ˆà¸²à¸¢à¸­à¹‰à¸­à¸‡à¸­à¸¸à¹‰à¸™à¸¢à¸¸à¹à¸¢à¸à¹ƒà¸«à¹‰à¹à¸•à¸à¸à¸±à¸™ ใช้สาวนั้นเป็นชนวนชื่นชวนใจ - พลันลิฉุยà¸à¸¸à¸¢à¸à¸µà¸à¸¥à¸±à¸šà¸à¹ˆà¸­à¹€à¸«à¸•ุ ช่างอาเพศจริงหนาฟ้าร้องไห้ - ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูà¸à¸¹à¹‰à¸šà¸£à¸£à¸¥à¸±à¸‡à¸à¹Œ ฯ - - (The above is a two-column text. If combining characters are handled - correctly, the lines of the second column should be aligned with the - | character above.) - -Ethiopian: - - Proverbs in the Amharic language: - - ሰማይ አይታረስ ንጉሥ አይከሰስᢠ- ብላ ካለአእንደአባቴ በቆመጠáŠá¢ - ጌጥ ያለቤቱ á‰áˆáŒ¥áŠ“ áŠá‹á¢ - ደሀ በሕáˆáˆ™ ቅቤ ባይጠጣ ንጣት በገደለá‹á¢ - የአá ወለáˆá‰³ በቅቤ አይታሽáˆá¢ - አይጥ በበላ ዳዋ ተመታᢠ- ሲተረጉሙ ይደረáŒáˆ™á¢ - ቀስ በቀስᥠዕንá‰áˆ‹áˆ በእáŒáˆ© ይሄዳáˆá¢ - ድር ቢያብር አንበሳ ያስርᢠ- ሰዠእንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርáˆá¢ - እáŒá‹œáˆ­ የከáˆá‰°á‹áŠ• ጉሮሮ ሳይዘጋዠአይድርáˆá¢ - የጎረቤት ሌባᥠቢያዩት ይስቅ ባያዩት ያጠáˆá‰…ᢠ- ሥራ ከመáታት áˆáŒ„ን ላá‹á‰³á‰µá¢ - ዓባይ ማደሪያ የለá‹á¥ áŒáŠ•á‹µ ይዞ ይዞራáˆá¢ - የእስላሠአገሩ መካ የአሞራ አገሩ ዋርካᢠ- ተንጋሎ ቢተበተመáˆáˆ¶ ባá‰á¢ - ወዳጅህ ማር ቢሆን ጨርስህ አትላሰá‹á¢ - እáŒáˆ­áˆ…ን በáራሽህ áˆáŠ­ ዘርጋᢠ- -Runes: - - ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛠᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ áš¹á›áš¦ ᚦᚪ ᚹᛖᛥᚫ - - (Old English, which transcribed into Latin reads 'He cwaeth that he - bude thaem lande northweardum with tha Westsae.' and means 'He said - that he lived in the northern land near the Western Sea.') - -Braille: - - ⡌â â §â ‘ â ¼â â ’ â¡â œâ ‡â ‘⠹⠰⠎ ⡣⠕⠌ - - â¡â œâ ‡â ‘â ¹ â ºâ â Ž ⠙⠑â â ™â ’ â žâ • ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ â Šâ Ž â â • ⠙⠳⠃⠞ - â ±â â žâ ‘â §â » â â ƒâ ³â ž â ¹â â žâ ² ⡹⠑ ⠗⠑⠛⠊⠌⠻ â •â ‹ ⠙⠊⠎ ⠃⠥⠗⠊â â ‡ â ºâ â Ž - â Žâ Šâ ›â â « ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹â â â â ‚ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ â ¥â â ™â »â žâ â …⠻⠂ - â â â ™ ⠹⠑ â ¡â Šâ ‘â ‹ â â ³â —â â »â ² ⡎⠊⠗⠕⠕⠛⠑ â Žâ Šâ ›â â « â Šâ žâ ² â¡â â ™ - ⡎⠊⠗⠕⠕⠛⠑⠰⠎ â â â â ‘ â ºâ â Ž ⠛⠕⠕⠙ â ¥â â •â  â °â¡¡â â â ›â ‘â ‚ â ‹â •â — â â â ¹â ¹â ”â › ⠙⠑ - â ¡â •â Žâ ‘ â žâ • â â ¥â ž ⠙⠊⠎ â ™â â â ™ â žâ •â ² - - ⡕⠇⠙ â¡â œâ ‡â ‘â ¹ â ºâ â Ž â â Ž ⠙⠑â â ™ â â Ž â  â ™â •â •â —â ¤â â â Šâ ‡â ² - - â¡â ”⠙⠖ ⡊ ⠙⠕â â °â ž â â ‘â â  â žâ • â Žâ â ¹ â ¹â â ž ⡊ â …â â ªâ ‚ â •â ‹ â â ¹ - â ªâ  â …â â ªâ ‡â «â ›â ‘â ‚ â ±â â ž ⠹⠻⠑ â Šâ Ž â â œâ žâ Šâ Šâ ¥â ‡â œâ ‡â ¹ ⠙⠑â â ™ â â ƒâ ³â ž - â  â ™â •â •â —â ¤â â â Šâ ‡â ² ⡊ â â Šâ £â ž â ™â â §â ‘ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ â â ¹â Žâ ‘⠇⠋⠂ â žâ • - ⠗⠑⠛⠜⠙ â  â Šâ •â ‹â ‹â ”â ¤â â â Šâ ‡ â â Ž ⠹⠑ ⠙⠑â â ™â ‘â Œ â â Šâ ‘â Šâ ‘ â •â ‹ â Šâ —â •â â â •â â ›â »â ¹ - â ” ⠹⠑ â žâ —â â ™â ‘â ² ⡃⠥⠞ ⠹⠑ â ºâ Šâ Žâ ™â •â  â •â ‹ ⠳⠗ â â â Šâ ‘⠌⠕⠗⠎ - â Šâ Ž â ” ⠹⠑ â Žâ Šâ â Šâ ‡â ‘â † â â â ™ â â ¹ â ¥â â ™â â ‡â ‡â ªâ « â ™â â â ™â Ž - â ©â â ‡â ‡ â â •â ž ⠙⠊⠌⠥⠗⠃ â Šâ žâ ‚ â •â — ⠹⠑ ⡊⠳â â žâ —⠹⠰⠎ ⠙⠕â â ‘ â ‹â •â —â ² ⡹⠳ - ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ â â »â â Šâ ž â â ‘ â žâ • â —â ‘â â ‘â â žâ ‚ â ‘â â â ™â â žâ Šâ Šâ â ‡â ‡â ¹â ‚ â ¹â â ž - â¡â œâ ‡â ‘â ¹ â ºâ â Ž â â Ž ⠙⠑â â ™ â â Ž â  â ™â •â •â —â ¤â â â Šâ ‡â ² - - (The first couple of paragraphs of "A Christmas Carol" by Dickens) - -Compact font selection example text: - - ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 - abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ - –—‘“â€â€žâ€ â€¢â€¦â€°â„¢Å“ŠŸž€ ΑΒΓΔΩαβγδω ÐБВГДабвгд - ∀∂∈â„∧∪≡∞ ↑↗↨↻⇣ â”┼╔╘░►☺♀ ï¬ï¿½â‘€â‚‚ἠḂӥẄÉËâŽ×Աრ- -Greetings in various languages: - - Hello world, ΚαλημέÏα κόσμε, コンニãƒãƒ - -Box drawing alignment tests: â–ˆ - â–‰ - â•”â•â•╦â•â•â•— ┌──┬──┠╭──┬──╮ ╭──┬──╮ â”â”â”┳â”â”┓ ┎┒â”┑ â•· â•» â”┯┓ ┌┰┠▊ ╱╲╱╲╳╳╳ - ║┌─╨─â”â•‘ │╔â•â•§â•╗│ │╒â•╪â•╕│ │╓─â•─╖│ ┃┌─╂─â”┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ â”╋┥ â–‹ ╲╱╲╱╳╳╳ - ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ â•¿ │┃ â”╅╆┓ ╵ ╹ â”—â”·â”› └┸┘ â–Œ ╱╲╱╲╳╳╳ - â• â•¡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┠╎ â”┅┅┓ ┋ ■╲╱╲╱╳╳╳ - ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╠┇ ┋ â–Ž - ║└─╥─┘║ │╚â•╤â•â•│ │╘â•╪â•╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╠┇ ┋ â– - ╚â•â•â•©â•â•╠└──┴──┘ ╰──┴──╯ ╰──┴──╯ â”—â”â”â”»â”â”â”› ▗▄▖▛▀▜ └╌╌┘ ╎ â”—â•â•â”› ┋ â–▂▃▄▅▆▇█ - â–▀▘▙▄▟ diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-32-with-le-bom.txt b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-32-with-le-bom.txt deleted file mode 100644 index 815e37b..0000000 Binary files a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-32-with-le-bom.txt and /dev/null differ diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-32.txt b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-32.txt deleted file mode 100644 index fc2824c..0000000 Binary files a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-32.txt and /dev/null differ diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-32.txt-utf8 b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-32.txt-utf8 deleted file mode 100644 index 4363f27..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-32.txt-utf8 +++ /dev/null @@ -1,212 +0,0 @@ - -UTF-8 encoded sample plain-text file -‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ - -Markus Kuhn [ˈmaʳkÊŠs kuËn] — 2002-07-25 - - -The ASCII compatible UTF-8 encoding used in this plain-text file -is defined in Unicode, ISO 10646-1, and RFC 2279. - - -Using Unicode/UTF-8, you can write in emails and source code things such as - -Mathematics and sciences: - - ∮ Eâ‹…da = Q, n → ∞, ∑ f(i) = ∠g(i), ⎧⎡⎛┌─────â”⎞⎤⎫ - ⎪⎢⎜│a²+b³ ⎟⎥⎪ - ∀x∈â„: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), ⎪⎢⎜│───── ⎟⎥⎪ - ⎪⎢⎜⎷ c₈ ⎟⎥⎪ - â„• ⊆ â„•â‚€ ⊂ ℤ ⊂ ℚ ⊂ ℠⊂ â„‚, ⎨⎢⎜ ⎟⎥⎬ - ⎪⎢⎜ ∞ ⎟⎥⎪ - ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫), ⎪⎢⎜ ⎲ ⎟⎥⎪ - ⎪⎢⎜ ⎳aâ±-bâ±âŽŸâŽ¥âŽª - 2Hâ‚‚ + Oâ‚‚ ⇌ 2Hâ‚‚O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣âŽi=1 ⎠⎦⎭ - -Linguistics and dictionaries: - - ði ıntəˈnæʃənÉ™l fəˈnÉ›tık É™soÊŠsiˈeıʃn - Y [ˈÊpsilÉ”n], Yen [jÉ›n], Yoga [ˈjoËgÉ‘] - -APL: - - ((Vâ³V)=â³â´V)/Vâ†,V ⌷â†â³â†’â´âˆ†âˆ‡âŠƒâ€¾âŽâ•⌈ - -Nicer typography in plain text files: - - â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•— - â•‘ â•‘ - â•‘ • ‘single’ and “double†quotes â•‘ - â•‘ â•‘ - â•‘ • Curly apostrophes: “We’ve been here†║ - â•‘ â•‘ - â•‘ • Latin-1 apostrophe and accents: '´` â•‘ - â•‘ â•‘ - â•‘ • ‚deutsche‘ „Anführungszeichen“ â•‘ - â•‘ â•‘ - â•‘ • †, ‡, ‰, •, 3–4, —, −5/+5, â„¢, … â•‘ - â•‘ â•‘ - â•‘ • ASCII safety test: 1lI|, 0OD, 8B â•‘ - â•‘ ╭─────────╮ â•‘ - â•‘ • the euro symbol: │ 14.95 € │ â•‘ - â•‘ ╰─────────╯ â•‘ - ╚â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• - -Combining characters: - - STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑ - -Greek (in Polytonic): - - The Greek anthem: - - Σὲ γνωÏίζω ἀπὸ τὴν κόψη - τοῦ σπαθιοῦ τὴν Ï„ÏομεÏá½µ, - σὲ γνωÏίζω ἀπὸ τὴν ὄψη - ποὺ μὲ βία μετÏάει τὴ γῆ. - - ᾿Απ᾿ τὰ κόκκαλα βγαλμένη - τῶν ῾Ελλήνων τὰ ἱεÏá½± - καὶ σὰν Ï€Ïῶτα ἀνδÏειωμένη - χαῖÏε, ὦ χαῖÏε, ᾿ΕλευθεÏιά! - - From a speech of Demosthenes in the 4th century BC: - - Οá½Ï‡á½¶ ταá½Ï„á½° παÏίσταταί μοι γιγνώσκειν, ὦ ἄνδÏες ᾿Αθηναῖοι, - ὅταν τ᾿ εἰς τὰ Ï€Ïάγματα ἀποβλέψω καὶ ὅταν Ï€Ïὸς τοὺς - λόγους οὓς ἀκούω· τοὺς μὲν Î³á½°Ï Î»á½¹Î³Î¿Ï…Ï‚ πεÏá½¶ τοῦ - τιμωÏήσασθαι Φίλιππον á½Ïá¿¶ γιγνομένους, τὰ δὲ Ï€Ïάγματ᾿ - εἰς τοῦτο Ï€Ïοήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αá½Ï„οὶ - Ï€ÏότεÏον κακῶς σκέψασθαι δέον. οá½Î´á½³Î½ οὖν ἄλλο μοι δοκοῦσιν - οἱ τὰ τοιαῦτα λέγοντες á¼¢ τὴν ὑπόθεσιν, πεÏá½¶ á¼§Ï‚ βουλεύεσθαι, - οá½Ï‡á½¶ τὴν οὖσαν παÏιστάντες ὑμῖν á¼Î¼Î±Ïτάνειν. á¼Î³á½¼ δέ, ὅτι μέν - ποτ᾿ á¼Î¾á¿†Î½ τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον - τιμωÏήσασθαι, καὶ μάλ᾿ ἀκÏιβῶς οἶδα· á¼Ï€á¾¿ á¼Î¼Î¿á¿¦ γάÏ, οὠπάλαι - γέγονεν ταῦτ᾿ ἀμφότεÏα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν - Ï€Ïολαβεῖν ἡμῖν εἶναι τὴν Ï€Ïώτην, ὅπως τοὺς συμμάχους - σώσομεν. á¼á½°Î½ Î³á½°Ï Ï„Î¿á¿¦Ï„Î¿ βεβαίως ὑπάÏξῃ, τότε καὶ πεÏá½¶ τοῦ - τίνα τιμωÏήσεταί τις καὶ ὃν Ï„Ïόπον á¼Î¾á½³ÏƒÏ„αι σκοπεῖν· Ï€Ïὶν δὲ - τὴν á¼€Ïχὴν á½€Ïθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι πεÏá½¶ τῆς - τελευτῆς á½Î½Ï„ινοῦν ποιεῖσθαι λόγον. - - Δημοσθένους, Γ´ ᾿Ολυνθιακὸς - -Georgian: - - From a Unicode conference invitation: - - გთხáƒáƒ•თ áƒáƒ®áƒšáƒáƒ•ე გáƒáƒ˜áƒáƒ áƒáƒ— რეგისტრáƒáƒªáƒ˜áƒ Unicode-ის მეáƒáƒ—ე სáƒáƒ”რთáƒáƒ¨áƒáƒ áƒ˜áƒ¡áƒ - კáƒáƒœáƒ¤áƒ”რენციáƒáƒ–ე დáƒáƒ¡áƒáƒ¡áƒ¬áƒ áƒ”ბáƒáƒ“, რáƒáƒ›áƒ”ლიც გáƒáƒ˜áƒ›áƒáƒ áƒ—ებრ10-12 მáƒáƒ áƒ¢áƒ¡, - ქ. მáƒáƒ˜áƒœáƒªáƒ¨áƒ˜, გერმáƒáƒœáƒ˜áƒáƒ¨áƒ˜. კáƒáƒœáƒ¤áƒ”რენცირშეჰკრებს ერთáƒáƒ“ მსáƒáƒ¤áƒšáƒ˜áƒáƒ¡ - ექსპერტებს ისეთ დáƒáƒ áƒ’ებში რáƒáƒ’áƒáƒ áƒ˜áƒªáƒáƒ ინტერნეტი დრUnicode-ი, - ინტერნáƒáƒªáƒ˜áƒáƒœáƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ დრლáƒáƒ™áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ, Unicode-ის გáƒáƒ›áƒáƒ§áƒ”ნებრ- áƒáƒžáƒ”რáƒáƒªáƒ˜áƒ£áƒš სისტემებსáƒ, დრგáƒáƒ›áƒáƒ§áƒ”ნებით პრáƒáƒ’რáƒáƒ›áƒ”ბში, შრიფტებში, - ტექსტების დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒáƒ¡áƒ დრმრáƒáƒ•áƒáƒšáƒ”ნáƒáƒ•áƒáƒœ კáƒáƒ›áƒžáƒ˜áƒ£áƒ¢áƒ”რულ სისტემებში. - -Russian: - - From a Unicode conference invitation: - - ЗарегиÑтрируйтеÑÑŒ ÑÐµÐ¹Ñ‡Ð°Ñ Ð½Ð° ДеÑÑтую Международную Конференцию по - Unicode, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑоÑтоитÑÑ 10-12 марта 1997 года в Майнце в Германии. - ÐšÐ¾Ð½Ñ„ÐµÑ€ÐµÐ½Ñ†Ð¸Ñ Ñоберет широкий круг ÑкÑпертов по вопроÑам глобального - Интернета и Unicode, локализации и интернационализации, воплощению и - применению Unicode в различных операционных ÑиÑтемах и программных - приложениÑÑ…, шрифтах, верÑтке и многоÑзычных компьютерных ÑиÑтемах. - -Thai (UCS Level 2): - - Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese - classic 'San Gua'): - - [----------------------------|------------------------] - ๠à¹à¸œà¹ˆà¸™à¸”ินฮั่นเสื่อมโทรมà¹à¸ªà¸™à¸ªà¸±à¸‡à¹€à¸§à¸Š พระปà¸à¹€à¸à¸¨à¸à¸­à¸‡à¸šà¸¹à¹Šà¸à¸¹à¹‰à¸‚ึ้นใหม่ - สิบสองà¸à¸©à¸±à¸•ริย์à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¹à¸¥à¸–ัดไป สององค์ไซร้โง่เขลาเบาปัà¸à¸à¸² - ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนัà¸à¸«à¸™à¸² - โฮจิ๋นเรียà¸à¸—ัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัภ- เหมือนขับไสไล่เสือจาà¸à¹€à¸„หา รับหมาป่าเข้ามาเลยอาสัภ- à¸à¹ˆà¸²à¸¢à¸­à¹‰à¸­à¸‡à¸­à¸¸à¹‰à¸™à¸¢à¸¸à¹à¸¢à¸à¹ƒà¸«à¹‰à¹à¸•à¸à¸à¸±à¸™ ใช้สาวนั้นเป็นชนวนชื่นชวนใจ - พลันลิฉุยà¸à¸¸à¸¢à¸à¸µà¸à¸¥à¸±à¸šà¸à¹ˆà¸­à¹€à¸«à¸•ุ ช่างอาเพศจริงหนาฟ้าร้องไห้ - ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูà¸à¸¹à¹‰à¸šà¸£à¸£à¸¥à¸±à¸‡à¸à¹Œ ฯ - - (The above is a two-column text. If combining characters are handled - correctly, the lines of the second column should be aligned with the - | character above.) - -Ethiopian: - - Proverbs in the Amharic language: - - ሰማይ አይታረስ ንጉሥ አይከሰስᢠ- ብላ ካለአእንደአባቴ በቆመጠáŠá¢ - ጌጥ ያለቤቱ á‰áˆáŒ¥áŠ“ áŠá‹á¢ - ደሀ በሕáˆáˆ™ ቅቤ ባይጠጣ ንጣት በገደለá‹á¢ - የአá ወለáˆá‰³ በቅቤ አይታሽáˆá¢ - አይጥ በበላ ዳዋ ተመታᢠ- ሲተረጉሙ ይደረáŒáˆ™á¢ - ቀስ በቀስᥠዕንá‰áˆ‹áˆ በእáŒáˆ© ይሄዳáˆá¢ - ድር ቢያብር አንበሳ ያስርᢠ- ሰዠእንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርáˆá¢ - እáŒá‹œáˆ­ የከáˆá‰°á‹áŠ• ጉሮሮ ሳይዘጋዠአይድርáˆá¢ - የጎረቤት ሌባᥠቢያዩት ይስቅ ባያዩት ያጠáˆá‰…ᢠ- ሥራ ከመáታት áˆáŒ„ን ላá‹á‰³á‰µá¢ - ዓባይ ማደሪያ የለá‹á¥ áŒáŠ•á‹µ ይዞ ይዞራáˆá¢ - የእስላሠአገሩ መካ የአሞራ አገሩ ዋርካᢠ- ተንጋሎ ቢተበተመáˆáˆ¶ ባá‰á¢ - ወዳጅህ ማር ቢሆን ጨርስህ አትላሰá‹á¢ - እáŒáˆ­áˆ…ን በáራሽህ áˆáŠ­ ዘርጋᢠ- -Runes: - - ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛠᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ áš¹á›áš¦ ᚦᚪ ᚹᛖᛥᚫ - - (Old English, which transcribed into Latin reads 'He cwaeth that he - bude thaem lande northweardum with tha Westsae.' and means 'He said - that he lived in the northern land near the Western Sea.') - -Braille: - - ⡌â â §â ‘ â ¼â â ’ â¡â œâ ‡â ‘⠹⠰⠎ ⡣⠕⠌ - - â¡â œâ ‡â ‘â ¹ â ºâ â Ž ⠙⠑â â ™â ’ â žâ • ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ â Šâ Ž â â • ⠙⠳⠃⠞ - â ±â â žâ ‘â §â » â â ƒâ ³â ž â ¹â â žâ ² ⡹⠑ ⠗⠑⠛⠊⠌⠻ â •â ‹ ⠙⠊⠎ ⠃⠥⠗⠊â â ‡ â ºâ â Ž - â Žâ Šâ ›â â « ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹â â â â ‚ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ â ¥â â ™â »â žâ â …⠻⠂ - â â â ™ ⠹⠑ â ¡â Šâ ‘â ‹ â â ³â —â â »â ² ⡎⠊⠗⠕⠕⠛⠑ â Žâ Šâ ›â â « â Šâ žâ ² â¡â â ™ - ⡎⠊⠗⠕⠕⠛⠑⠰⠎ â â â â ‘ â ºâ â Ž ⠛⠕⠕⠙ â ¥â â •â  â °â¡¡â â â ›â ‘â ‚ â ‹â •â — â â â ¹â ¹â ”â › ⠙⠑ - â ¡â •â Žâ ‘ â žâ • â â ¥â ž ⠙⠊⠎ â ™â â â ™ â žâ •â ² - - ⡕⠇⠙ â¡â œâ ‡â ‘â ¹ â ºâ â Ž â â Ž ⠙⠑â â ™ â â Ž â  â ™â •â •â —â ¤â â â Šâ ‡â ² - - â¡â ”⠙⠖ ⡊ ⠙⠕â â °â ž â â ‘â â  â žâ • â Žâ â ¹ â ¹â â ž ⡊ â …â â ªâ ‚ â •â ‹ â â ¹ - â ªâ  â …â â ªâ ‡â «â ›â ‘â ‚ â ±â â ž ⠹⠻⠑ â Šâ Ž â â œâ žâ Šâ Šâ ¥â ‡â œâ ‡â ¹ ⠙⠑â â ™ â â ƒâ ³â ž - â  â ™â •â •â —â ¤â â â Šâ ‡â ² ⡊ â â Šâ £â ž â ™â â §â ‘ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ â â ¹â Žâ ‘⠇⠋⠂ â žâ • - ⠗⠑⠛⠜⠙ â  â Šâ •â ‹â ‹â ”â ¤â â â Šâ ‡ â â Ž ⠹⠑ ⠙⠑â â ™â ‘â Œ â â Šâ ‘â Šâ ‘ â •â ‹ â Šâ —â •â â â •â â ›â »â ¹ - â ” ⠹⠑ â žâ —â â ™â ‘â ² ⡃⠥⠞ ⠹⠑ â ºâ Šâ Žâ ™â •â  â •â ‹ ⠳⠗ â â â Šâ ‘⠌⠕⠗⠎ - â Šâ Ž â ” ⠹⠑ â Žâ Šâ â Šâ ‡â ‘â † â â â ™ â â ¹ â ¥â â ™â â ‡â ‡â ªâ « â ™â â â ™â Ž - â ©â â ‡â ‡ â â •â ž ⠙⠊⠌⠥⠗⠃ â Šâ žâ ‚ â •â — ⠹⠑ ⡊⠳â â žâ —⠹⠰⠎ ⠙⠕â â ‘ â ‹â •â —â ² ⡹⠳ - ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ â â »â â Šâ ž â â ‘ â žâ • â —â ‘â â ‘â â žâ ‚ â ‘â â â ™â â žâ Šâ Šâ â ‡â ‡â ¹â ‚ â ¹â â ž - â¡â œâ ‡â ‘â ¹ â ºâ â Ž â â Ž ⠙⠑â â ™ â â Ž â  â ™â •â •â —â ¤â â â Šâ ‡â ² - - (The first couple of paragraphs of "A Christmas Carol" by Dickens) - -Compact font selection example text: - - ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 - abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ - –—‘“â€â€žâ€ â€¢â€¦â€°â„¢Å“ŠŸž€ ΑΒΓΔΩαβγδω ÐБВГДабвгд - ∀∂∈â„∧∪≡∞ ↑↗↨↻⇣ â”┼╔╘░►☺♀ ï¬ï¿½â‘€â‚‚ἠḂӥẄÉËâŽ×Աრ- -Greetings in various languages: - - Hello world, ΚαλημέÏα κόσμε, コンニãƒãƒ - -Box drawing alignment tests: â–ˆ - â–‰ - â•”â•â•╦â•â•â•— ┌──┬──┠╭──┬──╮ ╭──┬──╮ â”â”â”┳â”â”┓ ┎┒â”┑ â•· â•» â”┯┓ ┌┰┠▊ ╱╲╱╲╳╳╳ - ║┌─╨─â”â•‘ │╔â•â•§â•╗│ │╒â•╪â•╕│ │╓─â•─╖│ ┃┌─╂─â”┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ â”╋┥ â–‹ ╲╱╲╱╳╳╳ - ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ â•¿ │┃ â”╅╆┓ ╵ ╹ â”—â”·â”› └┸┘ â–Œ ╱╲╱╲╳╳╳ - â• â•¡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┠╎ â”┅┅┓ ┋ ■╲╱╲╱╳╳╳ - ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╠┇ ┋ â–Ž - ║└─╥─┘║ │╚â•╤â•â•│ │╘â•╪â•╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╠┇ ┋ â– - ╚â•â•â•©â•â•╠└──┴──┘ ╰──┴──╯ ╰──┴──╯ â”—â”â”â”»â”â”â”› ▗▄▖▛▀▜ └╌╌┘ ╎ â”—â•â•â”› ┋ â–▂▃▄▅▆▇█ - â–▀▘▙▄▟ diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-8.txt b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-8.txt deleted file mode 100644 index 4363f27..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-8.txt +++ /dev/null @@ -1,212 +0,0 @@ - -UTF-8 encoded sample plain-text file -‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ - -Markus Kuhn [ˈmaʳkÊŠs kuËn] — 2002-07-25 - - -The ASCII compatible UTF-8 encoding used in this plain-text file -is defined in Unicode, ISO 10646-1, and RFC 2279. - - -Using Unicode/UTF-8, you can write in emails and source code things such as - -Mathematics and sciences: - - ∮ Eâ‹…da = Q, n → ∞, ∑ f(i) = ∠g(i), ⎧⎡⎛┌─────â”⎞⎤⎫ - ⎪⎢⎜│a²+b³ ⎟⎥⎪ - ∀x∈â„: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), ⎪⎢⎜│───── ⎟⎥⎪ - ⎪⎢⎜⎷ c₈ ⎟⎥⎪ - â„• ⊆ â„•â‚€ ⊂ ℤ ⊂ ℚ ⊂ ℠⊂ â„‚, ⎨⎢⎜ ⎟⎥⎬ - ⎪⎢⎜ ∞ ⎟⎥⎪ - ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫), ⎪⎢⎜ ⎲ ⎟⎥⎪ - ⎪⎢⎜ ⎳aâ±-bâ±âŽŸâŽ¥âŽª - 2Hâ‚‚ + Oâ‚‚ ⇌ 2Hâ‚‚O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣âŽi=1 ⎠⎦⎭ - -Linguistics and dictionaries: - - ði ıntəˈnæʃənÉ™l fəˈnÉ›tık É™soÊŠsiˈeıʃn - Y [ˈÊpsilÉ”n], Yen [jÉ›n], Yoga [ˈjoËgÉ‘] - -APL: - - ((Vâ³V)=â³â´V)/Vâ†,V ⌷â†â³â†’â´âˆ†âˆ‡âŠƒâ€¾âŽâ•⌈ - -Nicer typography in plain text files: - - â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•— - â•‘ â•‘ - â•‘ • ‘single’ and “double†quotes â•‘ - â•‘ â•‘ - â•‘ • Curly apostrophes: “We’ve been here†║ - â•‘ â•‘ - â•‘ • Latin-1 apostrophe and accents: '´` â•‘ - â•‘ â•‘ - â•‘ • ‚deutsche‘ „Anführungszeichen“ â•‘ - â•‘ â•‘ - â•‘ • †, ‡, ‰, •, 3–4, —, −5/+5, â„¢, … â•‘ - â•‘ â•‘ - â•‘ • ASCII safety test: 1lI|, 0OD, 8B â•‘ - â•‘ ╭─────────╮ â•‘ - â•‘ • the euro symbol: │ 14.95 € │ â•‘ - â•‘ ╰─────────╯ â•‘ - ╚â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• - -Combining characters: - - STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑ - -Greek (in Polytonic): - - The Greek anthem: - - Σὲ γνωÏίζω ἀπὸ τὴν κόψη - τοῦ σπαθιοῦ τὴν Ï„ÏομεÏá½µ, - σὲ γνωÏίζω ἀπὸ τὴν ὄψη - ποὺ μὲ βία μετÏάει τὴ γῆ. - - ᾿Απ᾿ τὰ κόκκαλα βγαλμένη - τῶν ῾Ελλήνων τὰ ἱεÏá½± - καὶ σὰν Ï€Ïῶτα ἀνδÏειωμένη - χαῖÏε, ὦ χαῖÏε, ᾿ΕλευθεÏιά! - - From a speech of Demosthenes in the 4th century BC: - - Οá½Ï‡á½¶ ταá½Ï„á½° παÏίσταταί μοι γιγνώσκειν, ὦ ἄνδÏες ᾿Αθηναῖοι, - ὅταν τ᾿ εἰς τὰ Ï€Ïάγματα ἀποβλέψω καὶ ὅταν Ï€Ïὸς τοὺς - λόγους οὓς ἀκούω· τοὺς μὲν Î³á½°Ï Î»á½¹Î³Î¿Ï…Ï‚ πεÏá½¶ τοῦ - τιμωÏήσασθαι Φίλιππον á½Ïá¿¶ γιγνομένους, τὰ δὲ Ï€Ïάγματ᾿ - εἰς τοῦτο Ï€Ïοήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αá½Ï„οὶ - Ï€ÏότεÏον κακῶς σκέψασθαι δέον. οá½Î´á½³Î½ οὖν ἄλλο μοι δοκοῦσιν - οἱ τὰ τοιαῦτα λέγοντες á¼¢ τὴν ὑπόθεσιν, πεÏá½¶ á¼§Ï‚ βουλεύεσθαι, - οá½Ï‡á½¶ τὴν οὖσαν παÏιστάντες ὑμῖν á¼Î¼Î±Ïτάνειν. á¼Î³á½¼ δέ, ὅτι μέν - ποτ᾿ á¼Î¾á¿†Î½ τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον - τιμωÏήσασθαι, καὶ μάλ᾿ ἀκÏιβῶς οἶδα· á¼Ï€á¾¿ á¼Î¼Î¿á¿¦ γάÏ, οὠπάλαι - γέγονεν ταῦτ᾿ ἀμφότεÏα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν - Ï€Ïολαβεῖν ἡμῖν εἶναι τὴν Ï€Ïώτην, ὅπως τοὺς συμμάχους - σώσομεν. á¼á½°Î½ Î³á½°Ï Ï„Î¿á¿¦Ï„Î¿ βεβαίως ὑπάÏξῃ, τότε καὶ πεÏá½¶ τοῦ - τίνα τιμωÏήσεταί τις καὶ ὃν Ï„Ïόπον á¼Î¾á½³ÏƒÏ„αι σκοπεῖν· Ï€Ïὶν δὲ - τὴν á¼€Ïχὴν á½€Ïθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι πεÏá½¶ τῆς - τελευτῆς á½Î½Ï„ινοῦν ποιεῖσθαι λόγον. - - Δημοσθένους, Γ´ ᾿Ολυνθιακὸς - -Georgian: - - From a Unicode conference invitation: - - გთხáƒáƒ•თ áƒáƒ®áƒšáƒáƒ•ე გáƒáƒ˜áƒáƒ áƒáƒ— რეგისტრáƒáƒªáƒ˜áƒ Unicode-ის მეáƒáƒ—ე სáƒáƒ”რთáƒáƒ¨áƒáƒ áƒ˜áƒ¡áƒ - კáƒáƒœáƒ¤áƒ”რენციáƒáƒ–ე დáƒáƒ¡áƒáƒ¡áƒ¬áƒ áƒ”ბáƒáƒ“, რáƒáƒ›áƒ”ლიც გáƒáƒ˜áƒ›áƒáƒ áƒ—ებრ10-12 მáƒáƒ áƒ¢áƒ¡, - ქ. მáƒáƒ˜áƒœáƒªáƒ¨áƒ˜, გერმáƒáƒœáƒ˜áƒáƒ¨áƒ˜. კáƒáƒœáƒ¤áƒ”რენცირშეჰკრებს ერთáƒáƒ“ მსáƒáƒ¤áƒšáƒ˜áƒáƒ¡ - ექსპერტებს ისეთ დáƒáƒ áƒ’ებში რáƒáƒ’áƒáƒ áƒ˜áƒªáƒáƒ ინტერნეტი დრUnicode-ი, - ინტერნáƒáƒªáƒ˜áƒáƒœáƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ დრლáƒáƒ™áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ, Unicode-ის გáƒáƒ›áƒáƒ§áƒ”ნებრ- áƒáƒžáƒ”რáƒáƒªáƒ˜áƒ£áƒš სისტემებსáƒ, დრგáƒáƒ›áƒáƒ§áƒ”ნებით პრáƒáƒ’რáƒáƒ›áƒ”ბში, შრიფტებში, - ტექსტების დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒáƒ¡áƒ დრმრáƒáƒ•áƒáƒšáƒ”ნáƒáƒ•áƒáƒœ კáƒáƒ›áƒžáƒ˜áƒ£áƒ¢áƒ”რულ სისტემებში. - -Russian: - - From a Unicode conference invitation: - - ЗарегиÑтрируйтеÑÑŒ ÑÐµÐ¹Ñ‡Ð°Ñ Ð½Ð° ДеÑÑтую Международную Конференцию по - Unicode, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑоÑтоитÑÑ 10-12 марта 1997 года в Майнце в Германии. - ÐšÐ¾Ð½Ñ„ÐµÑ€ÐµÐ½Ñ†Ð¸Ñ Ñоберет широкий круг ÑкÑпертов по вопроÑам глобального - Интернета и Unicode, локализации и интернационализации, воплощению и - применению Unicode в различных операционных ÑиÑтемах и программных - приложениÑÑ…, шрифтах, верÑтке и многоÑзычных компьютерных ÑиÑтемах. - -Thai (UCS Level 2): - - Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese - classic 'San Gua'): - - [----------------------------|------------------------] - ๠à¹à¸œà¹ˆà¸™à¸”ินฮั่นเสื่อมโทรมà¹à¸ªà¸™à¸ªà¸±à¸‡à¹€à¸§à¸Š พระปà¸à¹€à¸à¸¨à¸à¸­à¸‡à¸šà¸¹à¹Šà¸à¸¹à¹‰à¸‚ึ้นใหม่ - สิบสองà¸à¸©à¸±à¸•ริย์à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¹à¸¥à¸–ัดไป สององค์ไซร้โง่เขลาเบาปัà¸à¸à¸² - ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนัà¸à¸«à¸™à¸² - โฮจิ๋นเรียà¸à¸—ัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัภ- เหมือนขับไสไล่เสือจาà¸à¹€à¸„หา รับหมาป่าเข้ามาเลยอาสัภ- à¸à¹ˆà¸²à¸¢à¸­à¹‰à¸­à¸‡à¸­à¸¸à¹‰à¸™à¸¢à¸¸à¹à¸¢à¸à¹ƒà¸«à¹‰à¹à¸•à¸à¸à¸±à¸™ ใช้สาวนั้นเป็นชนวนชื่นชวนใจ - พลันลิฉุยà¸à¸¸à¸¢à¸à¸µà¸à¸¥à¸±à¸šà¸à¹ˆà¸­à¹€à¸«à¸•ุ ช่างอาเพศจริงหนาฟ้าร้องไห้ - ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูà¸à¸¹à¹‰à¸šà¸£à¸£à¸¥à¸±à¸‡à¸à¹Œ ฯ - - (The above is a two-column text. If combining characters are handled - correctly, the lines of the second column should be aligned with the - | character above.) - -Ethiopian: - - Proverbs in the Amharic language: - - ሰማይ አይታረስ ንጉሥ አይከሰስᢠ- ብላ ካለአእንደአባቴ በቆመጠáŠá¢ - ጌጥ ያለቤቱ á‰áˆáŒ¥áŠ“ áŠá‹á¢ - ደሀ በሕáˆáˆ™ ቅቤ ባይጠጣ ንጣት በገደለá‹á¢ - የአá ወለáˆá‰³ በቅቤ አይታሽáˆá¢ - አይጥ በበላ ዳዋ ተመታᢠ- ሲተረጉሙ ይደረáŒáˆ™á¢ - ቀስ በቀስᥠዕንá‰áˆ‹áˆ በእáŒáˆ© ይሄዳáˆá¢ - ድር ቢያብር አንበሳ ያስርᢠ- ሰዠእንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርáˆá¢ - እáŒá‹œáˆ­ የከáˆá‰°á‹áŠ• ጉሮሮ ሳይዘጋዠአይድርáˆá¢ - የጎረቤት ሌባᥠቢያዩት ይስቅ ባያዩት ያጠáˆá‰…ᢠ- ሥራ ከመáታት áˆáŒ„ን ላá‹á‰³á‰µá¢ - ዓባይ ማደሪያ የለá‹á¥ áŒáŠ•á‹µ ይዞ ይዞራáˆá¢ - የእስላሠአገሩ መካ የአሞራ አገሩ ዋርካᢠ- ተንጋሎ ቢተበተመáˆáˆ¶ ባá‰á¢ - ወዳጅህ ማር ቢሆን ጨርስህ አትላሰá‹á¢ - እáŒáˆ­áˆ…ን በáራሽህ áˆáŠ­ ዘርጋᢠ- -Runes: - - ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛠᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ áš¹á›áš¦ ᚦᚪ ᚹᛖᛥᚫ - - (Old English, which transcribed into Latin reads 'He cwaeth that he - bude thaem lande northweardum with tha Westsae.' and means 'He said - that he lived in the northern land near the Western Sea.') - -Braille: - - ⡌â â §â ‘ â ¼â â ’ â¡â œâ ‡â ‘⠹⠰⠎ ⡣⠕⠌ - - â¡â œâ ‡â ‘â ¹ â ºâ â Ž ⠙⠑â â ™â ’ â žâ • ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ â Šâ Ž â â • ⠙⠳⠃⠞ - â ±â â žâ ‘â §â » â â ƒâ ³â ž â ¹â â žâ ² ⡹⠑ ⠗⠑⠛⠊⠌⠻ â •â ‹ ⠙⠊⠎ ⠃⠥⠗⠊â â ‡ â ºâ â Ž - â Žâ Šâ ›â â « ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹â â â â ‚ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ â ¥â â ™â »â žâ â …⠻⠂ - â â â ™ ⠹⠑ â ¡â Šâ ‘â ‹ â â ³â —â â »â ² ⡎⠊⠗⠕⠕⠛⠑ â Žâ Šâ ›â â « â Šâ žâ ² â¡â â ™ - ⡎⠊⠗⠕⠕⠛⠑⠰⠎ â â â â ‘ â ºâ â Ž ⠛⠕⠕⠙ â ¥â â •â  â °â¡¡â â â ›â ‘â ‚ â ‹â •â — â â â ¹â ¹â ”â › ⠙⠑ - â ¡â •â Žâ ‘ â žâ • â â ¥â ž ⠙⠊⠎ â ™â â â ™ â žâ •â ² - - ⡕⠇⠙ â¡â œâ ‡â ‘â ¹ â ºâ â Ž â â Ž ⠙⠑â â ™ â â Ž â  â ™â •â •â —â ¤â â â Šâ ‡â ² - - â¡â ”⠙⠖ ⡊ ⠙⠕â â °â ž â â ‘â â  â žâ • â Žâ â ¹ â ¹â â ž ⡊ â …â â ªâ ‚ â •â ‹ â â ¹ - â ªâ  â …â â ªâ ‡â «â ›â ‘â ‚ â ±â â ž ⠹⠻⠑ â Šâ Ž â â œâ žâ Šâ Šâ ¥â ‡â œâ ‡â ¹ ⠙⠑â â ™ â â ƒâ ³â ž - â  â ™â •â •â —â ¤â â â Šâ ‡â ² ⡊ â â Šâ £â ž â ™â â §â ‘ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ â â ¹â Žâ ‘⠇⠋⠂ â žâ • - ⠗⠑⠛⠜⠙ â  â Šâ •â ‹â ‹â ”â ¤â â â Šâ ‡ â â Ž ⠹⠑ ⠙⠑â â ™â ‘â Œ â â Šâ ‘â Šâ ‘ â •â ‹ â Šâ —â •â â â •â â ›â »â ¹ - â ” ⠹⠑ â žâ —â â ™â ‘â ² ⡃⠥⠞ ⠹⠑ â ºâ Šâ Žâ ™â •â  â •â ‹ ⠳⠗ â â â Šâ ‘⠌⠕⠗⠎ - â Šâ Ž â ” ⠹⠑ â Žâ Šâ â Šâ ‡â ‘â † â â â ™ â â ¹ â ¥â â ™â â ‡â ‡â ªâ « â ™â â â ™â Ž - â ©â â ‡â ‡ â â •â ž ⠙⠊⠌⠥⠗⠃ â Šâ žâ ‚ â •â — ⠹⠑ ⡊⠳â â žâ —⠹⠰⠎ ⠙⠕â â ‘ â ‹â •â —â ² ⡹⠳ - ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ â â »â â Šâ ž â â ‘ â žâ • â —â ‘â â ‘â â žâ ‚ â ‘â â â ™â â žâ Šâ Šâ â ‡â ‡â ¹â ‚ â ¹â â ž - â¡â œâ ‡â ‘â ¹ â ºâ â Ž â â Ž ⠙⠑â â ™ â â Ž â  â ™â •â •â —â ¤â â â Šâ ‡â ² - - (The first couple of paragraphs of "A Christmas Carol" by Dickens) - -Compact font selection example text: - - ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 - abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ - –—‘“â€â€žâ€ â€¢â€¦â€°â„¢Å“ŠŸž€ ΑΒΓΔΩαβγδω ÐБВГДабвгд - ∀∂∈â„∧∪≡∞ ↑↗↨↻⇣ â”┼╔╘░►☺♀ ï¬ï¿½â‘€â‚‚ἠḂӥẄÉËâŽ×Աრ- -Greetings in various languages: - - Hello world, ΚαλημέÏα κόσμε, コンニãƒãƒ - -Box drawing alignment tests: â–ˆ - â–‰ - â•”â•â•╦â•â•â•— ┌──┬──┠╭──┬──╮ ╭──┬──╮ â”â”â”┳â”â”┓ ┎┒â”┑ â•· â•» â”┯┓ ┌┰┠▊ ╱╲╱╲╳╳╳ - ║┌─╨─â”â•‘ │╔â•â•§â•╗│ │╒â•╪â•╕│ │╓─â•─╖│ ┃┌─╂─â”┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ â”╋┥ â–‹ ╲╱╲╱╳╳╳ - ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ â•¿ │┃ â”╅╆┓ ╵ ╹ â”—â”·â”› └┸┘ â–Œ ╱╲╱╲╳╳╳ - â• â•¡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┠╎ â”┅┅┓ ┋ ■╲╱╲╱╳╳╳ - ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╠┇ ┋ â–Ž - ║└─╥─┘║ │╚â•╤â•â•│ │╘â•╪â•╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╠┇ ┋ â– - ╚â•â•â•©â•â•╠└──┴──┘ ╰──┴──╯ ╰──┴──╯ â”—â”â”â”»â”â”â”› ▗▄▖▛▀▜ └╌╌┘ ╎ â”—â•â•â”› ┋ â–▂▃▄▅▆▇█ - â–▀▘▙▄▟ diff --git a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-8.txt-utf8 b/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-8.txt-utf8 deleted file mode 100644 index 4363f27..0000000 --- a/quicklisp/dists/quicklisp/software/babel-20230214-git/tests/utf-8.txt-utf8 +++ /dev/null @@ -1,212 +0,0 @@ - -UTF-8 encoded sample plain-text file -‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ - -Markus Kuhn [ˈmaʳkÊŠs kuËn] — 2002-07-25 - - -The ASCII compatible UTF-8 encoding used in this plain-text file -is defined in Unicode, ISO 10646-1, and RFC 2279. - - -Using Unicode/UTF-8, you can write in emails and source code things such as - -Mathematics and sciences: - - ∮ Eâ‹…da = Q, n → ∞, ∑ f(i) = ∠g(i), ⎧⎡⎛┌─────â”⎞⎤⎫ - ⎪⎢⎜│a²+b³ ⎟⎥⎪ - ∀x∈â„: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), ⎪⎢⎜│───── ⎟⎥⎪ - ⎪⎢⎜⎷ c₈ ⎟⎥⎪ - â„• ⊆ â„•â‚€ ⊂ ℤ ⊂ ℚ ⊂ ℠⊂ â„‚, ⎨⎢⎜ ⎟⎥⎬ - ⎪⎢⎜ ∞ ⎟⎥⎪ - ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫), ⎪⎢⎜ ⎲ ⎟⎥⎪ - ⎪⎢⎜ ⎳aâ±-bâ±âŽŸâŽ¥âŽª - 2Hâ‚‚ + Oâ‚‚ ⇌ 2Hâ‚‚O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣âŽi=1 ⎠⎦⎭ - -Linguistics and dictionaries: - - ði ıntəˈnæʃənÉ™l fəˈnÉ›tık É™soÊŠsiˈeıʃn - Y [ˈÊpsilÉ”n], Yen [jÉ›n], Yoga [ˈjoËgÉ‘] - -APL: - - ((Vâ³V)=â³â´V)/Vâ†,V ⌷â†â³â†’â´âˆ†âˆ‡âŠƒâ€¾âŽâ•⌈ - -Nicer typography in plain text files: - - â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•— - â•‘ â•‘ - â•‘ • ‘single’ and “double†quotes â•‘ - â•‘ â•‘ - â•‘ • Curly apostrophes: “We’ve been here†║ - â•‘ â•‘ - â•‘ • Latin-1 apostrophe and accents: '´` â•‘ - â•‘ â•‘ - â•‘ • ‚deutsche‘ „Anführungszeichen“ â•‘ - â•‘ â•‘ - â•‘ • †, ‡, ‰, •, 3–4, —, −5/+5, â„¢, … â•‘ - â•‘ â•‘ - â•‘ • ASCII safety test: 1lI|, 0OD, 8B â•‘ - â•‘ ╭─────────╮ â•‘ - â•‘ • the euro symbol: │ 14.95 € │ â•‘ - â•‘ ╰─────────╯ â•‘ - ╚â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• - -Combining characters: - - STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑ - -Greek (in Polytonic): - - The Greek anthem: - - Σὲ γνωÏίζω ἀπὸ τὴν κόψη - τοῦ σπαθιοῦ τὴν Ï„ÏομεÏá½µ, - σὲ γνωÏίζω ἀπὸ τὴν ὄψη - ποὺ μὲ βία μετÏάει τὴ γῆ. - - ᾿Απ᾿ τὰ κόκκαλα βγαλμένη - τῶν ῾Ελλήνων τὰ ἱεÏá½± - καὶ σὰν Ï€Ïῶτα ἀνδÏειωμένη - χαῖÏε, ὦ χαῖÏε, ᾿ΕλευθεÏιά! - - From a speech of Demosthenes in the 4th century BC: - - Οá½Ï‡á½¶ ταá½Ï„á½° παÏίσταταί μοι γιγνώσκειν, ὦ ἄνδÏες ᾿Αθηναῖοι, - ὅταν τ᾿ εἰς τὰ Ï€Ïάγματα ἀποβλέψω καὶ ὅταν Ï€Ïὸς τοὺς - λόγους οὓς ἀκούω· τοὺς μὲν Î³á½°Ï Î»á½¹Î³Î¿Ï…Ï‚ πεÏá½¶ τοῦ - τιμωÏήσασθαι Φίλιππον á½Ïá¿¶ γιγνομένους, τὰ δὲ Ï€Ïάγματ᾿ - εἰς τοῦτο Ï€Ïοήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αá½Ï„οὶ - Ï€ÏότεÏον κακῶς σκέψασθαι δέον. οá½Î´á½³Î½ οὖν ἄλλο μοι δοκοῦσιν - οἱ τὰ τοιαῦτα λέγοντες á¼¢ τὴν ὑπόθεσιν, πεÏá½¶ á¼§Ï‚ βουλεύεσθαι, - οá½Ï‡á½¶ τὴν οὖσαν παÏιστάντες ὑμῖν á¼Î¼Î±Ïτάνειν. á¼Î³á½¼ δέ, ὅτι μέν - ποτ᾿ á¼Î¾á¿†Î½ τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον - τιμωÏήσασθαι, καὶ μάλ᾿ ἀκÏιβῶς οἶδα· á¼Ï€á¾¿ á¼Î¼Î¿á¿¦ γάÏ, οὠπάλαι - γέγονεν ταῦτ᾿ ἀμφότεÏα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν - Ï€Ïολαβεῖν ἡμῖν εἶναι τὴν Ï€Ïώτην, ὅπως τοὺς συμμάχους - σώσομεν. á¼á½°Î½ Î³á½°Ï Ï„Î¿á¿¦Ï„Î¿ βεβαίως ὑπάÏξῃ, τότε καὶ πεÏá½¶ τοῦ - τίνα τιμωÏήσεταί τις καὶ ὃν Ï„Ïόπον á¼Î¾á½³ÏƒÏ„αι σκοπεῖν· Ï€Ïὶν δὲ - τὴν á¼€Ïχὴν á½€Ïθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι πεÏá½¶ τῆς - τελευτῆς á½Î½Ï„ινοῦν ποιεῖσθαι λόγον. - - Δημοσθένους, Γ´ ᾿Ολυνθιακὸς - -Georgian: - - From a Unicode conference invitation: - - გთხáƒáƒ•თ áƒáƒ®áƒšáƒáƒ•ე გáƒáƒ˜áƒáƒ áƒáƒ— რეგისტრáƒáƒªáƒ˜áƒ Unicode-ის მეáƒáƒ—ე სáƒáƒ”რთáƒáƒ¨áƒáƒ áƒ˜áƒ¡áƒ - კáƒáƒœáƒ¤áƒ”რენციáƒáƒ–ე დáƒáƒ¡áƒáƒ¡áƒ¬áƒ áƒ”ბáƒáƒ“, რáƒáƒ›áƒ”ლიც გáƒáƒ˜áƒ›áƒáƒ áƒ—ებრ10-12 მáƒáƒ áƒ¢áƒ¡, - ქ. მáƒáƒ˜áƒœáƒªáƒ¨áƒ˜, გერმáƒáƒœáƒ˜áƒáƒ¨áƒ˜. კáƒáƒœáƒ¤áƒ”რენცირშეჰკრებს ერთáƒáƒ“ მსáƒáƒ¤áƒšáƒ˜áƒáƒ¡ - ექსპერტებს ისეთ დáƒáƒ áƒ’ებში რáƒáƒ’áƒáƒ áƒ˜áƒªáƒáƒ ინტერნეტი დრUnicode-ი, - ინტერნáƒáƒªáƒ˜áƒáƒœáƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ დრლáƒáƒ™áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ, Unicode-ის გáƒáƒ›áƒáƒ§áƒ”ნებრ- áƒáƒžáƒ”რáƒáƒªáƒ˜áƒ£áƒš სისტემებსáƒ, დრგáƒáƒ›áƒáƒ§áƒ”ნებით პრáƒáƒ’რáƒáƒ›áƒ”ბში, შრიფტებში, - ტექსტების დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებáƒáƒ¡áƒ დრმრáƒáƒ•áƒáƒšáƒ”ნáƒáƒ•áƒáƒœ კáƒáƒ›áƒžáƒ˜áƒ£áƒ¢áƒ”რულ სისტემებში. - -Russian: - - From a Unicode conference invitation: - - ЗарегиÑтрируйтеÑÑŒ ÑÐµÐ¹Ñ‡Ð°Ñ Ð½Ð° ДеÑÑтую Международную Конференцию по - Unicode, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑоÑтоитÑÑ 10-12 марта 1997 года в Майнце в Германии. - ÐšÐ¾Ð½Ñ„ÐµÑ€ÐµÐ½Ñ†Ð¸Ñ Ñоберет широкий круг ÑкÑпертов по вопроÑам глобального - Интернета и Unicode, локализации и интернационализации, воплощению и - применению Unicode в различных операционных ÑиÑтемах и программных - приложениÑÑ…, шрифтах, верÑтке и многоÑзычных компьютерных ÑиÑтемах. - -Thai (UCS Level 2): - - Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese - classic 'San Gua'): - - [----------------------------|------------------------] - ๠à¹à¸œà¹ˆà¸™à¸”ินฮั่นเสื่อมโทรมà¹à¸ªà¸™à¸ªà¸±à¸‡à¹€à¸§à¸Š พระปà¸à¹€à¸à¸¨à¸à¸­à¸‡à¸šà¸¹à¹Šà¸à¸¹à¹‰à¸‚ึ้นใหม่ - สิบสองà¸à¸©à¸±à¸•ริย์à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¹à¸¥à¸–ัดไป สององค์ไซร้โง่เขลาเบาปัà¸à¸à¸² - ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนัà¸à¸«à¸™à¸² - โฮจิ๋นเรียà¸à¸—ัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัภ- เหมือนขับไสไล่เสือจาà¸à¹€à¸„หา รับหมาป่าเข้ามาเลยอาสัภ- à¸à¹ˆà¸²à¸¢à¸­à¹‰à¸­à¸‡à¸­à¸¸à¹‰à¸™à¸¢à¸¸à¹à¸¢à¸à¹ƒà¸«à¹‰à¹à¸•à¸à¸à¸±à¸™ ใช้สาวนั้นเป็นชนวนชื่นชวนใจ - พลันลิฉุยà¸à¸¸à¸¢à¸à¸µà¸à¸¥à¸±à¸šà¸à¹ˆà¸­à¹€à¸«à¸•ุ ช่างอาเพศจริงหนาฟ้าร้องไห้ - ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูà¸à¸¹à¹‰à¸šà¸£à¸£à¸¥à¸±à¸‡à¸à¹Œ ฯ - - (The above is a two-column text. If combining characters are handled - correctly, the lines of the second column should be aligned with the - | character above.) - -Ethiopian: - - Proverbs in the Amharic language: - - ሰማይ አይታረስ ንጉሥ አይከሰስᢠ- ብላ ካለአእንደአባቴ በቆመጠáŠá¢ - ጌጥ ያለቤቱ á‰áˆáŒ¥áŠ“ áŠá‹á¢ - ደሀ በሕáˆáˆ™ ቅቤ ባይጠጣ ንጣት በገደለá‹á¢ - የአá ወለáˆá‰³ በቅቤ አይታሽáˆá¢ - አይጥ በበላ ዳዋ ተመታᢠ- ሲተረጉሙ ይደረáŒáˆ™á¢ - ቀስ በቀስᥠዕንá‰áˆ‹áˆ በእáŒáˆ© ይሄዳáˆá¢ - ድር ቢያብር አንበሳ ያስርᢠ- ሰዠእንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርáˆá¢ - እáŒá‹œáˆ­ የከáˆá‰°á‹áŠ• ጉሮሮ ሳይዘጋዠአይድርáˆá¢ - የጎረቤት ሌባᥠቢያዩት ይስቅ ባያዩት ያጠáˆá‰…ᢠ- ሥራ ከመáታት áˆáŒ„ን ላá‹á‰³á‰µá¢ - ዓባይ ማደሪያ የለá‹á¥ áŒáŠ•á‹µ ይዞ ይዞራáˆá¢ - የእስላሠአገሩ መካ የአሞራ አገሩ ዋርካᢠ- ተንጋሎ ቢተበተመáˆáˆ¶ ባá‰á¢ - ወዳጅህ ማር ቢሆን ጨርስህ አትላሰá‹á¢ - እáŒáˆ­áˆ…ን በáራሽህ áˆáŠ­ ዘርጋᢠ- -Runes: - - ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛠᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ áš¹á›áš¦ ᚦᚪ ᚹᛖᛥᚫ - - (Old English, which transcribed into Latin reads 'He cwaeth that he - bude thaem lande northweardum with tha Westsae.' and means 'He said - that he lived in the northern land near the Western Sea.') - -Braille: - - ⡌â â §â ‘ â ¼â â ’ â¡â œâ ‡â ‘⠹⠰⠎ ⡣⠕⠌ - - â¡â œâ ‡â ‘â ¹ â ºâ â Ž ⠙⠑â â ™â ’ â žâ • ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ â Šâ Ž â â • ⠙⠳⠃⠞ - â ±â â žâ ‘â §â » â â ƒâ ³â ž â ¹â â žâ ² ⡹⠑ ⠗⠑⠛⠊⠌⠻ â •â ‹ ⠙⠊⠎ ⠃⠥⠗⠊â â ‡ â ºâ â Ž - â Žâ Šâ ›â â « ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹â â â â ‚ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ â ¥â â ™â »â žâ â …⠻⠂ - â â â ™ ⠹⠑ â ¡â Šâ ‘â ‹ â â ³â —â â »â ² ⡎⠊⠗⠕⠕⠛⠑ â Žâ Šâ ›â â « â Šâ žâ ² â¡â â ™ - ⡎⠊⠗⠕⠕⠛⠑⠰⠎ â â â â ‘ â ºâ â Ž ⠛⠕⠕⠙ â ¥â â •â  â °â¡¡â â â ›â ‘â ‚ â ‹â •â — â â â ¹â ¹â ”â › ⠙⠑ - â ¡â •â Žâ ‘ â žâ • â â ¥â ž ⠙⠊⠎ â ™â â â ™ â žâ •â ² - - ⡕⠇⠙ â¡â œâ ‡â ‘â ¹ â ºâ â Ž â â Ž ⠙⠑â â ™ â â Ž â  â ™â •â •â —â ¤â â â Šâ ‡â ² - - â¡â ”⠙⠖ ⡊ ⠙⠕â â °â ž â â ‘â â  â žâ • â Žâ â ¹ â ¹â â ž ⡊ â …â â ªâ ‚ â •â ‹ â â ¹ - â ªâ  â …â â ªâ ‡â «â ›â ‘â ‚ â ±â â ž ⠹⠻⠑ â Šâ Ž â â œâ žâ Šâ Šâ ¥â ‡â œâ ‡â ¹ ⠙⠑â â ™ â â ƒâ ³â ž - â  â ™â •â •â —â ¤â â â Šâ ‡â ² ⡊ â â Šâ £â ž â ™â â §â ‘ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ â â ¹â Žâ ‘⠇⠋⠂ â žâ • - ⠗⠑⠛⠜⠙ â  â Šâ •â ‹â ‹â ”â ¤â â â Šâ ‡ â â Ž ⠹⠑ ⠙⠑â â ™â ‘â Œ â â Šâ ‘â Šâ ‘ â •â ‹ â Šâ —â •â â â •â â ›â »â ¹ - â ” ⠹⠑ â žâ —â â ™â ‘â ² ⡃⠥⠞ ⠹⠑ â ºâ Šâ Žâ ™â •â  â •â ‹ ⠳⠗ â â â Šâ ‘⠌⠕⠗⠎ - â Šâ Ž â ” ⠹⠑ â Žâ Šâ â Šâ ‡â ‘â † â â â ™ â â ¹ â ¥â â ™â â ‡â ‡â ªâ « â ™â â â ™â Ž - â ©â â ‡â ‡ â â •â ž ⠙⠊⠌⠥⠗⠃ â Šâ žâ ‚ â •â — ⠹⠑ ⡊⠳â â žâ —⠹⠰⠎ ⠙⠕â â ‘ â ‹â •â —â ² ⡹⠳ - ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ â â »â â Šâ ž â â ‘ â žâ • â —â ‘â â ‘â â žâ ‚ â ‘â â â ™â â žâ Šâ Šâ â ‡â ‡â ¹â ‚ â ¹â â ž - â¡â œâ ‡â ‘â ¹ â ºâ â Ž â â Ž ⠙⠑â â ™ â â Ž â  â ™â •â •â —â ¤â â â Šâ ‡â ² - - (The first couple of paragraphs of "A Christmas Carol" by Dickens) - -Compact font selection example text: - - ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 - abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ - –—‘“â€â€žâ€ â€¢â€¦â€°â„¢Å“ŠŸž€ ΑΒΓΔΩαβγδω ÐБВГДабвгд - ∀∂∈â„∧∪≡∞ ↑↗↨↻⇣ â”┼╔╘░►☺♀ ï¬ï¿½â‘€â‚‚ἠḂӥẄÉËâŽ×Աრ- -Greetings in various languages: - - Hello world, ΚαλημέÏα κόσμε, コンニãƒãƒ - -Box drawing alignment tests: â–ˆ - â–‰ - â•”â•â•╦â•â•â•— ┌──┬──┠╭──┬──╮ ╭──┬──╮ â”â”â”┳â”â”┓ ┎┒â”┑ â•· â•» â”┯┓ ┌┰┠▊ ╱╲╱╲╳╳╳ - ║┌─╨─â”â•‘ │╔â•â•§â•╗│ │╒â•╪â•╕│ │╓─â•─╖│ ┃┌─╂─â”┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ â”╋┥ â–‹ ╲╱╲╱╳╳╳ - ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ â•¿ │┃ â”╅╆┓ ╵ ╹ â”—â”·â”› └┸┘ â–Œ ╱╲╱╲╳╳╳ - â• â•¡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┠╎ â”┅┅┓ ┋ ■╲╱╲╱╳╳╳ - ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╠┇ ┋ â–Ž - ║└─╥─┘║ │╚â•╤â•â•│ │╘â•╪â•╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╠┇ ┋ â– - ╚â•â•â•©â•â•╠└──┴──┘ ╰──┴──╯ ╰──┴──╯ â”—â”â”â”»â”â”â”› ▗▄▖▛▀▜ └╌╌┘ ╎ â”—â•â•â”› ┋ â–▂▃▄▅▆▇█ - â–▀▘▙▄▟ diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/.travis.yml b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/.travis.yml deleted file mode 100644 index 53b6d82..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/.travis.yml +++ /dev/null @@ -1,47 +0,0 @@ -os: linux -dist: bionic -language: generic - -env: - jobs: - - LISP=sbcl - - LISP=sbcl32 - - LISP=ccl - - LISP=ccl32 - - LISP=ecl - - LISP=allegro - - LISP=cmucl - # - LISP=abcl - -jobs: - allow_failures: - - env: LISP=abcl - - env: LISP=allegro - - env: LISP=ccl32 - - env: LISP=cmucl - -notifications: - email: - on_success: change - on_failure: always - irc: - channels: - - "chat.freenode.net#iolib" - on_success: change - on_failure: always - use_notice: true - skip_join: true - -install: - - curl -L https://raw.githubusercontent.com/sionescu/cl-travis/master/install.sh | sh - - cl -e "(cl:in-package :cl-user) - (dolist (p '(:fiveam)) - (ql:quickload p :verbose t))" - -script: - - cl -e "(cl:in-package :cl-user) - (prin1 (lisp-implementation-type)) (terpri) (prin1 (lisp-implementation-version)) (terpri) - (ql:quickload :bordeaux-threads/test :verbose t) - (uiop:quit (if (some (lambda (x) (typep x '5am::test-failure)) - (5am:run :bordeaux-threads)) - 1 0))" diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/CONTRIBUTORS b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/CONTRIBUTORS deleted file mode 100644 index 5b63524..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/CONTRIBUTORS +++ /dev/null @@ -1,19 +0,0 @@ --*- outline -*- - -Based on original Bordeaux-MP spec by Dan Barlow - -Contributors: - -* Attila Lendvai - - better handling of unsupported Lisps -* Vladimir Sekissov - - fixes for CMUCL implementation -* Pierre Thierry - - added license information -* Stelian Ionescu - - finished conversion from generic functions - - enabled running thread-safe code in unthreaded lisps -* Douglas Crosher - - added Scieneer Common Lisp support -* Daniel KochmaÅ„ski - - semaphores implementation diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/LICENSE b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/LICENSE deleted file mode 100644 index 3ce400f..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/README b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/README deleted file mode 100644 index 1531578..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/README +++ /dev/null @@ -1,2 +0,0 @@ -You can find API documentation on the project's wiki: - http://trac.common-lisp.net/bordeaux-threads/wiki/ApiDocumentation diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/bordeaux-threads.asd b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/bordeaux-threads.asd deleted file mode 100644 index b08b077..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/bordeaux-threads.asd +++ /dev/null @@ -1,77 +0,0 @@ -;;;; -*- Mode: LISP; Syntax: ANSI-Common-lisp; Base: 10; Package: ASDF -*- -;;;; The above modeline is required for Genera. Do not change. - -#| -Copyright 2006,2007 Greg Pfeil - -Distributed under the MIT license (see LICENSE file) -|# - -#.(unless (or #+asdf3.1 (version<= "3.1" (asdf-version))) - (error "You need ASDF >= 3.1 to load this system correctly.")) - -(eval-when (:compile-toplevel :load-toplevel :execute) - #+(or armedbear - (and allegro multiprocessing) - (and clasp threads) - (and clisp mt) - (and openmcl openmcl-native-threads) - (and cmu mp) - corman - (and ecl threads) - genera - mezzano - mkcl - lispworks - (and digitool ccl-5.1) - (and sbcl sb-thread) - scl) - (pushnew :thread-support *features*)) - -(defsystem :bordeaux-threads - :author "Greg Pfeil " - :licence "MIT" - :description "Bordeaux Threads makes writing portable multi-threaded apps simple." - :version (:read-file-form "version.sexp") - :depends-on (:alexandria - #+(and allegro (version>= 9)) (:require "smputil") - #+(and allegro (not (version>= 9))) (:require "process") - #+corman (:require "threads")) - :components ((:static-file "version.sexp") - (:module "src" - :serial t - :components - ((:file "pkgdcl") - (:file "bordeaux-threads") - (:file #+(and thread-support armedbear) "impl-abcl" - #+(and thread-support allegro) "impl-allegro" - #+(and thread-support clasp) "impl-clasp" - #+(and thread-support clisp) "impl-clisp" - #+(and thread-support openmcl) "impl-clozure" - #+(and thread-support cmu) "impl-cmucl" - #+(and thread-support corman) "impl-corman" - #+(and thread-support ecl) "impl-ecl" - #+(and thread-support genera) "impl-genera" - #+(and thread-support mezzano) "impl-mezzano" - #+(and thread-support mkcl) "impl-mkcl" - #+(and thread-support lispworks) "impl-lispworks" - #+(and thread-support digitool) "impl-mcl" - #+(and thread-support sbcl) "impl-sbcl" - #+(and thread-support scl) "impl-scl" - #-thread-support "impl-null") - #+(and thread-support lispworks (or lispworks4 lispworks5)) - (:file "impl-lispworks-condition-variables") - #+(and thread-support digitool) - (:file "condition-variables") - (:file "default-implementations")))) - :in-order-to ((test-op (test-op :bordeaux-threads/test)))) - -(defsystem :bordeaux-threads/test - :author "Greg Pfeil " - :description "Bordeaux Threads test suite." - :licence "MIT" - :version (:read-file-form "version.sexp") - :depends-on (:bordeaux-threads :fiveam) - :components ((:module "test" - :components ((:file "bordeaux-threads-test")))) - :perform (test-op (o c) (symbol-call :5am :run! :bordeaux-threads))) diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/.editorconfig b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/.editorconfig deleted file mode 100644 index eb59675..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/.editorconfig +++ /dev/null @@ -1,26 +0,0 @@ -# This file is for unifying the coding style for different editors and IDEs -# editorconfig.org - -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true -indent_style = tab -indent_size = 2 - -[{*.html,*.js}] -indent_style = space - -[{package.json,*.yml}] -indent_style = space -indent_size = 2 - -[{composer.json,*.toml}] -indent_style = space -indent_size = 4 - -[*.md] -trim_trailing_whitespace = false diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/.gitignore b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/.gitignore deleted file mode 100644 index 9daa824..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -node_modules diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/LICENSE.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/LICENSE.md deleted file mode 100644 index 670ad2b..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/LICENSE.md +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2017- Thingsym - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/README.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/README.md deleted file mode 100644 index d22fb32..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/README.md +++ /dev/null @@ -1,304 +0,0 @@ -# Hugo Theme Techdoc - -The Techdoc is a Hugo Theme for technical documentation. - -![The Techdoc screenshot](https://raw.githubusercontent.com/thingsym/hugo-theme-techdoc/master/images/screenshot.png) - -## Features - -* Modern, Simple layout -* Responsive web design -* Documentation menu (Select Menu style) -* Table Of Contents for the page (selective) -* Theme color -* Edit link to documentation repository -* Custom Shortcodes -* Search Shortcode powered by [Algolia](https://www.algolia.com/) -* Open Graph -* Analytics with Google Analytics, Google Tag Manager - -## Screenshot - -### Theme color - -![Theme color](https://raw.githubusercontent.com/thingsym/hugo-theme-techdoc/master/images/screenshot-theme-color.png) - -### Menu style - -#### Open Menu - -![Open Menu](https://raw.githubusercontent.com/thingsym/hugo-theme-techdoc/master/images/screenshot-open-menu.png) - -#### Slide Menu - -![Slide Menu](https://raw.githubusercontent.com/thingsym/hugo-theme-techdoc/master/images/screenshot-slide-menu.gif) - -### Edit link - -![Edit link](https://raw.githubusercontent.com/thingsym/hugo-theme-techdoc/master/images/screenshot-edit-link.png) - -## Getting Started - -### Requirement - -Hugo minimum version: 0.60.0 - -Default Markdown parser library `Goldmark` compatible - -### Download Hugo theme - -If you have git installed, you can do the following at the command-line-interface within the Hugo directory: - -``` -cd themes -git clone https://github.com/thingsym/hugo-theme-techdoc.git -``` - -For more information read [the Hugo documentation](https://gohugo.io/themes/installing-and-using-themes/). - -### Configure - -You may specify options in config.toml (or config.yaml/config.json) of your site to make use of this theme's features. - -For an example of `config.toml`, [config.toml](https://github.com/thingsym/hugo-theme-techdoc/blob/master/exampleSite/config.toml) in exampleSite. - -### Directory layout - -``` -tree . - -. -├── archetypes -│   └── default.md -├── exampleSite -│   └── .. -├── gulpfile.js -├── images -│   └── .. -├── layouts -│   ├── 404.html -│   ├── blog -│   │   ├── li.html -│   │   ├── list.html -│   │   ├── single.html -│   │   └── summary.html -│   ├── _default -│   │   ├── baseof.html -│   │   ├── list.algolia.json -│   │   ├── list.html -│   │   └── single.html -│   ├── index.html -│   ├── partials -│   │   ├── content-footer.html -│   │   ├── custom-css.html -│   │   ├── custom-head.html -│   │   ├── edit-meta.html -│   │   ├── edit-page.html -│   │   ├── footer.html -│   │   ├── global-menu.html -│   │   ├── head.html -│   │   ├── last-updated.html -│   │   ├── menu -│   │   │   ├── open-menu.html -│   │   │   └── slide-menu.html -│   │   ├── meta -│   │   │   ├── chroma.html -│   │   │   ├── google-analytics-async.html -│   │   │   ├── google-site-verification.html -│   │   │   └── tag-manager.html -│   │   ├── notification.html -│   │   ├── pagination.html -│   │   ├── powered.html -│   │   ├── prepend-body.html -│   │   ├── search.html -│   │   ├── sidebar-footer.html -│   │   ├── sidebar.html -│   │   ├── site-header.html -│   │   └── table-of-contents.html -│   ├── posts -│   │   ├── list.html -│   │   └── single.html -│   └── shortcodes -│       ├── button.html -│       └── panel.html -│       └── search.html -├── LICENSE.md -├── package.json -├── package-lock.json -├── README.md -├── resources -├── src -│   ├── js -│   │   ├── jquery.backtothetop -│   │   │   ├── jquery.backtothetop.js -│   │   │   └── jquery.backtothetop.min.js -│   │   ├── keydown-nav.js -│   │   ├── main.js -│   │   └── sidebar-menu.js -│   └── scss -│   ├── chroma.scss -│   ├── _component.scss -│   ├── foundation -│   │   ├── _element.scss -│   │   ├── _normalize.scss -│   │   ├── _reset.scss -│   │   └── _stack.scss -│   ├── _foundation.scss -│   ├── function -│   │   ├── _calc-font-size.scss -│   │   ├── _calc-stack.scss -│   │   ├── _contrast-color.scss -│   │   └── _strip-unit.scss -│   ├── _function.scss -│   ├── _project.scss -│   ├── _structure.scss -│   ├── theme.scss -│   └── _variable.scss -├── static -│   ├── css -│   │   ├── chroma.css -│   │   ├── chroma.min.css -│   │   ├── theme.css -│   │   └── theme.min.css -│   ├── images -│   └── js -│   └── bundle.js -├── theme.toml -└── webpack.config.js -``` - -### Preview site - -To preview your site, run Hugo's built-in local server. - -``` -hugo server -t hugo-theme-techdoc -``` - -Browse site on http://localhost:1313 - -## Deploy Site to public_html directory - -``` -hugo -t hugo-theme-techdoc -d public_html -``` - -## Development environment - -``` -cd /path/to/hugo-theme-techdoc -npm install -npm run gulp:watch -``` - -### Preview exampleSite - -``` -cd /path/to/dir/themes/hugo-theme-techdoc/exampleSite - -hugo server --themesDir ../.. -``` - -Browse site on http://localhost:1313 - -## Contribution - -### Patches and Bug Fixes - -Small patches and bug reports can be submitted a issue tracker in Github. Forking on Github is another good way. You can send a pull request. - -1. Fork [Hugo Theme Techdoc](https://github.com/thingsym/hugo-theme-techdoc) from GitHub repository -2. Create a feature branch: git checkout -b my-new-feature -3. Commit your changes: git commit -am 'Add some feature' -4. Push to the branch: git push origin my-new-feature -5. Create new Pull Request - -## Changelog - -* Version 0.9.2 - 2020.06.14 - * add note and sample to document - * fix tableOfContents endLevel - * add chapter 'unlimited levels' to document - * add menu indentation up to 5 levels - -* Version 0.9.1 - 2020.05.24 - * fix config.toml - * fix url in rss meta link - * remove line break in algolia.json - -* Version 0.9.0 - 2020.04.01 - * fix lint config - * update Sample Document - * update jQuery to v3.4.1 - * add search function and shortcode powered by Algolia - * fix config.toml - * fix sass - * fix hugo deprecated warning -* Version 0.8.3 - 2020.03.19 - * fix edit page link -* Version 0.8.2 - 2020.03.07 - * fix open graph image path -* Version 0.8.1 - 2020.03.07 - * fix open graph image path -* Version 0.8.0 - 2020.02.27 - * update Sample Document - * config.toml - * add open graph image to exampleSite - * add safeCSS for ZgotmplZ with generated by Hugo Template -* Version 0.7.0 - 2020.02.07 - * bump up Hugo minimum version to 0.60.0 - * change shortcode delimiter from % to < - * improve tableOfContents for Goldmark -* Version 0.6.0 - 2020.01.13 - * fix scss - * gulp bump up version to 4.0 - * fix hugo deprecated warning -* Version 0.5.0 - 2019.12.08 - * update Sample Document - * add table of contents - * add open graph - * add function and stack scss -* Version 0.4.0 - 2019.11.02 - * update Sample Document - * add Theme color - * add Menu style - * improve scss -* Version 0.3.0 - 2019.10.06 - * fix archetypes - * add prepend-body.html for Tag Manager noscript version - * change class name from menu to global-menu - * rename partials files - * fix javascript path for webpack - * improve development environment - * move javascript files to src directory -* Version 0.2.2 - 2019.04.27 - * fix Lastmod's and PublishDate's initial value of 0001-01-01 -* Version 0.2.1 - 2018.12.07 - * fix scss lint errors - * change lint from scss-lint to stylelint - * add published date - * change the font color of powered by - * fix link on powered by -* Version 0.2.0 - 2018.11.21 - * add screenshot images - * add exampleSite - * fix sub-menu for responsive - * improve menu and pagination -* Version 0.1.0 - 2018.03.04 - * initial release - -## License - -Techdoc is licensed under the MIT License. - -Techdoc bundles the following third-party resources: - -* CSS reset by [normalize.css](https://necolas.github.io/normalize.css/), [MIT](https://opensource.org/licenses/MIT) -* jQuery Plugin [Back to the Top](https://github.com/thingsym/jquery.backtothetop), [MIT](https://opensource.org/licenses/MIT) -* Sass Mixin [Flexbox Grid Mixins](https://thingsym.github.io/flexbox-grid-mixins/), [MIT](https://opensource.org/licenses/MIT) - -## Author - -[thingsym](https://github.com/thingsym) - -Copyright (c) 2017-2020 by thingsym diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/archetypes/default.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/archetypes/default.md deleted file mode 100644 index 3cdf4c2..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/archetypes/default.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "{{ replace .TranslationBaseName "-" " " | title }}" -date: {{ .Date }} -lastmod: {{ .Date }} -publishdate: {{ .Date }} -description: "" -weight: 10 ---- - -Lorem Ipsum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/config.toml b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/config.toml deleted file mode 100644 index 7663f98..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/config.toml +++ /dev/null @@ -1,118 +0,0 @@ -baseURL = "https://example.com" - -languageCode = "en-us" -DefaultContentLanguage = "en" -title = "Hugo Techdoc Theme" -theme = "hugo-theme-techdoc" - -hasCJKLanguage = true -metaDataFormat = "yaml" - -defaultContentLanguage = "en" -defaultContentLanguageInSubdir= false -enableMissingTranslationPlaceholders = false - -[params] - - # Source Code repository section - description = "put your description" - github_repository = "https://github.com/thingsym/hugo-theme-techdoc" - version = "0.9.2" - - # Documentation repository section - # documentation repository (set edit link to documentation repository) - github_doc_repository = "https://github.com/thingsym/hugo-theme-techdoc" - - # Analytic section - google_analytics_id = "" # Your Google Analytics tracking id - tag_manager_container_id = "" # Your Google Tag Manager container id - google_site_verification = "" # Your Google Site Verification for Search Console - - # Open Graph and Twitter Cards settings section - # Open Graph settings for each page are set on the front matter. - # See https://gohugo.io/templates/internal/#open-graph - # See https://gohugo.io/templates/internal/#twitter-cards - title = "Hugo Techdoc Theme" - images = ["images/og-image.png"] # Open graph images are placed in `static/images` - - # Theme settings section - # Theme color - # See color value reference https://developer.mozilla.org/en-US/docs/Web/CSS/color - custom_font_color = "" - custom_background_color = "" - - # Documentation Menu section - # Menu style settings - menu_style = "open-menu" # "open-menu" or "slide-menu" - - # Date format - dateformat = "" # default "2 Jan 2006" - # See the format reference https://gohugo.io/functions/format/#hugo-date-and-time-templating-reference - - # path name excluded from documentation menu - menu_exclusion = [ - "archives", - "archive", - "blog", - "entry", - "post", - "posts", - ] - - # Algolia site search section - # See https://www.algolia.com/doc/ - algolia_search_enable = true - algolia_indexName = "hugo-demo-techdoc" - algolia_appId = "7W4SAN4PLK" - algolia_apiKey = "cbf12a63ff72d9c5dc0c10c195cf9128" # Search-Only API Key - -# Global menu section -# See https://gohugo.io/content-management/menus/ -[menu] - [[menu.main]] - name = "Home" - url = "/" - weight = 1 - - [[menu.main]] - name = "Twitter" - url = "https://twitter.com/thingsym" - weight = 2 - -# Markup configure section -# See https://gohugo.io/getting-started/configuration-markup/ -[markup] - defaultMarkdownHandler = "goldmark" - [markup.goldmark.renderer] - unsafe= true - [markup.tableOfContents] - startLevel = 2 - endLevel = 6 - ordered = false - -[outputs] - home = ["HTML", "RSS", "Algolia"] - -# Algolia Search configure section -[outputFormats.Algolia] - baseName = "algolia" - mediaType = "application/json" - isPlainText = true - notAlternative = true - -[params.algolia] - vars = [ - "title", - "summary", - "content", - "date", - "publishdate", - "description", - "permalink", - "keywords", - "lastmod", - ] - params = [ - "tags", - "categories", - ] diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/_index.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/_index.md deleted file mode 100644 index 66d7db2..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/_index.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -date: 2017-10-19T15:26:15Z -lastmod: 2019-10-26T15:26:15Z -publishdate: 2018-11-23T15:26:15Z - -title: Home title -description: Text about this post -images: -- images/pexels-photo-196666.jpeg ---- - -# Hugo Techdoc Theme - -## The Techdoc is a Hugo Theme for technical documentation. - -## Features - -* Modern, Simple layout -* Responsive web design -* Documentation menu (Select [Menu style](getting-started/screenshot/#menu-style)) -* [Table Of Contents](sample/table-of-contents/) for the page (selective) -* [Theme color](getting-started/screenshot/#theme-color) -* [Edit link](getting-started/screenshot/#edit-link) to documentation repository -* [Custom Shortcodes](sample/custom-shortcodes/) -* [Search Shortcode](sample/search-shortcode/) powered by [Algolia](https://www.algolia.com/) -* Open Graph -* Analytics with Google Analytics, Google Tag Manager diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/about.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/about.md deleted file mode 100644 index 29eb447..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/about.md +++ /dev/null @@ -1,17 +0,0 @@ -+++ -title = "About Hugo" -date = "2014-04-09" -menu = "main" -+++ - -Hugo is a static site engine written in Go. - - -It makes use of a variety of open source projects including: - -* [Cobra](https://github.com/spf13/cobra) -* [Viper](https://github.com/spf13/viper) -* [J Walter Weatherman](https://github.com/spf13/jWalterWeatherman) -* [Cast](https://github.com/spf13/cast) - -Learn more and contribute on [GitHub](https://github.com/gohugoio). diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/archives/hello_world.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/archives/hello_world.md deleted file mode 100644 index 2573935..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/archives/hello_world.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Hello_world" -date: 2017-10-17T14:00:45Z -draft: false ---- - -aaaaaa - -vvvv - -aaa diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/archives/hello_world1.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/archives/hello_world1.md deleted file mode 100644 index 966465d..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/archives/hello_world1.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Hello_world1" -date: 2017-11-17T14:00:45Z -draft: false ---- - -aaaaaa - -vvvv - -aaa diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/archives/hello_world2.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/archives/hello_world2.md deleted file mode 100644 index 3e70954..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/archives/hello_world2.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Hello_world2" -date: 2017-12-17T14:00:45Z -draft: false ---- - -aaaaaa - -vvvv - -aaa diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/blog/hello_world.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/blog/hello_world.md deleted file mode 100644 index 2573935..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/blog/hello_world.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Hello_world" -date: 2017-10-17T14:00:45Z -draft: false ---- - -aaaaaa - -vvvv - -aaa diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/blog/hello_world1.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/blog/hello_world1.md deleted file mode 100644 index 966465d..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/blog/hello_world1.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Hello_world1" -date: 2017-11-17T14:00:45Z -draft: false ---- - -aaaaaa - -vvvv - -aaa diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/blog/hello_world2.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/blog/hello_world2.md deleted file mode 100644 index 3e70954..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/blog/hello_world2.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Hello_world2" -date: 2017-12-17T14:00:45Z -draft: false ---- - -aaaaaa - -vvvv - -aaa diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter1/1.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter1/1.md deleted file mode 100644 index 98b220d..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter1/1.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 1-1" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter1/2.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter1/2.md deleted file mode 100644 index 7f985e9..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter1/2.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 1-2" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter1/3.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter1/3.md deleted file mode 100644 index db5fd13..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter1/3.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 1-3" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter1/4.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter1/4.md deleted file mode 100644 index 6c5f6c2..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter1/4.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 1-4" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter1/_index.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter1/_index.md deleted file mode 100644 index 25af9aa..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter1/_index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Chapter 1" -date: 2017-10-17T15:26:15Z -draft: false -weight: 20 ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/1.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/1.md deleted file mode 100644 index afef814..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/1.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Chapter 2-1 (weight: 40)" -date: 2017-10-17T15:26:15Z -draft: false -weight: 40 ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/2.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/2.md deleted file mode 100644 index 5f87f11..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/2.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Chapter 2-2 (weight: 30)" -date: 2017-10-17T15:26:15Z -draft: false -weight: 30 ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/3.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/3.md deleted file mode 100644 index 55edc89..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/3.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Chapter 2-3 (weight: 10)" -date: 2017-10-17T15:26:15Z -draft: false -weight: 10 ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/4.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/4.md deleted file mode 100644 index da553d1..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/4.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Chapter 2-4 (weight: 20)" -date: 2017-10-17T15:26:15Z -draft: false -weight: 20 ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/5.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/5.md deleted file mode 100644 index ed3c580..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/5.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 2-0 (weight: no set)" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/_index.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/_index.md deleted file mode 100644 index dd8e1bb..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter2/_index.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: "Chapter 2 (weighted)" -date: 2017-10-17T15:26:15Z -draft: false -weight: 30 ---- - -{{% panel status="primary" title="Note" icon="far fa-lightbulb" %}} -The `weight` field with weight number in your content’s front matter will render a weighted menu. - -``` -weight: 30 -``` - -Lower weight gets higher precedence. So content with lower weight will come first. - -{{% /panel %}} - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/1.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/1.md deleted file mode 100644 index 8a5f789..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/1.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 3-1" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/3.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/3.md deleted file mode 100644 index f10e69a..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/3.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 3-3" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/4.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/4.md deleted file mode 100644 index f1dd8b4..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/4.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 3-4" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/_index.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/_index.md deleted file mode 100644 index 4784e19..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/_index.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Chapter 3 (hierarchized)" -date: 2017-10-17T15:26:15Z -draft: false -weight: 40 ---- - -{{% panel status="primary" title="Note" icon="far fa-lightbulb" %}} -The document hierarchy is unlimite. -{{% /panel %}} - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/chapter3-2/1.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/chapter3-2/1.md deleted file mode 100644 index 6eac1f4..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/chapter3-2/1.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 3-2-1" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/chapter3-2/2.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/chapter3-2/2.md deleted file mode 100644 index 1f545f3..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/chapter3-2/2.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 3-2-2" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/chapter3-2/3.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/chapter3-2/3.md deleted file mode 100644 index 0778a40..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/chapter3-2/3.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 3-2-3" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/chapter3-2/4.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/chapter3-2/4.md deleted file mode 100644 index dc56631..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/chapter3-2/4.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 3-2-4" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/chapter3-2/_index.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/chapter3-2/_index.md deleted file mode 100644 index a76715c..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter3/chapter3-2/_index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 3-2" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/_index.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/_index.md deleted file mode 100644 index 02c755b..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/_index.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: "Chapter 4 (unlimited levels)" -date: 2017-10-17T15:26:15Z -draft: false -weight: 50 ---- - -{{% panel status="primary" title="Note" icon="far fa-lightbulb" %}} -The document hierarchy is unlimite. -It also means that the menu levels is unlimited levels. - -The menu levels has up to 5 levels of indentation. After that there is no indentation. -{{% /panel %}} - - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/_index.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/_index.md deleted file mode 100644 index a3f1350..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/_index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 4-1" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/chapter4-1-1/_index.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/chapter4-1-1/_index.md deleted file mode 100644 index a485e3c..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/chapter4-1-1/_index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 4-1-1" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/chapter4-1-1/chapter4-1-1-1/_index.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/chapter4-1-1/chapter4-1-1-1/_index.md deleted file mode 100644 index 0b65108..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/chapter4-1-1/chapter4-1-1-1/_index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 4-1-1-1" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/chapter4-1-1/chapter4-1-1-1/chapter4-1-1-1-1/_index.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/chapter4-1-1/chapter4-1-1-1/chapter4-1-1-1-1/_index.md deleted file mode 100644 index 2a555cd..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/chapter4-1-1/chapter4-1-1-1/chapter4-1-1-1-1/_index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 4-1-1-1-1" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/chapter4-1-1/chapter4-1-1-1/chapter4-1-1-1-1/chapter4-1-1-1-1-1/_index.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/chapter4-1-1/chapter4-1-1-1/chapter4-1-1-1-1/chapter4-1-1-1-1-1/_index.md deleted file mode 100644 index c9eaaa6..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/chapter4-1-1/chapter4-1-1-1/chapter4-1-1-1-1/chapter4-1-1-1-1-1/_index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 4-1-1-1-1-1" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/chapter4-1-1/chapter4-1-1-1/chapter4-1-1-1-1/chapter4-1-1-1-1-1/chapter4-1-1-1-1-1-1/_index.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/chapter4-1-1/chapter4-1-1-1/chapter4-1-1-1-1/chapter4-1-1-1-1-1/chapter4-1-1-1-1-1-1/_index.md deleted file mode 100644 index 381976b..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/chapter4/chapter4-1/chapter4-1-1/chapter4-1-1-1/chapter4-1-1-1-1/chapter4-1-1-1-1-1/chapter4-1-1-1-1-1-1/_index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Chapter 4-1-1-1-1-1-1" -date: 2017-10-17T15:26:15Z -draft: false ---- - -Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/entry/hello_world.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/entry/hello_world.md deleted file mode 100644 index 2573935..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/entry/hello_world.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Hello_world" -date: 2017-10-17T14:00:45Z -draft: false ---- - -aaaaaa - -vvvv - -aaa diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/entry/hello_world1.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/entry/hello_world1.md deleted file mode 100644 index 966465d..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/entry/hello_world1.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Hello_world1" -date: 2017-11-17T14:00:45Z -draft: false ---- - -aaaaaa - -vvvv - -aaa diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/entry/hello_world2.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/entry/hello_world2.md deleted file mode 100644 index 3e70954..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/entry/hello_world2.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Hello_world2" -date: 2017-12-17T14:00:45Z -draft: false ---- - -aaaaaa - -vvvv - -aaa diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/getting-started/_index.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/getting-started/_index.md deleted file mode 100644 index 9bb7e22..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/getting-started/_index.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Getting Started" -date: 2017-10-17T15:26:15Z -lastmod: 2018-12-08T15:26:15Z -publishdate: 2018-11-23T15:26:15Z -draft: false -weight: 9 - -description: Text about this post -images: -- images/pexels-photo-196666.jpeg ---- - -## [Installation](./installation) - -Download Hugo theme, configure, preview site ... - -## [Configuration](./configuration) - -You may specify options in config.toml (or config.yaml/config.json) of your site to make use of this theme's features. - -## [Screenshot](./screenshot) diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/getting-started/configuration.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/getting-started/configuration.md deleted file mode 100644 index 7bcef66..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/getting-started/configuration.md +++ /dev/null @@ -1,195 +0,0 @@ ---- -title: "Configuration" -date: 2017-10-17T15:26:15Z -lastmod: 2019-10-26T15:26:15Z -draft: false -weight: 20 ---- - -You may specify options in config.toml (or config.yaml/config.json) of your site to make use of this theme’s features. - -For an example of `config.toml`, see [config.toml](https://github.com/thingsym/hugo-theme-techdoc/blob/master/exampleSite/config.toml) in exampleSite. - -## Params - - # Source Code repository section - description = "put your description" - github_repository = "https://github.com/thingsym/hugo-theme-techdoc" - version = "0.9.2" - - # Documentation repository section - # documentation repository (set edit link to documentation repository) - github_doc_repository = "https://github.com/thingsym/hugo-theme-techdoc" - - # Analytic section - google_analytics_id = "" # Your Google Analytics tracking id - tag_manager_container_id = "" # Your Google Tag Manager container id - google_site_verification = "" # Your Google Site Verification for Search Console - - # Open Graph and Twitter Cards settings section - # Open Graph settings for each page are set on the front matter. - # See https://gohugo.io/templates/internal/#open-graph - # See https://gohugo.io/templates/internal/#twitter-cards - title = "Hugo Techdoc Theme" - images = ["images/og-image.png"] # Open graph images are placed in `static/images` - - # Theme settings section - # Theme color - # See color value reference https://developer.mozilla.org/en-US/docs/Web/CSS/color - custom_font_color = "" - custom_background_color = "" - - # Documentation Menu section - # Menu style settings - menu_style = "open-menu" # "open-menu" or "slide-menu" - - # Date format - dateformat = "" # default "2 Jan 2006" - # See the format reference https://gohugo.io/functions/format/#hugo-date-and-time-templating-reference - - # path name excluded from documentation menu - menu_exclusion = [ - "archives", - "archive", - "blog", - "entry", - "post", - "posts", - ] - - # Algolia site search section - # See https://www.algolia.com/doc/ - algolia_search_enable = true - algolia_indexName = "hugo-demo-techdoc" - algolia_appId = "7W4SAN4PLK" - algolia_apiKey = "cbf12a63ff72d9c5dc0c10c195cf9128" # Search-Only API Key - -#### `description` - -The document summary - -default: `put your description` - -#### `github_repository` - -URL of souce code repository - -default: `https://github.com/thingsym/hugo-theme-techdoc` - -#### `version` - -The version of souce code - -default: `0.9.2` - -#### `github_doc_repository` - -URL of documentation repository for editting - -default: `https://github.com/thingsym/hugo-theme-techdoc` - -#### `google_analytics_id` - -ID of Google Analytics - -default: `""` - -#### `tag_manager_container_id` - -Container ID of Google Tag Manager - -default: `""` - -#### `google_site_verification` - -Content value in meta tag `google-site-verification` for Google Search Console - -``` - -``` - -default: `""` - -#### `title` - -default open graph title for open graph - -default: `"Hugo Techdoc Theme"` - -#### `images` - -default open graph image for open graph - -Open graph images are placed in `static/images`. - -default: `["images/og-image.png"]` - -#### `custom_font_color` - -Header font color - -See color value reference https://developer.mozilla.org/en-US/docs/Web/CSS/color - - -default: `""` - -#### `custom_background_color` - -Header background color - -See color value reference https://developer.mozilla.org/en-US/docs/Web/CSS/color - -default: `""` - -#### `menu_style` - -Documentation Menu style, Open Menu or Slide Menu - -default: `open-menu` -value: `open-menu` | `slide-menu` - -#### `dateformat` - -default: `""` as `2 Jan 2006` - -#### `menu_exclusion` - -Path name excluded from documentation menu - -By default, we exclude commonly used folder names in blogs. - -default: `[ - "archives", - "archive", - "blog", - "entry", - "post", - "posts" - ]` - - -#### `algolia_search_enable` - -Enable Algolia search - -default: `true` - -value: `true` | `false` - -#### `algolia_indexName` - -Algolia index name - -default: `hugo-demo-techdoc` - -#### `algolia_appId` - -Application id - -default: `7W4SAN4PLK` - -#### `algolia_apiKey` - -Search-Only API Key - -default: `cbf12a63ff72d9c5dc0c10c195cf9128` diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/getting-started/installation.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/getting-started/installation.md deleted file mode 100644 index 89c75dd..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/getting-started/installation.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: "Installation" -date: 2017-10-17T15:26:15Z -draft: false -weight: 10 ---- - -## Download Hugo theme - -If you have git installed, you can do the following at the command-line-interface within the Hugo directory: - -``` -cd themes -git clone https://github.com/thingsym/hugo-theme-techdoc.git -``` - -For more information read [the Hugo documentation](https://gohugo.io/themes/installing-and-using-themes/). - -## Configure - -You may specify options in config.toml (or config.yaml/config.json) of your site to make use of this theme's features. - -For an example of `config.toml`, see [config.toml](https://github.com/thingsym/hugo-theme-techdoc/blob/master/exampleSite/config.toml) in exampleSite. - -See [the Configuration documentation](../configuration/). - -## Preview site - -To preview your site, run Hugo's built-in local server. - -``` -hugo server -t hugo-theme-techdoc -``` - -Browse site on http://localhost:1313 diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/getting-started/screenshot.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/getting-started/screenshot.md deleted file mode 100644 index b3be413..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/getting-started/screenshot.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Screenshot" -date: 2019-10-26T15:26:15Z -draft: false -weight: 30 ---- - -### Theme color - -![Theme color](https://raw.githubusercontent.com/thingsym/hugo-theme-techdoc/master/images/screenshot-theme-color.png) - -### Menu style - -#### Open Menu - -![Open Menu](https://raw.githubusercontent.com/thingsym/hugo-theme-techdoc/master/images/screenshot-open-menu.png) - -#### Slide Menu - -![Slide Menu](https://raw.githubusercontent.com/thingsym/hugo-theme-techdoc/master/images/screenshot-slide-menu.gif) - -### Edit link - -![Edit link](https://raw.githubusercontent.com/thingsym/hugo-theme-techdoc/master/images/screenshot-edit-link.png) diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/hello_world.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/hello_world.md deleted file mode 100644 index 021823d..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/hello_world.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Hello world!" -date: 2017-10-17T14:00:45Z -draft: false -weight: 11 ---- - -Hello world! diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/post/creating-a-new-theme.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/post/creating-a-new-theme.md deleted file mode 100644 index 9d6d2f7..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/post/creating-a-new-theme.md +++ /dev/null @@ -1,1150 +0,0 @@ ---- -author: "Michael Henderson" -date: 2014-09-28 -linktitle: Creating a New Theme -menu: - main: - parent: Tutorials -next: /tutorials/github-pages-blog -prev: /tutorials/automated-deployments -title: Creating a New Theme -weight: 10 ---- - - -## Introduction - -This tutorial will show you how to create a simple theme in Hugo. I assume that you are familiar with HTML, the bash command line, and that you are comfortable using Markdown to format content. I'll explain how Hugo uses templates and how you can organize your templates to create a theme. I won't cover using CSS to style your theme. - -We'll start with creating a new site with a very basic template. Then we'll add in a few pages and posts. With small variations on that, you will be able to create many different types of web sites. - -In this tutorial, commands that you enter will start with the "$" prompt. The output will follow. Lines that start with "#" are comments that I've added to explain a point. When I show updates to a file, the ":wq" on the last line means to save the file. - -Here's an example: - -``` -## this is a comment -$ echo this is a command -this is a command - -## edit the file -$ vi foo.md -+++ -date = "2014-09-28" -title = "creating a new theme" -+++ - -bah and humbug -:wq - -## show it -$ cat foo.md -+++ -date = "2014-09-28" -title = "creating a new theme" -+++ - -bah and humbug -$ -``` - - -## Some Definitions - -There are a few concepts that you need to understand before creating a theme. - -### Skins - -Skins are the files responsible for the look and feel of your site. It’s the CSS that controls colors and fonts, it’s the Javascript that determines actions and reactions. It’s also the rules that Hugo uses to transform your content into the HTML that the site will serve to visitors. - -You have two ways to create a skin. The simplest way is to create it in the ```layouts/``` directory. If you do, then you don’t have to worry about configuring Hugo to recognize it. The first place that Hugo will look for rules and files is in the ```layouts/``` directory so it will always find the skin. - -Your second choice is to create it in a sub-directory of the ```themes/``` directory. If you do, then you must always tell Hugo where to search for the skin. It’s extra work, though, so why bother with it? - -The difference between creating a skin in ```layouts/``` and creating it in ```themes/``` is very subtle. A skin in ```layouts/``` can’t be customized without updating the templates and static files that it is built from. A skin created in ```themes/```, on the other hand, can be and that makes it easier for other people to use it. - -The rest of this tutorial will call a skin created in the ```themes/``` directory a theme. - -Note that you can use this tutorial to create a skin in the ```layouts/``` directory if you wish to. The main difference will be that you won’t need to update the site’s configuration file to use a theme. - -### The Home Page - -The home page, or landing page, is the first page that many visitors to a site see. It is the index.html file in the root directory of the web site. Since Hugo writes files to the public/ directory, our home page is public/index.html. - -### Site Configuration File - -When Hugo runs, it looks for a configuration file that contains settings that override default values for the entire site. The file can use TOML, YAML, or JSON. I prefer to use TOML for my configuration files. If you prefer to use JSON or YAML, you’ll need to translate my examples. You’ll also need to change the name of the file since Hugo uses the extension to determine how to process it. - -Hugo translates Markdown files into HTML. By default, Hugo expects to find Markdown files in your ```content/``` directory and template files in your ```themes/``` directory. It will create HTML files in your ```public/``` directory. You can change this by specifying alternate locations in the configuration file. - -### Content - -Content is stored in text files that contain two sections. The first section is the “front matter,†which is the meta-information on the content. The second section contains Markdown that will be converted to HTML. - -#### Front Matter - -The front matter is information about the content. Like the configuration file, it can be written in TOML, YAML, or JSON. Unlike the configuration file, Hugo doesn’t use the file’s extension to know the format. It looks for markers to signal the type. TOML is surrounded by “`+++`â€, YAML by “`---`â€, and JSON is enclosed in curly braces. I prefer to use TOML, so you’ll need to translate my examples if you prefer YAML or JSON. - -The information in the front matter is passed into the template before the content is rendered into HTML. - -#### Markdown - -Content is written in Markdown which makes it easier to create the content. Hugo runs the content through a Markdown engine to create the HTML which will be written to the output file. - -### Template Files - -Hugo uses template files to render content into HTML. Template files are a bridge between the content and presentation. Rules in the template define what content is published, where it's published to, and how it will rendered to the HTML file. The template guides the presentation by specifying the style to use. - -There are three types of templates: single, list, and partial. Each type takes a bit of content as input and transforms it based on the commands in the template. - -Hugo uses its knowledge of the content to find the template file used to render the content. If it can’t find a template that is an exact match for the content, it will shift up a level and search from there. It will continue to do so until it finds a matching template or runs out of templates to try. If it can’t find a template, it will use the default template for the site. - -Please note that you can use the front matter to influence Hugo’s choice of templates. - -#### Single Template - -A single template is used to render a single piece of content. For example, an article or post would be a single piece of content and use a single template. - -#### List Template - -A list template renders a group of related content. That could be a summary of recent postings or all articles in a category. List templates can contain multiple groups. - -The homepage template is a special type of list template. Hugo assumes that the home page of your site will act as the portal for the rest of the content in the site. - -#### Partial Template - -A partial template is a template that can be included in other templates. Partial templates must be called using the “partial†template command. They are very handy for rolling up common behavior. For example, your site may have a banner that all pages use. Instead of copying the text of the banner into every single and list template, you could create a partial with the banner in it. That way if you decide to change the banner, you only have to change the partial template. - -## Create a New Site - -Let's use Hugo to create a new web site. I'm a Mac user, so I'll create mine in my home directory, in the Sites folder. If you're using Linux, you might have to create the folder first. - -The "new site" command will create a skeleton of a site. It will give you the basic directory structure and a useable configuration file. - -``` -$ hugo new site ~/Sites/zafta -$ cd ~/Sites/zafta -$ ls -l -total 8 -drwxr-xr-x 7 quoha staff 238 Sep 29 16:49 . -drwxr-xr-x 3 quoha staff 102 Sep 29 16:49 .. -drwxr-xr-x 2 quoha staff 68 Sep 29 16:49 archetypes --rw-r--r-- 1 quoha staff 82 Sep 29 16:49 config.toml -drwxr-xr-x 2 quoha staff 68 Sep 29 16:49 content -drwxr-xr-x 2 quoha staff 68 Sep 29 16:49 layouts -drwxr-xr-x 2 quoha staff 68 Sep 29 16:49 static -$ -``` - -Take a look in the content/ directory to confirm that it is empty. - -The other directories (archetypes/, layouts/, and static/) are used when customizing a theme. That's a topic for a different tutorial, so please ignore them for now. - -### Generate the HTML For the New Site - -Running the `hugo` command with no options will read all the available content and generate the HTML files. It will also copy all static files (that's everything that's not content). Since we have an empty site, it won't do much, but it will do it very quickly. - -``` -$ hugo --verbose -INFO: 2014/09/29 Using config file: config.toml -INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/ -WARN: 2014/09/29 Unable to locate layout: [index.html _default/list.html _default/single.html] -WARN: 2014/09/29 Unable to locate layout: [404.html] -0 draft content -0 future content -0 pages created -0 tags created -0 categories created -in 2 ms -$ -``` - -The "`--verbose`" flag gives extra information that will be helpful when we build the template. Every line of the output that starts with "INFO:" or "WARN:" is present because we used that flag. The lines that start with "WARN:" are warning messages. We'll go over them later. - -We can verify that the command worked by looking at the directory again. - -``` -$ ls -l -total 8 -drwxr-xr-x 2 quoha staff 68 Sep 29 16:49 archetypes --rw-r--r-- 1 quoha staff 82 Sep 29 16:49 config.toml -drwxr-xr-x 2 quoha staff 68 Sep 29 16:49 content -drwxr-xr-x 2 quoha staff 68 Sep 29 16:49 layouts -drwxr-xr-x 4 quoha staff 136 Sep 29 17:02 public -drwxr-xr-x 2 quoha staff 68 Sep 29 16:49 static -$ -``` - -See that new public/ directory? Hugo placed all generated content there. When you're ready to publish your web site, that's the place to start. For now, though, let's just confirm that we have what we'd expect from a site with no content. - -``` -$ ls -l public -total 16 --rw-r--r-- 1 quoha staff 416 Sep 29 17:02 index.xml --rw-r--r-- 1 quoha staff 262 Sep 29 17:02 sitemap.xml -$ -``` - -Hugo created two XML files, which is standard, but there are no HTML files. - - - -### Test the New Site - -Verify that you can run the built-in web server. It will dramatically shorten your development cycle if you do. Start it by running the "server" command. If it is successful, you will see output similar to the following: - -``` -$ hugo server --verbose -INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml -INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/ -WARN: 2014/09/29 Unable to locate layout: [index.html _default/list.html _default/single.html] -WARN: 2014/09/29 Unable to locate layout: [404.html] -0 draft content -0 future content -0 pages created -0 tags created -0 categories created -in 2 ms -Serving pages from /Users/quoha/Sites/zafta/public -Web Server is available at http://localhost:1313 -Press Ctrl+C to stop -``` - -Connect to the listed URL (it's on the line that starts with "Web Server"). If everything is working correctly, you should get a page that shows the following: - -``` -index.xml -sitemap.xml -``` - -That's a listing of your public/ directory. Hugo didn't create a home page because our site has no content. When there's no index.html file in a directory, the server lists the files in the directory, which is what you should see in your browser. - -Let’s go back and look at those warnings again. - -``` -WARN: 2014/09/29 Unable to locate layout: [index.html _default/list.html _default/single.html] -WARN: 2014/09/29 Unable to locate layout: [404.html] -``` - -That second warning is easier to explain. We haven’t created a template to be used to generate “page not found errors.†The 404 message is a topic for a separate tutorial. - -Now for the first warning. It is for the home page. You can tell because the first layout that it looked for was “index.html.†That’s only used by the home page. - -I like that the verbose flag causes Hugo to list the files that it's searching for. For the home page, they are index.html, _default/list.html, and _default/single.html. There are some rules that we'll cover later that explain the names and paths. For now, just remember that Hugo couldn't find a template for the home page and it told you so. - -At this point, you've got a working installation and site that we can build upon. All that’s left is to add some content and a theme to display it. - -## Create a New Theme - -Hugo doesn't ship with a default theme. There are a few available (I counted a dozen when I first installed Hugo) and Hugo comes with a command to create new themes. - -We're going to create a new theme called "zafta." Since the goal of this tutorial is to show you how to fill out the files to pull in your content, the theme will not contain any CSS. In other words, ugly but functional. - -All themes have opinions on content and layout. For example, Zafta uses "post" over "blog". Strong opinions make for simpler templates but differing opinions make it tougher to use themes. When you build a theme, consider using the terms that other themes do. - - -### Create a Skeleton - -Use the hugo "new" command to create the skeleton of a theme. This creates the directory structure and places empty files for you to fill out. - -``` -$ hugo new theme zafta - -$ ls -l -total 8 -drwxr-xr-x 2 quoha staff 68 Sep 29 16:49 archetypes --rw-r--r-- 1 quoha staff 82 Sep 29 16:49 config.toml -drwxr-xr-x 2 quoha staff 68 Sep 29 16:49 content -drwxr-xr-x 2 quoha staff 68 Sep 29 16:49 layouts -drwxr-xr-x 4 quoha staff 136 Sep 29 17:02 public -drwxr-xr-x 2 quoha staff 68 Sep 29 16:49 static -drwxr-xr-x 3 quoha staff 102 Sep 29 17:31 themes - -$ find themes -type f | xargs ls -l --rw-r--r-- 1 quoha staff 1081 Sep 29 17:31 themes/zafta/LICENSE.md --rw-r--r-- 1 quoha staff 0 Sep 29 17:31 themes/zafta/archetypes/default.md --rw-r--r-- 1 quoha staff 0 Sep 29 17:31 themes/zafta/layouts/_default/list.html --rw-r--r-- 1 quoha staff 0 Sep 29 17:31 themes/zafta/layouts/_default/single.html --rw-r--r-- 1 quoha staff 0 Sep 29 17:31 themes/zafta/layouts/index.html --rw-r--r-- 1 quoha staff 0 Sep 29 17:31 themes/zafta/layouts/partials/footer.html --rw-r--r-- 1 quoha staff 0 Sep 29 17:31 themes/zafta/layouts/partials/header.html --rw-r--r-- 1 quoha staff 93 Sep 29 17:31 themes/zafta/theme.toml -$ -``` - -The skeleton includes templates (the files ending in .html), license file, a description of your theme (the theme.toml file), and an empty archetype. - -Please take a minute to fill out the theme.toml and LICENSE.md files. They're optional, but if you're going to be distributing your theme, it tells the world who to praise (or blame). It's also nice to declare the license so that people will know how they can use the theme. - -``` -$ vi themes/zafta/theme.toml -author = "michael d henderson" -description = "a minimal working template" -license = "MIT" -name = "zafta" -source_repo = "" -tags = ["tags", "categories"] -:wq - -## also edit themes/zafta/LICENSE.md and change -## the bit that says "YOUR_NAME_HERE" -``` - -Note that the the skeleton's template files are empty. Don't worry, we'll be changing that shortly. - -``` -$ find themes/zafta -name '*.html' | xargs ls -l --rw-r--r-- 1 quoha staff 0 Sep 29 17:31 themes/zafta/layouts/_default/list.html --rw-r--r-- 1 quoha staff 0 Sep 29 17:31 themes/zafta/layouts/_default/single.html --rw-r--r-- 1 quoha staff 0 Sep 29 17:31 themes/zafta/layouts/index.html --rw-r--r-- 1 quoha staff 0 Sep 29 17:31 themes/zafta/layouts/partials/footer.html --rw-r--r-- 1 quoha staff 0 Sep 29 17:31 themes/zafta/layouts/partials/header.html -$ -``` - - - -### Update the Configuration File to Use the Theme - -Now that we've got a theme to work with, it's a good idea to add the theme name to the configuration file. This is optional, because you can always add "-t zafta" on all your commands. I like to put it the configuration file because I like shorter command lines. If you don't put it in the configuration file or specify it on the command line, you won't use the template that you're expecting to. - -Edit the file to add the theme, add a title for the site, and specify that all of our content will use the TOML format. - -``` -$ vi config.toml -theme = "zafta" -baseurl = "" -languageCode = "en-us" -title = "zafta - totally refreshing" -MetaDataFormat = "toml" -:wq - -$ -``` - -### Generate the Site - -Now that we have an empty theme, let's generate the site again. - -``` -$ hugo --verbose -INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml -INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/themes/zafta/static/ to /Users/quoha/Sites/zafta/public/ -INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/ -WARN: 2014/09/29 Unable to locate layout: [404.html theme/404.html] -0 draft content -0 future content -0 pages created -0 tags created -0 categories created -in 2 ms -$ -``` - -Did you notice that the output is different? The warning message for the home page has disappeared and we have an additional information line saying that Hugo is syncing from the theme's directory. - -Let's check the public/ directory to see what Hugo's created. - -``` -$ ls -l public -total 16 -drwxr-xr-x 2 quoha staff 68 Sep 29 17:56 css --rw-r--r-- 1 quoha staff 0 Sep 29 17:56 index.html --rw-r--r-- 1 quoha staff 407 Sep 29 17:56 index.xml -drwxr-xr-x 2 quoha staff 68 Sep 29 17:56 js --rw-r--r-- 1 quoha staff 243 Sep 29 17:56 sitemap.xml -$ -``` - -Notice four things: - -1. Hugo created a home page. This is the file public/index.html. -2. Hugo created a css/ directory. -3. Hugo created a js/ directory. -4. Hugo claimed that it created 0 pages. It created a file and copied over static files, but didn't create any pages. That's because it considers a "page" to be a file created directly from a content file. It doesn't count things like the index.html files that it creates automatically. - -#### The Home Page - -Hugo supports many different types of templates. The home page is special because it gets its own type of template and its own template file. The file, layouts/index.html, is used to generate the HTML for the home page. The Hugo documentation says that this is the only required template, but that depends. Hugo's warning message shows that it looks for three different templates: - -``` -WARN: 2014/09/29 Unable to locate layout: [index.html _default/list.html _default/single.html] -``` - -If it can't find any of these, it completely skips creating the home page. We noticed that when we built the site without having a theme installed. - -When Hugo created our theme, it created an empty home page template. Now, when we build the site, Hugo finds the template and uses it to generate the HTML for the home page. Since the template file is empty, the HTML file is empty, too. If the template had any rules in it, then Hugo would have used them to generate the home page. - -``` -$ find . -name index.html | xargs ls -l --rw-r--r-- 1 quoha staff 0 Sep 29 20:21 ./public/index.html --rw-r--r-- 1 quoha staff 0 Sep 29 17:31 ./themes/zafta/layouts/index.html -$ -``` - -#### The Magic of Static - -Hugo does two things when generating the site. It uses templates to transform content into HTML and it copies static files into the site. Unlike content, static files are not transformed. They are copied exactly as they are. - -Hugo assumes that your site will use both CSS and JavaScript, so it creates directories in your theme to hold them. Remember opinions? Well, Hugo's opinion is that you'll store your CSS in a directory named css/ and your JavaScript in a directory named js/. If you don't like that, you can change the directory names in your theme directory or even delete them completely. Hugo's nice enough to offer its opinion, then behave nicely if you disagree. - -``` -$ find themes/zafta -type d | xargs ls -ld -drwxr-xr-x 7 quoha staff 238 Sep 29 17:38 themes/zafta -drwxr-xr-x 3 quoha staff 102 Sep 29 17:31 themes/zafta/archetypes -drwxr-xr-x 5 quoha staff 170 Sep 29 17:31 themes/zafta/layouts -drwxr-xr-x 4 quoha staff 136 Sep 29 17:31 themes/zafta/layouts/_default -drwxr-xr-x 4 quoha staff 136 Sep 29 17:31 themes/zafta/layouts/partials -drwxr-xr-x 4 quoha staff 136 Sep 29 17:31 themes/zafta/static -drwxr-xr-x 2 quoha staff 68 Sep 29 17:31 themes/zafta/static/css -drwxr-xr-x 2 quoha staff 68 Sep 29 17:31 themes/zafta/static/js -$ -``` - -## The Theme Development Cycle - -When you're working on a theme, you will make changes in the theme's directory, rebuild the site, and check your changes in the browser. Hugo makes this very easy: - -1. Purge the public/ directory. -2. Run the built in web server in watch mode. -3. Open your site in a browser. -4. Update the theme. -5. Glance at your browser window to see changes. -6. Return to step 4. - -I’ll throw in one more opinion: never work on a theme on a live site. Always work on a copy of your site. Make changes to your theme, test them, then copy them up to your site. For added safety, use a tool like Git to keep a revision history of your content and your theme. Believe me when I say that it is too easy to lose both your mind and your changes. - -Check the main Hugo site for information on using Git with Hugo. - -### Purge the public/ Directory - -When generating the site, Hugo will create new files and update existing ones in the ```public/``` directory. It will not delete files that are no longer used. For example, files that were created in the wrong directory or with the wrong title will remain. If you leave them, you might get confused by them later. I recommend cleaning out your site prior to generating it. - -Note: If you're building on an SSD, you should ignore this. Churning on a SSD can be costly. - -### Hugo's Watch Option - -Hugo's "`--watch`" option will monitor the content/ and your theme directories for changes and rebuild the site automatically. - -### Live Reload - -Hugo's built in web server supports live reload. As pages are saved on the server, the browser is told to refresh the page. Usually, this happens faster than you can say, "Wow, that's totally amazing." - -### Development Commands - -Use the following commands as the basis for your workflow. - -``` -## purge old files. hugo will recreate the public directory. -## -$ rm -rf public -## -## run hugo in watch mode -## -$ hugo server --watch --verbose -``` - -Here's sample output showing Hugo detecting a change to the template for the home page. Once generated, the web browser automatically reloaded the page. I've said this before, it's amazing. - - -``` -$ rm -rf public -$ hugo server --watch --verbose -INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml -INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/themes/zafta/static/ to /Users/quoha/Sites/zafta/public/ -INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/ -WARN: 2014/09/29 Unable to locate layout: [404.html theme/404.html] -0 draft content -0 future content -0 pages created -0 tags created -0 categories created -in 2 ms -Watching for changes in /Users/quoha/Sites/zafta/content -Serving pages from /Users/quoha/Sites/zafta/public -Web Server is available at http://localhost:1313 -Press Ctrl+C to stop -INFO: 2014/09/29 File System Event: ["/Users/quoha/Sites/zafta/themes/zafta/layouts/index.html": MODIFY|ATTRIB] -Change detected, rebuilding site - -WARN: 2014/09/29 Unable to locate layout: [404.html theme/404.html] -0 draft content -0 future content -0 pages created -0 tags created -0 categories created -in 1 ms -``` - -## Update the Home Page Template - -The home page is one of a few special pages that Hugo creates automatically. As mentioned earlier, it looks for one of three files in the theme's layout/ directory: - -1. index.html -2. _default/list.html -3. _default/single.html - -We could update one of the default templates, but a good design decision is to update the most specific template available. That's not a hard and fast rule (in fact, we'll break it a few times in this tutorial), but it is a good generalization. - -### Make a Static Home Page - -Right now, that page is empty because we don't have any content and we don't have any logic in the template. Let's change that by adding some text to the template. - -``` -$ vi themes/zafta/layouts/index.html - - - -

hugo says hello!

- - -:wq - -$ -``` - -Build the web site and then verify the results. - -``` -$ hugo --verbose -INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml -INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/themes/zafta/static/ to /Users/quoha/Sites/zafta/public/ -INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/ -WARN: 2014/09/29 Unable to locate layout: [404.html theme/404.html] -0 draft content -0 future content -0 pages created -0 tags created -0 categories created -in 2 ms - -$ find public -type f -name '*.html' | xargs ls -l --rw-r--r-- 1 quoha staff 78 Sep 29 21:26 public/index.html - -$ cat public/index.html - - - -

hugo says hello!

- -``` - -#### Live Reload - -Note: If you're running the server with the `--watch` option, you'll see different content in the file: - -``` -$ cat public/index.html - - - -

hugo says hello!

- - -``` - -When you use `--watch`, the Live Reload script is added by Hugo. Look for live reload in the documentation to see what it does and how to disable it. - -### Build a "Dynamic" Home Page - -"Dynamic home page?" Hugo's a static web site generator, so this seems an odd thing to say. I mean let's have the home page automatically reflect the content in the site every time Hugo builds it. We'll use iteration in the template to do that. - -#### Create New Posts - -Now that we have the home page generating static content, let's add some content to the site. We'll display these posts as a list on the home page and on their own page, too. - -Hugo has a command to generate a skeleton post, just like it does for sites and themes. - -``` -$ hugo --verbose new post/first.md -INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml -INFO: 2014/09/29 attempting to create post/first.md of post -INFO: 2014/09/29 curpath: /Users/quoha/Sites/zafta/themes/zafta/archetypes/default.md -ERROR: 2014/09/29 Unable to Cast to map[string]interface{} - -$ -``` - -That wasn't very nice, was it? - -The "new" command uses an archetype to create the post file. Hugo created an empty default archetype file, but that causes an error when there's a theme. For me, the workaround was to create an archetypes file specifically for the post type. - -``` -$ vi themes/zafta/archetypes/post.md -+++ -Description = "" -Tags = [] -Categories = [] -+++ -:wq - -$ find themes/zafta/archetypes -type f | xargs ls -l --rw-r--r-- 1 quoha staff 0 Sep 29 21:53 themes/zafta/archetypes/default.md --rw-r--r-- 1 quoha staff 51 Sep 29 21:54 themes/zafta/archetypes/post.md - -$ hugo --verbose new post/first.md -INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml -INFO: 2014/09/29 attempting to create post/first.md of post -INFO: 2014/09/29 curpath: /Users/quoha/Sites/zafta/themes/zafta/archetypes/post.md -INFO: 2014/09/29 creating /Users/quoha/Sites/zafta/content/post/first.md -/Users/quoha/Sites/zafta/content/post/first.md created - -$ hugo --verbose new post/second.md -INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml -INFO: 2014/09/29 attempting to create post/second.md of post -INFO: 2014/09/29 curpath: /Users/quoha/Sites/zafta/themes/zafta/archetypes/post.md -INFO: 2014/09/29 creating /Users/quoha/Sites/zafta/content/post/second.md -/Users/quoha/Sites/zafta/content/post/second.md created - -$ ls -l content/post -total 16 --rw-r--r-- 1 quoha staff 104 Sep 29 21:54 first.md --rw-r--r-- 1 quoha staff 105 Sep 29 21:57 second.md - -$ cat content/post/first.md -+++ -Categories = [] -Description = "" -Tags = [] -date = "2014-09-29T21:54:53-05:00" -title = "first" - -+++ -my first post - -$ cat content/post/second.md -+++ -Categories = [] -Description = "" -Tags = [] -date = "2014-09-29T21:57:09-05:00" -title = "second" - -+++ -my second post - -$ -``` - -Build the web site and then verify the results. - -``` -$ rm -rf public -$ hugo --verbose -INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml -INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/themes/zafta/static/ to /Users/quoha/Sites/zafta/public/ -INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/ -INFO: 2014/09/29 found taxonomies: map[string]string{"category":"categories", "tag":"tags"} -WARN: 2014/09/29 Unable to locate layout: [404.html theme/404.html] -0 draft content -0 future content -2 pages created -0 tags created -0 categories created -in 4 ms -$ -``` - -The output says that it created 2 pages. Those are our new posts: - -``` -$ find public -type f -name '*.html' | xargs ls -l --rw-r--r-- 1 quoha staff 78 Sep 29 22:13 public/index.html --rw-r--r-- 1 quoha staff 0 Sep 29 22:13 public/post/first/index.html --rw-r--r-- 1 quoha staff 0 Sep 29 22:13 public/post/index.html --rw-r--r-- 1 quoha staff 0 Sep 29 22:13 public/post/second/index.html -$ -``` - -The new files are empty because because the templates used to generate the content are empty. The homepage doesn't show the new content, either. We have to update the templates to add the posts. - -### List and Single Templates - -In Hugo, we have three major kinds of templates. There's the home page template that we updated previously. It is used only by the home page. We also have "single" templates which are used to generate output for a single content file. We also have "list" templates that are used to group multiple pieces of content before generating output. - -Generally speaking, list templates are named "list.html" and single templates are named "single.html." - -There are three other types of templates: partials, content views, and terms. We will not go into much detail on these. - -### Add Content to the Homepage - -The home page will contain a list of posts. Let's update its template to add the posts that we just created. The logic in the template will run every time we build the site. - -``` -$ vi themes/zafta/layouts/index.html - - - - {{ range first 10 .Data.Pages }} -

{{ .Title }}

- {{ end }} - - -:wq - -$ -``` - -Hugo uses the Go template engine. That engine scans the template files for commands which are enclosed between "{{" and "}}". In our template, the commands are: - -1. range -2. .Title -3. end - -The "range" command is an iterator. We're going to use it to go through the first ten pages. Every HTML file that Hugo creates is treated as a page, so looping through the list of pages will look at every file that will be created. - -The ".Title" command prints the value of the "title" variable. Hugo pulls it from the front matter in the Markdown file. - -The "end" command signals the end of the range iterator. The engine loops back to the top of the iteration when it finds "end." Everything between the "range" and "end" is evaluated every time the engine goes through the iteration. In this file, that would cause the title from the first ten pages to be output as heading level one. - -It's helpful to remember that some variables, like .Data, are created before any output files. Hugo loads every content file into the variable and then gives the template a chance to process before creating the HTML files. - -Build the web site and then verify the results. - -``` -$ rm -rf public -$ hugo --verbose -INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml -INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/themes/zafta/static/ to /Users/quoha/Sites/zafta/public/ -INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/ -INFO: 2014/09/29 found taxonomies: map[string]string{"tag":"tags", "category":"categories"} -WARN: 2014/09/29 Unable to locate layout: [404.html theme/404.html] -0 draft content -0 future content -2 pages created -0 tags created -0 categories created -in 4 ms -$ find public -type f -name '*.html' | xargs ls -l --rw-r--r-- 1 quoha staff 94 Sep 29 22:23 public/index.html --rw-r--r-- 1 quoha staff 0 Sep 29 22:23 public/post/first/index.html --rw-r--r-- 1 quoha staff 0 Sep 29 22:23 public/post/index.html --rw-r--r-- 1 quoha staff 0 Sep 29 22:23 public/post/second/index.html -$ cat public/index.html - - - - -

second

- -

first

- - - -$ -``` - -Congratulations, the home page shows the title of the two posts. The posts themselves are still empty, but let's take a moment to appreciate what we've done. Your template now generates output dynamically. Believe it or not, by inserting the range command inside of those curly braces, you've learned everything you need to know to build a theme. All that's really left is understanding which template will be used to generate each content file and becoming familiar with the commands for the template engine. - -And, if that were entirely true, this tutorial would be much shorter. There are a few things to know that will make creating a new template much easier. Don't worry, though, that's all to come. - -### Add Content to the Posts - -We're working with posts, which are in the content/post/ directory. That means that their section is "post" (and if we don't do something weird, their type is also "post"). - -Hugo uses the section and type to find the template file for every piece of content. Hugo will first look for a template file that matches the section or type name. If it can't find one, then it will look in the _default/ directory. There are some twists that we'll cover when we get to categories and tags, but for now we can assume that Hugo will try post/single.html, then _default/single.html. - -Now that we know the search rule, let's see what we actually have available: - -``` -$ find themes/zafta -name single.html | xargs ls -l --rw-r--r-- 1 quoha staff 132 Sep 29 17:31 themes/zafta/layouts/_default/single.html -``` - -We could create a new template, post/single.html, or change the default. Since we don't know of any other content types, let's start with updating the default. - -Remember, any content that we haven't created a template for will end up using this template. That can be good or bad. Bad because I know that we're going to be adding different types of content and we're going to end up undoing some of the changes we've made. It's good because we'll be able to see immediate results. It's also good to start here because we can start to build the basic layout for the site. As we add more content types, we'll refactor this file and move logic around. Hugo makes that fairly painless, so we'll accept the cost and proceed. - -Please see the Hugo documentation on template rendering for all the details on determining which template to use. And, as the docs mention, if you're building a single page application (SPA) web site, you can delete all of the other templates and work with just the default single page. That's a refreshing amount of joy right there. - -#### Update the Template File - -``` -$ vi themes/zafta/layouts/_default/single.html - - - - {{ .Title }} - - -

{{ .Title }}

- {{ .Content }} - - -:wq - -$ -``` - -Build the web site and verify the results. - -``` -$ rm -rf public -$ hugo --verbose -INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml -INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/themes/zafta/static/ to /Users/quoha/Sites/zafta/public/ -INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/ -INFO: 2014/09/29 found taxonomies: map[string]string{"tag":"tags", "category":"categories"} -WARN: 2014/09/29 Unable to locate layout: [404.html theme/404.html] -0 draft content -0 future content -2 pages created -0 tags created -0 categories created -in 4 ms - -$ find public -type f -name '*.html' | xargs ls -l --rw-r--r-- 1 quoha staff 94 Sep 29 22:40 public/index.html --rw-r--r-- 1 quoha staff 125 Sep 29 22:40 public/post/first/index.html --rw-r--r-- 1 quoha staff 0 Sep 29 22:40 public/post/index.html --rw-r--r-- 1 quoha staff 128 Sep 29 22:40 public/post/second/index.html - -$ cat public/post/first/index.html - - - - first - - -

first

-

my first post

- - - - -$ cat public/post/second/index.html - - - - second - - -

second

-

my second post

- - - -$ -``` - -Notice that the posts now have content. You can go to localhost:1313/post/first to verify. - -### Linking to Content - -The posts are on the home page. Let's add a link from there to the post. Since this is the home page, we'll update its template. - -``` -$ vi themes/zafta/layouts/index.html - - - - {{ range first 10 .Data.Pages }} -

{{ .Title }}

- {{ end }} - - -``` - -Build the web site and verify the results. - -``` -$ rm -rf public -$ hugo --verbose -INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml -INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/themes/zafta/static/ to /Users/quoha/Sites/zafta/public/ -INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/ -INFO: 2014/09/29 found taxonomies: map[string]string{"tag":"tags", "category":"categories"} -WARN: 2014/09/29 Unable to locate layout: [404.html theme/404.html] -0 draft content -0 future content -2 pages created -0 tags created -0 categories created -in 4 ms - -$ find public -type f -name '*.html' | xargs ls -l --rw-r--r-- 1 quoha staff 149 Sep 29 22:44 public/index.html --rw-r--r-- 1 quoha staff 125 Sep 29 22:44 public/post/first/index.html --rw-r--r-- 1 quoha staff 0 Sep 29 22:44 public/post/index.html --rw-r--r-- 1 quoha staff 128 Sep 29 22:44 public/post/second/index.html - -$ cat public/index.html - - - - -

second

- -

first

- - - - -$ -``` - -### Create a Post Listing - -We have the posts displaying on the home page and on their own page. We also have a file public/post/index.html that is empty. Let's make it show a list of all posts (not just the first ten). - -We need to decide which template to update. This will be a listing, so it should be a list template. Let's take a quick look and see which list templates are available. - -``` -$ find themes/zafta -name list.html | xargs ls -l --rw-r--r-- 1 quoha staff 0 Sep 29 17:31 themes/zafta/layouts/_default/list.html -``` - -As with the single post, we have to decide to update _default/list.html or create post/list.html. We still don't have multiple content types, so let's stay consistent and update the default list template. - -## Creating Top Level Pages - -Let's add an "about" page and display it at the top level (as opposed to a sub-level like we did with posts). - -The default in Hugo is to use the directory structure of the content/ directory to guide the location of the generated html in the public/ directory. Let's verify that by creating an "about" page at the top level: - -``` -$ vi content/about.md -+++ -title = "about" -description = "about this site" -date = "2014-09-27" -slug = "about time" -+++ - -## about us - -i'm speechless -:wq -``` - -Generate the web site and verify the results. - -``` -$ find public -name '*.html' | xargs ls -l --rw-rw-r-- 1 mdhender staff 334 Sep 27 15:08 public/about-time/index.html --rw-rw-r-- 1 mdhender staff 527 Sep 27 15:08 public/index.html --rw-rw-r-- 1 mdhender staff 358 Sep 27 15:08 public/post/first-post/index.html --rw-rw-r-- 1 mdhender staff 0 Sep 27 15:08 public/post/index.html --rw-rw-r-- 1 mdhender staff 342 Sep 27 15:08 public/post/second-post/index.html -``` - -Notice that the page wasn't created at the top level. It was created in a sub-directory named 'about-time/'. That name came from our slug. Hugo will use the slug to name the generated content. It's a reasonable default, by the way, but we can learn a few things by fighting it for this file. - -One other thing. Take a look at the home page. - -``` -$ cat public/index.html - - - -

creating a new theme

-

about

-

second

-

first

- - -``` - -Notice that the "about" link is listed with the posts? That's not desirable, so let's change that first. - -``` -$ vi themes/zafta/layouts/index.html - - - -

posts

- {{ range first 10 .Data.Pages }} - {{ if eq .Type "post"}} -

{{ .Title }}

- {{ end }} - {{ end }} - -

pages

- {{ range .Data.Pages }} - {{ if eq .Type "page" }} -

{{ .Title }}

- {{ end }} - {{ end }} - - -:wq -``` - -Generate the web site and verify the results. The home page has two sections, posts and pages, and each section has the right set of headings and links in it. - -But, that about page still renders to about-time/index.html. - -``` -$ find public -name '*.html' | xargs ls -l --rw-rw-r-- 1 mdhender staff 334 Sep 27 15:33 public/about-time/index.html --rw-rw-r-- 1 mdhender staff 645 Sep 27 15:33 public/index.html --rw-rw-r-- 1 mdhender staff 358 Sep 27 15:33 public/post/first-post/index.html --rw-rw-r-- 1 mdhender staff 0 Sep 27 15:33 public/post/index.html --rw-rw-r-- 1 mdhender staff 342 Sep 27 15:33 public/post/second-post/index.html -``` - -Knowing that hugo is using the slug to generate the file name, the simplest solution is to change the slug. Let's do it the hard way and change the permalink in the configuration file. - -``` -$ vi config.toml -[permalinks] - page = "/:title/" - about = "/:filename/" -``` - -Generate the web site and verify that this didn't work. Hugo lets "slug" or "URL" override the permalinks setting in the configuration file. Go ahead and comment out the slug in content/about.md, then generate the web site to get it to be created in the right place. - -## Sharing Templates - -If you've been following along, you probably noticed that posts have titles in the browser and the home page doesn't. That's because we didn't put the title in the home page's template (layouts/index.html). That's an easy thing to do, but let's look at a different option. - -We can put the common bits into a shared template that's stored in the themes/zafta/layouts/partials/ directory. - -### Create the Header and Footer Partials - -In Hugo, a partial is a sugar-coated template. Normally a template reference has a path specified. Partials are different. Hugo searches for them along a TODO defined search path. This makes it easier for end-users to override the theme's presentation. - -``` -$ vi themes/zafta/layouts/partials/header.html - - - - {{ .Title }} - - -:wq - -$ vi themes/zafta/layouts/partials/footer.html - - -:wq -``` - -### Update the Home Page Template to Use the Partials - -The most noticeable difference between a template call and a partials call is the lack of path: - -``` -{{ template "theme/partials/header.html" . }} -``` -versus -``` -{{ partial "header.html" . }} -``` -Both pass in the context. - -Let's change the home page template to use these new partials. - -``` -$ vi themes/zafta/layouts/index.html -{{ partial "header.html" . }} - -

posts

- {{ range first 10 .Data.Pages }} - {{ if eq .Type "post"}} -

{{ .Title }}

- {{ end }} - {{ end }} - -

pages

- {{ range .Data.Pages }} - {{ if or (eq .Type "page") (eq .Type "about") }} -

{{ .Type }} - {{ .Title }} - {{ .RelPermalink }}

- {{ end }} - {{ end }} - -{{ partial "footer.html" . }} -:wq -``` - -Generate the web site and verify the results. The title on the home page is now "your title here", which comes from the "title" variable in the config.toml file. - -### Update the Default Single Template to Use the Partials - -``` -$ vi themes/zafta/layouts/_default/single.html -{{ partial "header.html" . }} - -

{{ .Title }}

- {{ .Content }} - -{{ partial "footer.html" . }} -:wq -``` - -Generate the web site and verify the results. The title on the posts and the about page should both reflect the value in the markdown file. - -## Add “Date Published†to Posts - -It's common to have posts display the date that they were written or published, so let's add that. The front matter of our posts has a variable named "date." It's usually the date the content was created, but let's pretend that's the value we want to display. - -### Add “Date Published†to the Template - -We'll start by updating the template used to render the posts. The template code will look like: - -``` -{{ .Date.Format "Mon, Jan 2, 2006" }} -``` - -Posts use the default single template, so we'll change that file. - -``` -$ vi themes/zafta/layouts/_default/single.html -{{ partial "header.html" . }} - -

{{ .Title }}

-

{{ .Date.Format "Mon, Jan 2, 2006" }}

- {{ .Content }} - -{{ partial "footer.html" . }} -:wq -``` - -Generate the web site and verify the results. The posts now have the date displayed in them. There's a problem, though. The "about" page also has the date displayed. - -As usual, there are a couple of ways to make the date display only on posts. We could do an "if" statement like we did on the home page. Another way would be to create a separate template for posts. - -The "if" solution works for sites that have just a couple of content types. It aligns with the principle of "code for today," too. - -Let's assume, though, that we've made our site so complex that we feel we have to create a new template type. In Hugo-speak, we're going to create a section template. - -Let's restore the default single template before we forget. - -``` -$ mkdir themes/zafta/layouts/post -$ vi themes/zafta/layouts/_default/single.html -{{ partial "header.html" . }} - -

{{ .Title }}

- {{ .Content }} - -{{ partial "footer.html" . }} -:wq -``` - -Now we'll update the post's version of the single template. If you remember Hugo's rules, the template engine will use this version over the default. - -``` -$ vi themes/zafta/layouts/post/single.html -{{ partial "header.html" . }} - -

{{ .Title }}

-

{{ .Date.Format "Mon, Jan 2, 2006" }}

- {{ .Content }} - -{{ partial "footer.html" . }} -:wq - -``` - -Note that we removed the date logic from the default template and put it in the post template. Generate the web site and verify the results. Posts have dates and the about page doesn't. - -### Don't Repeat Yourself - -DRY is a good design goal and Hugo does a great job supporting it. Part of the art of a good template is knowing when to add a new template and when to update an existing one. While you're figuring that out, accept that you'll be doing some refactoring. Hugo makes that easy and fast, so it's okay to delay splitting up a template. diff --git a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/post/goisforlovers.md b/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/post/goisforlovers.md deleted file mode 100644 index df125d8..0000000 --- a/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.8/docs/themes/techdoc/exampleSite/content/post/goisforlovers.md +++ /dev/null @@ -1,344 +0,0 @@ -+++ -title = "(Hu)go Template Primer" -description = "" -tags = [ - "go", - "golang", - "templates", - "themes", - "development", -] -date = "2014-04-02" -categories = [ - "Development", - "golang", -] -menu = "main" -+++ - -Hugo uses the excellent [Go][] [html/template][gohtmltemplate] library for -its template engine. It is an extremely lightweight engine that provides a very -small amount of logic. In our experience that it is just the right amount of -logic to be able to create a good static website. If you have used other -template systems from different languages or frameworks you will find a lot of -similarities in Go templates. - -This document is a brief primer on using Go templates. The [Go docs][gohtmltemplate] -provide more details. - -## Introduction to Go Templates - -Go templates provide an extremely simple template language. It adheres to the -belief that only the most basic of logic belongs in the template or view layer. -One consequence of this simplicity is that Go templates parse very quickly. - -A unique characteristic of Go templates is they are content aware. Variables and -content will be sanitized depending on the context of where they are used. More -details can be found in the [Go docs][gohtmltemplate]. - -## Basic Syntax - -Golang templates are HTML files with the addition of variables and -functions. - -**Go variables and functions are accessible within {{ }}** - -Accessing a predefined variable "foo": - - {{ foo }} - -**Parameters are separated using spaces** - -Calling the add function with input of 1, 2: - - {{ add 1 2 }} - -**Methods and fields are accessed via dot notation** - -Accessing the Page Parameter "bar" - - {{ .Params.bar }} - -**Parentheses can be used to group items together** - - {{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }} - - -## Variables - -Each Go template has a struct (object) made available to it. In hugo each -template is passed either a page or a node struct depending on which type of -page you are rendering. More details are available on the -[variables](/layout/variables) page. - -A variable is accessed by referencing the variable name. - - {{ .Title }} - -Variables can also be defined and referenced. - - {{ $address := "123 Main St."}} - {{ $address }} - - -## Functions - -Go template ship with a few functions which provide basic functionality. The Go -template system also provides a mechanism for applications to extend the -available functions with their own. [Hugo template -functions](/layout/functions) provide some additional functionality we believe -are useful for building websites. Functions are called by using their name -followed by the required parameters separated by spaces. Template -functions cannot be added without recompiling hugo. - -**Example:** - - {{ add 1 2 }} - -## Includes - -When including another template you will pass to it the data it will be -able to access. To pass along the current context please remember to -include a trailing dot. The templates location will always be starting at -the /layout/ directory within Hugo. - -**Example:** - - {{ template "chrome/header.html" . }} - - -## Logic - -Go templates provide the most basic iteration and conditional logic. - -### Iteration - -Just like in Go, the Go templates make heavy use of range to iterate over -a map, array or slice. The following are different examples of how to use -range. - -**Example 1: Using Context** - - {{ range array }} - {{ . }} - {{ end }} - -**Example 2: Declaring value variable name** - - {{range $element := array}} - {{ $element }} - {{ end }} - -**Example 2: Declaring key and value variable name** - - {{range $index, $element := array}} - {{ $index }} - {{ $element }} - {{ end }} - -### Conditionals - -If, else, with, or, & and provide the framework for handling conditional -logic in Go Templates. Like range, each statement is closed with `end`. - - -Go Templates treat the following values as false: - -* false -* 0 -* any array, slice, map, or string of length zero - -**Example 1: If** - - {{ if isset .Params "title" }}

{{ index .Params "title" }}

{{ end }} - -**Example 2: If -> Else** - - {{ if isset .Params "alt" }} - {{ index .Params "alt" }} - {{else}} - {{ index .Params "caption" }} - {{ end }} - -**Example 3: And & Or** - - {{ if and (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}} - -**Example 4: With** - -An alternative way of writing "if" and then referencing the same value -is to use "with" instead. With rebinds the context `.` within its scope, -and skips the block if the variable is absent. - -The first example above could be simplified as: - - {{ with .Params.title }}

{{ . }}

{{ end }} - -**Example 5: If -> Else If** - - {{ if isset .Params "alt" }} - {{ index .Params "alt" }} - {{ else if isset .Params "caption" }} - {{ index .Params "caption" }} - {{ end }} - -## Pipes - -One of the most powerful components of Go templates is the ability to -stack actions one after another. This is done by using pipes. Borrowed -from unix pipes, the concept is simple, each pipeline's output becomes the -input of the following pipe. - -Because of the very simple syntax of Go templates, the pipe is essential -to being able to chain together function calls. One limitation of the -pipes is that they only can work with a single value and that value -becomes the last parameter of the next pipeline. - -A few simple examples should help convey how to use the pipe. - -**Example 1 :** - - {{ if eq 1 1 }} Same {{ end }} - -is the same as - - {{ eq 1 1 | if }} Same {{ end }} - -It does look odd to place the if at the end, but it does provide a good -illustration of how to use the pipes. - -**Example 2 :** - - {{ index .Params "disqus_url" | html }} - -Access the page parameter called "disqus_url" and escape the HTML. - -**Example 3 :** - - {{ if or (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}} - Stuff Here - {{ end }} - -Could be rewritten as - - {{ isset .Params "caption" | or isset .Params "title" | or isset .Params "attr" | if }} - Stuff Here - {{ end }} - - -## Context (aka. the dot) - -The most easily overlooked concept to understand about Go templates is that {{ . }} -always refers to the current context. In the top level of your template this -will be the data set made available to it. Inside of a iteration it will have -the value of the current item. When inside of a loop the context has changed. . -will no longer refer to the data available to the entire page. If you need to -access this from within the loop you will likely want to set it to a variable -instead of depending on the context. - -**Example:** - - {{ $title := .Site.Title }} - {{ range .Params.tags }} -
  • {{ . }} - {{ $title }}
  • - {{ end }} - -Notice how once we have entered the loop the value of {{ . }} has changed. We -have defined a variable outside of the loop so we have access to it from within -the loop. - -# Hugo Parameters - -Hugo provides the option of passing values to the template language -through the site configuration (for sitewide values), or through the meta -data of each specific piece of content. You can define any values of any -type (supported by your front matter/config format) and use them however -you want to inside of your templates. - - -## Using Content (page) Parameters - -In each piece of content you can provide variables to be used by the -templates. This happens in the [front matter](/content/front-matter). - -An example of this is used in this documentation site. Most of the pages -benefit from having the table of contents provided. Sometimes the TOC just -doesn't make a lot of sense. We've defined a variable in our front matter -of some pages to turn off the TOC from being displayed. - -Here is the example front matter: - -``` ---- -title: "Permalinks" -date: "2013-11-18" -aliases: - - "/doc/permalinks/" -groups: ["extras"] -groups_weight: 30 -notoc: true ---- -``` - -Here is the corresponding code inside of the template: - - {{ if not .Params.notoc }} -
    - {{ .TableOfContents }} -
    - {{ end }} - - - -## Using Site (config) Parameters -In your top-level configuration file (eg, `config.yaml`) you can define site -parameters, which are values which will be available to you in chrome. - -For instance, you might declare: - -```yaml -params: - CopyrightHTML: "Copyright © 2013 John Doe. All Rights Reserved." - TwitterUser: "spf13" - SidebarRecentLimit: 5 -``` - -Within a footer layout, you might then declare a `