Index: common/include/prop/prop_array.h
===================================================================
RCS file: /cvsroot/src/common/include/prop/prop_array.h,v
retrieving revision 1.5
diff -d -p -u -u -r1.5 prop_array.h
--- common/include/prop/prop_array.h    16 Aug 2007 16:28:17 -0000      1.5
+++ common/include/prop/prop_array.h    27 Oct 2007 15:47:14 -0000
@@ -66,9 +66,15 @@ void         prop_array_remove(prop_array_t, un

bool           prop_array_equals(prop_array_t, prop_array_t);

-char *         prop_array_externalize(prop_array_t);
-prop_array_t   prop_array_internalize(const char *);
+char           *prop_array_externalize(prop_array_t);
+prop_array_t   prop_array_internalize(const uint8_t *, size_t);

+bool           prop_array_externalize_with_encoding(prop_array_t, uint8_t **,
+                                                    size_t *,
+                                                    prop_encoding_t);
+bool           prop_array_externalize_to_file_with_encoding(prop_array_t,
+                                                            const char *,
+                                                            prop_encoding_t);
bool           prop_array_externalize_to_file(prop_array_t, const char *);
prop_array_t   prop_array_internalize_from_file(const char *);

Index: common/include/prop/prop_dictionary.h
===================================================================
RCS file: /cvsroot/src/common/include/prop/prop_dictionary.h,v
retrieving revision 1.7
diff -d -p -u -u -r1.7 prop_dictionary.h
--- common/include/prop/prop_dictionary.h       16 Aug 2007 16:28:17 -0000      1.7
+++ common/include/prop/prop_dictionary.h       27 Oct 2007 15:47:14 -0000
@@ -77,9 +77,17 @@ void         prop_dictionary_remove_keysym(prop

bool           prop_dictionary_equals(prop_dictionary_t, prop_dictionary_t);

-char *         prop_dictionary_externalize(prop_dictionary_t);
-prop_dictionary_t prop_dictionary_internalize(const char *);
+prop_dictionary_t prop_dictionary_internalize(const uint8_t *, size_t);
+char           *prop_dictionary_externalize(prop_dictionary_t);

+bool           prop_dictionary_externalize_with_encoding(prop_dictionary_t,
+                                                         uint8_t **,
+                                                         size_t *,
+                                                         prop_encoding_t);
+bool           prop_dictionary_externalize_to_file_with_encoding(
+                                                         prop_dictionary_t,
+                                                         const char *,
+                                                         prop_encoding_t);
bool           prop_dictionary_externalize_to_file(prop_dictionary_t,
                                                   const char *);
prop_dictionary_t prop_dictionary_internalize_from_file(const char *);
Index: common/include/prop/prop_number.h
===================================================================
RCS file: /cvsroot/src/common/include/prop/prop_number.h,v
retrieving revision 1.5
diff -d -p -u -u -r1.5 prop_number.h
--- common/include/prop/prop_number.h   16 Aug 2007 16:28:17 -0000      1.5
+++ common/include/prop/prop_number.h   27 Oct 2007 15:47:14 -0000
@@ -58,6 +58,7 @@ bool          prop_number_unsigned(prop_number_t
int64_t                prop_number_integer_value(prop_number_t);
uint64_t       prop_number_unsigned_integer_value(prop_number_t);

+int            prop_number_compare(prop_number_t, prop_number_t);
bool           prop_number_equals(prop_number_t, prop_number_t);
bool           prop_number_equals_integer(prop_number_t, int64_t);
bool           prop_number_equals_unsigned_integer(prop_number_t, uint64_t);
Index: common/include/prop/prop_object.h
===================================================================
RCS file: /cvsroot/src/common/include/prop/prop_object.h,v
retrieving revision 1.6
diff -d -p -u -u -r1.6 prop_object.h
--- common/include/prop/prop_object.h   30 Aug 2007 12:23:53 -0000      1.6
+++ common/include/prop/prop_object.h   27 Oct 2007 15:47:14 -0000
@@ -58,6 +58,12 @@ typedef enum {
       PROP_TYPE_DICT_KEYSYM   =       0x646b6579      /* 'dkey' */
} prop_type_t;

+typedef enum {
+       PROP_ENCODING_DEFAULT   =       0,
+       PROP_ENCODING_XML       =       1,
+       PROP_ENCODING_BINARY    =       2
+} prop_encoding_t;
+
__BEGIN_DECLS
void           prop_object_retain(prop_object_t);
void           prop_object_release(prop_object_t);
Index: common/lib/libprop/Makefile.inc
===================================================================
RCS file: /cvsroot/src/common/lib/libprop/Makefile.inc,v
retrieving revision 1.6
diff -d -p -u -u -r1.6 Makefile.inc
--- common/lib/libprop/Makefile.inc     16 Aug 2007 21:44:06 -0000      1.6
+++ common/lib/libprop/Makefile.inc     27 Oct 2007 15:47:14 -0000
@@ -2,7 +2,7 @@

.PATH: ${.PARSEDIR}

-SRCS+= prop_array.c prop_bool.c prop_data.c prop_dictionary.c \
+SRCS+= prop_array.c prop_bool.c prop_bplist.c prop_data.c prop_dictionary.c \
       prop_dictionary_util.c prop_ingest.c prop_kern.c prop_number.c \
       prop_object.c prop_stack.c prop_string.c

Index: common/lib/libprop/prop_array.3
===================================================================
RCS file: /cvsroot/src/common/lib/libprop/prop_array.3,v
retrieving revision 1.5
diff -d -p -u -u -r1.5 prop_array.3
--- common/lib/libprop/prop_array.3     16 Aug 2007 16:30:59 -0000      1.5
+++ common/lib/libprop/prop_array.3     27 Oct 2007 15:47:14 -0000
@@ -54,8 +54,10 @@
.Nm prop_array_add ,
.Nm prop_array_remove ,
.Nm prop_array_externalize ,
+.Nm prop_array_externalize_with_encoding ,
.Nm prop_array_internalize ,
.Nm prop_array_externalize_to_file ,
+.Nm prop_array_externalize_to_file_with_encoding ,
.Nm prop_array_internalize_from_file ,
.Nm prop_array_equals
.Nd array property collection object
@@ -101,7 +103,14 @@
.Ft char *
.Fn prop_array_externalize "prop_array_t array"
.Ft prop_array_t
-.Fn prop_array_internalize "const char *xml"
+.Fn prop_array_internalize "const uint8_t *buf" "size_t len"
+.\"
+.Ft bool
+.Fn prop_array_externalize_with_encoding "prop_array_t array" \
+    "uint8_t **bufp" "size_t *lenp" "prop_encoding_t enc"
+.Ft bool
+.Fn prop_array_externalize_to_file_with_encoding "prop_array_t array" \
+    "const char *path" "prop_encoding_t enc"
.\"
.Ft bool
.Fn prop_array_externalize_to_file "prop_array_t array" "const char *path"
@@ -222,16 +231,31 @@ In the kernel, the buffer is allocated u
.Xr malloc 9
using the malloc type
.Dv M_TEMP .
-.It Fn prop_array_internalize "const char *xml"
-Parse the XML representation of a property list in the NUL-terminated
-buffer
-.Fa xml
-and return the corresponding array.
+.It Fn prop_array_externalize_with_encoding  "prop_array_t array" \
+    "uint8_t **bufp" "size_t *lenp" "prop_encoding_t enc"
+Externalizes an array using encoding
+.Fa enc .
+On success returns
+.Dv true
+and fills buffer address and length to
+.Fa bufp
+and
+.Fa lenp
+respectively. On failure,
+.Dv false
+is returned and no arguments are modified.
+.It Fn prop_array_internalize "const uint8_t *buf" "size_t len"
+Parse any supported encoding of a property list in the buffer
+.Fa buf
+of length
+.Fa len
+bytes and return the corresponding array.
Returns
.Dv NULL
if parsing fails for any reason.
.It Fn prop_array_externalize_to_file "prop_array_t array" "const char *path"
-Externalizes an array and writes it to the file specified by
+Externalizes an array in default encoding and writes it to the file specified
+by
.Fa path .
The file is saved with the mode
.Dv 0666
@@ -241,10 +265,19 @@ and is written atomically.
Returns
.Dv false
if externalizing or writing the array fails for any reason.
+.It Fn prop_array_externalize_to_file_with_encoding "prop_array_t array" \
+    "const char *path" "prop_encoding_t enc"
+Like
+.Xr prop_array_externalize_to_file 3
+but use encoding
+.Fa enc .
.It Fn prop_array_internalize_from_file "const char *path"
-Reads the XML property list contained in the file specified by
-.Fa path ,
-internalizes it, and returns the corresponding array.
+Reads the property list contained in the file specified by
+.Fa path
+regardless of its encoding, internalizes it, and returns the corresponding
+array. Should reading or parsing fail for any reason,
+.Dv NULL
+is returned.
.El
.Sh SEE ALSO
.Xr prop_bool 3 ,
Index: common/lib/libprop/prop_array.c
===================================================================
RCS file: /cvsroot/src/common/lib/libprop/prop_array.c,v
retrieving revision 1.11
diff -d -p -u -u -r1.11 prop_array.c
--- common/lib/libprop/prop_array.c     30 Aug 2007 12:23:54 -0000      1.11
+++ common/lib/libprop/prop_array.c     27 Oct 2007 15:47:14 -0000
@@ -91,6 +91,28 @@ struct _prop_array_iterator {

#define        EXPAND_STEP             16

+void
+_prop_array_rdlock(prop_object_t po)
+{
+#if !defined(_STANDALONE)
+       prop_array_t pa = po;
+
+       _PROP_ASSERT(prop_object_is_array(pa));
+       _PROP_RWLOCK_RDLOCK(pa->pa_rwlock);
+#endif
+}
+
+void
+_prop_array_unlock(prop_object_t po)
+{
+#if !defined(_STANDALONE)
+       prop_array_t pa = po;
+
+       _PROP_ASSERT(prop_object_is_array(pa));
+       _PROP_RWLOCK_UNLOCK(pa->pa_rwlock);
+#endif
+}
+
static int
_prop_array_free(prop_stack_t stack, prop_object_t *obj)
{
@@ -702,21 +724,14 @@ prop_array_equals(prop_array_t array1, p
       return (prop_object_equals(array1, array2));
}

-/*
- * prop_array_externalize --
- *     Externalize an array, return a NUL-terminated buffer
- *     containing the XML-style representation.  The buffer is allocated
- *     with the M_TEMP memory type.
- */
-char *
-prop_array_externalize(prop_array_t pa)
+static bool
+_prop_array_xml_externalize(prop_array_t pa, uint8_t **bufp, size_t *lenp)
{
       struct _prop_object_externalize_context *ctx;
-       char *cp;

       ctx = _prop_object_externalize_context_alloc();
       if (ctx == NULL)
-               return (NULL);
+               return (false);

       if (_prop_object_externalize_header(ctx) == false ||
           (*pa->pa_obj.po_type->pot_extern)(ctx, pa) == false ||
@@ -724,13 +739,61 @@ prop_array_externalize(prop_array_t pa)
               /* We are responsible for releasing the buffer. */
               _PROP_FREE(ctx->poec_buf, M_TEMP);
               _prop_object_externalize_context_free(ctx);
-               return (NULL);
+               return (false);
       }

-       cp = ctx->poec_buf;
+       *bufp = (uint8_t *)ctx->poec_buf;
+       *lenp = ctx->poec_len;
       _prop_object_externalize_context_free(ctx);

-       return (cp);
+       return (true);
+}
+
+/*
+ * prop_array_externalize --
+ *     Like prop_array_externalize_with_encoding() below, using XML.
+ */
+char *
+prop_array_externalize(prop_array_t pa)
+{
+       uint8_t *buf;
+       size_t len;
+
+       if (! prop_array_externalize_with_encoding(pa, &buf, &len,
+           PROP_ENCODING_XML))
+               return (NULL);
+
+       return ((char *)buf);
+}
+
+/*
+ * prop_array_externalize_with_encoding --
+ *     Externalize an array in given encoding, on success return true
+ *     and set buffer pointer and length arguments; otherwise return
+ *     false and don't fill any values. The buffer is allocated with
+ *     the M_TEMP memory type.
+ */
+bool
+prop_array_externalize_with_encoding(prop_array_t pa, uint8_t **bufp,
+    size_t *lenp, prop_encoding_t enc)
+{
+       _PROP_ASSERT(bufp != NULL && lenp != NULL);
+
+       if (! prop_object_is_array(pa))
+               return (false);
+
+       switch (enc) {
+       case PROP_ENCODING_BINARY:
+               return (_prop_bp_externalize_object(pa, PROP_TYPE_ARRAY, bufp,
+                   lenp));
+
+       case PROP_ENCODING_DEFAULT:
+       case PROP_ENCODING_XML:
+               return (_prop_array_xml_externalize(pa, bufp, lenp));
+       }
+
+       /* LINTED silly gcc */
+       return (false);
}

/*
@@ -829,30 +892,54 @@ _prop_array_internalize_body(prop_stack_
 *     Create an array by parsing the XML-style representation.
 */
prop_array_t
-prop_array_internalize(const char *xml)
+prop_array_internalize(const uint8_t *buf, size_t len)
{
-       return _prop_generic_internalize(xml, "array");
+       _PROP_ASSERT(buf != NULL && len > 0);
+
+       switch (buf[0]) {
+       case 'b':
+               return (_prop_bp_internalize(buf, len, PROP_TYPE_ARRAY));
+       case '<':
+               return (_prop_generic_internalize((const char *)buf, "array"));
+       }
+
+       return (NULL);
}

#if !defined(_KERNEL) && !defined(_STANDALONE)
/*
 * prop_array_externalize_to_file --
- *     Externalize an array to the specified file.
+ *     Externalize an array to the specified file in XML format.
 */
bool
prop_array_externalize_to_file(prop_array_t array, const char *fname)
{
-       char *xml;
+       return (prop_array_externalize_to_file_with_encoding(array,
+           fname, PROP_ENCODING_DEFAULT));
+}
+
+/*
+ * prop_array_externalize_to_file_with_encoding --
+ *     Externalize an array to the specified file in XML format.
+ */
+bool
+prop_array_externalize_to_file_with_encoding(prop_array_t array,
+    const char *fname, prop_encoding_t enc)
+{
+       uint8_t *buf;
+       size_t len;
       bool rv;
       int save_errno = 0;     /* XXXGCC -Wuninitialized [mips, ...] */

-       xml = prop_array_externalize(array);
-       if (xml == NULL)
+       if (! prop_array_externalize_with_encoding(array, &buf, &len, enc)) {
+               errno = EINVAL;
               return (false);
-       rv = _prop_object_externalize_write_file(fname, xml, strlen(xml));
+       }
+
+       rv = _prop_object_externalize_write_file(fname, buf, len);
       if (rv == false)
               save_errno = errno;
-       _PROP_FREE(xml, M_TEMP);
+       _PROP_FREE(buf, M_TEMP);
       if (rv == false)
               errno = save_errno;

@@ -872,7 +959,8 @@ prop_array_internalize_from_file(const c
       mf = _prop_object_internalize_map_file(fname);
       if (mf == NULL)
               return (NULL);
-       array = prop_array_internalize(mf->poimf_xml);
+
+       array = prop_array_internalize(mf->poimf_data, mf->poimf_datasize);
       _prop_object_internalize_unmap_file(mf);

       return (array);
Index: common/lib/libprop/prop_bplist.c
===================================================================
RCS file: common/lib/libprop/prop_bplist.c
diff -N common/lib/libprop/prop_bplist.c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ common/lib/libprop/prop_bplist.c    27 Oct 2007 15:47:15 -0000
@@ -0,0 +1,1810 @@
+/*     $NetBSD$ */
+
+/*-
+ * Copyright (c) 2007 Jachym Holecek <[email protected]>.
+ * All rights reserved.
+ *
+ * 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.
+ *
+ * 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 HOLDERS 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.
+ */
+
+/*
+ * XXXfreza TODO:
+ *     o Don't allocate internalizer context on the stack
+ *     o Tidy _prop_bp_decode_object() a bit, it's too long
+ *     o Look at using joerg's stack management
+ *
+ * XXXfreza CAVEATS:
+ *      o Mutating internalized objects is risky as objects may be arbitrarily
+ *        uniquified, depending on the encoder.
+ */
+
+#include <sys/queue.h>
+
+#include <prop/proplib.h>
+#include "prop_object_impl.h"
+#include "prop_rb_impl.h"
+
+#if defined(_KERNEL) || defined(_STANDALONE)
+#include <machine/limits.h>
+#else
+#include <limits.h>
+#endif
+
+/* Round 'x' up to the nearest multiple of 'm'. */
+#define _PROP_ROUNDUP(x, m)            ((((x) + ((m) - 1))/(m)) * (m))
+
+/* General size/count increments. */
+#define BPLIST_INCREMENT_SMALL                 16      /* > BPLIST_HEADER_LEN */
+#define BPLIST_INCREMENT_LARGE                 128
+
+/* Maximum length of encoded integer (marker byte + 64bit value). */
+#define BPLIST_NUMBER_MAXLEN           9
+
+/*
+ * (1) Header structure. Identifies file format and version.
+ */
+
+/* Magic marker & lenght (no terminating NUL). */
+#define BPLIST_MAGIC                   "bplist"
+#define BPLIST_MAGIC_LEN               6
+
+/* Version is given in two bytes interpreted as ASCII characters. */
+#define BPLIST_VERSION_LEN             2
+#define BPLIST_VERSION_MAJOR_OFFS      6
+#define BPLIST_VERSION_MINOR_OFFS      7
+
+/* Total header length. */
+#define BPLIST_HEADER_LEN              (BPLIST_MAGIC_LEN + BPLIST_VERSION_LEN)
+
+/*
+ * (2) Object table. Flat array describing all objects in the plist.
+ *     Compound objects (array, dict) refer to their "children" via
+ *     indexes to the offset table.
+ */
+
+/* Object type encoded in higher four bits. */
+#define BPLIST_TYPE_MULTI              0x00
+#define BPLIST_TYPE_UINT               0x10    /* signed int in Apple */
+#define BPLIST_TYPE_REAL               0x20    /* unsupported */
+#define BPLIST_TYPE_DATE               0x30    /* unsupported */
+#define BPLIST_TYPE_DATA               0x40
+#define BPLIST_TYPE_ASCII              0x50    /* ASCII string */
+#define BPLIST_TYPE_UNICODE            0x60    /* unsupported */
+#define BPLIST_TYPE_SINT               0x70    /* reserved in Apple */
+#define BPLIST_TYPE_UID                0x80    /* unsupported */
+#define BPLIST_TYPE_ARRAY              0xa0
+#define BPLIST_TYPE_DICT               0xd0
+
+/* Lower four bits for BPLIST_TYPE_MULTI. */
+#define BPLIST_MULTI_NULL              0x00
+#define BPLIST_MULTI_FALSE             0x08
+#define BPLIST_MULTI_TRUE              0x09
+#define BPLIST_MULTI_FILL              0x0f
+
+/* Where lower bits mean "count", this indicates (u_)integer count follows. */
+#define BPLIST_COUNT_MANY              0x0f
+
+/*
+ * (3) Offset table. Array of unsigned integers (width defined by the
+ *     trailer) resolving object references to file offsets at which
+ *     objects are stored.
+ */
+
+/*
+ * (4) Trailer structure. Defines byte-width of offset table entries, its
+ *     offset in the file, count of offset table entries (ie. object count)
+ *     and index of the toplevel array/dict.
+ */
+
+#define BPLIST_TRAILER_LEN             (3*8 + 2)
+#define BPLIST_TRAILER_OFFWIDTH_OFFS   0
+#define BPLIST_TRAILER_REFWIDTH_OFFS   1
+#define BPLIST_TRAILER_OBJCNT_OFFS     2
+#define BPLIST_TRAILER_OBJTOP_OFFS     10
+#define BPLIST_TRAILER_OFFTAB_OFFS     18
+
+/*
+ * Internalizer data types.
+ */
+
+typedef struct _prop_bp_intern_frame   *_prop_bp_intern_frame_t;
+typedef struct _prop_bp_intern                 *_prop_bp_intern_t;
+
+/* Internalizer frame, common for arrays/dicts. */
+struct _prop_bp_intern_frame {
+       prop_object_t           if_container;
+       const char              *if_keysym;             /* Dictionary only */
+       const uint8_t           *if_buffer;
+       u_int                   if_count;               /* Object count */
+       u_int                   if_index;               /* Current object */
+};
+
+struct _prop_bp_intern {
+       /* Trailer members. */
+       u_int                   bi_offtab_width;        /* size 1 offset 0  */
+       u_int                   bi_objref_width;        /* size 1 offset 1  */
+       u_int                   bi_object_count;        /* size 8 offset 2  */
+       u_int                   bi_object_first;        /* size 8 offset 10 */
+       u_int                   bi_offtab_offset;       /* size 8 offset 18 */
+
+       /* Objects internalized so far, by index. */
+       prop_object_t           *bi_objects;
+
+       /* Utility members. */
+       const uint8_t           *bi_offtab;
+       const uint8_t           *bi_buffer;
+       size_t                  bi_length;
+
+       /* Manipulated exclusively by _prop_bp_intern_stack_*(). */
+       u_int                   bi_stack_depth;
+       u_int                   bi_stack_top;
+       _prop_bp_intern_frame_t bi_stack;               /* array */
+};
+
+/*
+ * Externalizer data types.
+ */
+
+typedef struct _prop_bp_extern                 *_prop_bp_extern_t;
+typedef struct _prop_bp_node           *_prop_bp_object_t;
+typedef struct _prop_bp_table          *_prop_bp_table_t;
+typedef struct _prop_bp_uniq_node      *_prop_bp_uniq_node_t;
+typedef struct _prop_bp_uniq_list      *_prop_bp_uniq_list_t;
+typedef union _prop_bp_uniq_value      *_prop_bp_uniq_value_t;
+
+/* Entry in uniqified object table. */
+struct _prop_bp_node {
+       prop_object_t                   bo_object;
+       u_int                           *bo_reftab;     /* compounds */
+       u_int                           bo_index;
+       u_int                           bo_offset;
+};
+
+/* Uniquified RB-tree string/integer value. */
+union _prop_bp_uniq_value {
+       struct {
+               const char *bsv_string;
+               uint32_t bsv_hash;
+       }                               bv__string;
+       prop_number_t                   bv_number;
+};
+
+#define bv_string                      bv__string.bsv_string
+#define bv_hash                        bv__string.bsv_hash
+
+/* Entry in uniquified string/integer RB-tree. */
+struct _prop_bp_uniq_node {
+       struct rb_node                  bu_rb;          /* must be head */
+       SLIST_ENTRY(_prop_bp_uniq_node) bu_link;
+       union _prop_bp_uniq_value       bu_value;
+       u_int                           bu_index;
+       u_int                           bu_offset;
+};
+
+#define _PROP_UNCONST(a)               \
+    ((void *)(unsigned long)(const void *)(a))
+
+/* Unique node/value accessors and conversions. */
+#define BPLIST_UNODE_TO_VALUE(node)    \
+    (&((_prop_bp_uniq_node_t)_PROP_UNCONST(node))->bu_value)
+
+#define BPLIST_UNODE_TO_INDEX(node)    \
+    (((_prop_bp_uniq_node_t)(void *)node)->bu_index)
+
+#define BPLIST_VOIDP_TO_VALUE(ptr)     \
+    ((_prop_bp_uniq_value_t)_PROP_UNCONST(ptr))
+
+SLIST_HEAD(_prop_bp_uniq_list, _prop_bp_uniq_node);
+
+/* Uniquified object table. */
+struct _prop_bp_table {
+       _prop_bp_object_t               bt_objects;     /* array */
+       u_int                           bt_depth;
+       u_int                           bt_next;
+};
+
+/* Uniquified object tables & their count. */
+#define BPLIST_TABLE_COMPOUND          0       /* dict & array */
+#define BPLIST_TABLE_SINGLE            1       /* bool & data */
+#define BPLIST_TABLE_COUNT             2       /* number of tables */
+
+struct _prop_bp_extern {
+       /* Uniquified compounds (only empty collections unique). */
+       struct _prop_bp_table           ec_compounds;
+       u_int                           ec_empty_array;
+       u_int                           ec_empty_dict;
+
+       /* Uniquified booleans and data (only booleans unique). */
+       struct _prop_bp_table           ec_others;
+       u_int                           ec_true;
+       u_int                           ec_false;
+
+       /* Uniquified string RB-tree. */
+       struct _prop_bp_uniq_list       ec_str_list;
+       struct rb_tree                  ec_str_tree;
+
+       /* Uniquified numer RB-tree. */
+       struct _prop_bp_uniq_list       ec_num_list;
+       struct rb_tree                  ec_num_tree;
+
+       /* Externalized plist. */
+       uint8_t                         *ec_extern_buffer;
+       size_t                          ec_extern_size;
+       size_t                          ec_extern_next;
+
+       /* Unique object count (and next object index). */
+       u_int                           ec_index_next;
+
+       /* Trailer values. */
+       u_int                           ec_objref_width;
+       u_int                           ec_offtab_width;
+       u_int                           ec_offtab_start;
+};
+
+/*
+ * Internalizer stack management.
+ */
+
+static bool
+_prop_bp_intern_stack_init(_prop_bp_intern_t ic)
+{
+       u_int count = BPLIST_INCREMENT_SMALL;
+       u_int size = (count * sizeof(struct _prop_bp_intern_frame));
+
+       ic->bi_stack = _PROP_MALLOC(size, M_TEMP);
+       if (ic->bi_stack == NULL)
+               return (false);
+
+       ic->bi_stack_depth = count;
+       ic->bi_stack_top = 0;
+
+       return (true);
+}
+
+static void
+_prop_bp_intern_stack_free(_prop_bp_intern_t ic)
+{
+       /* We're done, WIP objects themselves freed via bi_objects[]. */
+       _PROP_FREE(ic->bi_stack, M_TEMP);
+}
+
+static _prop_bp_intern_frame_t
+_prop_bp_intern_stack_peek(_prop_bp_intern_t ic)
+{
+       return (&ic->bi_stack[ic->bi_stack_top]);
+}
+
+static _prop_bp_intern_frame_t
+_prop_bp_intern_stack_zerohead(_prop_bp_intern_t ic)
+{
+       _prop_bp_intern_frame_t bif = _prop_bp_intern_stack_peek(ic);
+
+       return (memset(bif, 0, sizeof(struct _prop_bp_intern_frame)));
+}
+
+static bool
+_prop_bp_intern_stack_pop(_prop_bp_intern_t ic)
+{
+       if (ic->bi_stack_top == 1)
+               return (true);
+
+       ic->bi_stack_top -= 1;
+       return (false);
+}
+
+static _prop_bp_intern_frame_t
+_prop_bp_intern_stack_push(_prop_bp_intern_t ic)
+{
+       size_t size;
+       u_int count;
+       void *p;
+
+       /* XXXfreza this leaves stack frame 0 wasted. */
+       ic->bi_stack_top += 1;
+       if (ic->bi_stack_top < ic->bi_stack_depth)
+               return (_prop_bp_intern_stack_zerohead(ic));
+
+       count = (ic->bi_stack_depth + BPLIST_INCREMENT_SMALL);
+       size = (count * sizeof(struct _prop_bp_intern_frame));
+       p = _PROP_REALLOC(ic->bi_stack, size, M_TEMP);
+       if (p == NULL)
+               return (NULL);
+
+       ic->bi_stack_depth = count;
+       ic->bi_stack = p;
+
+       return (_prop_bp_intern_stack_zerohead(ic));
+}
+
+/*
+ * Internalizer utility decoders.
+ */
+
+static const uint8_t *
+_prop_bp_object_pointer(_prop_bp_intern_t ic, u_int n)
+{
+       const uint8_t *ofp = (ic->bi_offtab + n*ic->bi_offtab_width);
+       u_int offset = 0;
+       int i;
+
+       for (i = 0; i < ic->bi_offtab_width; i++)
+               offset = (offset << 8) | ofp[i];
+
+       if (offset >= (ic->bi_length - BPLIST_TRAILER_LEN))
+               return (NULL);
+
+       return (ic->bi_buffer + offset);
+}
+
+static const uint8_t *
+_prop_bp_read_int(_prop_bp_intern_t ic, const uint8_t *obj, u_int *valp)
+{
+       uint8_t hi = (*obj & 0xf0);
+       uint8_t lo = (*obj & 0x0f);
+       u_int nbytes;
+       u_int i;
+
+       /* Check type and calculate number size in bytes. */
+       if (hi != BPLIST_TYPE_UINT)
+               return (NULL);
+
+       nbytes = (1 << lo);
+       if (nbytes > sizeof(u_int))
+               return (NULL);
+
+       /* Careful not to overflow object table. */
+       if ((obj + nbytes) > ic->bi_offtab)
+               return (NULL);
+       obj += 1;
+
+       /* Shift in big-endian value. */
+       for (*valp = 0, i = 0; i < nbytes; i++)
+               *valp = (*valp << 8) | *obj++;
+
+       return (obj);
+}
+
+static const uint8_t *
+_prop_bp_read_index(_prop_bp_intern_t ic, const uint8_t *obj, u_int *valp)
+{
+       u_int i;
+
+       /* Careful not to overflow object table. */
+       if ((obj + ic->bi_objref_width) > ic->bi_offtab)
+               return (NULL);
+
+       /* Shift in big-endian value. */
+       for (*valp = 0, i = 0; i < ic->bi_objref_width; i++)
+               *valp = (*valp << 8) | *obj++;
+
+       /* Careful not to overflow advised object count. */
+       if (*valp >= ic->bi_object_count)
+               return (NULL);
+
+       return (obj);
+}
+
+/*
+ * Internalizer object decoder routines.
+ */
+
+/*ARGSUSED*/
+static prop_number_t
+_prop_bp_decode_int(_prop_bp_intern_t ic, const uint8_t *obj, bool isuint,
+    uint8_t lo)
+{
+       uint64_t val = 0;
+       u_int nbytes = (1 << lo);
+       u_int i;
+
+       if (nbytes > 8)
+               return (NULL);
+
+       for (i = 0; i < nbytes; i++)
+               val = (val << 8) | *obj++;
+
+       if (isuint)
+               return (prop_number_create_unsigned_integer(val));
+       else
+               return (prop_number_create_integer((int64_t)val));
+}
+
+static prop_array_t
+_prop_bp_decode_array(_prop_bp_intern_t ic, const uint8_t *obj, uint8_t lo)
+{
+       _prop_bp_intern_frame_t bif;
+       prop_array_t pa;
+       u_int nelts;
+
+       /* Read array size (number of contained objects). */
+       if (lo == BPLIST_COUNT_MANY) {
+               obj = _prop_bp_read_int(ic, obj, &nelts);
+               if (obj == NULL)
+                       return (NULL);
+       } else
+               nelts = lo;
+
+       /* Create the array. */
+       pa = prop_array_create_with_capacity(nelts);
+       if (pa == NULL)
+               return (NULL);
+
+       /* Initialize stack frame. */
+       bif = _prop_bp_intern_stack_push(ic);
+       if (bif == NULL) {
+               prop_object_release(pa);
+               return (NULL);
+       }
+       bif->if_container = pa;
+       bif->if_buffer = obj;
+       bif->if_count = nelts;
+       bif->if_index = 0;
+
+       return (pa);
+}
+
+static prop_dictionary_t
+_prop_bp_decode_dict(_prop_bp_intern_t ic, const uint8_t *obj, uint8_t lo)
+{
+       _prop_bp_intern_frame_t bif;
+       prop_dictionary_t pd;
+       u_int nelts;
+
+       /* Read dictionary size (number of <key, val> pairs). */
+       if (lo == BPLIST_COUNT_MANY) {
+               obj = _prop_bp_read_int(ic, obj, &nelts);
+               if (obj == NULL)
+                       return (NULL);
+       } else
+               nelts = lo;
+
+       /* Create the dictionary. */
+       pd = prop_dictionary_create_with_capacity(nelts);
+       if (pd == NULL)
+               return (NULL);
+
+       /* Initialize stack frame. */
+       bif = _prop_bp_intern_stack_push(ic);
+       if (bif == NULL) {
+               prop_object_release(pd);
+               return (NULL);
+       }
+       bif->if_container = pd;
+       bif->if_keysym = NULL;
+       bif->if_buffer = obj;
+       bif->if_count = (2 * nelts);
+       bif->if_index = 0;
+
+       return (pd);
+}
+
+static prop_string_t
+_prop_bp_decode_ascii(_prop_bp_intern_t ic, const uint8_t *obj, uint8_t lo)
+{
+       prop_string_t ps;
+       u_int size;
+       char *str;
+
+       /* Read string length. */
+       if (lo == BPLIST_COUNT_MANY) {
+               obj = _prop_bp_read_int(ic, obj, &size);
+               if (obj == NULL)
+                       return (NULL);
+       } else
+               size = lo;
+
+       /* Are we in bounds of the object table? */
+       if ((obj + size) > ic->bi_offtab)
+               return (NULL);
+
+       str = _PROP_MALLOC(size + 1, M_TEMP);
+       if (str == NULL)
+               return (NULL);
+
+       str[size] = '\0';
+       memcpy(str, obj, size);
+
+       /* XXXfreza this is expensive but we can't donate a buffer to ps */
+       ps = prop_string_create_cstring(str);
+       _PROP_FREE(str, M_TEMP);
+
+       return (ps);
+}
+
+static prop_data_t
+_prop_bp_decode_data(_prop_bp_intern_t ic, const uint8_t *obj, uint8_t lo)
+{
+       u_int size;
+
+       /* Read data length. */
+       if (lo == BPLIST_COUNT_MANY) {
+               obj = _prop_bp_read_int(ic, obj, &size);
+               if (obj == NULL)
+                       return (NULL);
+       } else
+               size = lo;
+
+       /* Are we in bounds of the object table? */
+       if ((obj + size) > ic->bi_offtab)
+               return (NULL);
+
+       return (prop_data_create_data(obj, size));
+}
+
+static bool
+_prop_bp_decode_object(_prop_bp_intern_t ic, u_int idx)
+{
+       _prop_bp_intern_frame_t bif;
+       prop_object_t po;
+       const uint8_t *obj;
+       uint8_t hi;
+       uint8_t lo;
+
+       if (! _prop_bp_intern_stack_init(ic))
+               return (false);
+
+ nextobj:
+       /* See if we already have this object, decode otherwise. */
+       po = ic->bi_objects[idx];
+       if (po != NULL)
+               goto gotobj;
+
+       /* Get pointer to encoded object and see what we can do. */
+       obj = _prop_bp_object_pointer(ic, idx);
+       if (obj == NULL)
+               goto fail;
+
+       hi = (*obj & 0xf0); /* Object type tag */
+       lo = (*obj & 0x0f); /* Auxiliary data */
+       obj += 1;
+
+       switch (hi) {
+       case BPLIST_TYPE_MULTI:
+               switch (lo) {
+               case BPLIST_MULTI_FALSE:
+                       po = prop_bool_create(false);
+                       break;
+
+               case BPLIST_MULTI_TRUE:
+                       po = prop_bool_create(true);
+                       break;
+
+               default:
+                       goto fail;
+               }
+               break;
+
+       case BPLIST_TYPE_UINT:
+               po = _prop_bp_decode_int(ic, obj, true, lo);
+               break;
+
+       case BPLIST_TYPE_SINT:
+               po = _prop_bp_decode_int(ic, obj, false, lo);
+               break;
+
+       case BPLIST_TYPE_ASCII:
+               po = _prop_bp_decode_ascii(ic, obj, lo);
+               break;
+
+       case BPLIST_TYPE_DATA:
+               po = _prop_bp_decode_data(ic, obj, lo);
+               break;
+
+       case BPLIST_TYPE_ARRAY:
+               po = _prop_bp_decode_array(ic, obj, lo);
+               break;
+
+       case BPLIST_TYPE_DICT:
+               po = _prop_bp_decode_dict(ic, obj, lo);
+               break;
+
+       default:
+               goto fail;
+       }
+
+       /* See if decoding was successful, remember object if so. */
+       if (po == NULL)
+               goto fail;
+       ic->bi_objects[idx] = po;
+
+ gotobj:
+       /* Get current compound, if it's a fresh one skip insert step. */
+       bif = _prop_bp_intern_stack_peek(ic);
+       if (bif->if_container == po)
+               goto newcompound;
+
+ insertobj:
+       /* Insert object into its container. */
+       if (prop_object_type(bif->if_container) == PROP_TYPE_DICTIONARY) {
+               if (bif->if_keysym == NULL) {
+                       const char *key;
+
+                       if (prop_object_type(po) != PROP_TYPE_STRING)
+                               goto fail;
+
+                       key = prop_string_cstring_nocopy(po);
+                       bif->if_keysym = key;
+               } else {
+                       if (! prop_dictionary_set(bif->if_container,
+                           bif->if_keysym, po))
+                               goto fail;
+
+                       bif->if_keysym = NULL;
+               }
+       } else
+       if (prop_object_type(bif->if_container) == PROP_TYPE_ARRAY) {
+               if (! prop_array_set(bif->if_container, bif->if_index, po))
+                       goto fail;
+       }
+       bif->if_index += 1;
+
+ newcompound:
+       /* See if we've just finished current compound object. */
+       if (bif->if_index == bif->if_count) {
+               if (_prop_bp_intern_stack_pop(ic)) {
+                       _prop_bp_intern_stack_free(ic);
+                       return (true);
+               }
+
+               /* Restore previous context and re-run insert path. */
+               po = bif->if_container;
+               bif = _prop_bp_intern_stack_peek(ic);
+
+               goto insertobj;
+       }
+
+       /* Get index of next object to work on, re-run decoder. */
+       obj = _prop_bp_read_index(ic, bif->if_buffer, &idx);
+       if (obj == NULL)
+               goto fail;
+       bif->if_buffer = obj;
+
+       goto nextobj;
+
+ fail:
+       _prop_bp_intern_stack_free(ic);
+       return (false);
+}
+
+/*
+ * Internal API to encoding dispatcher.
+ */
+
+prop_object_t
+_prop_bp_internalize(const uint8_t *data, size_t len, prop_type_t type)
+{
+       struct _prop_bp_intern ic;
+       prop_object_t po;
+       const uint8_t *trbase;
+       const uint8_t *obj;
+       uint64_t big;
+       uint8_t val;
+       u_int i;
+
+       /* Is it large enough to make any sense? */
+       if (len <= (BPLIST_HEADER_LEN + BPLIST_TRAILER_LEN))
+               return (NULL);
+
+       /* Does it match the magic marker? */
+       if (memcmp(data, BPLIST_MAGIC, BPLIST_MAGIC_LEN) != 0)
+               return (NULL);
+
+       /* Can we parse this version? */
+       if (data[BPLIST_VERSION_MAJOR_OFFS] != 'Z' ||
+           data[BPLIST_VERSION_MINOR_OFFS] != 'Z')
+               return (NULL);
+
+       /* Decode the trailer, can't do much without it. */
+       trbase = (data + len - BPLIST_TRAILER_LEN);
+       ic.bi_offtab_width = *(trbase + BPLIST_TRAILER_OFFWIDTH_OFFS);
+       ic.bi_objref_width = *(trbase + BPLIST_TRAILER_REFWIDTH_OFFS);
+
+       big = be64dec(trbase + BPLIST_TRAILER_OFFTAB_OFFS);
+       if (big > UINT_MAX)
+               return (NULL);
+       ic.bi_offtab_offset = (u_int)big;
+
+       big = be64dec(trbase + BPLIST_TRAILER_OBJCNT_OFFS);
+       if (big > UINT_MAX)
+               return (NULL);
+       ic.bi_object_count = (u_int)big;
+
+       big = be64dec(trbase + BPLIST_TRAILER_OBJTOP_OFFS);
+       if (big > UINT_MAX)
+               return (NULL);
+       ic.bi_object_first = (u_int)big;
+
+#if 0
+       warnx("bi_offtab_width  %u", ic.bi_offtab_width);
+       warnx("bi_objref_width  %u", ic.bi_objref_width);
+       warnx("bi_offtab_offset 0x%x", ic.bi_offtab_offset);
+       warnx("bi_object_count  %u", ic.bi_object_count);
+       warnx("bi_object_first  %u", ic.bi_object_first);
+#endif
+
+       /* Sanity check the trailer. */
+       if (ic.bi_offtab_width == 0 || ic.bi_offtab_width > sizeof(u_int))
+               return (NULL);
+
+       if (ic.bi_objref_width == 0 || ic.bi_objref_width > sizeof(u_int))
+               return (NULL);
+
+       if (ic.bi_offtab_offset >= (len - BPLIST_TRAILER_LEN) ||
+           ic.bi_offtab_offset <= BPLIST_HEADER_LEN)
+               return (NULL);
+
+       if (ic.bi_object_count > (len - ic.bi_offtab_offset -
+           BPLIST_TRAILER_LEN)/ic.bi_offtab_width)
+               return (NULL);
+
+       if (ic.bi_object_first >= ic.bi_object_count)
+               return (NULL);
+
+       /* Setup remaining internalizer context. */
+       ic.bi_offtab = (data + ic.bi_offtab_offset);
+       ic.bi_buffer = data;
+       ic.bi_length = len;
+
+       /* Check toplevel object type before we waste more time. */
+       obj = _prop_bp_object_pointer(&ic, ic.bi_object_first);
+       if (obj == NULL)
+               return (NULL);
+       val = (*obj & 0xf0);
+
+       if ((type == PROP_TYPE_DICTIONARY && val != BPLIST_TYPE_DICT) ||
+           (type == PROP_TYPE_ARRAY && val != BPLIST_TYPE_ARRAY))
+               return (NULL);
+
+       /* Initialize object table. */
+       ic.bi_objects = _PROP_MALLOC(sizeof(prop_object_t) *
+           ic.bi_object_count, M_TEMP);
+       if (ic.bi_objects == NULL)
+               return (NULL);
+       memset(ic.bi_objects, 0, sizeof(prop_object_t) * ic.bi_object_count);
+
+       /* Parse toplevel object. */
+       if (_prop_bp_decode_object(&ic, ic.bi_object_first))
+               po = ic.bi_objects[ic.bi_object_first];
+       else
+               po = NULL;
+
+       /* Release initial object references, except for toplevel one. */
+       for (i = 0; i < ic.bi_object_count; i++)
+               if (ic.bi_objects[i] != NULL && i != ic.bi_object_first)
+                       prop_object_release(ic.bi_objects[i]);
+
+       _PROP_FREE(ic.bi_objects, M_TEMP);
+       return (po);
+}
+
+/*
+ * Externalizer RB-tree comparison routines.
+ */
+
+static int
+_prop_rb_str_compare_key(const struct rb_node *node, const void *key)
+{
+       const _prop_bp_uniq_value_t uv1 = BPLIST_UNODE_TO_VALUE(node);
+       const _prop_bp_uniq_value_t uv2 = BPLIST_VOIDP_TO_VALUE(key);
+
+       if (uv1->bv_hash > uv2->bv_hash)
+               return (1);
+       else
+       if (uv1->bv_hash < uv2->bv_hash)
+               return (-1);
+
+       return (strcmp(uv1->bv_string, uv2->bv_string));
+}
+
+static int
+_prop_rb_str_compare_node(const struct rb_node *node1,
+    const struct rb_node *node2)
+{
+       const _prop_bp_uniq_value_t uv = BPLIST_UNODE_TO_VALUE(node2);
+
+       return (_prop_rb_str_compare_key(node1, uv));
+}
+
+static const struct rb_tree_ops _prop_bp_str_rbops = {
+       .rbto_compare_nodes = _prop_rb_str_compare_node,
+       .rbto_compare_key = _prop_rb_str_compare_key,
+};
+
+static int
+_prop_rb_num_compare_key(const struct rb_node *node, const void *key)
+{
+       const _prop_bp_uniq_value_t uv1 = BPLIST_UNODE_TO_VALUE(node);
+       const _prop_bp_uniq_value_t uv2 = BPLIST_VOIDP_TO_VALUE(key);
+
+       return (prop_number_compare(uv1->bv_number, uv2->bv_number));
+}
+
+static int
+_prop_rb_num_compare_node(const struct rb_node *node1,
+    const struct rb_node *node2)
+{
+       const _prop_bp_uniq_value_t uv = BPLIST_UNODE_TO_VALUE(node2);
+
+       return (_prop_rb_num_compare_key(node1, uv));
+}
+
+static const struct rb_tree_ops _prop_bp_num_rbops = {
+       .rbto_compare_nodes = _prop_rb_num_compare_node,
+       .rbto_compare_key = _prop_rb_num_compare_key,
+};
+
+/*
+ * Externalizer utility routines.
+ */
+
+static uint8_t
+_prop_bp_number_logsize(uint64_t val)
+{
+       /* Calculate log2(number of bytes to represent value). */
+       if (val & 0xffffffff00000000ULL)
+               return (3);
+       else
+       if (val & 0x00000000ffff0000ULL)
+               return (2);
+       else
+       if (val & 0x000000000000ff00ULL)
+               return (1);
+
+       return (0);
+}
+
+static u_int
+_prop_bp_number_size(uint64_t val)
+{
+       if (val <= 0x00000000000000ffULL)
+               return (1);
+       else
+       if (val <= 0x000000000000ffffULL)
+               return (2);
+       else
+       if (val <= 0x0000000000ffffffULL)
+               return (3);
+       else
+       if (val <= 0x00000000ffffffffULL)
+               return (4);
+       else
+       if (val <= 0x000000ffffffffffULL)
+               return (5);
+       else
+       if (val <= 0x0000ffffffffffffULL)
+               return (6);
+       else
+       if (val <= 0x00ffffffffffffffULL)
+               return (7);
+
+       return (8);
+}
+
+static bool
+_prop_bp_table_init(_prop_bp_table_t tab)
+{
+       size_t size;
+
+       size = (BPLIST_INCREMENT_SMALL * sizeof(struct _prop_bp_node));
+
+       tab->bt_objects = _PROP_MALLOC(size, M_TEMP);
+       if (tab->bt_objects == NULL)
+               return (false);
+
+       tab->bt_depth = BPLIST_INCREMENT_SMALL;
+       tab->bt_next = 0;
+
+       return (true);
+}
+
+static _prop_bp_extern_t
+_prop_bp_extern_init(prop_object_t po)
+{
+       _prop_bp_extern_t be;
+
+       be = _PROP_MALLOC(sizeof(struct _prop_bp_extern), M_TEMP);
+       if (be == NULL)
+               return (NULL);
+
+       /* Initialize object tables. */
+       if (! _prop_bp_table_init(&be->ec_compounds) ||
+           ! _prop_bp_table_init(&be->ec_others))
+               goto fail;
+
+       /* Invalidate singular objects references. */
+       be->ec_empty_array = UINT_MAX;
+       be->ec_empty_dict = UINT_MAX;
+       be->ec_true = UINT_MAX;
+       be->ec_false = UINT_MAX;
+
+       /* Initialize object RB-trees and lists. */
+       _prop_rb_tree_init(&be->ec_str_tree, &_prop_bp_str_rbops);
+       _prop_rb_tree_init(&be->ec_num_tree, &_prop_bp_num_rbops);
+
+       SLIST_INIT(&be->ec_str_list);
+       SLIST_INIT(&be->ec_num_list);
+
+       /* Initialize externalize buffer. */
+       be->ec_extern_buffer = _PROP_MALLOC(BPLIST_INCREMENT_LARGE, M_TEMP);
+       if (be->ec_extern_buffer == NULL)
+               goto fail;
+
+       be->ec_extern_size = BPLIST_INCREMENT_LARGE;
+       be->ec_extern_next = 0;
+
+       /* Register toplevel compound. */
+       be->ec_compounds.bt_objects[0].bo_object = po;
+       be->ec_compounds.bt_objects[0].bo_index = 0;
+       be->ec_compounds.bt_next = 1;
+
+       /* Lock toplevel compound so that it doesn't dance under our hands. */
+       if (prop_object_type(po) == PROP_TYPE_DICTIONARY)
+               _prop_dictionary_rdlock(po);
+       else
+               _prop_array_rdlock(po);
+
+       /* Toplevel compound has index 0, continue from 1 on. */
+       be->ec_index_next = 1;
+
+       return (be);
+
+ fail:
+       if (be->ec_compounds.bt_objects != NULL)
+               _PROP_FREE(be->ec_compounds.bt_objects, M_TEMP);
+       if (be->ec_others.bt_objects != NULL)
+               _PROP_FREE(be->ec_others.bt_objects, M_TEMP);
+       if (be != NULL)
+               _PROP_FREE(be, M_TEMP);
+
+       return (NULL);
+}
+
+static void
+_prop_bp_extern_free(_prop_bp_extern_t be)
+{
+       _prop_bp_uniq_node_t unode;
+       _prop_bp_table_t comptab = &be->ec_compounds;
+       u_int i;
+
+       /* Free tables of contents for compound objects. */
+       for (i = 0; i < comptab->bt_next; i++)
+               if (comptab->bt_objects[i].bo_reftab != NULL)
+                       _PROP_FREE(comptab->bt_objects[i].bo_reftab, M_TEMP);
+
+       /* Free all uniquification tables. */
+       _PROP_ASSERT(be->ec_compounds.bt_objects != NULL);
+       _PROP_FREE(be->ec_compounds.bt_objects, M_TEMP);
+
+       if (be->ec_others.bt_objects != NULL)
+               _PROP_FREE(be->ec_others.bt_objects, M_TEMP);
+
+       /* Free all uniquification lists (and thus RB nodes). */
+       while ((unode = SLIST_FIRST(&be->ec_str_list)) != NULL) {
+               SLIST_REMOVE_HEAD(&be->ec_str_list, bu_link);
+               _PROP_FREE(unode, M_TEMP);
+       }
+
+       while ((unode = SLIST_FIRST(&be->ec_num_list)) != NULL) {
+               SLIST_REMOVE_HEAD(&be->ec_num_list, bu_link);
+               _PROP_FREE(unode, M_TEMP);
+       }
+
+       /* Externalize buffer managed by caller. */
+       _PROP_FREE(be, M_TEMP);
+}
+
+static uint8_t *
+_prop_bp_ensure_capacity(_prop_bp_extern_t be, u_int size)
+{
+       uint8_t *start;
+       u_int newsize;
+       void *p;
+
+ retry:
+       if ((be->ec_extern_next + size) < be->ec_extern_size) {
+               start = &be->ec_extern_buffer[be->ec_extern_next];
+               be->ec_extern_next += size;
+
+               return (start);
+       }
+
+       newsize = (be->ec_extern_size + size);
+       newsize = _PROP_ROUNDUP(newsize, BPLIST_INCREMENT_LARGE);
+
+       /* Fail if we've gone insanely large (integer overflow). */
+       if (newsize < be->ec_extern_size)
+               return (NULL);
+
+       p = _PROP_REALLOC(be->ec_extern_buffer, newsize, M_TEMP);
+       if (p == NULL)
+               return (NULL);
+
+       be->ec_extern_buffer = p;
+       be->ec_extern_size = newsize;
+
+       /* We'll definitely make it this time. */
+       goto retry;
+}
+
+static uint32_t
+_prop_bp_hash32_string(const char *cstring)
+{
+       /* XXXfreza cut'n'paste from <sys/hash.h> */
+       const uint8_t *s = (const uint8_t *)cstring;
+       uint32_t hash = 5381;
+       uint8_t c;
+
+       while ((c = *s++) != 0)
+               hash = hash * 33 + c;           /* "perl": k=33, r=r+r/32 */
+
+       return (hash + (hash >> 5));
+}
+
+/*
+ * Externalizer object uniquifying process.
+ */
+
+static u_int
+_prop_bp_put_uniq(_prop_bp_extern_t be, struct rb_tree *tree,
+    _prop_bp_uniq_list_t list, _prop_bp_uniq_value_t uvp)
+{
+       _prop_bp_uniq_node_t unode;
+       struct rb_node *node;
+
+       /* Nothing to do if it's already there. */
+       node = _prop_rb_tree_find(tree, uvp);
+       if (node != NULL)
+               return (BPLIST_UNODE_TO_INDEX(node));
+
+       /* Create and insert a new unique object. */
+       unode = _PROP_MALLOC(sizeof(struct _prop_bp_uniq_node), M_TEMP);
+       if (unode == NULL)
+               return (UINT_MAX);
+
+       unode->bu_value = (*uvp); /* struct copy */
+       unode->bu_index = (be->ec_index_next++);
+
+       _prop_rb_tree_insert_node(tree, &unode->bu_rb);
+       SLIST_INSERT_HEAD(list, unode, bu_link);
+
+       return (unode->bu_index);
+}
+
+static u_int
+_prop_bp_put_table(_prop_bp_extern_t be, _prop_bp_table_t tab,
+    prop_object_t po)
+{
+       _prop_bp_object_t bo;
+       u_int count;
+       u_int size;
+       void *p;
+
+ retry:
+       if (tab->bt_next < tab->bt_depth) {
+               bo = &tab->bt_objects[tab->bt_next];
+               bo->bo_object = po;
+               bo->bo_index = (be->ec_index_next++);
+
+               tab->bt_next += 1;
+               return (bo->bo_index);
+       }
+
+       count = (tab->bt_depth + BPLIST_INCREMENT_SMALL);
+       size = (count * sizeof(struct _prop_bp_node));
+       p = _PROP_REALLOC(tab->bt_objects, size, M_TEMP);
+       if (p == NULL)
+               return (UINT_MAX);
+
+       tab->bt_objects = p;
+       tab->bt_depth = count;
+
+       /* We'll definitely make it this time. */
+       goto retry;
+}
+
+static bool
+_prop_bp_uniquify(_prop_bp_extern_t be, _prop_bp_object_t bo,
+    prop_object_t po, u_int np)
+{
+       union _prop_bp_uniq_value uv;
+       u_int n = UINT_MAX; /* gcc */
+       bool yesno;
+       bool empty;
+
+       switch (prop_object_type(po)) {
+       case PROP_TYPE_STRING:
+               uv.bv_string = prop_string_cstring_nocopy(po);
+               uv.bv_hash = _prop_bp_hash32_string(uv.bv_string);
+
+               n = _prop_bp_put_uniq(be, &be->ec_str_tree, &be->ec_str_list,
+                   &uv);
+               break;
+
+       case PROP_TYPE_DICT_KEYSYM:
+               uv.bv_string = prop_dictionary_keysym_cstring_nocopy(po);
+               uv.bv_hash = _prop_bp_hash32_string(uv.bv_string);
+
+               n = _prop_bp_put_uniq(be, &be->ec_str_tree, &be->ec_str_list,
+                   &uv);
+               break;
+
+       case PROP_TYPE_NUMBER:
+               uv.bv_number = po;
+               n = _prop_bp_put_uniq(be, &be->ec_num_tree, &be->ec_num_list,
+                   &uv);
+               break;
+
+       case PROP_TYPE_DICTIONARY:
+               /* Make sure dict doesn't mutate or die under our hands. */
+               _prop_dictionary_rdlock(po);
+
+               empty = (prop_dictionary_count(po) == 0);
+               if (empty && be->ec_empty_dict != UINT_MAX) {
+                       n = be->ec_empty_dict;
+                       break;
+               }
+
+               n = _prop_bp_put_table(be, &be->ec_compounds, po);
+               if (n == UINT_MAX)
+                       _prop_dictionary_unlock(po);
+
+               if (empty)
+                       be->ec_empty_dict = n;
+               break;
+
+       case PROP_TYPE_ARRAY:
+               /* Make sure array doesn't mutate or die under our hands. */
+               _prop_array_rdlock(po);
+
+               empty = (prop_array_count(po) == 0);
+               if (empty && be->ec_empty_array != UINT_MAX) {
+                       n = be->ec_empty_array;
+                       break;
+               }
+
+               n = _prop_bp_put_table(be, &be->ec_compounds, po);
+               if (n == UINT_MAX)
+                       _prop_array_unlock(po);
+
+               if (empty)
+                       be->ec_empty_array = n;
+               break;
+
+       case PROP_TYPE_BOOL:
+               yesno = prop_bool_true(po);
+
+               if (be->ec_true != UINT_MAX && yesno) {
+                       n = be->ec_true;
+                       break;
+               }
+               if (be->ec_false != UINT_MAX && !yesno) {
+                       n = be->ec_false;
+                       break;
+               }
+
+               n = _prop_bp_put_table(be, &be->ec_others, po);
+
+               if (yesno)
+                       be->ec_true = n;
+               else
+                       be->ec_false = n;
+               break;
+
+       case PROP_TYPE_DATA:
+               n = _prop_bp_put_table(be, &be->ec_others, po);
+               break;
+
+       case PROP_TYPE_UNKNOWN:
+               /* gcc */
+               break;
+       }
+
+       if (n == UINT_MAX)
+               return (false);
+
+       bo->bo_reftab[np] = n;
+       return (true);
+}
+
+/*
+ * Externalizer encoder utility routines.
+ */
+
+static uint8_t *
+_prop_bp_write_byte(uint8_t *obj, uint8_t val)
+{
+       *obj = val;
+
+       return (obj + 1);
+}
+
+static uint8_t *
+_prop_bp_write_number(uint8_t *obj, u_int val)
+{
+       uint8_t lo = _prop_bp_number_logsize(val);
+       int i;
+
+       /* Write object tag. */
+       obj = _prop_bp_write_byte(obj, BPLIST_TYPE_UINT | lo);
+
+       /* Write big-endian value. */
+       for (i = 8*((1 << lo) - 1); i >= 0; i -= 8)
+               obj = _prop_bp_write_byte(obj, val >> i);
+
+       return (obj);
+}
+
+static uint8_t *
+_prop_bp_write_reference(_prop_bp_extern_t be, uint8_t *obj, u_int val)
+{
+       int i;
+
+       _PROP_ASSERT(val < be->ec_index_next);
+
+       /* Write big-endian value. */
+       for (i = 8*(be->ec_objref_width - 1); i >= 0; i -= 8)
+               obj = _prop_bp_write_byte(obj, val >> i);
+
+       return (obj);
+}
+
+static void
+_prop_bp_write_offset(_prop_bp_extern_t be, uint8_t *offtab,
+    u_int idx, u_int offs)
+{
+       uint8_t *obj = (offtab + idx * be->ec_offtab_width);
+       int i;
+
+       /* Write big-endian value. */
+       for (i = 8*(be->ec_offtab_width - 1); i >= 0; i -= 8)
+               obj = _prop_bp_write_byte(obj, offs >> i);
+}
+
+static bool
+_prop_bp_write_offtab(_prop_bp_extern_t be)
+{
+       _prop_bp_uniq_node_t uo;
+       _prop_bp_object_t bo;
+       uint8_t *offtab;
+       u_int size = (be->ec_offtab_width * be->ec_index_next);
+       u_int i;
+
+       offtab = _prop_bp_ensure_capacity(be, size);
+       if (offtab == NULL)
+               return (false);
+
+       for (i = 0; i < be->ec_compounds.bt_next; i++) {
+               bo = &be->ec_compounds.bt_objects[i];
+
+               _prop_bp_write_offset(be, offtab, bo->bo_index, bo->bo_offset);
+       }
+
+       for (i = 0; i < be->ec_others.bt_next; i++) {
+               bo = &be->ec_others.bt_objects[i];
+
+               _prop_bp_write_offset(be, offtab, bo->bo_index, bo->bo_offset);
+       }
+
+       SLIST_FOREACH(uo, &be->ec_num_list, bu_link)
+               _prop_bp_write_offset(be, offtab, uo->bu_index, uo->bu_offset);
+
+       SLIST_FOREACH(uo, &be->ec_str_list, bu_link)
+               _prop_bp_write_offset(be, offtab, uo->bu_index, uo->bu_offset);
+
+       return (true);
+}
+
+static uint8_t *
+_prop_bp_write_wide(uint8_t *obj, u_int val)
+{
+       be64enc(obj, val);
+
+       return (obj + 8);
+}
+
+static bool
+_prop_bp_write_trailer(_prop_bp_extern_t be)
+{
+       uint8_t *trailer;
+
+       trailer = _prop_bp_ensure_capacity(be, BPLIST_TRAILER_LEN);
+       if (trailer == NULL)
+               return (false);
+
+       /* Write trailer, note we always have toplevel object at index 0. */
+       trailer = _prop_bp_write_byte(trailer, be->ec_offtab_width);
+       trailer = _prop_bp_write_byte(trailer, be->ec_objref_width);
+       trailer = _prop_bp_write_wide(trailer, be->ec_index_next);
+       trailer = _prop_bp_write_wide(trailer, 0);
+       trailer = _prop_bp_write_wide(trailer, be->ec_offtab_start);
+
+       return (true);
+}
+
+/*
+ * Externalize object encoders.
+ */
+
+static uint8_t *
+_prop_bp_encode_bool(_prop_bp_extern_t be, prop_bool_t pb)
+{
+       uint8_t *obj;
+
+       obj = _prop_bp_ensure_capacity(be, 1);
+       if (obj == NULL)
+               return (false);
+
+       if (prop_bool_true(pb))
+               obj = _prop_bp_write_byte(obj, BPLIST_MULTI_TRUE);
+       else
+               obj = _prop_bp_write_byte(obj, BPLIST_MULTI_FALSE);
+
+       return (obj);
+}
+
+static uint8_t *
+_prop_bp_encode_number(_prop_bp_extern_t be, _prop_bp_uniq_value_t uv)
+{
+       uint64_t big;
+       uint8_t *obj;
+       uint8_t tag;
+       uint8_t low;
+       int i;
+
+       if (prop_number_unsigned(uv->bv_number)) {
+               big = prop_number_unsigned_integer_value(uv->bv_number);
+               low = _prop_bp_number_logsize(big);
+               tag = (low | BPLIST_TYPE_UINT);
+       } else {
+               big = prop_number_integer_value(uv->bv_number);
+               low = _prop_bp_number_logsize(big);
+               tag = (low | BPLIST_TYPE_SINT);
+       }
+
+       obj = _prop_bp_ensure_capacity(be, BPLIST_NUMBER_MAXLEN);
+       if (obj == NULL)
+               return (NULL);
+
+       /* Write object tag. */
+       obj = _prop_bp_write_byte(obj, tag);
+
+       /* Write big-endian value. */
+       for (i = 8*((1 << low) - 1); i >= 0; i -= 8)
+               obj = _prop_bp_write_byte(obj, (uint8_t)(big >> i));
+
+       return (obj);
+}
+
+static uint8_t *
+_prop_bp_encode_data(_prop_bp_extern_t be, prop_data_t pd)
+{
+       uint8_t *obj;
+       size_t size = prop_data_size(pd);
+       uint8_t lo;
+
+       if (size < BPLIST_COUNT_MANY)
+               lo = size;
+       else
+               lo = BPLIST_COUNT_MANY;
+
+       obj = _prop_bp_ensure_capacity(be, 1 + BPLIST_NUMBER_MAXLEN + size);
+       if (obj == NULL)
+               return (NULL);
+
+       /* Write type tag. */
+       obj = _prop_bp_write_byte(obj, BPLIST_TYPE_DATA | lo);
+
+       /* Possibly followed by integer size. */
+       if (lo == BPLIST_COUNT_MANY)
+               obj = _prop_bp_write_number(obj, size);
+
+       /* Write byte array. */
+       memcpy(obj, prop_data_data_nocopy(pd), size);
+       return (obj + size);
+}
+
+static uint8_t *
+_prop_bp_encode_string(_prop_bp_extern_t be, _prop_bp_uniq_value_t uv)
+{
+       uint8_t *obj;
+       size_t size = strlen(uv->bv_string);
+       uint8_t lo;
+
+       if (size < BPLIST_COUNT_MANY)
+               lo = size;
+       else
+               lo = BPLIST_COUNT_MANY;
+
+       obj = _prop_bp_ensure_capacity(be, 1 + BPLIST_NUMBER_MAXLEN + size);
+       if (obj == NULL)
+               return (NULL);
+
+       /* Write type tag. */
+       obj = _prop_bp_write_byte(obj, BPLIST_TYPE_ASCII | lo);
+
+       /* Possibly followed by integer size. */
+       if (lo == BPLIST_COUNT_MANY)
+               obj = _prop_bp_write_number(obj, size);
+
+       /* Write character array. */
+       memcpy(obj, uv->bv_string, size);
+       return (obj + size);
+}
+
+static uint8_t *
+_prop_bp_encode_array(_prop_bp_extern_t be, _prop_bp_object_t bo)
+{
+       prop_array_t pa = bo->bo_object;
+       uint8_t *obj;
+       uint8_t lo;
+       u_int count;
+       u_int i;
+
+       count = prop_array_count(pa);
+       if (count < BPLIST_COUNT_MANY)
+               lo = count;
+       else
+               lo = BPLIST_COUNT_MANY;
+
+       obj = _prop_bp_ensure_capacity(be, 1 + BPLIST_NUMBER_MAXLEN +
+           count * be->ec_objref_width);
+       if (obj == NULL)
+               return (NULL);
+
+       /* Write type tag. */
+       obj = _prop_bp_write_byte(obj, BPLIST_TYPE_ARRAY | lo);
+
+       /* For empty array, we're done. */
+       if (count == 0)
+               return (obj);
+
+       /* Possibly followed by integer count. */
+       if (lo == BPLIST_COUNT_MANY)
+               obj = _prop_bp_write_number(obj, count);
+
+       /* Write object reference table. */
+       for (i = 0; i < count; i++)
+               obj = _prop_bp_write_reference(be, obj, bo->bo_reftab[i]);
+
+       return (obj);
+}
+
+static uint8_t *
+_prop_bp_encode_dict(_prop_bp_extern_t be, _prop_bp_object_t bo)
+{
+       prop_dictionary_t pd = bo->bo_object;
+       uint8_t *obj;
+       uint8_t lo;
+       u_int count;
+       u_int i;
+
+       count = prop_dictionary_count(pd);
+       if (count < BPLIST_COUNT_MANY)
+               lo = count;
+       else
+               lo = BPLIST_COUNT_MANY;
+
+       obj = _prop_bp_ensure_capacity(be, 1 + BPLIST_NUMBER_MAXLEN +
+           2 * count * be->ec_objref_width);
+       if (obj == NULL)
+               return (NULL);
+
+       /* Write type tag. */
+       obj = _prop_bp_write_byte(obj, BPLIST_TYPE_DICT | lo);
+
+       /* For empty dictionary, we're done. */
+       if (count == 0)
+               return (obj);
+
+       /* Possibly followed by integer count. */
+       if (lo == BPLIST_COUNT_MANY)
+               obj = _prop_bp_write_number(obj, count);
+
+       /* Write out <keyref, objref> pairs. */
+       count *= 2;
+       for (i = 0; i < count; i += 2) {
+               obj = _prop_bp_write_reference(be, obj, bo->bo_reftab[i]);
+               obj = _prop_bp_write_reference(be, obj, bo->bo_reftab[i + 1]);
+       }
+
+       return (obj);
+}
+
+static bool
+_prop_bp_encode(_prop_bp_extern_t be)
+{
+       _prop_bp_uniq_node_t uo;
+       _prop_bp_object_t bo;
+       prop_object_t po;
+       uint8_t *end;
+       u_int i;
+
+       /* Encode all arrays and dicts. */
+       for (i = 0; i < be->ec_compounds.bt_next; i++) {
+               bo = &be->ec_compounds.bt_objects[i];
+
+               /* Remember offset where object starts. */
+               bo->bo_offset = be->ec_extern_next;
+
+               if (prop_object_type(bo->bo_object) == PROP_TYPE_ARRAY)
+                       end = _prop_bp_encode_array(be, bo);
+               else
+                       end = _prop_bp_encode_dict(be, bo);
+               if (end == NULL)
+                       return (false);
+
+               /* Adjust to real encoding length. */
+               be->ec_extern_next = (end - be->ec_extern_buffer);
+       }
+
+       /* Encode all booleans and data. */
+       for (i = 0; i < be->ec_others.bt_next; i++) {
+               bo = &be->ec_others.bt_objects[i];
+               po = bo->bo_object;
+
+               /* Remember offset where object starts. */
+               bo->bo_offset = be->ec_extern_next;
+
+               if (prop_object_type(po) == PROP_TYPE_BOOL)
+                       end = _prop_bp_encode_bool(be, po);
+               else
+                       end = _prop_bp_encode_data(be, po);
+               if (end == NULL)
+                       return (false);
+
+               /* Adjust to real encoding length. */
+               be->ec_extern_next = (end - be->ec_extern_buffer);
+       }
+
+       /* Encode all numbers. */
+       SLIST_FOREACH(uo, &be->ec_num_list, bu_link) {
+               /* Remember offset where object starts. */
+               uo->bu_offset = be->ec_extern_next;
+
+               end = _prop_bp_encode_number(be, &uo->bu_value);
+               if (end == NULL)
+                       return (false);
+
+               /* Adjust to real encoding length. */
+               be->ec_extern_next = (end - be->ec_extern_buffer);
+       }
+
+       /* Encode all strings. */
+       SLIST_FOREACH(uo, &be->ec_str_list, bu_link) {
+               /* Remember offset where object starts. */
+               uo->bu_offset = be->ec_extern_next;
+
+               end = _prop_bp_encode_string(be, &uo->bu_value);
+               if (end == NULL)
+                       return (false);
+
+               /* Adjust to real encoding length. */
+               be->ec_extern_next = (end - be->ec_extern_buffer);
+       }
+
+       return (true);
+}
+
+/*
+ * Externalizer toplevel routines.
+ */
+
+static void
+_prop_bp_unlock_compounds(_prop_bp_table_t compounds)
+{
+       prop_object_t compound;
+       u_int i;
+
+       /* Unlock all compounds, in reverse order (Note 'i' unsigned). */
+       for (i = compounds->bt_next; i > 0; i--) {
+               compound = compounds->bt_objects[i - 1].bo_object;
+
+               if (prop_object_type(compound) == PROP_TYPE_DICTIONARY)
+                       _prop_dictionary_unlock(compound);
+               else
+                       _prop_array_unlock(compound);
+       }
+}
+
+static bool
+_prop_bp_unpack_array(_prop_bp_extern_t be, _prop_bp_object_t bo,
+    prop_array_t pa)
+{
+       prop_object_iterator_t it;
+       prop_object_t po;
+       size_t size;
+       u_int count;
+       u_int j;
+
+       count = prop_array_count(pa);
+       if (count > 0) {
+               size = (count * sizeof(u_int));
+
+               bo->bo_reftab = _PROP_MALLOC(size, M_TEMP);
+               if (bo->bo_reftab == NULL)
+                       return (false);
+       } else {
+               bo->bo_reftab = NULL;
+               return (true);
+       }
+
+       it = prop_array_iterator(pa);
+       if (it == NULL) {
+               _prop_array_unlock(pa);
+               return (false);
+       }
+       j = 0;
+
+       /* Register contents, possibly mutating compounds' bt_next. */
+       while ((po = prop_object_iterator_next(it)) != NULL)
+               if (! _prop_bp_uniquify(be, bo, po, j++)) {
+                       prop_object_iterator_release(it);
+                       _prop_array_unlock(pa);
+                       return (false);
+               }
+
+       prop_object_iterator_release(it);
+       return (true);
+}
+
+static bool
+_prop_bp_unpack_dict(_prop_bp_extern_t be, _prop_bp_object_t bo,
+    prop_dictionary_t pd)
+{
+       prop_object_iterator_t it;
+       prop_object_t po;
+       size_t size;
+       u_int count;
+       u_int j;
+
+       count = (2 * prop_dictionary_count(pd));
+       if (count > 0) {
+               size = (count * sizeof(u_int));
+               bo->bo_reftab = _PROP_MALLOC(size, M_TEMP);
+               if (bo->bo_reftab == NULL)
+                       return (false);
+       } else {
+               bo->bo_reftab = NULL;
+               return (true);
+       }
+
+       it = prop_dictionary_iterator(pd);
+       if (it == NULL) {
+               _prop_dictionary_unlock(pd);
+               return (false);
+       }
+       j = 0;
+
+       /* Register contents, possibly mutating compounds' bt_next. */
+       while ((po = prop_object_iterator_next(it)) != NULL) {
+               /* Store keysym at odd index. */
+               if (! _prop_bp_uniquify(be, bo, po, j++)) {
+                       prop_object_iterator_release(it);
+                       _prop_dictionary_unlock(pd);
+                       return (false);
+               }
+
+               /* Store keysym's value at even index. */
+               po = prop_dictionary_get_keysym(pd, po);
+
+               if (! _prop_bp_uniquify(be, bo, po, j++)) {
+                       prop_object_iterator_release(it);
+                       _prop_dictionary_unlock(pd);
+                       return (false);
+               }
+       }
+
+       prop_object_iterator_release(it);
+       return (true);
+}
+
+static bool
+_prop_bp_externalize(_prop_bp_extern_t be)
+{
+       _prop_bp_object_t bo;
+       prop_object_t po;
+       u_int i;
+       bool ok;
+
+       /* Build object tables, obtaining readlock on any compound. */
+       for (i = 0; i < be->ec_compounds.bt_next; i++) {
+               bo = &be->ec_compounds.bt_objects[i];
+               po = bo->bo_object;
+
+               if (prop_object_type(po) == PROP_TYPE_DICTIONARY) {
+                       _prop_dictionary_rdlock(po);
+                       ok = _prop_bp_unpack_dict(be, bo, po);
+               } else {
+                       _prop_array_rdlock(po);
+                       ok = _prop_bp_unpack_array(be, bo, po);
+               }
+               if (! ok) {
+                       _prop_bp_unlock_compounds(&be->ec_compounds);
+                       return (false);
+               }
+       }
+
+       /* Calculate object reference width. */
+       be->ec_objref_width = _prop_bp_number_size(be->ec_index_next);
+
+       /* Encode header. */
+       memcpy(be->ec_extern_buffer, "bplistZZ", BPLIST_HEADER_LEN);
+       be->ec_extern_next = BPLIST_HEADER_LEN;
+
+       _PROP_ASSERT(be);
+       /* Encode object table, fills object offsets. */
+       if (! _prop_bp_encode(be)) {
+               _prop_bp_unlock_compounds(&be->ec_compounds);
+               return (false);
+       }
+
+       /* We won't touch objects any more, release locks. */
+       _prop_bp_unlock_compounds(&be->ec_compounds);
+
+       /* Calculate offset table width. */
+       be->ec_offtab_width = _prop_bp_number_size(be->ec_extern_next);
+
+       /* Emit offset table. */
+       be->ec_offtab_start = be->ec_extern_next;
+
+       if (! _prop_bp_write_offtab(be))
+               return (false);
+
+       /* Emit trailer structure. */
+       if (! _prop_bp_write_trailer(be))
+               return (false);
+
+       return (true);
+}
+
+/*
+ * Internal API to encoding dispatcher.
+ */
+
+bool
+_prop_bp_externalize_object(prop_object_t po, prop_type_t type, uint8_t **dp,
+    size_t *lp)
+{
+       _prop_bp_extern_t be;
+       bool rv;
+
+       if (prop_object_type(po) != type || dp == NULL || lp == NULL)
+               return (false);
+
+       be = _prop_bp_extern_init(po);
+       if (be == NULL)
+               return (false);
+
+       rv = _prop_bp_externalize(be);
+       if (rv) {
+               *dp = be->ec_extern_buffer;
+               *lp = be->ec_extern_next;
+       } else {
+               _PROP_FREE(be->ec_extern_buffer, M_TEMP);
+       }
+
+       _prop_bp_extern_free(be);
+       return (rv);
+}
Index: common/lib/libprop/prop_dictionary.3
===================================================================
RCS file: /cvsroot/src/common/lib/libprop/prop_dictionary.3,v
retrieving revision 1.9
diff -d -p -u -u -r1.9 prop_dictionary.3
--- common/lib/libprop/prop_dictionary.3        11 Oct 2007 03:10:28 -0000      1.9
+++ common/lib/libprop/prop_dictionary.3        27 Oct 2007 15:47:15 -0000
@@ -57,8 +57,9 @@
.Nm prop_dictionary_set_keysym ,
.Nm prop_dictionary_remove_keysym ,
.Nm prop_dictionary_externalize ,
+.Nm prop_dictionary_externalize_with_encoding ,
.Nm prop_dictionary_internalize ,
-.Nm prop_dictionary_externalize_to_file ,
+.Nm prop_dictionary_externalize_to_file_with_encoding ,
.Nm prop_dictionary_internalize_from_file ,
.Nm prop_dictionary_equals ,
.Nm prop_dictionary_keysym_cstring_nocopy ,
@@ -68,7 +69,6 @@
.Lb libprop
.Sh SYNOPSIS
.In prop/proplib.h
-.\"
.Ft prop_dictionary_t
.Fn prop_dictionary_create "void"
.Ft prop_dictionary_t
@@ -127,12 +127,18 @@
.\"
.Ft char *
.Fn prop_dictionary_externalize "prop_dictionary_t dict"
+.Ft bool
+.Fn prop_dictionary_externalize_with_encoding "prop_dictionary_t dict" \
+    "uint8_t **bufp" "size_t *len" "prop_encoding_t enc"
.Ft prop_dictionary_t
-.Fn prop_dictionary_internalize "const char *xml"
+.Fn prop_dictionary_internalize "const uint8_t *buf" "size_t len"
.\"
.Ft bool
.Fn prop_dictionary_externalize_to_file "prop_dictionary_t dict" \
    "const char *path"
+.Ft bool
+.Fn prop_dictionary_externalize_to_file_with_encoding "prop_dictionary_t dict" \
+    "const char *path" "prop_encoding_t enc"
.Ft prop_dictionary_t
.Fn prop_dictionary_internalize_from_file "const char *path"
.\"
@@ -282,17 +288,42 @@ In the kernel, the buffer is allocated u
.Xr malloc 9
using the malloc type
.Dv M_TEMP .
-.It Fn prop_dictionary_internalize "const char *xml"
-Parse the XML representation of a property list in the NUL-terminated
-buffer
-.Fa xml
+.It Fn prop_dictionary_externalize_with_encoding "prop_dictionary_t dict" \
+    "uint8_t **bufp" "size_t *lenp" "prop_encoding_t enc"
+Externalize
+.Fa dict
+using encoding
+.Fa enc .
+Returs
+.Dv true
+on success, in which case
+.Fa bufp
+and
+.Fa lenp
+arguments are filled with buffer address and length. On failure,
+.Dv false
+is returned and arguments are not modified.
+.Pp
+In user space, the buffer is allocated using
+.Xr malloc 3 .
+In the kernel, the buffer is allocated using
+.Xr malloc 9
+using the malloc type
+.Dv M_TEMP .
+The user is responsible for freeing the buffer.
+.It Fn prop_dictionary_internalize "const uint8_t *buf" "size_t len"
+Parse any supported representation of a property list in buffer
+.Fa buf
+of length
+.Fa len
and return the corresponding dictionary.
Returns
.Dv NULL
if parsing fails for any reason.
.It Fn prop_dictionary_externalize_to_file "prop_dictionary_t dict" \
    "const char *path"
-Externalizes a dictionary and writes it to the file specified by
+Externalizes a dictionary in default encoding and writes it to the file
+specified by
.Fa path .
The file is saved with the mode
.Dv 0666
@@ -302,10 +333,19 @@ and is written atomically.
Returns
.Dv false
if externalizing or writing the dictionary fails for any reason.
+.It Fn prop_dictionary_externalize_to_file_with_encoding \
+    "prop_dictionary_t dict" "const char *path" "prop_encoding_t enc"
+Like
+.Xr prop_dictionary_externalize_to_file 3
+but uses encoding
+.Fa enc .
.It Fn prop_dictionary_internalize_from_file "const char *path"
-Reads the XML property list contained in the file specified by
+Reads any supported encoding of property list contained in the file specified
+by
.Fa path ,
-internalizes it, and returns the corresponding array.
+internalizes it, and returns the corresponding dictionary. Returns
+.Dv NULL
+if reading or parsing fails for any reason.
.El
.Sh SEE ALSO
.Xr prop_array 3 ,
Index: common/lib/libprop/prop_dictionary.c
===================================================================
RCS file: /cvsroot/src/common/lib/libprop/prop_dictionary.c,v
retrieving revision 1.20
diff -d -p -u -u -r1.20 prop_dictionary.c
--- common/lib/libprop/prop_dictionary.c        30 Aug 2007 12:23:54 -0000      1.20
+++ common/lib/libprop/prop_dictionary.c        27 Oct 2007 15:47:16 -0000
@@ -158,6 +158,28 @@ struct _prop_dictionary_iterator {
       unsigned int            pdi_index;
};

+void
+_prop_dictionary_rdlock(prop_object_t po)
+{
+#if !defined(_STANDALONE)
+       prop_dictionary_t pd = po;
+
+       _PROP_ASSERT(prop_object_is_dictionary(pd));
+       _PROP_RWLOCK_RDLOCK(pd->pd_rwlock);
+#endif
+}
+
+void
+_prop_dictionary_unlock(prop_object_t po)
+{
+#if !defined(_STANDALONE)
+       prop_dictionary_t pd = po;
+
+       _PROP_ASSERT(prop_object_is_dictionary(pd));
+       _PROP_RWLOCK_UNLOCK(pd->pd_rwlock);
+#endif
+}
+
/*
 * Dictionary key symbols are immutable, and we are likely to have many
 * duplicated key symbols.  So, to save memory, we unique'ify key symbols
@@ -1100,21 +1122,15 @@ prop_dictionary_keysym_equals(prop_dicti
       return (prop_object_equals(pdk1, pdk2));
}

-/*
- * prop_dictionary_externalize --
- *     Externalize a dictionary, returning a NUL-terminated buffer
- *     containing the XML-style representation.  The buffer is allocated
- *     with the M_TEMP memory type.
- */
-char *
-prop_dictionary_externalize(prop_dictionary_t pd)
+static bool
+_prop_dictionary_xml_externalize(prop_dictionary_t pd, uint8_t **bufp,
+    size_t *lenp)
{
       struct _prop_object_externalize_context *ctx;
-       char *cp;

       ctx = _prop_object_externalize_context_alloc();
       if (ctx == NULL)
-               return (NULL);
+               return (false);

       if (_prop_object_externalize_header(ctx) == false ||
           (*pd->pd_obj.po_type->pot_extern)(ctx, pd) == false ||
@@ -1122,13 +1138,61 @@ prop_dictionary_externalize(prop_diction
               /* We are responsible for releasing the buffer. */
               _PROP_FREE(ctx->poec_buf, M_TEMP);
               _prop_object_externalize_context_free(ctx);
-               return (NULL);
+               return (false);
       }

-       cp = ctx->poec_buf;
+       *bufp = (uint8_t *)ctx->poec_buf;
+       *lenp = ctx->poec_len;
       _prop_object_externalize_context_free(ctx);

-       return (cp);
+       return (true);
+}
+
+/*
+ * prop_dictionary_externalize --
+ *     Like prop_dictionary_externalize_with_encoding(), using XML.
+ */
+char *
+prop_dictionary_externalize(prop_dictionary_t pd)
+{
+       uint8_t *buf;
+       size_t len;
+
+       if (! prop_dictionary_externalize_with_encoding(pd, &buf, &len,
+           PROP_ENCODING_XML))
+               return (NULL);
+
+       return ((char *)buf);
+}
+
+/*
+ * prop_dictionary_externalize_with_encoding --
+ *     Externalize a dictionary, on success return true and fill buffer
+ *     pointer and length arguments; on failure return false and don't
+ *     modify arguments. The buffer is allocated with the M_TEMP memory
+ *     type.
+ */
+bool
+prop_dictionary_externalize_with_encoding(prop_dictionary_t pd, uint8_t **bufp,
+    size_t *lenp, prop_encoding_t enc)
+{
+       _PROP_ASSERT(bufp != NULL && lenp != NULL);
+
+       if (! prop_object_is_dictionary(pd))
+               return (false);
+
+       switch (enc) {
+       case PROP_ENCODING_BINARY:
+               return (_prop_bp_externalize_object(pd, PROP_TYPE_DICTIONARY,
+                   bufp, lenp));
+
+       case PROP_ENCODING_DEFAULT:
+       case PROP_ENCODING_XML:
+               return (_prop_dictionary_xml_externalize(pd, bufp, lenp));
+       }
+
+       /* LINTED silly gcc */
+       return (false);
}

/*
@@ -1267,40 +1331,62 @@ _prop_dictionary_internalize_body(prop_s

/*
 * prop_dictionary_internalize --
- *     Create a dictionary by parsing the NUL-terminated XML-style
- *     representation.
+ *     Create a dictionary by decoding any supported representation.
 */
prop_dictionary_t
-prop_dictionary_internalize(const char *xml)
+prop_dictionary_internalize(const uint8_t *buf, size_t len)
{
-       return _prop_generic_internalize(xml, "dict");
+       _PROP_ASSERT(buf != NULL && len > 0);
+
+       switch (buf[0]) {
+       case '<':
+               return (_prop_generic_internalize((const char *)buf, "dict"));
+
+       case 'b':
+               return (_prop_bp_internalize(buf, len, PROP_TYPE_DICTIONARY));
+       }
+
+       return (NULL);
}

#if !defined(_KERNEL) && !defined(_STANDALONE)
+bool
+prop_dictionary_externalize_to_file(prop_dictionary_t dict, const char *fname)
+{
+       return (prop_dictionary_externalize_to_file_with_encoding(dict,
+           fname, PROP_ENCODING_DEFAULT));
+}
+
/*
 * prop_dictionary_externalize_to_file --
- *     Externalize a dictionary to the specified file.
+ *     Externalize a dictionary to the specified file in XML format.
 */
bool
-prop_dictionary_externalize_to_file(prop_dictionary_t dict, const char *fname)
+prop_dictionary_externalize_to_file_with_encoding(prop_dictionary_t dict,
+    const char *fname, prop_encoding_t enc)
{
-       char *xml;
+       uint8_t *buf;
+       size_t len;
       bool rv;
       int save_errno = 0;     /* XXXGCC -Wuninitialized [mips, ...] */

-       xml = prop_dictionary_externalize(dict);
-       if (xml == NULL)
+       if (! prop_dictionary_externalize_with_encoding(dict, &buf, &len,
+           enc)) {
+               errno = EINVAL;
               return (false);
-       rv = _prop_object_externalize_write_file(fname, xml, strlen(xml));
+       }
+
+       rv = _prop_object_externalize_write_file(fname, buf, len);
       if (rv == false)
               save_errno = errno;
-       _PROP_FREE(xml, M_TEMP);
+       _PROP_FREE(buf, M_TEMP);
       if (rv == false)
               errno = save_errno;

       return (rv);
}

+
/*
 * prop_dictionary_internalize_from_file --
 *     Internalize a dictionary from a file.
@@ -1314,7 +1400,8 @@ prop_dictionary_internalize_from_file(co
       mf = _prop_object_internalize_map_file(fname);
       if (mf == NULL)
               return (NULL);
-       dict = prop_dictionary_internalize(mf->poimf_xml);
+
+       dict = prop_dictionary_internalize(mf->poimf_data, mf->poimf_datasize);
       _prop_object_internalize_unmap_file(mf);

       return (dict);
Index: common/lib/libprop/prop_kern.c
===================================================================
RCS file: /cvsroot/src/common/lib/libprop/prop_kern.c,v
retrieving revision 1.8
diff -d -p -u -u -r1.8 prop_kern.c
--- common/lib/libprop/prop_kern.c      16 Aug 2007 21:44:07 -0000      1.8
+++ common/lib/libprop/prop_kern.c      27 Oct 2007 15:47:16 -0000
@@ -125,13 +125,13 @@ _prop_object_unpack_pref(const struct pl
                        prop_object_t *objp)
{
       prop_object_t obj = NULL;
-       char *buf;
+       uint8_t *buf;
       int error = 0;

       if (pref->pref_len == 0) {
               /*
-                * This should never happen; we should always get the XML
-                * for an empty dictionary if it's really empty.
+                * This should never happen; even empty objects encode
+                * on nonzero bytes.
                */
               error = EIO;
               goto out;
@@ -140,10 +140,10 @@ _prop_object_unpack_pref(const struct pl
               buf[pref->pref_len - 1] = '\0'; /* extra insurance */
               switch (type) {
               case PROP_TYPE_DICTIONARY:
-                       obj = prop_dictionary_internalize(buf);
+                       obj = prop_dictionary_internalize(buf, pref->pref_len);
                       break;
               case PROP_TYPE_ARRAY:
-                       obj = prop_array_internalize(buf);
+                       obj = prop_array_internalize(buf, pref->pref_len);
                       break;
               default:
                       error = ENOTSUP;
Index: common/lib/libprop/prop_number.c
===================================================================
RCS file: /cvsroot/src/common/lib/libprop/prop_number.c,v
retrieving revision 1.14
diff -d -p -u -u -r1.14 prop_number.c
--- common/lib/libprop/prop_number.c    30 Aug 2007 12:23:54 -0000      1.14
+++ common/lib/libprop/prop_number.c    27 Oct 2007 15:47:16 -0000
@@ -450,6 +450,20 @@ prop_number_equals(prop_number_t num1, p
}

/*
+ * prop_number_compare --
+ *     Return positive value when pn1 > pn2, zero when pn1 == pn2, negative
+ *     value when pn1 < pn2.
+ */
+int
+prop_number_compare(prop_number_t pn1, prop_number_t pn2)
+{
+       _PROP_ASSERT(prop_object_is_number(pn1) && prop_object_is_number(pn2));
+
+       return (_prop_number_compare_values(&pn1->pn_value, &pn2->pn_value));
+}
+
+
+/*
 * prop_number_equals_integer --
 *     Return true if the number is equivalent to the specified integer.
 */
Index: common/lib/libprop/prop_object.3
===================================================================
RCS file: /cvsroot/src/common/lib/libprop/prop_object.3,v
retrieving revision 1.6
diff -d -p -u -u -r1.6 prop_object.3
--- common/lib/libprop/prop_object.3    16 Aug 2007 16:31:00 -0000      1.6
+++ common/lib/libprop/prop_object.3    27 Oct 2007 15:47:16 -0000
@@ -132,6 +132,23 @@ by the iterator
Release the iterator
.Fa iter .
.El
+.Pp
+The library supports external representations described by
+.Dv prop_encoding_t
+enumeration type:
+.Pp
+.Bl -tag -width "PROP_ENCODING_DEFAULT" -compact
+.It Dv PROP_ENCODING_XML
+XML conforming to Apple DTD. Stored in C strings.
+.It Dv PROP_ENCODING_BINARY
+Derived from Apple "bplist" format. Stored in raw byte arrays.
+.It Dv PROP_ENCODING_DEFAULT
+Any of the above depending on implementation.
+.El
+.Pp
+Refer to
+.Xr proplib 3
+for notes on encoding compatibility.
.Sh SEE ALSO
.Xr prop_array 3 ,
.Xr prop_bool 3 ,
@@ -145,3 +162,6 @@ The
.Nm proplib
property container object library first appeared in
.Nx 4.0 .
+.Pp
+Support for binary external format first appeared in
+.Nx 5.0 .
Index: common/lib/libprop/prop_object.c
===================================================================
RCS file: /cvsroot/src/common/lib/libprop/prop_object.c,v
retrieving revision 1.17
diff -d -p -u -u -r1.17 prop_object.c
--- common/lib/libprop/prop_object.c    30 Aug 2007 19:12:32 -0000      1.17
+++ common/lib/libprop/prop_object.c    27 Oct 2007 15:47:16 -0000
@@ -841,7 +841,7 @@ _prop_object_externalize_file_dirname(co
 *     and the mode set to 0666 modified by the caller's umask.
 */
bool
-_prop_object_externalize_write_file(const char *fname, const char *xml,
+_prop_object_externalize_write_file(const char *fname, const uint8_t *buf,
    size_t len)
{
       char tname[PATH_MAX];
@@ -874,7 +874,7 @@ _prop_object_externalize_write_file(cons
               return (false);
       }

-       if (write(fd, xml, len) != (ssize_t)len)
+       if (write(fd, buf, len) != (ssize_t)len)
               goto bad;

       if (fsync(fd) == -1)
@@ -926,8 +926,10 @@ _prop_object_internalize_map_file(const
               _PROP_FREE(mf, M_TEMP);
               return (NULL);
       }
+       mf->poimf_datasize = (size_t)sb.st_size;
       mf->poimf_mapsize = ((size_t)sb.st_size + pgmask) & ~pgmask;
-       if (mf->poimf_mapsize < sb.st_size) {
+       if (mf->poimf_mapsize < mf->poimf_datasize ||
+           mf->poimf_datasize == 0) {
               (void) close(fd);
               _PROP_FREE(mf, M_TEMP);
               return (NULL);
@@ -941,22 +943,22 @@ _prop_object_internalize_map_file(const
       if ((sb.st_size & pgmask) == 0)
               need_guard = true;

-       mf->poimf_xml = mmap(NULL, need_guard ? mf->poimf_mapsize + pgsize
+       mf->poimf_data = mmap(NULL, need_guard ? mf->poimf_mapsize + pgsize
                                             : mf->poimf_mapsize,
                           PROT_READ, MAP_FILE|MAP_SHARED, fd, (off_t)0);
       (void) close(fd);
-       if (mf->poimf_xml == MAP_FAILED) {
+       if (mf->poimf_data == MAP_FAILED) {
               _PROP_FREE(mf, M_TEMP);
               return (NULL);
       }
-       (void) madvise(mf->poimf_xml, mf->poimf_mapsize, MADV_SEQUENTIAL);
+       (void) madvise(mf->poimf_data, mf->poimf_mapsize, MADV_SEQUENTIAL);

       if (need_guard) {
-               if (mmap(mf->poimf_xml + mf->poimf_mapsize,
+               if (mmap(mf->poimf_data + mf->poimf_mapsize,
                        pgsize, PROT_READ,
                        MAP_ANON|MAP_PRIVATE|MAP_FIXED, -1,
                        (off_t)0) == MAP_FAILED) {
-                       (void) munmap(mf->poimf_xml, mf->poimf_mapsize);
+                       (void) munmap(mf->poimf_data, mf->poimf_mapsize);
                       _PROP_FREE(mf, M_TEMP);
                       return (NULL);
               }
@@ -975,8 +977,8 @@ _prop_object_internalize_unmap_file(
    struct _prop_object_internalize_mapped_file *mf)
{

-       (void) madvise(mf->poimf_xml, mf->poimf_mapsize, MADV_DONTNEED);
-       (void) munmap(mf->poimf_xml, mf->poimf_mapsize);
+       (void) madvise(mf->poimf_data, mf->poimf_mapsize, MADV_DONTNEED);
+       (void) munmap(mf->poimf_data, mf->poimf_mapsize);
       _PROP_FREE(mf, M_TEMP);
}
#endif /* !_KERNEL && !_STANDALONE */
Index: common/lib/libprop/prop_object_impl.h
===================================================================
RCS file: /cvsroot/src/common/lib/libprop/prop_object_impl.h,v
retrieving revision 1.18
diff -d -p -u -u -r1.18 prop_object_impl.h
--- common/lib/libprop/prop_object_impl.h       30 Aug 2007 12:23:54 -0000      1.18
+++ common/lib/libprop/prop_object_impl.h       27 Oct 2007 15:47:16 -0000
@@ -45,6 +45,7 @@
#include <inttypes.h>
#endif

+#include <prop/prop_object.h>
#include "prop_stack.h"

struct _prop_object_externalize_context {
@@ -155,11 +156,12 @@ void              _prop_object_internalize_context_f
                               struct _prop_object_internalize_context *);

#if !defined(_KERNEL) && !defined(_STANDALONE)
-bool   _prop_object_externalize_write_file(const char *,
-                                                   const char *, size_t);
+bool   _prop_object_externalize_write_file(const char *, const uint8_t *,
+                                           size_t);

struct _prop_object_internalize_mapped_file {
-       char *  poimf_xml;
+       uint8_t *poimf_data;
+       size_t  poimf_datasize;
       size_t  poimf_mapsize;
};

@@ -232,6 +234,17 @@ struct _prop_object_iterator {
       uint32_t        pi_version;
};

+/* Private APIs published by prop_{array,dictionary}.c */
+void   _prop_dictionary_rdlock(prop_object_t);
+void   _prop_dictionary_unlock(prop_object_t);
+void   _prop_array_rdlock(prop_object_t);
+void   _prop_array_unlock(prop_object_t);
+
+/* Private APIs publised by prop_bplist.c to encoding dispatchers. */
+prop_object_t  _prop_bp_internalize(const uint8_t *, size_t, prop_type_t);
+bool           _prop_bp_externalize_object(prop_object_t, prop_type_t,
+                                           uint8_t **, size_t *);
+
#if defined(_KERNEL)

/*
@@ -395,4 +408,6 @@ void *              _prop_standalone_realloc(void *,
#define        _PROP_ARG_UNUSED        /* delete */
#endif /* __NetBSD__ */

+#define _PROP_UNCONST(a)       ((void *)(unsigned long)(const void *)(a))
+
#endif /* _PROPLIB_PROP_OBJECT_IMPL_H_ */
Index: common/lib/libprop/proplib.3
===================================================================
RCS file: /cvsroot/src/common/lib/libprop/proplib.3,v
retrieving revision 1.4
diff -d -p -u -u -r1.4 proplib.3
--- common/lib/libprop/proplib.3        21 Jun 2007 12:02:31 -0000      1.4
+++ common/lib/libprop/proplib.3        27 Oct 2007 15:47:16 -0000
@@ -55,12 +55,14 @@ Structure is provided by the array and d
.Pp
Property lists can be passed across protection boundaries by translating
them to an external representation.
-This external representation is an XML document whose format is described
-by the following DTD:
+This external representation is either an XML document whose format is
+described by the following DTD:
.Bd -literal -offset indent
http://www.apple.com/DTDs/PropertyList-1.0.dtd
.Ed
.Pp
+or a binary format based on Apple bplist encoding.
+.Pp
Property container objects are reference counted.
When an object is created, its reference count is set to 1.
Any code that keeps a reference to an object, including the collection
@@ -142,3 +144,22 @@ in kernel, standalone, and user space en
.Nm
parser is not a real XML parser.
It is hard-coded to parse only the property list external representation.
+.Pp
+The binary encoding differs from Apple bplist format in the following
+ways:
+.Bl -bullet
+.It
+NetBSD uses type marker 0x10 for unsigned integers while in Apple format,
+which doesn't really support unsigned integers, it is used to denote signed
+integers.
+.It
+NetBSD uses type marker 0x70 for signed integers while in Apple format
+it is reserved for future use.
+.It
+NetBSD encodes dictionary contents as <keyref objref>* while Apple uses
+<keyref* objref*>.
+.El
+.Pp
+Given the above incompatibilities, NetBSD binary plists are marked as
+version 'ZZ' of the format. Apple uses version '00' as of the time of
+this writing.
Index: distrib/sets/lists/comp/mi
===================================================================
RCS file: /cvsroot/src/distrib/sets/lists/comp/mi,v
retrieving revision 1.1071
diff -d -p -u -u -r1.1071 mi
--- distrib/sets/lists/comp/mi  7 Oct 2007 13:38:53 -0000       1.1071
+++ distrib/sets/lists/comp/mi  27 Oct 2007 15:47:21 -0000
@@ -5710,7 +5710,9 @@
./usr/share/man/cat3/prop_array_ensure_capacity.0 comp-c-catman                .cat
./usr/share/man/cat3/prop_array_equals.0       comp-c-catman           .cat
./usr/share/man/cat3/prop_array_externalize.0  comp-c-catman           .cat
+./usr/share/man/cat3/prop_array_externalize_with_encoding.0 comp-c-catman .cat
./usr/share/man/cat3/prop_array_externalize_to_file.0 comp-c-catman    .cat
+./usr/share/man/cat3/prop_array_externalize_to_file_with_encoding.0 comp-c-catman .cat
./usr/share/man/cat3/prop_array_get.0          comp-c-catman           .cat
./usr/share/man/cat3/prop_array_internalize.0  comp-c-catman           .cat
./usr/share/man/cat3/prop_array_internalize_from_file.0 comp-c-catman  .cat
@@ -5745,7 +5747,9 @@
./usr/share/man/cat3/prop_dictionary_ensure_capacity.0 comp-c-catman   .cat
./usr/share/man/cat3/prop_dictionary_equals.0  comp-c-catman           .cat
./usr/share/man/cat3/prop_dictionary_externalize.0 comp-c-catman       .cat
+./usr/share/man/cat3/prop_dictionary_externalize_with_encoding.0 comp-c-catman .cat
./usr/share/man/cat3/prop_dictionary_externalize_to_file.0 comp-c-catman .cat
+./usr/share/man/cat3/prop_dictionary_externalize_to_file_with_encoding.0 comp-c-catman .cat
./usr/share/man/cat3/prop_dictionary_get.0     comp-c-catman           .cat
./usr/share/man/cat3/prop_dictionary_get_bool.0        comp-c-catman           .cat
./usr/share/man/cat3/prop_dictionary_get_cstring.0 comp-c-catman       .cat
@@ -10295,7 +10299,9 @@
./usr/share/man/man3/prop_array_ensure_capacity.3 comp-c-man           .man
./usr/share/man/man3/prop_array_equals.3       comp-c-man              .man
./usr/share/man/man3/prop_array_externalize.3  comp-c-man              .man
+./usr/share/man/man3/prop_array_externalize_with_encoding.3 comp-c-man .man
./usr/share/man/man3/prop_array_externalize_to_file.3 comp-c-man       .man
+./usr/share/man/man3/prop_array_externalize_to_file_with_encoding.3 comp-c-man .man
./usr/share/man/man3/prop_array_get.3          comp-c-man              .man
./usr/share/man/man3/prop_array_internalize.3  comp-c-man              .man
./usr/share/man/man3/prop_array_internalize_from_file.3 comp-c-man     .man
@@ -10330,7 +10336,9 @@
./usr/share/man/man3/prop_dictionary_ensure_capacity.3 comp-c-man      .man
./usr/share/man/man3/prop_dictionary_equals.3  comp-c-man              .man
./usr/share/man/man3/prop_dictionary_externalize.3 comp-c-man          .man
+./usr/share/man/man3/prop_dictionary_externalize_with_encoding.3 comp-c-man .man
./usr/share/man/man3/prop_dictionary_externalize_to_file.3 comp-c-man  .man
+./usr/share/man/man3/prop_dictionary_externalize_to_file_with_encoding.3 comp-c-man .man
./usr/share/man/man3/prop_dictionary_get.3     comp-c-man              .man
./usr/share/man/man3/prop_dictionary_get_bool.3        comp-c-man              .man
./usr/share/man/man3/prop_dictionary_get_cstring.3 comp-c-man          .man
Index: lib/libprop/Makefile
===================================================================
RCS file: /cvsroot/src/lib/libprop/Makefile,v
retrieving revision 1.14
diff -d -p -u -u -r1.14 Makefile
--- lib/libprop/Makefile        27 Oct 2006 01:29:37 -0000      1.14
+++ lib/libprop/Makefile        27 Oct 2007 15:47:23 -0000
@@ -64,7 +64,9 @@ MLINKS+= prop_array.3 prop_array_create_
MLINKS+= prop_array.3 prop_array_ensure_capacity.3
MLINKS+= prop_array.3 prop_array_equals.3
MLINKS+= prop_array.3 prop_array_externalize.3
+MLINKS+= prop_array.3 prop_array_externalize_with_encoding.3
MLINKS+= prop_array.3 prop_array_externalize_to_file.3
+MLINKS+= prop_array.3 prop_array_externalize_to_file_with_encoding.3
MLINKS+= prop_array.3 prop_array_get.3
MLINKS+= prop_array.3 prop_array_internalize.3
MLINKS+= prop_array.3 prop_array_internalize_from_file.3
@@ -97,7 +99,9 @@ MLINKS+= prop_dictionary.3 prop_dictiona
MLINKS+= prop_dictionary.3 prop_dictionary_ensure_capacity.3
MLINKS+= prop_dictionary.3 prop_dictionary_equals.3
MLINKS+= prop_dictionary.3 prop_dictionary_externalize.3
+MLINKS+= prop_dictionary.3 prop_dictionary_externalize_with_encoding.3
MLINKS+= prop_dictionary.3 prop_dictionary_externalize_to_file.3
+MLINKS+= prop_dictionary.3 prop_dictionary_externalize_to_file_with_encoding.3
MLINKS+= prop_dictionary.3 prop_dictionary_get.3
MLINKS+= prop_dictionary.3 prop_dictionary_get_keysym.3
MLINKS+= prop_dictionary.3 prop_dictionary_internalize.3
Index: regress/lib/libprop/Makefile
===================================================================
RCS file: regress/lib/libprop/Makefile
diff -N regress/lib/libprop/Makefile
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/Makefile        27 Oct 2007 15:47:23 -0000
@@ -0,0 +1,5 @@
+#      $NetBSD$
+
+SUBDIR=        propbench propconv
+
+.include <bsd.subdir.mk>
Index: regress/lib/libprop/propbench/Makefile
===================================================================
RCS file: regress/lib/libprop/propbench/Makefile
diff -N regress/lib/libprop/propbench/Makefile
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/propbench/Makefile      27 Oct 2007 15:47:23 -0000
@@ -0,0 +1,32 @@
+#      $NetBSD$
+
+NOMAN=                         # set
+PROG=                  plbench
+SRCS=                  main.c
+
+CPPFLAGS+=             -I${NETBSDSRCDIR}/common/include
+CPPFLAGS+=             -I${NETBSDSRCDIR}/common/lib/libprop
+
+LDADD+=                -static
+DPADD+=                ${LIBPTHREAD} ${LIBM}
+LDADD+=                -lpthread -lm
+CFLAGS+=               -Wall -Werror -g
+
+.if defined(LOOPS)
+PLARGS+=               -n ${LOOPS}
+.endif
+
+.if defined(TIMES)
+PLARGS+=               -v
+.endif
+
+regress: .PHONY ${PROG}
+       for sample in ${.CURDIR}/../samples/*.xml ;{ \
+               ./${PROG} ${PLARGS} $${sample} \
+       ;}
+
+gdb: .PHONY
+       gdb ${PROG} ${PROG}.core
+
+.include "${NETBSDSRCDIR}/common/lib/libprop/Makefile.inc"
+.include <bsd.prog.mk>
Index: regress/lib/libprop/propbench/main.c
===================================================================
RCS file: regress/lib/libprop/propbench/main.c
diff -N regress/lib/libprop/propbench/main.c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/propbench/main.c        27 Oct 2007 15:47:23 -0000
@@ -0,0 +1,423 @@
+/*     $NetBSD$ */
+
+/*-
+ * Copyright (c) 2007 Jachym Holecek <[email protected]>.
+ * All rights reserved.
+ *
+ * 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.
+ *
+ * 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 HOLDERS 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.
+ */
+
+#include <sys/resource.h>
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <libgen.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <prop/proplib.h>
+
+static const char *path;
+static const char *name;
+static u_long nloops = 10000;
+
+static double time_ioctl_xml = 0.0;
+static double time_ioctl_bin = 0.0;
+static double time_intern_xml = 0.0;
+static double time_intern_bin = 0.0;
+static double time_extern_xml = 0.0;
+static double time_extern_bin = 0.0;
+static size_t size_extern_xml;
+static size_t size_extern_bin;
+
+/*
+ * Utilities.
+ */
+static prop_object_t
+internalize(const char *path)
+{
+       prop_object_t po;
+
+       po = prop_dictionary_internalize_from_file(path);
+       if (po == NULL)
+               po = prop_array_internalize_from_file(path);
+
+       return (po);
+}
+
+static prop_object_t
+decode(uint8_t *buf, size_t len)
+{
+       prop_object_t po;
+
+       po = prop_dictionary_internalize(buf, len);
+       if (po == NULL)
+               po = prop_array_internalize(buf, len);
+
+       return (po);
+}
+
+static bool
+blistify(prop_object_t po, uint8_t **buf, size_t *len)
+{
+       if (prop_object_type(po) == PROP_TYPE_DICTIONARY) {
+               if (prop_dictionary_externalize_with_encoding(po, buf, len,
+                   PROP_ENCODING_BINARY))
+                       return (true);
+       } else {
+               if (prop_array_externalize_with_encoding(po, buf, len,
+                   PROP_ENCODING_BINARY))
+                       return (true);
+       }
+
+       return (false);
+}
+
+static bool
+xmlify(prop_object_t po, uint8_t **buf, size_t *len)
+{
+       if (prop_object_type(po) == PROP_TYPE_DICTIONARY) {
+               if (prop_dictionary_externalize_with_encoding(po, buf, len,
+                   PROP_ENCODING_XML))
+                       return (true);
+       } else {
+               if (prop_array_externalize_with_encoding(po, buf, len,
+                   PROP_ENCODING_XML))
+                       return (true);
+       }
+
+       return (false);
+}
+
+double
+getpoint(void)
+{
+       struct rusage ru;
+
+       if (getrusage(RUSAGE_SELF, &ru) == -1)
+               err(1, "getrusage");
+
+       return ((double)ru.ru_utime.tv_sec +
+               (double)ru.ru_utime.tv_usec/1000000.0);
+}
+
+static void
+failed(const char *fmt, ...)
+{
+       va_list ap;
+
+       fprintf(stderr, "FAILED %s ", name);
+       va_start(ap, fmt);
+       vfprintf(stderr, fmt, ap);
+       va_end(ap);
+
+       fprintf(stderr, "\n");
+       exit(EXIT_FAILURE);
+}
+
+/*
+ * Regression test, assumes input file is XML.
+ */
+
+static void
+regression(void)
+{
+       prop_object_t po1; /* plist from XML file */
+       prop_object_t po2;
+       uint8_t *buf;
+       size_t len;
+
+       po1 = internalize(path);
+       if (po1 == NULL)
+               failed("internalize XML file");
+
+       if (! xmlify(po1, &buf, &len))
+               failed("externalize XML");
+
+       po2 = decode(buf, len);
+       if (po2 == NULL)
+               failed("internalize XML");
+       free(buf);
+
+       if (! prop_object_equals(po1, po2))
+               failed("compare XML");
+       prop_object_release(po2);
+
+       if (! blistify(po1, &buf, &len))
+               failed("externalize binary");
+
+       po2 = decode(buf, len);
+       if (po2 == NULL)
+               failed("internalize binary");
+
+       if (! prop_object_equals(po1, po2))
+               failed("compare binary");
+       prop_object_release(po2);
+
+       prop_object_release(po1);
+}
+
+static void
+benchmark(void)
+{
+       prop_object_t po1;
+       prop_object_t po2;
+       uint8_t *buf;
+       uint8_t *tmp;
+       size_t len;
+       double beg;
+       int i;
+
+       po1 = internalize(path);
+       if (po1 == NULL)
+               failed("benchmark: internalize XML file");
+
+       /* How long does XML internalize take? */
+       if (! xmlify(po1, &buf, &len))
+               failed("benchmark: prepare XML");
+       size_extern_xml = len;
+
+       for (i = 0; i < nloops; i++) {
+               beg = getpoint();
+
+               po2 = decode(buf, len);
+               if (po2 == NULL)
+                       failed("benchmark: internalize XML");
+
+               time_intern_xml += (getpoint() - beg);
+               prop_object_release(po2);
+       }
+       free(buf);
+
+       /* How long does binary internalize take? */
+       if (! blistify(po1, &buf, &len))
+               failed("benchmark: prepare binary");
+       size_extern_bin = len;
+
+       for (i = 0; i < nloops; i++) {
+               beg = getpoint();
+
+               po2 = decode(buf, len);
+               if (po2 == NULL)
+                       failed("benchmark: internalize binary");
+
+               time_intern_bin += (getpoint() - beg);
+               prop_object_release(po2);
+       }
+       free(buf);
+
+       /* How long does XML externalize take? */
+       for (i = 0; i < nloops; i++) {
+               beg = getpoint();
+
+               if (! xmlify(po1, &buf, &len))
+                       failed("benchmark: externalize XML");
+
+               time_extern_xml += (getpoint() - beg);
+               free(buf);
+       }
+
+       /* How long does binary externalize take? */
+       for (i = 0; i < nloops; i++) {
+               beg = getpoint();
+
+               if (! blistify(po1, &buf, &len))
+                       failed("benchmark: externalize binary");
+
+               time_extern_bin += (getpoint() - beg);
+               free(buf);
+       }
+
+       /* How long does full XML transport take? */
+       tmp = malloc(size_extern_xml);
+       if (tmp == NULL)
+               failed("benchmark: transport XML buffer alloc");
+
+       for (i = 0; i < nloops; i++) {
+               beg = getpoint();
+
+               if (! xmlify(po1, &buf, &len))
+                       failed("benchmark: transport XML send");
+
+               if (len != size_extern_xml)
+                       failed("banchmark: transport size mismatch");
+
+               memcpy(tmp, buf, len);
+               po2 = decode(tmp, len);
+               if (po2 == NULL)
+                       failed("benchmark: transport XML recv");
+
+               time_ioctl_xml += (getpoint() - beg);
+               prop_object_release(po2);
+               free(buf);
+       }
+
+       free(tmp);
+
+       /* How long does full binary transport take? */
+       tmp = malloc(size_extern_bin);
+       if (tmp == NULL)
+               failed("benchmark: transport binary buffer alloc");
+
+       for (i = 0; i < nloops; i++) {
+               beg = getpoint();
+
+               if (! blistify(po1, &buf, &len))
+                       failed("benchmark: transport binary send");
+
+               if (len != size_extern_bin)
+                       failed("benchmark: transport binary size mismatch");
+
+               memcpy(tmp, buf, len);
+               po2 = decode(tmp, len);
+               if (po2 == NULL)
+                       failed("benchmark: transport binary recv");
+
+               time_ioctl_bin += (getpoint() - beg);
+               prop_object_release(po2);
+               free(buf);
+       }
+
+       free(tmp);
+}
+
+static double
+percentage(double big, double small)
+{
+       /* percentage = small / (big / 100) = (100 * small) / big */
+       return ((100 * small) / big);
+}
+
+int
+xstrtoul(char *str, u_long *val)
+{
+       char                    *end;
+       int                     base = 10;
+       u_long                  v;
+
+       if (str[0] == '0')
+               switch (str[1]) {
+               case 'x':
+                       base = 16;
+                       str += 2;
+                       break;
+               case 'd':
+                       base = 10;
+                       str += 2;
+                       break;
+               case 'o':
+                       base = 8;
+                       str += 2;
+                       break;
+               case 'b':
+                       base = 2;
+                       str += 2;
+                       break;
+               }
+
+       v = (u_long) strtoul(str, &end, base);
+       if (*end != '\0' || str[0] == '\0')
+               return (EINVAL);
+
+       *val = v;
+       return (0);
+}
+
+int
+main(int argc, char *argv[])
+{
+       double val1;
+       double val2;
+       int verbose = 0;
+       int c;
+
+       while ((c = getopt(argc, argv, "hn:v")) != -1)
+               switch (c) {
+               case 'h':
+                       warnx("Usage: plbench -h");
+                       warnx("       plbench [-n <nloops>] [-v]");
+                       exit(EXIT_SUCCESS);
+
+               case 'n':
+                       if (xstrtoul(optarg, &nloops))
+                               errx(EXIT_FAILURE, "integer expected");
+                       break;
+
+               case 'v':
+                       verbose = 1;
+                       break;
+
+               default:
+                       errx(EXIT_FAILURE, "invalid or misused option -%c",
+                           optopt);
+               }
+
+       argc -= optind;
+       argv += optind;
+
+       if (argc != 1)
+               errx(1, "need exactly one XML plist file argument");
+
+       path = argv[0];
+       name = basename(argv[0]);
+
+       regression();
+       benchmark();
+
+       printf("PASSED %s ", name);
+
+
+       if (verbose)
+               printf("("
+                   "XML %3.2fs %3.2fs %3.2f %6uB "
+                   "BIN %3.2fs %3.2fs %3.2f %6uB"
+                   ")",
+                   time_intern_xml, time_extern_xml, time_ioctl_xml,
+                   (u_int)size_extern_xml,
+                   time_intern_bin, time_extern_bin, time_ioctl_bin,
+                   (u_int)size_extern_bin);
+       else {
+               /* Relative results for full transport benchmark. */
+               printf("TRANSPORT %3.0f%% ",
+                   percentage(time_ioctl_xml, time_ioctl_bin));
+
+               /* Relative results for raw intern/extern benchmark. */
+               val1 = (time_intern_xml + time_extern_xml);
+               val2 = (time_intern_bin + time_extern_bin);
+               printf("RAW %3.0f%% ", percentage(val1, val2));
+
+               /* Relative results for encoding size benchmark. */
+               printf("SIZE %3.0f%% ",
+                   percentage(size_extern_xml, size_extern_bin));
+       }
+
+       printf("\n");
+       return (0);
+}
Index: regress/lib/libprop/propconv/Makefile
===================================================================
RCS file: regress/lib/libprop/propconv/Makefile
diff -N regress/lib/libprop/propconv/Makefile
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/propconv/Makefile       27 Oct 2007 15:47:23 -0000
@@ -0,0 +1,45 @@
+#      $NetBSD$
+
+NOMAN=                         # set
+PROG=                  plconv
+SRCS=                  main.c
+
+CPPFLAGS+=             -I${NETBSDSRCDIR}/common/include
+CPPFLAGS+=             -I${NETBSDSRCDIR}/common/lib/libprop
+
+LDADD+=                -static
+
+DPADD+=                ${LIBPTHREAD}
+LDADD+=                -lpthread # -pg
+CFLAGS+=               -g -Wall -Werror # -pg
+
+.include "${NETBSDSRCDIR}/common/lib/libprop/Makefile.inc"
+
+SAMPLEDIR=             ${.CURDIR}/../samples
+SAMPLES!=              cd ${SAMPLEDIR} && ls *.xml
+
+.for file in ${SAMPLES}
+. for codec in xml bplist
+${file}.${codec}: ${SAMPLEDIR}/${file} ${PROG}
+       @if ./${PROG} -O ${codec} -o ./${.TARGET} ${SAMPLEDIR}/${file} ; \
+       then \
+               echo PASSED convert ${.TARGET} ; \
+       else \
+               echo FAILED convert ${.TARGET} ; \
+       fi
+       @if ./${PROG} ${.TARGET} ${SAMPLEDIR}/${file} ; \
+       then \
+               echo PASSED compare ${.TARGET} ; \
+       else \
+               echo FAILED compare ${.TARGET} ; \
+       fi
+
+CLEANFILES+=   ${file}.${codec}
+CONVERSIONS+=  ${file}.${codec}
+. endfor
+.endfor
+
+# Run the full cartesian product.
+regress: .PHONY ${CONVERSIONS}
+
+.include <bsd.prog.mk>
Index: regress/lib/libprop/propconv/main.c
===================================================================
RCS file: regress/lib/libprop/propconv/main.c
diff -N regress/lib/libprop/propconv/main.c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/propconv/main.c 27 Oct 2007 15:47:23 -0000
@@ -0,0 +1,157 @@
+/*     $NetBSD$ */
+
+/*-
+ * Copyright (c) 2007 Jachym Holecek <[email protected]>.
+ * All rights reserved.
+ *
+ * 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.
+ *
+ * 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 HOLDERS 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.
+ */
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <prop/proplib.h>
+
+static prop_object_t
+internalize(const char *path)
+{
+       prop_object_t po;
+
+       po = prop_dictionary_internalize_from_file(path);
+       if (po == NULL) {
+               po = prop_array_internalize_from_file(path);
+               if (po == NULL)
+                       errx(EXIT_FAILURE, "could not internalize %s", path);
+       }
+
+       return (po);
+}
+
+static void
+externalize(int fd, prop_object_t po, const char *format)
+{
+       uint8_t *buf;
+       size_t len;
+
+       if (strcasecmp(format, "xml") == 0) {
+               if (! prop_dictionary_externalize_with_encoding(po, &buf, &len,
+                   PROP_ENCODING_XML) &&
+                   ! prop_array_externalize_with_encoding(po, &buf, &len,
+                   PROP_ENCODING_XML))
+                       errx(EXIT_FAILURE, "could not externalize");
+       } else
+       if (strcasecmp(format, "bplist") == 0) {
+               if (! prop_dictionary_externalize_with_encoding(po, &buf, &len,
+                   PROP_ENCODING_BINARY) &&
+                   ! prop_array_externalize_with_encoding(po, &buf, &len,
+                   PROP_ENCODING_BINARY))
+                       errx(EXIT_FAILURE, "could not externalize");
+       }
+
+       /* Not prop_*_externalize_to_file(), stdout may be pipe/terminal. */
+       if (write(fd, buf, len) == -1)
+               err(EXIT_FAILURE, "could not write");
+}
+
+#define OPTIONS                "ho:O:"
+
+static void
+usage(void)
+{
+       const char *me = getprogname();
+
+       printf("Usage: %s [-o file] [-O format] file\n", me);
+       printf("       %s file0 file1\n", me);
+       printf("-h        \t Print (this) help\n");
+       printf("-o file   \t Output file [stdout]\n");
+       printf("-O format \t Externalize format [xml bplist]\n");
+
+       exit(EXIT_SUCCESS);
+}
+
+int
+main(int argc, char *argv[])
+{
+       const char *oformat = "xml";
+       const char *opath = NULL;
+       int fdo = STDOUT_FILENO;
+       int c;
+
+       while ((c = getopt(argc, argv, OPTIONS)) != -1)
+               switch (c) {
+               case 'h': /* Help. */
+                       usage();
+                       /* UNREACHED */
+
+               case 'o': /* Output file. */
+                       opath = optarg;
+                       break;
+
+               case 'O': /* Externalize format. */
+                       oformat = optarg;
+                       break;
+
+               case '?':
+                       errx(EXIT_FAILURE, "uknown option -%c", optopt);
+                       /* UNREACHED */
+
+               case ':':
+                       errx(EXIT_FAILURE, "missing argument to -%c", optopt);
+                       /* UNREACHED */
+               }
+
+       argc -= optind;
+       argv += optind;
+
+       if (argc == 2) {
+               if (prop_object_equals(internalize(argv[0]),
+                   internalize(argv[1])))
+                       return (EXIT_SUCCESS);
+
+               return (EXIT_FAILURE);
+       } else
+       if (argc == 1) {
+               prop_object_t po;
+
+               po = internalize(argv[0]);
+
+               if (opath != NULL) {
+                       fdo = open(opath, O_WRONLY|O_CREAT|O_TRUNC, 0644);
+                       if (fdo == -1)
+                               errx(EXIT_FAILURE, "could not open %s", opath);
+               }
+
+               externalize(fdo, po, oformat);
+               return (EXIT_SUCCESS);
+       }
+
+       warnx("unknown mode of operation");
+       return (EXIT_FAILURE);
+}
Index: regress/lib/libprop/samples/aa.xml
===================================================================
RCS file: regress/lib/libprop/samples/aa.xml
diff -N regress/lib/libprop/samples/aa.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/aa.xml  27 Oct 2007 15:47:23 -0000
@@ -0,0 +1,62 @@
+<plist version="1.0">
+<dict>
+       <key>prep-pci-intrmap</key>
+       <dict>
+               <key>devfunc-11</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x0</integer>
+                       <key>pin-B</key>
+                       <integer>0x0</integer>
+                       <key>pin-C</key>
+                       <integer>0x0</integer>
+                       <key>pin-D</key>
+                       <integer>0x0</integer>
+               </dict>
+               <key>devfunc-12</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x0</integer>
+                       <key>pin-B</key>
+                       <integer>0x0</integer>
+                       <key>pin-C</key>
+                       <integer>0x0</integer>
+                       <key>pin-D</key>
+                       <integer>0x0</integer>
+               </dict>
+               <key>devfunc-13</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x0</integer>
+                       <key>pin-B</key>
+                       <integer>0x0</integer>
+                       <key>pin-C</key>
+                       <integer>0x0</integer>
+                       <key>pin-D</key>
+                       <integer>0x0</integer>
+               </dict>
+               <key>devfunc-14</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x11</integer>
+                       <key>pin-B</key>
+                       <integer>0x13</integer>
+                       <key>pin-C</key>
+                       <integer>0x12</integer>
+                       <key>pin-D</key>
+                       <integer>0x13</integer>
+               </dict>
+               <key>devfunc-15</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x14</integer>
+                       <key>pin-B</key>
+                       <integer>0x15</integer>
+                       <key>pin-C</key>
+                       <integer>0x14</integer>
+                       <key>pin-D</key>
+                       <integer>0x15</integer>
+               </dict>
+       </dict>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/ab.xml
===================================================================
RCS file: regress/lib/libprop/samples/ab.xml
diff -N regress/lib/libprop/samples/ab.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/ab.xml  27 Oct 2007 15:47:23 -0000
@@ -0,0 +1,66 @@
+<plist version="1.0">
+<dict>
+       <key>prep-pci-intrmap</key>
+       <dict>
+               <key>devfunc-0</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x11</integer>
+                       <key>pin-B</key>
+                       <integer>0x0</integer>
+                       <key>pin-C</key>
+                       <integer>0x0</integer>
+                       <key>pin-D</key>
+                       <integer>0x0</integer>
+               </dict>
+               <key>devfunc-1</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x18</integer>
+                       <key>pin-B</key>
+                       <integer>0x19</integer>
+                       <key>pin-C</key>
+                       <integer>0x18</integer>
+                       <key>pin-D</key>
+                       <integer>0x19</integer>
+               </dict>
+               <key>devfunc-2</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x1a</integer>
+                       <key>pin-B</key>
+                       <integer>0x1b</integer>
+                       <key>pin-C</key>
+                       <integer>0x1a</integer>
+                       <key>pin-D</key>
+                       <integer>0x1b</integer>
+               </dict>
+               <key>devfunc-3</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x1c</integer>
+                       <key>pin-B</key>
+                       <integer>0x1d</integer>
+                       <key>pin-C</key>
+                       <integer>0x1c</integer>
+                       <key>pin-D</key>
+                       <integer>0x1d</integer>
+               </dict>
+               <key>devfunc-4</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x1e</integer>
+                       <key>pin-B</key>
+                       <integer>0x1f</integer>
+                       <key>pin-C</key>
+                       <integer>0x1e</integer>
+                       <key>pin-D</key>
+                       <integer>0x1f</integer>
+               </dict>
+       </dict>
+       <key>prep-pcibus-parent</key>
+       <integer>0x0</integer>
+       <key>prep-pcibus-rawdevnum</key>
+       <integer>0xc</integer>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/ac.xml
===================================================================
RCS file: regress/lib/libprop/samples/ac.xml
diff -N regress/lib/libprop/samples/ac.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/ac.xml  27 Oct 2007 15:47:23 -0000
@@ -0,0 +1,84 @@
+<plist version="1.0">
+<dict>
+       <key>prep-pci-intrmap</key>
+       <dict>
+               <key>devfunc-11</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x10</integer>
+                       <key>pin-B</key>
+                       <integer>0x0</integer>
+                       <key>pin-C</key>
+                       <integer>0x0</integer>
+                       <key>pin-D</key>
+                       <integer>0x0</integer>
+               </dict>
+               <key>devfunc-12</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x13</integer>
+                       <key>pin-B</key>
+                       <integer>0x0</integer>
+                       <key>pin-C</key>
+                       <integer>0x0</integer>
+                       <key>pin-D</key>
+                       <integer>0x0</integer>
+               </dict>
+               <key>devfunc-14</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x12</integer>
+                       <key>pin-B</key>
+                       <integer>0x0</integer>
+                       <key>pin-C</key>
+                       <integer>0x0</integer>
+                       <key>pin-D</key>
+                       <integer>0x0</integer>
+               </dict>
+               <key>devfunc-16</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x19</integer>
+                       <key>pin-B</key>
+                       <integer>0x1a</integer>
+                       <key>pin-C</key>
+                       <integer>0x1b</integer>
+                       <key>pin-D</key>
+                       <integer>0x1c</integer>
+               </dict>
+               <key>devfunc-17</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x1a</integer>
+                       <key>pin-B</key>
+                       <integer>0x1b</integer>
+                       <key>pin-C</key>
+                       <integer>0x1c</integer>
+                       <key>pin-D</key>
+                       <integer>0x19</integer>
+               </dict>
+               <key>devfunc-18</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x1b</integer>
+                       <key>pin-B</key>
+                       <integer>0x1c</integer>
+                       <key>pin-C</key>
+                       <integer>0x19</integer>
+                       <key>pin-D</key>
+                       <integer>0x1a</integer>
+               </dict>
+               <key>devfunc-19</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x1c</integer>
+                       <key>pin-B</key>
+                       <integer>0x19</integer>
+                       <key>pin-C</key>
+                       <integer>0x1a</integer>
+                       <key>pin-D</key>
+                       <integer>0x1b</integer>
+               </dict>
+       </dict>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/ad.xml
===================================================================
RCS file: regress/lib/libprop/samples/ad.xml
diff -N regress/lib/libprop/samples/ad.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/ad.xml  27 Oct 2007 15:47:23 -0000
@@ -0,0 +1,8 @@
+<plist version="1.0">
+<dict>
+       <key>prep-pcibus-parent</key>
+       <integer>0x0</integer>
+       <key>prep-pcibus-rawdevnum</key>
+       <integer>0x10</integer>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/ae.xml
===================================================================
RCS file: regress/lib/libprop/samples/ae.xml
diff -N regress/lib/libprop/samples/ae.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/ae.xml  27 Oct 2007 15:47:23 -0000
@@ -0,0 +1,62 @@
+<plist version="1.0">
+<dict>
+       <key>prep-pci-intrmap</key>
+       <dict>
+               <key>devfunc-11</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x10</integer>
+                       <key>pin-B</key>
+                       <integer>0x0</integer>
+                       <key>pin-C</key>
+                       <integer>0x0</integer>
+                       <key>pin-D</key>
+                       <integer>0x0</integer>
+               </dict>
+               <key>devfunc-12</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x13</integer>
+                       <key>pin-B</key>
+                       <integer>0x0</integer>
+                       <key>pin-C</key>
+                       <integer>0x0</integer>
+                       <key>pin-D</key>
+                       <integer>0x0</integer>
+               </dict>
+               <key>devfunc-13</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x15</integer>
+                       <key>pin-B</key>
+                       <integer>0x16</integer>
+                       <key>pin-C</key>
+                       <integer>0x17</integer>
+                       <key>pin-D</key>
+                       <integer>0x18</integer>
+               </dict>
+               <key>devfunc-14</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x12</integer>
+                       <key>pin-B</key>
+                       <integer>0x0</integer>
+                       <key>pin-C</key>
+                       <integer>0x0</integer>
+                       <key>pin-D</key>
+                       <integer>0x0</integer>
+               </dict>
+               <key>devfunc-16</key>
+               <dict>
+                       <key>pin-A</key>
+                       <integer>0x19</integer>
+                       <key>pin-B</key>
+                       <integer>0x1a</integer>
+                       <key>pin-C</key>
+                       <integer>0x1b</integer>
+                       <key>pin-D</key>
+                       <integer>0x1c</integer>
+               </dict>
+       </dict>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/af.xml
===================================================================
RCS file: regress/lib/libprop/samples/af.xml
diff -N regress/lib/libprop/samples/af.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/af.xml  27 Oct 2007 15:47:23 -0000
@@ -0,0 +1,196 @@
+<plist version="1.0">
+<dict>
+       <key>id</key>
+       <string>NetBSD-UP2006-0001</string>
+
+       <key>date</key>
+       <string>2006-06-08</string>
+
+       <key>class</key>
+       <string>security</string>
+
+       <key>priority</key>
+       <string>medium</string>
+
+       <key>title</key>
+       <string>FPU Information leak on i386/amd64/Xen platforms with AMD CPUs</string>
+
+       <key>brief</key>
+       <string>
+       Due to the documented behavior of AMD processors when running amd64, i386
+       and Xen NetBSD kernels, processors using floating point operations can leak
+       information.  This may allow a local attacker to gain sensitive privileged
+       information.
+       </string>
+
+       <key>references</key>
+       <array>
+               <dict>
+                       <key>type</key>
+                       <string>NetBSD security advisory</string>
+                       <key>data</key>
+                       <string>NetBSD-SA2006-015</string>
+               </dict>
+
+               <dict>
+                       <key>type</key>
+                       <string>CVE reference</string>
+                       <key>data</key>
+                       <string>CVE-2006-1056</string>
+               </dict>
+       </array>
+
+       <key>affected</key>
+       <array>
+               <dict>
+                       <key>branch</key>
+                       <string>head</string>
+
+                       <key>archs</key>
+                       <array>
+                               <dict>
+                                       <key>arch</key>
+                                       <string>amd64</string>
+                                       <key>files</key>
+                                       <array>
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/sys/arch/amd64/amd64/fpu.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.115</string>
+                                               </dict>
+                                       </array>
+                               </dict>
+
+                               <dict>
+                                       <key>arch</key>
+                                       <string>i386</string>
+                                       <key>files</key>
+                                       <array>
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/sys/arch/i386/isa/npx.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.112</string>
+                                               </dict>
+                                       </array>
+                               </dict>
+
+                               <dict>
+                                       <key>arch</key>
+                                       <string>xen</string>
+                                       <key>files</key>
+                                       <array>
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/sys/arch/xen/i386/npx.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.8</string>
+                                               </dict>
+                                       </array>
+                               </dict>
+                       </array>
+               </dict>
+
+               <dict>
+                       <key>branch</key>
+                       <string>netbsd-3</string>
+
+                       <key>archs</key>
+                       <array>
+                               <dict>
+                                       <key>arch</key>
+                                       <string>amd64</string>
+                                       <key>files</key>
+                                       <array>
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/sys/arch/amd64/amd64/fpu.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.12.10.2</string>
+                                               </dict>
+                                       </array>
+                               </dict>
+
+                               <dict>
+                                       <key>arch</key>
+                                       <string>i386</string>
+                                       <key>files</key>
+                                       <array>
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/sys/arch/i386/isa/npx.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.107.4.1</string>
+                                               </dict>
+                                       </array>
+                               </dict>
+
+                               <dict>
+                                       <key>arch</key>
+                                       <string>xen</string>
+                                       <key>files</key>
+                                       <array>
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/sys/arch/xen/i386/npx.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.3.14.3</string>
+                                               </dict>
+                                       </array>
+                               </dict>
+                       </array>
+               </dict>
+
+               <dict>
+                       <key>branch</key>
+                       <string>netbsd-2</string>
+
+                       <key>archs</key>
+                       <array>
+                               <dict>
+                                       <key>arch</key>
+                                       <string>amd64</string>
+                                       <key>files</key>
+                                       <array>
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/sys/arch/amd64/amd64/fpu.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.11.4.2</string>
+                                               </dict>
+                                       </array>
+                               </dict>
+
+                               <dict>
+                                       <key>arch</key>
+                                       <string>i386</string>
+                                       <key>files</key>
+                                       <array>
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/sys/arch/i386/isa/npx.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.103.2.2.2.1</string>
+                                               </dict>
+                                       </array>
+                               </dict>
+
+                               <dict>
+                                       <key>arch</key>
+                                       <string>xen</string>
+                                       <key>files</key>
+                                       <array>
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/sys/arch/xen/i386/npx.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.1.2.1.2.1</string>
+                                               </dict>
+                                       </array>
+                               </dict>
+                       </array>
+               </dict>
+       </array>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/ag.xml
===================================================================
RCS file: regress/lib/libprop/samples/ag.xml
diff -N regress/lib/libprop/samples/ag.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/ag.xml  27 Oct 2007 15:47:23 -0000
@@ -0,0 +1,161 @@
+<plist version="1.0">
+<dict>
+       <key>id</key>
+       <string>NetBSD-UP2006-0002</string>
+
+       <key>date</key>
+       <string>2006-08-10</string>
+
+       <key>class</key>
+       <string>security</string>
+
+       <key>priority</key>
+       <string>medium</string>
+
+       <key>title</key>
+       <string>sail(6), dm(8) and tetris(6) buffer overflows</string>
+
+       <key>brief</key>
+       <string>
+       The sail, dungeon master arbiter and tetris games all contain buffer
+       overflows.  These programs are installed sgid games, and when
+       successfully exploited the vulnerabilities may allow an attacker to
+       elevate their privileges to the games group.
+       </string>
+
+       <key>references</key>
+       <array>
+               <dict>
+                       <key>type</key>
+                       <string>NetBSD security advisory</string>
+                       <key>data</key>
+                       <string>NetBSD-SA2006-018</string>
+               </dict>
+
+               <dict>
+                       <key>type</key>
+                       <string>CVE reference for sail(6)</string>
+                       <key>data</key>
+                       <string>CVE-2006-1744</string>
+               </dict>
+
+               <dict>
+                       <key>type</key>
+                       <string>CVE reference for tetris(6)</string>
+                       <key>data</key>
+                       <string>CVE-2006-1539</string>
+               </dict>
+       </array>
+
+       <key>affected</key>
+       <array>
+               <dict>
+                       <key>branch</key>
+                       <string>head</string>
+
+                       <key>archs</key>
+                       <array>
+                               <dict>
+                                       <key>arch</key>
+                                       <string>all</string>
+                                       <key>files</key>
+                                       <array>
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/games/dm/dm.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.23</string>
+                                               </dict>
+
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/games/sail/pl_main.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.17</string>
+                                               </dict>
+
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/games/tetris/scores.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.14</string>
+                                               </dict>
+                                       </array>
+                               </dict>
+                       </array>
+               </dict>
+
+               <dict>
+                       <key>branch</key>
+                       <string>netbsd-3</string>
+
+                       <key>archs</key>
+                       <array>
+                               <dict>
+                                       <key>arch</key>
+                                       <string>all</string>
+                                       <key>files</key>
+                                       <array>
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/games/dm/dm.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.21.2.1</string>
+                                               </dict>
+
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/games/sail/pl_main.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.16.6.1</string>
+                                               </dict>
+
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/games/tetris/scores.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.13.6.1</string>
+                                               </dict>
+                                       </array>
+                               </dict>
+                       </array>
+               </dict>
+
+               <dict>
+                       <key>branch</key>
+                       <string>netbsd-2</string>
+
+                       <key>archs</key>
+                       <array>
+                               <dict>
+                                       <key>arch</key>
+                                       <string>all</string>
+                                       <key>files</key>
+                                       <array>
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/games/dm/dm.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.20.4.1</string>
+                                               </dict>
+
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/games/sail/pl_main.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.16.4.1</string>
+                                               </dict>
+
+                                               <dict>
+                                                       <key>file</key>
+                                                       <string>src/games/tetris/scores.c</string>
+                                                       <key>revision</key>
+                                                       <string>1.13.4.1</string>
+                                               </dict>
+                                       </array>
+                               </dict>
+                       </array>
+               </dict>
+       </array>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/ah.xml
===================================================================
RCS file: regress/lib/libprop/samples/ah.xml
diff -N regress/lib/libprop/samples/ah.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/ah.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>AB21vCardEncoding</key>
+       <string>MACINTOSH</string>
+       <key>ABDefaultAddressCountryCode</key>
+       <string>us</string>
+       <key>ABImportTipCards</key>
+       <true/>
+       <key>ABMetaDataChangeCount</key>
+       <integer>3</integer>
+       <key>ABNameDisplay</key>
+       <integer>0</integer>
+       <key>ABNameSorting</key>
+       <integer>1</integer>
+       <key>ABSKCompactionHint</key>
+       <integer>5</integer>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/ai.xml
===================================================================
RCS file: regress/lib/libprop/samples/ai.xml
diff -N regress/lib/libprop/samples/ai.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/ai.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>AppendAMPM</key>
+       <true/>
+       <key>ClockDigital</key>
+       <true/>
+       <key>ClockEnabled</key>
+       <true/>
+       <key>DisplaySeconds</key>
+       <false/>
+       <key>FlashSeparators</key>
+       <false/>
+       <key>LastSavedGlobalTimeString</key>
+       <string>h:mm:ss a</string>
+       <key>PreferencesVersion</key>
+       <integer>2</integer>
+       <key>ShowDay</key>
+       <true/>
+       <key>Use24HourClock</key>
+       <false/>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/aj.xml
===================================================================
RCS file: regress/lib/libprop/samples/aj.xml
diff -N regress/lib/libprop/samples/aj.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/aj.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>AgentLastLaunched</key>
+       <integer>174413322</integer>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/ak.xml
===================================================================
RCS file: regress/lib/libprop/samples/ak.xml
diff -N regress/lib/libprop/samples/ak.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/ak.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>LastExpireCheck</key>
+       <integer>732504</integer>
+       <key>LastIntegrityCheck</key>
+       <integer>732504</integer>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/al.xml
===================================================================
RCS file: regress/lib/libprop/samples/al.xml
diff -N regress/lib/libprop/samples/al.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/al.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>NSRecentDocumentRecords</key>
+       <array>
+               <dict>
+                       <key>_NSLocator</key>
+                       <dict>
+                               <key>_NSPath</key>
+                               <string>/afs/ms.mff.cuni.cz/u/c/cahyp8am/diplomka/clanek/V.doc</string>
+                       </dict>
+               </dict>
+       </array>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/am.xml
===================================================================
RCS file: regress/lib/libprop/samples/am.xml
diff -N regress/lib/libprop/samples/am.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/am.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>WebIconDatabaseEnabled</key>
+       <false/>
+       <key>__NSEnableTSMDocumentWindowLevel</key>
+       <true/>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/an.xml
===================================================================
RCS file: regress/lib/libprop/samples/an.xml
diff -N regress/lib/libprop/samples/an.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/an.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>com.apple.TextEdit</key>
+       <array>
+               <array>
+                       <string>TextEditHelp</string>
+                       <string>file://localhost/Applications/TextEdit.app/Contents/Resources/English.lproj/TextEditHelp/</string>
+               </array>
+       </array>
+       <key>hu.mplayerhq.mplayerosx</key>
+       <array>
+               <array>
+                       <string>MPlayer OSX Help</string>
+                       <string>file://localhost/Applications/MPlayer%20OSX.app/Contents/Resources/English.lproj/MPlayer%20OSX%20Help/</string>
+               </array>
+       </array>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/ao.xml
===================================================================
RCS file: regress/lib/libprop/samples/ao.xml
diff -N regress/lib/libprop/samples/ao.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/ao.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>HVIncludesKBSearches</key>
+       <true/>
+       <key>NSRecentDocumentRecords</key>
+       <array/>
+       <key>WebIconDatabaseDirectoryDefaultsKey</key>
+       <string>~/Library/Icons</string>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/ap.xml
===================================================================
RCS file: regress/lib/libprop/samples/ap.xml
diff -N regress/lib/libprop/samples/ap.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/ap.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>WWWHomePage</key>
+       <string>http://livepage.apple.com/</string>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/aq.xml
===================================================================
RCS file: regress/lib/libprop/samples/aq.xml
diff -N regress/lib/libprop/samples/aq.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/aq.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,902 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>WebPluginLocalizationName</key>
+       <string>en_US</string>
+       <key>WebPluginMIMETypes</key>
+       <dict>
+               <key>application/pdf</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>pdf</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>PDF Image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <false/>
+               </dict>
+               <key>application/sdp</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>sdp</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>SDP stream descriptor</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>application/smil</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>smi</string>
+                               <string>sml</string>
+                               <string>smil</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>SMIL 1.0</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <false/>
+               </dict>
+               <key>application/x-mpeg</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>amc</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>AMC media</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>application/x-quicktimeplayer</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>qtl</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>QuickTime Player Movie</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <false/>
+               </dict>
+               <key>application/x-quicktimeupdater</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>qup</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>QuickTime Update Package</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <false/>
+               </dict>
+               <key>application/x-rtsp</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>rtsp</string>
+                               <string>rts</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>RTSP stream descriptor</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>application/x-sdp</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>sdp</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>SDP stream descriptor</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>application/x-shockwave-flash</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>swf</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>Flash media</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <false/>
+               </dict>
+               <key>audio/3gpp</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>3gp</string>
+                               <string>3gpp</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>3GPP media</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/3gpp2</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>3g2</string>
+                               <string>3gp2</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>3GPP2 media</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/AMR</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>AMR</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>AMR audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/aac</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>aac</string>
+                               <string>adts</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>AAC audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/aiff</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>aiff</string>
+                               <string>aif</string>
+                               <string>aifc</string>
+                               <string>cdda</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>AIFF audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/basic</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>au</string>
+                               <string>snd</string>
+                               <string>ulw</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>uLaw/AU audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/mid</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>mid</string>
+                               <string>midi</string>
+                               <string>smf</string>
+                               <string>kar</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>MIDI</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/midi</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>mid</string>
+                               <string>midi</string>
+                               <string>smf</string>
+                               <string>kar</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>MIDI</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/mp3</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>mp3</string>
+                               <string>swa</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>MP3 audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/mp4</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>mp4</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>MPEG-4 media</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/mpeg</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>mpeg</string>
+                               <string>mpg</string>
+                               <string>m1s</string>
+                               <string>m1a</string>
+                               <string>mp2</string>
+                               <string>mpm</string>
+                               <string>mpa</string>
+                               <string>m2a</string>
+                               <string>mp3</string>
+                               <string>swa</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>MPEG audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/mpeg3</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>mp3</string>
+                               <string>swa</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>MP3 audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/mpegurl</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>m3u</string>
+                               <string>m3url</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>MP3 playlist</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <false/>
+               </dict>
+               <key>audio/vnd.qcelp</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>qcp</string>
+                               <string>qcp</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>QUALCOMM PureVoice audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/wav</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>wav</string>
+                               <string>bwf</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>WAVE audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/x-aac</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>aac</string>
+                               <string>adts</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>AAC audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/x-aiff</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>aiff</string>
+                               <string>aif</string>
+                               <string>aifc</string>
+                               <string>cdda</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>AIFF audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/x-caf</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>caf</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>CAF audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/x-gsm</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>gsm</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>GSM audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/x-m4a</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>m4a</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>AAC audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/x-m4b</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>m4b</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>AAC audio book</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/x-m4p</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>m4p</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>AAC audio (protected)</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/x-midi</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>mid</string>
+                               <string>midi</string>
+                               <string>smf</string>
+                               <string>kar</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>MIDI</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/x-mp3</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>mp3</string>
+                               <string>swa</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>MP3 audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/x-mpeg</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>mpeg</string>
+                               <string>mpg</string>
+                               <string>m1s</string>
+                               <string>m1a</string>
+                               <string>mp2</string>
+                               <string>mpm</string>
+                               <string>mpa</string>
+                               <string>m2a</string>
+                               <string>mp3</string>
+                               <string>swa</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>MPEG audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/x-mpeg3</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>mp3</string>
+                               <string>swa</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>MP3 audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>audio/x-mpegurl</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>m3u</string>
+                               <string>m3url</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>MP3 playlist</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <false/>
+               </dict>
+               <key>audio/x-sd2</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>sd2</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>Sound Designer II</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <false/>
+               </dict>
+               <key>audio/x-wav</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>wav</string>
+                               <string>bwf</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>WAVE audio</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>image/gif</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>gif</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>GIF image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <false/>
+               </dict>
+               <key>image/jp2</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>jp2</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>JPEG2000 image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>image/jpeg</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>jpeg</string>
+                               <string>jpg</string>
+                               <string>jpe</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>JPEG image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <false/>
+               </dict>
+               <key>image/jpeg2000</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>jp2</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>JPEG2000 image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>image/jpeg2000-image</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>jp2</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>JPEG2000 image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>image/pict</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>pict</string>
+                               <string>pic</string>
+                               <string>pct</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>PICT image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>image/pjpeg</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>jpeg</string>
+                               <string>jpg</string>
+                               <string>jpe</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>JPEG image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <false/>
+               </dict>
+               <key>image/png</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>png</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>PNG image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>image/tiff</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>tif</string>
+                               <string>tiff</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>TIFF image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>image/vnd.fpx</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>fpx</string>
+                               <string>fpix</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>FlashPix image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <false/>
+               </dict>
+               <key>image/x-bmp</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>bmp</string>
+                               <string>dib</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>BMP image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>image/x-jpeg2000-image</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>jp2</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>JPEG2000 image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>image/x-macpaint</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>pntg</string>
+                               <string>pnt</string>
+                               <string>mac</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>MacPaint image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>image/x-photoshop</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>psd</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>Photoshop image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <false/>
+               </dict>
+               <key>image/x-pict</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>pict</string>
+                               <string>pic</string>
+                               <string>pct</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>PICT image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>image/x-png</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>png</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>PNG image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>image/x-quicktime</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>qtif</string>
+                               <string>qti</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>QuickTime image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>image/x-sgi</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>sgi</string>
+                               <string>rgb</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>SGI image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>image/x-targa</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>targa</string>
+                               <string>tga</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>TGA image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>image/x-tiff</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>tif</string>
+                               <string>tiff</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>TIFF image</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>text/x-html-insertion</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>qht</string>
+                               <string>qhtm</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>QuickTime HTML (QHTM)</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <false/>
+               </dict>
+               <key>video/3gpp</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>3gp</string>
+                               <string>3gpp</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>3GPP media</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>video/3gpp2</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>3g2</string>
+                               <string>3gp2</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>3GPP2 media</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>video/avi</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>avi</string>
+                               <string>vfw</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>Video For Windows (AVI)</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>video/flc</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>flc</string>
+                               <string>fli</string>
+                               <string>cel</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>AutoDesk Animator (FLC)</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>video/mp4</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>mp4</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>MPEG-4 media</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>video/mpeg</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>mpeg</string>
+                               <string>mpg</string>
+                               <string>m1s</string>
+                               <string>m1v</string>
+                               <string>m1a</string>
+                               <string>m75</string>
+                               <string>m15</string>
+                               <string>mp2</string>
+                               <string>mpm</string>
+                               <string>mpv</string>
+                               <string>mpa</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>MPEG media</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>video/msvideo</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>avi</string>
+                               <string>vfw</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>Video For Windows (AVI)</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>video/quicktime</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>mov</string>
+                               <string>qt</string>
+                               <string>mqv</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>QuickTime Movie</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>video/sd-video</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>sdv</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>SD video</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>video/x-dv</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>dv</string>
+                               <string>dif</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>Digital video (DV)</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <false/>
+               </dict>
+               <key>video/x-m4v</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>m4v</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>Video (protected)</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>video/x-mpeg</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>mpeg</string>
+                               <string>mpg</string>
+                               <string>m1s</string>
+                               <string>m1v</string>
+                               <string>m1a</string>
+                               <string>m75</string>
+                               <string>m15</string>
+                               <string>mp2</string>
+                               <string>mpm</string>
+                               <string>mpv</string>
+                               <string>mpa</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>MPEG media</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+               <key>video/x-msvideo</key>
+               <dict>
+                       <key>WebPluginExtensions</key>
+                       <array>
+                               <string>avi</string>
+                               <string>vfw</string>
+                       </array>
+                       <key>WebPluginTypeDescription</key>
+                       <string>Video For Windows (AVI)</string>
+                       <key>WebPluginTypeEnabled</key>
+                       <true/>
+               </dict>
+       </dict>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/ar.xml
===================================================================
RCS file: regress/lib/libprop/samples/ar.xml
diff -N regress/lib/libprop/samples/ar.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/ar.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>AbsoluteSchedule</key>
+       <dict/>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/as.xml
===================================================================
RCS file: regress/lib/libprop/samples/as.xml
diff -N regress/lib/libprop/samples/as.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/as.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>__NSEnableTSMDocumentWindowLevel</key>
+       <true/>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/at.xml
===================================================================
RCS file: regress/lib/libprop/samples/at.xml
diff -N regress/lib/libprop/samples/at.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/at.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>done_xinit_check</key>
+       <true/>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/au.xml
===================================================================
RCS file: regress/lib/libprop/samples/au.xml
diff -N regress/lib/libprop/samples/au.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/au.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>BuildVersionStampAsNumber</key>
+       <integer>17371360</integer>
+       <key>BuildVersionStampAsString</key>
+       <string>8J135</string>
+       <key>SystemVersionStampAsNumber</key>
+       <integer>168036096</integer>
+       <key>SystemVersionStampAsString</key>
+       <string>10.4.7</string>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/av.xml
===================================================================
RCS file: regress/lib/libprop/samples/av.xml
diff -N regress/lib/libprop/samples/av.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/av.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,383 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>checked-for-dashboard</key>
+       <true/>
+       <key>mod-count</key>
+       <integer>2</integer>
+       <key>persistent-apps</key>
+       <array>
+               <dict>
+                       <key>tile-data</key>
+                       <dict>
+                               <key>file-label</key>
+                               <string></string>
+                       </dict>
+                       <key>tile-type</key>
+                       <string>dashboard-tile</string>
+               </dict>
+               <dict>
+                       <key>GUID</key>
+                       <integer>510550320</integer>
+                       <key>tile-data</key>
+                       <dict>
+                               <key>file-data</key>
+                               <dict>
+                                       <key>_CFURLAliasData</key>
+                                       <data>
+                                       AAAAAACIAAMAAQAAwA9pqQAASCsAAAAAAAAB
+                                       LQAA/jsAAL5NKmAAAAAACSD//gAAAAAAAAAA
+                                       /////wABAAQAAAEtAA4AEgAIAE0AYQBpAGwA
+                                       LgBhAHAAcAAPAAgAAwBIAEQARAASABVBcHBs
+                                       aWNhdGlvbnMvTWFpbC5hcHAAABMAAS8A//8A
+                                       AA==
+                                       </data>
+                                       <key>_CFURLString</key>
+                                       <string>/Applications/Mail.app/</string>
+                                       <key>_CFURLStringType</key>
+                                       <integer>0</integer>
+                               </dict>
+                               <key>file-label</key>
+                               <string>Mail</string>
+                               <key>file-mod-date</key>
+                               <integer>3234415823</integer>
+                               <key>file-type</key>
+                               <integer>41</integer>
+                               <key>parent-mod-date</key>
+                               <integer>3234415823</integer>
+                       </dict>
+                       <key>tile-type</key>
+                       <string>file-tile</string>
+               </dict>
+               <dict>
+                       <key>GUID</key>
+                       <integer>510550321</integer>
+                       <key>tile-data</key>
+                       <dict>
+                               <key>file-data</key>
+                               <dict>
+                                       <key>_CFURLAliasData</key>
+                                       <data>
+                                       AAAAAACOAAMAAQAAwA9pqQAASCsAAAAAAAAB
+                                       LQABVRAAAL4xm1MAAAAACSD//gAAAAAAAAAA
+                                       /////wABAAQAAAEtAA4AFgAKAFMAYQBmAGEA
+                                       cgBpAC4AYQBwAHAADwAIAAMASABEAEQAEgAX
+                                       QXBwbGljYXRpb25zL1NhZmFyaS5hcHAAABMA
+                                       AS8A//8AAA==
+                                       </data>
+                                       <key>_CFURLString</key>
+                                       <string>/Applications/Safari.app/</string>
+                                       <key>_CFURLStringType</key>
+                                       <integer>0</integer>
+                               </dict>
+                               <key>file-label</key>
+                               <string>Safari</string>
+                               <key>file-mod-date</key>
+                               <integer>3234415823</integer>
+                               <key>file-type</key>
+                               <integer>41</integer>
+                               <key>parent-mod-date</key>
+                               <integer>3234415823</integer>
+                       </dict>
+                       <key>tile-type</key>
+                       <string>file-tile</string>
+               </dict>
+               <dict>
+                       <key>GUID</key>
+                       <integer>510550322</integer>
+                       <key>tile-data</key>
+                       <dict>
+                               <key>file-data</key>
+                               <dict>
+                                       <key>_CFURLAliasData</key>
+                                       <data>
+                                       AAAAAACKAAMAAQAAwA9pqQAASCsAAAAAAAAB
+                                       LQABREwAAL98VkMAAAAACSD//gAAAAAAAAAA
+                                       /////wABAAQAAAEtAA4AFAAJAGkAQwBoAGEA
+                                       dAAuAGEAcABwAA8ACAADAEgARABEABIAFkFw
+                                       cGxpY2F0aW9ucy9pQ2hhdC5hcHAAEwABLwD/
+                                       /wAA
+                                       </data>
+                                       <key>_CFURLString</key>
+                                       <string>/Applications/iChat.app/</string>
+                                       <key>_CFURLStringType</key>
+                                       <integer>0</integer>
+                               </dict>
+                               <key>file-label</key>
+                               <string>iChat</string>
+                               <key>file-mod-date</key>
+                               <integer>3234415823</integer>
+                               <key>file-type</key>
+                               <integer>41</integer>
+                               <key>parent-mod-date</key>
+                               <integer>3234415823</integer>
+                       </dict>
+                       <key>tile-type</key>
+                       <string>file-tile</string>
+               </dict>
+               <dict>
+                       <key>GUID</key>
+                       <integer>510550323</integer>
+                       <key>tile-data</key>
+                       <dict>
+                               <key>file-data</key>
+                               <dict>
+                                       <key>_CFURLAliasData</key>
+                                       <data>
+                                       AAAAAACgAAMAAQAAwA9pqQAASCsAAAAAAAAB
+                                       LQABFTgAAL9+JFIAAAAACSD//gAAAAAAAAAA
+                                       /////wABAAQAAAEtAA4AIgAQAEEAZABkAHIA
+                                       ZQBzAHMAIABCAG8AbwBrAC4AYQBwAHAADwAI
+                                       AAMASABEAEQAEgAdQXBwbGljYXRpb25zL0Fk
+                                       ZHJlc3MgQm9vay5hcHAAABMAAS8A//8AAA==
+                                       </data>
+                                       <key>_CFURLString</key>
+                                       <string>/Applications/Address Book.app/</string>
+                                       <key>_CFURLStringType</key>
+                                       <integer>0</integer>
+                               </dict>
+                               <key>file-label</key>
+                               <string>Address Book</string>
+                               <key>file-mod-date</key>
+                               <integer>3234415823</integer>
+                               <key>file-type</key>
+                               <integer>41</integer>
+                               <key>parent-mod-date</key>
+                               <integer>3234415823</integer>
+                       </dict>
+                       <key>tile-type</key>
+                       <string>file-tile</string>
+               </dict>
+               <dict>
+                       <key>GUID</key>
+                       <integer>510550324</integer>
+                       <key>tile-data</key>
+                       <dict>
+                               <key>file-data</key>
+                               <dict>
+                                       <key>_CFURLAliasData</key>
+                                       <data>
+                                       AAAAAACOAAMAAQAAwA9pqQAASCsAAAAAAAAB
+                                       LQABOgYAAL9+IXEAAAAACSD//gAAAAAAAAAA
+                                       /////wABAAQAAAEtAA4AFgAKAGkAVAB1AG4A
+                                       ZQBzAC4AYQBwAHAADwAIAAMASABEAEQAEgAX
+                                       QXBwbGljYXRpb25zL2lUdW5lcy5hcHAAABMA
+                                       AS8A//8AAA==
+                                       </data>
+                                       <key>_CFURLString</key>
+                                       <string>/Applications/iTunes.app/</string>
+                                       <key>_CFURLStringType</key>
+                                       <integer>0</integer>
+                               </dict>
+                               <key>file-label</key>
+                               <string>iTunes</string>
+                               <key>file-mod-date</key>
+                               <integer>3224322669</integer>
+                               <key>file-type</key>
+                               <integer>41</integer>
+                               <key>parent-mod-date</key>
+                               <integer>3234415823</integer>
+                       </dict>
+                       <key>tile-type</key>
+                       <string>file-tile</string>
+               </dict>
+               <dict>
+                       <key>GUID</key>
+                       <integer>510550325</integer>
+                       <key>tile-data</key>
+                       <dict>
+                               <key>file-data</key>
+                               <dict>
+                                       <key>_CFURLString</key>
+                                       <string>/Applications/iPhoto.app</string>
+                                       <key>_CFURLStringType</key>
+                                       <integer>0</integer>
+                               </dict>
+                               <key>file-label</key>
+                               <string>iPhoto</string>
+                               <key>file-mod-date</key>
+                               <integer>0</integer>
+                               <key>file-type</key>
+                               <integer>1</integer>
+                               <key>parent-mod-date</key>
+                               <integer>0</integer>
+                       </dict>
+                       <key>tile-type</key>
+                       <string>file-tile</string>
+               </dict>
+               <dict>
+                       <key>GUID</key>
+                       <integer>510550326</integer>
+                       <key>tile-data</key>
+                       <dict>
+                               <key>file-data</key>
+                               <dict>
+                                       <key>_CFURLString</key>
+                                       <string>/Applications/iMovie.app</string>
+                                       <key>_CFURLStringType</key>
+                                       <integer>0</integer>
+                               </dict>
+                               <key>file-label</key>
+                               <string>iMovie</string>
+                               <key>file-mod-date</key>
+                               <integer>0</integer>
+                               <key>file-type</key>
+                               <integer>1</integer>
+                               <key>parent-mod-date</key>
+                               <integer>0</integer>
+                       </dict>
+                       <key>tile-type</key>
+                       <string>file-tile</string>
+               </dict>
+               <dict>
+                       <key>GUID</key>
+                       <integer>510550327</integer>
+                       <key>tile-data</key>
+                       <dict>
+                               <key>file-data</key>
+                               <dict>
+                                       <key>_CFURLString</key>
+                                       <string>/Applications/iMovie HD.app</string>
+                                       <key>_CFURLStringType</key>
+                                       <integer>0</integer>
+                               </dict>
+                               <key>file-label</key>
+                               <string>iMovie HD</string>
+                               <key>file-mod-date</key>
+                               <integer>0</integer>
+                               <key>file-type</key>
+                               <integer>1</integer>
+                               <key>parent-mod-date</key>
+                               <integer>0</integer>
+                       </dict>
+                       <key>tile-type</key>
+                       <string>file-tile</string>
+               </dict>
+               <dict>
+                       <key>GUID</key>
+                       <integer>510550328</integer>
+                       <key>tile-data</key>
+                       <dict>
+                               <key>file-data</key>
+                               <dict>
+                                       <key>_CFURLAliasData</key>
+                                       <data>
+                                       AAAAAACIAAMAAQAAwA9pqQAASCsAAAAAAAAB
+                                       LQABIVwAAL8vox8AAAAACSD//gAAAAAAAAAA
+                                       /////wABAAQAAAEtAA4AEgAIAGkAQwBhAGwA
+                                       LgBhAHAAcAAPAAgAAwBIAEQARAASABVBcHBs
+                                       aWNhdGlvbnMvaUNhbC5hcHAAABMAAS8A//8A
+                                       AA==
+                                       </data>
+                                       <key>_CFURLString</key>
+                                       <string>/Applications/iCal.app/</string>
+                                       <key>_CFURLStringType</key>
+                                       <integer>0</integer>
+                               </dict>
+                               <key>file-label</key>
+                               <string>iCal</string>
+                               <key>file-mod-date</key>
+                               <integer>3207570207</integer>
+                               <key>file-type</key>
+                               <integer>41</integer>
+                               <key>parent-mod-date</key>
+                               <integer>3234415823</integer>
+                       </dict>
+                       <key>tile-type</key>
+                       <string>file-tile</string>
+               </dict>
+               <dict>
+                       <key>GUID</key>
+                       <integer>510550329</integer>
+                       <key>tile-data</key>
+                       <dict>
+                               <key>file-data</key>
+                               <dict>
+                                       <key>_CFURLAliasData</key>
+                                       <data>
+                                       AAAAAACsAAMAAQAAwA9pqQAASCsAAAAAAAAB
+                                       LQAAXNUAAL9+JEcAAAAACSD//gAAAAAAAAAA
+                                       /////wABAAQAAAEtAA4AKgAUAFEAdQBpAGMA
+                                       awBUAGkAbQBlACAAUABsAGEAeQBlAHIALgBh
+                                       AHAAcAAPAAgAAwBIAEQARAASACFBcHBsaWNh
+                                       dGlvbnMvUXVpY2tUaW1lIFBsYXllci5hcHAA
+                                       ABMAAS8A//8AAA==
+                                       </data>
+                                       <key>_CFURLString</key>
+                                       <string>/Applications/QuickTime Player.app/</string>
+                                       <key>_CFURLStringType</key>
+                                       <integer>0</integer>
+                               </dict>
+                               <key>file-label</key>
+                               <string>QuickTime Player</string>
+                               <key>file-mod-date</key>
+                               <integer>3234415823</integer>
+                               <key>file-type</key>
+                               <integer>41</integer>
+                               <key>parent-mod-date</key>
+                               <integer>3234415823</integer>
+                       </dict>
+                       <key>tile-type</key>
+                       <string>file-tile</string>
+               </dict>
+               <dict>
+                       <key>GUID</key>
+                       <integer>510550330</integer>
+                       <key>tile-data</key>
+                       <dict>
+                               <key>file-data</key>
+                               <dict>
+                                       <key>_CFURLAliasData</key>
+                                       <data>
+                                       AAAAAACyAAMAAQAAwA9pqQAASCsAAAAAAAAB
+                                       LQAAa9cAAL8vzjAAAAAACSD//gAAAAAAAAAA
+                                       /////wABAAQAAAEtAA4ALgAWAFMAeQBzAHQA
+                                       ZQBtACAAUAByAGUAZgBlAHIAZQBuAGMAZQBz
+                                       AC4AYQBwAHAADwAIAAMASABEAEQAEgAjQXBw
+                                       bGljYXRpb25zL1N5c3RlbSBQcmVmZXJlbmNl
+                                       cy5hcHAAABMAAS8A//8AAA==
+                                       </data>
+                                       <key>_CFURLString</key>
+                                       <string>/Applications/System Preferences.app/</string>
+                                       <key>_CFURLStringType</key>
+                                       <integer>0</integer>
+                               </dict>
+                               <key>file-label</key>
+                               <string>System Preferences</string>
+                               <key>file-mod-date</key>
+                               <integer>3207581232</integer>
+                               <key>file-type</key>
+                               <integer>41</integer>
+                               <key>parent-mod-date</key>
+                               <integer>3234415823</integer>
+                       </dict>
+                       <key>tile-type</key>
+                       <string>file-tile</string>
+               </dict>
+       </array>
+       <key>persistent-others</key>
+       <array>
+               <dict>
+                       <key>GUID</key>
+                       <integer>510550331</integer>
+                       <key>tile-data</key>
+                       <dict>
+                               <key>label</key>
+                               <string>Apple - Mac OS X</string>
+                               <key>url</key>
+                               <dict>
+                                       <key>_CFURLString</key>
+                                       <string>http://www.apple.com/macosx</string>
+                                       <key>_CFURLStringType</key>
+                                       <integer>15</integer>
+                               </dict>
+                       </dict>
+                       <key>tile-type</key>
+                       <string>url-tile</string>
+               </dict>
+       </array>
+       <key>version</key>
+       <integer>1</integer>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/aw.xml
===================================================================
RCS file: regress/lib/libprop/samples/aw.xml
diff -N regress/lib/libprop/samples/aw.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/aw.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>ComputerOptions</key>
+       <dict/>
+       <key>FXToolbarItems</key>
+       <array>
+               <dict>
+                       <key>item-id</key>
+                       <string>BACK</string>
+               </dict>
+               <dict>
+                       <key>item-id</key>
+                       <string>SWCH</string>
+               </dict>
+               <dict>
+                       <key>item-id</key>
+                       <string>ACTN</string>
+               </dict>
+               <dict>
+                       <key>item-id</key>
+                       <string>flxs</string>
+               </dict>
+               <dict>
+                       <key>item-id</key>
+                       <string>SRCH</string>
+               </dict>
+       </array>
+       <key>FXToolbarPrefsVersion</key>
+       <string>1</string>
+       <key>FileViewer.LastWindowLocation</key>
+       <string>143, 192, 841, 811</string>
+       <key>TrashOptions</key>
+       <dict/>
+       <key>WindowState</key>
+       <array>
+               <string>BROw</string>
+               <dict>
+                       <key>ScrollPosition</key>
+                       <dict>
+                               <key>h</key>
+                               <integer>0</integer>
+                               <key>v</key>
+                               <integer>220</integer>
+                       </dict>
+                       <key>ShowToolbar</key>
+                       <true/>
+                       <key>SidebarWidth</key>
+                       <integer>124</integer>
+                       <key>Target</key>
+                       <string>file://localhost/Applications/Utilities/</string>
+                       <key>ViewHeight</key>
+                       <integer>619</integer>
+                       <key>ViewStyle</key>
+                       <string>icnv</string>
+                       <key>WindowBounds</key>
+                       <dict>
+                               <key>bottom</key>
+                               <integer>811</integer>
+                               <key>left</key>
+                               <integer>143</integer>
+                               <key>right</key>
+                               <integer>841</integer>
+                               <key>top</key>
+                               <integer>192</integer>
+                       </dict>
+               </dict>
+       </array>
+       <key>recent-folders</key>
+       <array>
+               <dict>
+                       <key>file-data</key>
+                       <dict>
+                               <key>_CFURLAliasData</key>
+                               <data>
+                               AAAAAAEsAAIAAQNIREQAAAAAAAAAAAAAAAAAAAAAAAAA
+                               AAAAAADAD3e5SCsAAAAAAS0JVXRpbGl0aWVzAAAAAAAA
+                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+                               AAAAAAAAAAAAAAAAAAAAAAABLr+AjHoAAAAAAAAAAP//
+                               //8AAAkgAAAAAAAAAAAAAAAAAAAADEFwcGxpY2F0aW9u
+                               cwAQAAgAAMAPaakAAAARAAgAAL+AcFoAAAABAAQAAAEt
+                               AAIAGkhERDpBcHBsaWNhdGlvbnM6VXRpbGl0aWVzAA4A
+                               FAAJAFUAdABpAGwAaQB0AGkAZQBzAA8ACAADAEgARABE
+                               ABIAFkFwcGxpY2F0aW9ucy9VdGlsaXRpZXMAEwABLwD/
+                               /wAA
+                               </data>
+                               <key>_CFURLString</key>
+                               <string>file://localhost/Applications/Utilities/</string>
+                               <key>_CFURLStringType</key>
+                               <integer>15</integer>
+                       </dict>
+               </dict>
+               <dict>
+                       <key>file-data</key>
+                       <dict>
+                               <key>_CFURLAliasData</key>
+                               <data>
+                               AAAAAAESAAIAAQNIREQAAAAAAAAAAAAAAAAAAAAAAAAA
+                               AAAAAADAD3e5SCsAAAAAAAIMQXBwbGljYXRpb25zAAAA
+                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+                               AAAAAAAAAAAAAAAAAAAAAAABLb+Ag7EAAAAAAAAAAP//
+                               //8AAAkgAAAAAAAAAAAAAAAAAAAAA0hERAAAEAAIAADA
+                               D2mpAAAAEQAIAAC/gGeRAAAAAQAAAAIAEEhERDpBcHBs
+                               aWNhdGlvbnMADgAaAAwAQQBwAHAAbABpAGMAYQB0AGkA
+                               bwBuAHMADwAIAAMASABEAEQAEgAMQXBwbGljYXRpb25z
+                               ABMAAS8A//8AAA==
+                               </data>
+                               <key>_CFURLString</key>
+                               <string>file://localhost/Applications/</string>
+                               <key>_CFURLStringType</key>
+                               <integer>15</integer>
+                       </dict>
+               </dict>
+               <dict>
+                       <key>file-data</key>
+                       <dict>
+                               <key>_CFURLAliasData</key>
+                               <data>
+                               AAAAAAEWAAIAAQNhZnMAAAAAAAAAAAAAAAAAAAAAAAAA
+                               AAAAAAAAAAAAQkQAAf////8IY2FoeXA4YW0AAAAAAAAA
+                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+                               AAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAP//
+                               //8AABIAY3UAAAAAAAAAAAAAAAAAAWMAAAIAIS86YWZz
+                               Om1zLm1mZi5jdW5pLmN6OnU6YzpjYWh5cDhhbQAADgAS
+                               AAgAYwBhAGgAeQBwADgAYQBtAA8ACAADAGEAZgBzABIA
+                               HC9tcy5tZmYuY3VuaS5jei91L2MvY2FoeXA4YW0AEwAE
+                               L2FmcwAVAAIAIP//AAA=
+                               </data>
+                               <key>_CFURLString</key>
+                               <string>file://localhost/afs/ms.mff.cuni.cz/u/c/cahyp8am/</string>
+                               <key>_CFURLStringType</key>
+                               <integer>15</integer>
+                       </dict>
+               </dict>
+               <dict>
+                       <key>file-data</key>
+                       <dict>
+                               <key>_CFURLAliasData</key>
+                               <data>
+                               AAAAAAEqAAIAAQNhZnMAAAAAAAAAAAAAAAAAAAAAAAAA
+                               AAAAAAAAAAAAQkQAAf////8HRGVza3RvcAAAAAAAAAAA
+                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+                               AAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAP//
+                               //8AABIAY3UAAAAAAAAAAAAAAAAACGNhaHlwOGFtAAIA
+                               KS86YWZzOm1zLm1mZi5jdW5pLmN6OnU6YzpjYWh5cDhh
+                               bTpEZXNrdG9wAAAOABAABwBEAGUAcwBrAHQAbwBwAA8A
+                               CAADAGEAZgBzABIAJC9tcy5tZmYuY3VuaS5jei91L2Mv
+                               Y2FoeXA4YW0vRGVza3RvcAATAAQvYWZzABUAAgAg//8A
+                               AA==
+                               </data>
+                               <key>_CFURLString</key>
+                               <string>file://localhost/afs/ms.mff.cuni.cz/u/c/cahyp8am/Desktop/</string>
+                               <key>_CFURLStringType</key>
+                               <integer>15</integer>
+                       </dict>
+               </dict>
+               <dict>
+                       <key>file-data</key>
+                       <dict>
+                               <key>_CFURLAliasData</key>
+                               <data>
+                               AAAAAADIAAIAAQNhZnMAAAAAAAAAAAAAAAAAAAAAAAAA
+                               AAAAAAAAAAAAQkQAAf////8DYWZzAAAAAAAAAAAAAAAA
+                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+                               AAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAP//
+                               //8AABIAY3UAAAAAAAAAAAAAAAIABS86YWZzAAAOAAgA
+                               AwBhAGYAcwAPAAgAAwBhAGYAcwASAAAAEwAEL2Fmc///
+                               AAA=
+                               </data>
+                               <key>_CFURLString</key>
+                               <string>file://localhost/afs/</string>
+                               <key>_CFURLStringType</key>
+                               <integer>15</integer>
+                       </dict>
+               </dict>
+       </array>
+       <key>toolbar-view-style</key>
+       <string>2</string>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/ax.xml
===================================================================
RCS file: regress/lib/libprop/samples/ax.xml
diff -N regress/lib/libprop/samples/ax.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/ax.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>Applications</key>
+       <dict>
+               <key>Controller</key>
+               <string>CustomListItems</string>
+               <key>CustomListItems</key>
+               <array>
+                       <dict>
+                               <key>Alias</key>
+                               <data>
+                               AAAAAACiAAMAAQAAwA9pqQAASCsAAAAAAAABLgAAChMA
+                               AL8vpD4AAAAACSD//gAAAAAAAAAA/////wABAAgAAAEu
+                               AAABLQAOABoADABUAGUAcgBtAGkAbgBhAGwALgBhAHAA
+                               cAAPAAgAAwBIAEQARAASACNBcHBsaWNhdGlvbnMvVXRp
+                               bGl0aWVzL1Rlcm1pbmFsLmFwcAAAEwABLwD//wAA
+                               </data>
+                               <key>Icon</key>
+                               <data>
+                               SW1nUgAAAOAAAAAARkJJTAAAANQAAAACAAAAAAAAAAAA
+                               xAADAAAAAMAPaakAAEgrAAAAAAAAChkAAOXqAAC/L6Pl
+                               AAAAAAkg//4AAAAAAAAAAP////8AAQAUAAAKGQAAChQA
+                               AAoTAAABLgAAAS0ADgAUAAkAaQBjAG8AbgAuAGkAYwBu
+                               AHMADwAIAAMASABEAEQAEgBAQXBwbGljYXRpb25zL1V0
+                               aWxpdGllcy9UZXJtaW5hbC5hcHAvQ29udGVudHMvUmVz
+                               b3VyY2VzL2ljb24uaWNucwATAAEvAP//AAA=
+                               </data>
+                               <key>Name</key>
+                               <string>Terminal</string>
+                       </dict>
+               </array>
+               <key>MaxAmount</key>
+               <integer>10</integer>
+       </dict>
+       <key>Servers</key>
+       <dict>
+               <key>Controller</key>
+               <string>CustomListItems</string>
+               <key>CustomListItems</key>
+               <array>
+                       <dict>
+                               <key>Alias</key>
+                               <data>
+                               AAAAAABiAAMAAQAAAAAAAAAAQkRjdQAB//////////8A
+                               AAAAAAAAAAAAEgD//gAAAAAAAAAA/////wAOAAgAAwBh
+                               AGYAcwAPAAgAAwBhAGYAcwASAAAAEwAEL2Fmc///AAA=
+                               </data>
+                               <key>Name</key>
+                               <string>afs</string>
+                       </dict>
+               </array>
+               <key>MaxAmount</key>
+               <integer>10</integer>
+       </dict>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/ay.xml
===================================================================
RCS file: regress/lib/libprop/samples/ay.xml
diff -N regress/lib/libprop/samples/ay.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/ay.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>AddressBarPreferencesWereConverted</key>
+       <true/>
+       <key>BuiltInBookmarksDate</key>
+       <string>2005-10-14 18:23:30 +0200</string>
+       <key>BuiltInBookmarksVersionString</key>
+       <string>5</string>
+       <key>CachedBookmarksFileDateNanoseconds</key>
+       <integer>0</integer>
+       <key>CachedBookmarksFileDateSeconds</key>
+       <integer>1152718722</integer>
+       <key>CachedBookmarksFileSize</key>
+       <integer>22048</integer>
+       <key>IEFavoritesWereImported</key>
+       <true/>
+       <key>LastVersionRun</key>
+       <string>419.3</string>
+       <key>NSToolbar Configuration SafariToolbarIdentifier</key>
+       <dict>
+               <key>TB Display Mode</key>
+               <integer>2</integer>
+               <key>TB Icon Size Mode</key>
+               <integer>1</integer>
+               <key>TB Is Shown</key>
+               <integer>1</integer>
+               <key>TB Item Identifiers</key>
+               <array>
+                       <string>BackForwardToolbarIdentifier</string>
+                       <string>StopOrReloadToolbarIdentifier</string>
+                       <string>AddBookmarkToolbarIdentifier</string>
+                       <string>InputFieldsToolbarIdentifier</string>
+               </array>
+               <key>TB Size Mode</key>
+               <integer>1</integer>
+               <key>TB Visibility Priority Values</key>
+               <dict>
+                       <key>BackForwardToolbarIdentifier</key>
+                       <array>
+                               <integer>999</integer>
+                       </array>
+                       <key>InputFieldsToolbarIdentifier</key>
+                       <array>
+                               <integer>1000</integer>
+                       </array>
+               </dict>
+       </dict>
+       <key>NSWindow Frame BrowserWindowFrame</key>
+       <string>527 106 800 772 0 0 1440 878 </string>
+       <key>NetscapeAndMozillaFavoritesWereImported</key>
+       <true/>
+       <key>OpenWindows</key>
+       <array/>
+       <key>WebIconDatabaseDirectoryDefaultsKey</key>
+       <string>~/Library/Safari/Icons</string>
+       <key>WebKitPrivateBrowsingEnabled</key>
+       <false/>
+       <key>WebKitRespectStandardStyleKeyEquivalents</key>
+       <true/>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/az.xml
===================================================================
RCS file: regress/lib/libprop/samples/az.xml
diff -N regress/lib/libprop/samples/az.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/az.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>NSColorPanelMode</key>
+       <string>6</string>
+       <key>NSColorPanelVisibleSwatchRows</key>
+       <integer>1</integer>
+       <key>NSWindow Frame NSColorPanel</key>
+       <string>491 339 201 309 0 0 1440 878 </string>
+       <key>StartupFile</key>
+       <string></string>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/ba.xml
===================================================================
RCS file: regress/lib/libprop/samples/ba.xml
diff -N regress/lib/libprop/samples/ba.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/ba.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>41a4ca9c705386d3-savedcity</key>
+       <string>prague</string>
+</dict>
+</plist>
Index: regress/lib/libprop/samples/bb.xml
===================================================================
RCS file: regress/lib/libprop/samples/bb.xml
diff -N regress/lib/libprop/samples/bb.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ regress/lib/libprop/samples/bb.xml  27 Oct 2007 15:47:24 -0000
@@ -0,0 +1,8137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<array>
+       <dict>
+               <key>attachment</key>
+               <string>audio</string>
+               <key>attribute</key>
+               <string>audiobus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>audio</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>midi</string>
+               <key>attribute</key>
+               <string>midibus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>midi</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>midi_pcppi</string>
+               <key>attribute</key>
+               <string>pcppi</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>midi</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcppi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>iic</string>
+               <key>attribute</key>
+               <string>i2cbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>iic</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>piixpm</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>irframe</string>
+               <key>attribute</key>
+               <string>irbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>irframe</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uirda</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>irframe</string>
+               <key>attribute</key>
+               <string>irbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>irframe</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>ustir</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>irframe</string>
+               <key>attribute</key>
+               <string>irbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>irframe</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>oboe</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>lpt_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>lpt</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>7</integer>
+                       <key>port</key>
+                       <integer>0x378</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>lpt_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>lpt</string>
+               <key>locators</key>
+               <dict>
+                       <key>port</key>
+                       <integer>0x278</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>lpt_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>lpt</string>
+               <key>locators</key>
+               <dict>
+                       <key>port</key>
+                       <integer>0x3bc</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>lpt_acpi</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>lpt</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x3</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>lpt_puc</string>
+               <key>attribute</key>
+               <string>puc</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>lpt</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>puc</string>
+               <key>unit</key>
+               <integer>0x3</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ld_iop</string>
+               <key>attribute</key>
+               <string>iop</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ld</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>iop</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ld_aac</string>
+               <key>attribute</key>
+               <string>aac</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ld</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>aac</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ld_amr</string>
+               <key>attribute</key>
+               <string>amr</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ld</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>amr</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ld_cac</string>
+               <key>attribute</key>
+               <string>cac</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ld</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cac</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ld_icp</string>
+               <key>attribute</key>
+               <string>icp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ld</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>icp</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ld_twa</string>
+               <key>attribute</key>
+               <string>twa</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ld</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>twa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ld_twe</string>
+               <key>attribute</key>
+               <string>twe</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ld</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>twe</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ld_mlx</string>
+               <key>attribute</key>
+               <string>mlx</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ld</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mlx</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ld_ataraid</string>
+               <key>attribute</key>
+               <string>ataraid</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ld</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>ataraid</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>acphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>acphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>amhphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>amhphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>bmtphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>bmtphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>brgphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>brgphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>tlphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>tlphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>nsphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>nsphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>nsphyter</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>nsphyter</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>gentbi</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>gentbi</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>glxtphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>glxtphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>gphyter</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>gphyter</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>qsphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>qsphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>inphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>inphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>iophy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>iophy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>exphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>exphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>lxtphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>lxtphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>makphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>makphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>icsphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>icsphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>igphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>igphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ikphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ikphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>sqphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>sqphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>tqphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>tqphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>dmphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>dmphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pnaphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pnaphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>rgephy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>rgephy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>urlphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>urlphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ukphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ukphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ciphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ciphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>rlphy</string>
+               <key>attribute</key>
+               <string>mii</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>rlphy</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>aic_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>aic</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>11</integer>
+                       <key>port</key>
+                       <integer>0x340</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>aic_pcmcia</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>aic</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>aic_isapnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>aic</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ahc_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>ahc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ahc_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ahc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ahc_eisa</string>
+               <key>attribute</key>
+               <string>eisa</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ahc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>eisa</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ahc_cardbus</string>
+               <key>attribute</key>
+               <string>cardbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ahc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardbus</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ahd_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ahd</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>dpt_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>dpt</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>dpt_eisa</string>
+               <key>attribute</key>
+               <string>eisa</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>dpt</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>eisa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cac_eisa</string>
+               <key>attribute</key>
+               <string>eisa</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>cac</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>eisa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cac_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>cac</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ciss_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ciss</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mlx_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>mlx</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mlx_eisa</string>
+               <key>attribute</key>
+               <string>eisa</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>mlx</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>eisa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>icp_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>icp</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>icpsp</string>
+               <key>attribute</key>
+               <string>icp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>icpsp</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>icp</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>aac_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>aac</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>adv_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>adv</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>adv_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>adv</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>adv_cardbus</string>
+               <key>attribute</key>
+               <string>cardbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>adv</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardbus</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>adw_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>adw</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>bha_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>bha</string>
+               <key>locators</key>
+               <dict>
+                       <key>port</key>
+                       <integer>0x330</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>bha_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>bha</string>
+               <key>locators</key>
+               <dict>
+                       <key>port</key>
+                       <integer>0x334</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>bha_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>bha</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>bha_eisa</string>
+               <key>attribute</key>
+               <string>eisa</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>bha</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>eisa</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>aha_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>aha</string>
+               <key>locators</key>
+               <dict>
+                       <key>port</key>
+                       <integer>0x330</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>aha_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>aha</string>
+               <key>locators</key>
+               <dict>
+                       <key>port</key>
+                       <integer>0x334</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>aha_isapnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>aha</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>aha_mca</string>
+               <key>attribute</key>
+               <string>mca</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>aha</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mca</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>iha_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>iha</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>isp_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>isp</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mfi_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>mfi</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mpt_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>mpt</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>njs_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>njs</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>njs_cardbus</string>
+               <key>attribute</key>
+               <string>cardbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>njs</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>siop_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>siop</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>esiop_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>esiop</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uha_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>uha</string>
+               <key>locators</key>
+               <dict>
+                       <key>port</key>
+                       <integer>0x330</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uha_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>uha</string>
+               <key>locators</key>
+               <dict>
+                       <key>port</key>
+                       <integer>0x340</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uha_eisa</string>
+               <key>attribute</key>
+               <string>eisa</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uha</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>eisa</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>an_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>an</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>an_isapnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>an</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>an_pcmcia</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>an</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>awi_pcmcia</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>awi</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wi_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wi</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wi_pcmcia</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wi</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ath_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ath</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ath_cardbus</string>
+               <key>attribute</key>
+               <string>cardbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ath</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>atw_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>atw</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>atw_cardbus</string>
+               <key>attribute</key>
+               <string>cardbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>atw</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>rtw_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>rtw</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>rtw_cardbus</string>
+               <key>attribute</key>
+               <string>cardbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>rtw</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ral_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ral</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ral_cardbus</string>
+               <key>attribute</key>
+               <string>cardbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ral</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ural</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ral</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ep_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ep</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ep_eisa</string>
+               <key>attribute</key>
+               <string>eisa</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ep</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>eisa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ep_isapnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ep</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ep_pcmcia</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ep</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ep_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ep</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ep_mca</string>
+               <key>attribute</key>
+               <string>mca</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ep</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mca</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ex_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ex</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ex_cardbus</string>
+               <key>attribute</key>
+               <string>cardbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ex</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>lc_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>lc</string>
+               <key>locators</key>
+               <dict>
+                       <key>port</key>
+                       <integer>0x320</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>le_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>le</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>le_isapnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>le</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>le_nele</string>
+               <key>attribute</key>
+               <string>nele</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>le</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>nele</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>le_bicc</string>
+               <key>attribute</key>
+               <string>bicc</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>le</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>bicc</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>le_mca</string>
+               <key>attribute</key>
+               <string>mca</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>le</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mca</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>hme_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>hme</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>tr_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>tr</string>
+               <key>locators</key>
+               <dict>
+                       <key>iomem</key>
+                       <integer>0xd8000</integer>
+                       <key>port</key>
+                       <integer>0xa20</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>tr_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>tr</string>
+               <key>locators</key>
+               <dict>
+                       <key>iomem</key>
+                       <integer>0xd0000</integer>
+                       <key>port</key>
+                       <integer>0xa24</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>tr_isapnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>tr</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>tr_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>tr</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>tr_mca</string>
+               <key>attribute</key>
+               <string>mca</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>tr</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mca</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cy_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>cy</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>en_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>en</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>esp_pcmcia</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>esp</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>spc_pcmcia</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>spc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ntwoc_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ntwoc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>fxp_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>fxp</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>fxp_cardbus</string>
+               <key>attribute</key>
+               <string>cardbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>fxp</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>sm_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>sm</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>10</integer>
+                       <key>port</key>
+                       <integer>0x300</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>sm_pcmcia</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>sm</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>sm_mhzc</string>
+               <key>attribute</key>
+               <string>mhzc</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>sm</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mhzc</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>epic_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>epic</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mbe_pcmcia</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>mbe</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ne_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>ne</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>9</integer>
+                       <key>port</key>
+                       <integer>0x280</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ne_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>ne</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>10</integer>
+                       <key>port</key>
+                       <integer>0x300</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ne_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ne</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ne_isapnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ne</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ne_pcmcia</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ne</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ne_mca</string>
+               <key>attribute</key>
+               <string>mca</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ne</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mca</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>com_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>com</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>4</integer>
+                       <key>port</key>
+                       <integer>0x3f8</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>com_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>com</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>3</integer>
+                       <key>port</key>
+                       <integer>0x2f8</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>com_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>com</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>5</integer>
+                       <key>port</key>
+                       <integer>0x3e8</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>com_acpi</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>com</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x3</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>com_puc</string>
+               <key>attribute</key>
+               <string>puc</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>com</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>puc</string>
+               <key>unit</key>
+               <integer>0x3</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>com_isapnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>com</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x3</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>com_pcmcia</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>com</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x3</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>com_pcmcom</string>
+               <key>attribute</key>
+               <string>pcmcom</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>com</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcom</string>
+               <key>unit</key>
+               <integer>0x3</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>com_cardbus</string>
+               <key>attribute</key>
+               <string>cardbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>com</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardbus</string>
+               <key>unit</key>
+               <integer>0x3</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>com_mca</string>
+               <key>attribute</key>
+               <string>mca</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>com</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mca</string>
+               <key>unit</key>
+               <integer>0x3</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>com_xirc</string>
+               <key>attribute</key>
+               <string>xirc</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>com</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>xirc</string>
+               <key>unit</key>
+               <integer>0x3</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>com_mhzc</string>
+               <key>attribute</key>
+               <string>mhzc</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>com</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mhzc</string>
+               <key>unit</key>
+               <integer>0x3</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pckbc_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>pckbc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pckbc_acpi</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pckbc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>attimer_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>attimer</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>attimer_acpi</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>attimer</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ug_acpi</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ug</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>esh_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>esh</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>opl_cmpci</string>
+               <key>attribute</key>
+               <string>cmpci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>opl</string>
+               <key>flags</key>
+               <integer>0x1</integer>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cmpci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>opl_eso</string>
+               <key>attribute</key>
+               <string>eso</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>opl</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>eso</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>opl_ess</string>
+               <key>attribute</key>
+               <string>ess</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>opl</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>ess</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>opl_fms</string>
+               <key>attribute</key>
+               <string>fms</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>opl</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>fms</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>opl_sb</string>
+               <key>attribute</key>
+               <string>sbdsp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>opl</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>sb</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>opl_sv</string>
+               <key>attribute</key>
+               <string>sv</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>opl</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>sv</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>opl_wss</string>
+               <key>attribute</key>
+               <string>wss</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>opl</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>wss</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>opl_yds</string>
+               <key>attribute</key>
+               <string>yds</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>opl</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>yds</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>opl_ym</string>
+               <key>attribute</key>
+               <string>ym</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>opl</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>ym</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mpu_acpi</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>mpu</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mpu_isapnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>mpu</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mpu_cmpci</string>
+               <key>attribute</key>
+               <string>cmpci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>mpu</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cmpci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mpu_eso</string>
+               <key>attribute</key>
+               <string>eso</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>mpu</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>eso</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mpu_fms</string>
+               <key>attribute</key>
+               <string>fms</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>mpu</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>fms</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mpu_sb</string>
+               <key>attribute</key>
+               <string>sbdsp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>mpu</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>sb</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mpu_yds</string>
+               <key>attribute</key>
+               <string>yds</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>mpu</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>yds</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mpu_ym</string>
+               <key>attribute</key>
+               <string>ym</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>mpu</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>ym</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>rtk_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>rtk</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>rtk_cardbus</string>
+               <key>attribute</key>
+               <string>cardbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>rtk</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>re_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>re</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wdc_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>wdc</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>14</integer>
+                       <key>port</key>
+                       <integer>0x1f0</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wdc_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>wdc</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>15</integer>
+                       <key>port</key>
+                       <integer>0x170</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wdc_isapnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wdc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wdc_pcmcia</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wdc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>atabus</string>
+               <key>attribute</key>
+               <string>ata</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>atabus</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ahcisata_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ahcisata</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>jmahci</string>
+               <key>attribute</key>
+               <string>jmide_hl</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ahcisata</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>jmide</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>tlp_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>tlp</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>tlp_eisa</string>
+               <key>attribute</key>
+               <string>eisa</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>tlp</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>eisa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>tlp_cardbus</string>
+               <key>attribute</key>
+               <string>cardbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>tlp</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>sf_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>sf</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>we_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>we</string>
+               <key>locators</key>
+               <dict>
+                       <key>iomem</key>
+                       <integer>0xd0000</integer>
+                       <key>irq</key>
+                       <integer>9</integer>
+                       <key>port</key>
+                       <integer>0x280</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>we_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>we</string>
+               <key>locators</key>
+               <dict>
+                       <key>iomem</key>
+                       <integer>0xcc000</integer>
+                       <key>irq</key>
+                       <integer>10</integer>
+                       <key>port</key>
+                       <integer>0x300</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>we_mca</string>
+               <key>attribute</key>
+               <string>mca</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>we</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mca</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ate_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>ate</string>
+               <key>locators</key>
+               <dict>
+                       <key>port</key>
+                       <integer>0x2a0</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ate_mca</string>
+               <key>attribute</key>
+               <string>mca</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ate</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mca</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>fmv_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>fmv</string>
+               <key>locators</key>
+               <dict>
+                       <key>port</key>
+                       <integer>0x2a0</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>fmv_isapnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>fmv</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cs_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>cs</string>
+               <key>locators</key>
+               <dict>
+                       <key>port</key>
+                       <integer>0x300</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cs_pcmcia</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>cs</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>hpet_acpi</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>hpet</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>vga_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>vga</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>vga_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>vga</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uhci_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uhci</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uhci_cardbus</string>
+               <key>attribute</key>
+               <string>cardbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uhci</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ohci_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ohci</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ohci_cardbus</string>
+               <key>attribute</key>
+               <string>cardbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ohci</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ehci_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ehci</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ehci_cardbus</string>
+               <key>attribute</key>
+               <string>cardbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ehci</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mtd_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>mtd</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>radio</string>
+               <key>attribute</key>
+               <string>radiodev</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>radio</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>udsbr</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>radio</string>
+               <key>attribute</key>
+               <string>radiodev</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>radio</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>bktr</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>fwohci_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>fwohci</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>fwohci_cardbus</string>
+               <key>attribute</key>
+               <string>cardbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>fwohci</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>spic_acpi</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>spic</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>joy_acpi</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>joy</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>joy_isapnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>joy</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>joy_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>joy</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>joy_eso</string>
+               <key>attribute</key>
+               <string>eso</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>joy</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>eso</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>gpio</string>
+               <key>attribute</key>
+               <string>gpiobus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>gpio</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>elansc</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ioapic</string>
+               <key>attribute</key>
+               <string>ioapicbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ioapic</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mainbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>scsibus</string>
+               <key>attribute</key>
+               <string>scsi</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>scsibus</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>atapibus</string>
+               <key>attribute</key>
+               <string>atapi</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>atapibus</string>
+               <key>locators</key>
+               <dict/>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cd</string>
+               <key>attribute</key>
+               <string>scsibus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>cd</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>scsibus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cd</string>
+               <key>attribute</key>
+               <string>atapibus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>cd</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>atapibus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ch</string>
+               <key>attribute</key>
+               <string>scsibus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ch</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>scsibus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>sd</string>
+               <key>attribute</key>
+               <string>scsibus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>sd</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>scsibus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>sd</string>
+               <key>attribute</key>
+               <string>atapibus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>sd</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>atapibus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>st_scsibus</string>
+               <key>attribute</key>
+               <string>scsibus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>st</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>scsibus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>st_atapibus</string>
+               <key>attribute</key>
+               <string>atapibus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>st</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>atapibus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ses</string>
+               <key>attribute</key>
+               <string>scsibus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ses</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>scsibus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ss</string>
+               <key>attribute</key>
+               <string>scsibus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ss</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>scsibus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uk</string>
+               <key>attribute</key>
+               <string>scsibus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uk</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>scsibus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uk</string>
+               <key>attribute</key>
+               <string>atapibus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uk</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>atapibus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wd</string>
+               <key>attribute</key>
+               <string>ata_hl</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wd</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>atabus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wd</string>
+               <key>attribute</key>
+               <string>ata_hl</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wd</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>umass</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>iop_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>iop</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>iopsp</string>
+               <key>attribute</key>
+               <string>iop</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>iopsp</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>iop</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>dpti</string>
+               <key>attribute</key>
+               <string>iop</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>dpti</string>
+               <key>locators</key>
+               <dict>
+                       <key>tid</key>
+                       <integer>0</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>iop</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mainbus</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>mainbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pci</string>
+               <key>attribute</key>
+               <string>pcibus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pci</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mainbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pci</string>
+               <key>attribute</key>
+               <string>pcibus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pci</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pchb</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pci</string>
+               <key>attribute</key>
+               <string>pcibus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pci</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>ppb</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>twe</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>twe</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>twa</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>twa</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>amr</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>amr</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mly</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>mly</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pcscp</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pcscp</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>fpa</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>fpa</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pcn</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pcn</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>trm</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>trm</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pciide</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pciide</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>acardide</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>acardide</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>aceride</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>aceride</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>artsata</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>artsata</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cmdide</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>cmdide</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cypide</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>cypide</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>geodeide</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>geodeide</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>hptide</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>hptide</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>iteide</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>iteide</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>jmide</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>jmide</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>optiide</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>optiide</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>piixide</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>piixide</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pdcsata</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pdcsata</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pdcide</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pdcide</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>rccide</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>rccide</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>svwsata</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>svwsata</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>satalink</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>satalink</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>siside</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>siside</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>slide</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>slide</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>viaide</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>viaide</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>stpcide</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>stpcide</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ixpide</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ixpide</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ppb</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ppb</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cz</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>cz</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>tl</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>tl</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>lmc</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>lmc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>bktr</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>bktr</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>clcs</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>clcs</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>clct</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>clct</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>fms</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>fms</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>eap</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>eap</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>auacer</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>auacer</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>auich</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>auich</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>auvia</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>auvia</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>auixp</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>auixp</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>azalia</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>azalia</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>neo</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>neo</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>esa</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>esa</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>eso</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>eso</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>esm</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>esm</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>sv</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>sv</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cmpci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>cmpci</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>yds</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>yds</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>emuxki</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>emuxki</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>autri</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>autri</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>puc</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>puc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>vr</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>vr</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>sip</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>sip</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>gsip</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>gsip</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>stge</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>stge</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wm</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wm</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>bge</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>bge</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>bnx</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>bnx</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ti</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ti</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ste</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ste</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cbb_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>cbb</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>piixpm</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>piixpm</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>amdpm</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>amdpm</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>hifn</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>hifn</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ubsec</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ubsec</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>oboe</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>oboe</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>weasel_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>weasel</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>txp</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>txp</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>skc</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>skc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>sk</string>
+               <key>attribute</key>
+               <string>skc</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>sk</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>skc</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>bce</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>bce</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>dge</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>dge</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ipw</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ipw</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>iwi</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>iwi</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wpi</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wpi</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>xge</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>xge</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>vge</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>vge</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>nfe</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>nfe</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mskc</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>mskc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>msk</string>
+               <key>attribute</key>
+               <string>mskc</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>msk</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mskc</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>agp</string>
+               <key>attribute</key>
+               <string>agpbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>agp</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pchb</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pchb</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pchb</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>elansc</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>elansc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>geodegcb</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>geodegcb</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>geodewdog</string>
+               <key>attribute</key>
+               <string>geodegcb</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>geodewdog</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>geodegcb</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>geodecntr</string>
+               <key>attribute</key>
+               <string>geodegcb</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>geodecntr</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>geodegcb</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pceb</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pceb</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pcib</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pcib</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>piixpcib</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>piixpcib</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pcmb</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pcmb</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>isa</string>
+               <key>attribute</key>
+               <string>isabus</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>isa</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>piixpcib</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>isa</string>
+               <key>attribute</key>
+               <string>isabus</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>isa</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mainbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>isa</string>
+               <key>attribute</key>
+               <string>isabus</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>isa</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pceb</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>isa</string>
+               <key>attribute</key>
+               <string>isabus</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>isa</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcib</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>sea</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>sea</string>
+               <key>locators</key>
+               <dict>
+                       <key>iomem</key>
+                       <integer>0xc8000</integer>
+                       <key>irq</key>
+                       <integer>5</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wds</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>wds</string>
+               <key>locators</key>
+               <dict>
+                       <key>drq</key>
+                       <integer>6</integer>
+                       <key>irq</key>
+                       <integer>15</integer>
+                       <key>port</key>
+                       <integer>0x350</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wds</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>wds</string>
+               <key>locators</key>
+               <dict>
+                       <key>drq</key>
+                       <integer>5</integer>
+                       <key>irq</key>
+                       <integer>11</integer>
+                       <key>port</key>
+                       <integer>0x358</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ec</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>ec</string>
+               <key>locators</key>
+               <dict>
+                       <key>iomem</key>
+                       <integer>0xd8000</integer>
+                       <key>irq</key>
+                       <integer>9</integer>
+                       <key>port</key>
+                       <integer>0x250</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>eg</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>eg</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>9</integer>
+                       <key>port</key>
+                       <integer>0x280</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>el</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>el</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>9</integer>
+                       <key>port</key>
+                       <integer>0x300</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>iy</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>iy</string>
+               <key>locators</key>
+               <dict>
+                       <key>port</key>
+                       <integer>0x360</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>nele</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>nele</string>
+               <key>locators</key>
+               <dict>
+                       <key>drq</key>
+                       <integer>7</integer>
+                       <key>irq</key>
+                       <integer>9</integer>
+                       <key>port</key>
+                       <integer>0x320</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>bicc</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>bicc</string>
+               <key>locators</key>
+               <dict>
+                       <key>drq</key>
+                       <integer>7</integer>
+                       <key>irq</key>
+                       <integer>10</integer>
+                       <key>port</key>
+                       <integer>0x320</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ef</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>ef</string>
+               <key>locators</key>
+               <dict>
+                       <key>iomem</key>
+                       <integer>0xd0000</integer>
+                       <key>irq</key>
+                       <integer>7</integer>
+                       <key>port</key>
+                       <integer>0x360</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ai</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>ai</string>
+               <key>locators</key>
+               <dict>
+                       <key>iomem</key>
+                       <integer>0xd0000</integer>
+                       <key>irq</key>
+                       <integer>7</integer>
+                       <key>port</key>
+                       <integer>0x360</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ix</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>ix</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>10</integer>
+                       <key>port</key>
+                       <integer>0x300</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>sb_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>sb</string>
+               <key>locators</key>
+               <dict>
+                       <key>drq</key>
+                       <integer>1</integer>
+                       <key>drq2</key>
+                       <integer>5</integer>
+                       <key>irq</key>
+                       <integer>5</integer>
+                       <key>port</key>
+                       <integer>0x220</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>sb_isapnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>sb</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pas</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>pas</string>
+               <key>locators</key>
+               <dict>
+                       <key>drq</key>
+                       <integer>1</integer>
+                       <key>irq</key>
+                       <integer>7</integer>
+                       <key>port</key>
+                       <integer>0x220</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wss_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>wss</string>
+               <key>locators</key>
+               <dict>
+                       <key>drq</key>
+                       <integer>0</integer>
+                       <key>drq2</key>
+                       <integer>1</integer>
+                       <key>irq</key>
+                       <integer>10</integer>
+                       <key>port</key>
+                       <integer>0x530</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wss_acpi</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wss</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wss_isapnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wss</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ess_isapnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ess</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ym_acpi</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ym</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ym_isapnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ym</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>gus</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>gus</string>
+               <key>locators</key>
+               <dict>
+                       <key>drq</key>
+                       <integer>1</integer>
+                       <key>drq2</key>
+                       <integer>6</integer>
+                       <key>irq</key>
+                       <integer>7</integer>
+                       <key>port</key>
+                       <integer>0x220</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pcdisplay</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>pcdisplay</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pcppi</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>pcppi</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pcppi_acpi</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pcppi</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>isapnp</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>isapnp</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>guspnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>guspnp</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>npx_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>npx</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>13</integer>
+                       <key>port</key>
+                       <integer>0xf0</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>npx_acpi</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>npx</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>lms</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>lms</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>5</integer>
+                       <key>port</key>
+                       <integer>0x23c</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>lms</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>lms</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>5</integer>
+                       <key>port</key>
+                       <integer>0x238</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mms</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>mms</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>5</integer>
+                       <key>port</key>
+                       <integer>0x23c</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mms</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>mms</string>
+               <key>locators</key>
+               <dict>
+                       <key>irq</key>
+                       <integer>5</integer>
+                       <key>port</key>
+                       <integer>0x238</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wsdisplay_emul</string>
+               <key>attribute</key>
+               <string>wsemuldisplaydev</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wsdisplay</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>vga</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wsdisplay_emul</string>
+               <key>attribute</key>
+               <string>wsemuldisplaydev</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wsdisplay</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcdisplay</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wskbd</string>
+               <key>attribute</key>
+               <string>wskbddev</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wskbd</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pckbd</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wskbd</string>
+               <key>attribute</key>
+               <string>wskbddev</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wskbd</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>ukbd</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wskbd</string>
+               <key>attribute</key>
+               <string>wskbddev</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wskbd</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>btkbd</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wsmouse</string>
+               <key>attribute</key>
+               <string>wsmousedev</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wsmouse</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>spic</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wsmouse</string>
+               <key>attribute</key>
+               <string>wsmousedev</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wsmouse</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pms</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wsmouse</string>
+               <key>attribute</key>
+               <string>wsmousedev</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wsmouse</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>ums</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wsmouse</string>
+               <key>attribute</key>
+               <string>wsmousedev</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wsmouse</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uep</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wsmouse</string>
+               <key>attribute</key>
+               <string>wsmousedev</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wsmouse</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>btms</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wsmouse</string>
+               <key>attribute</key>
+               <string>wsmousedev</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wsmouse</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>lms</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>wsmouse</string>
+               <key>attribute</key>
+               <string>wsmousedev</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>wsmouse</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mms</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pckbd</string>
+               <key>attribute</key>
+               <string>pckbport</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pckbd</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pckbc</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pms</string>
+               <key>attribute</key>
+               <string>pckbport</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pms</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pckbc</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>sysbeep</string>
+               <key>attribute</key>
+               <string>pcppi</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>sysbeep</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcppi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>fdc_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>fdc</string>
+               <key>locators</key>
+               <dict>
+                       <key>drq</key>
+                       <integer>2</integer>
+                       <key>irq</key>
+                       <integer>6</integer>
+                       <key>port</key>
+                       <integer>0x3f0</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>fd</string>
+               <key>attribute</key>
+               <string>fdc</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>fd</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>fdc</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>eisa</string>
+               <key>attribute</key>
+               <string>eisabus</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>eisa</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mainbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>eisa</string>
+               <key>attribute</key>
+               <string>eisabus</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>eisa</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pceb</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ahb</string>
+               <key>attribute</key>
+               <string>eisa</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ahb</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>eisa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>fea</string>
+               <key>attribute</key>
+               <string>eisa</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>fea</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>eisa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mca</string>
+               <key>attribute</key>
+               <string>mcabus</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>mca</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mainbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>elmc_mca</string>
+               <key>attribute</key>
+               <string>mca</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>elmc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mca</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>edc_mca</string>
+               <key>attribute</key>
+               <string>mca</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>edc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mca</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ed_mca</string>
+               <key>attribute</key>
+               <string>edc</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ed</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>edc</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>tra_mca</string>
+               <key>attribute</key>
+               <string>mca</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>tra</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mca</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>acpiapm</string>
+               <key>attribute</key>
+               <string>acpiapmbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>apm</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cpu</string>
+               <key>attribute</key>
+               <string>cpubus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>cpu</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mainbus</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cardslot</string>
+               <key>attribute</key>
+               <string>pcmciaslot</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>cardslot</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cbb</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cardbus</string>
+               <key>attribute</key>
+               <string>cbbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>cardbus</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardslot</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pcic_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>pcic</string>
+               <key>locators</key>
+               <dict>
+                       <key>iomem</key>
+                       <integer>0xd0000</integer>
+                       <key>iosiz</key>
+                       <integer>0x10000</integer>
+                       <key>port</key>
+                       <integer>0x3e0</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pcic_pci</string>
+               <key>attribute</key>
+               <string>pci</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>pcic</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pcic_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>pcic</string>
+               <key>locators</key>
+               <dict>
+                       <key>iomem</key>
+                       <integer>0xe0000</integer>
+                       <key>iosiz</key>
+                       <integer>0x4000</integer>
+                       <key>port</key>
+                       <integer>0x3e2</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x1</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pcic_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>pcic</string>
+               <key>locators</key>
+               <dict>
+                       <key>iomem</key>
+                       <integer>0xe0000</integer>
+                       <key>iosiz</key>
+                       <integer>0x4000</integer>
+                       <key>port</key>
+                       <integer>0x3e4</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x2</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pcic_isapnp</string>
+               <key>attribute</key>
+               <string>isapnp</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pcic</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>isapnp</string>
+               <key>unit</key>
+               <integer>0x3</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>tcic_isa</string>
+               <key>attribute</key>
+               <string>isa</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>tcic</string>
+               <key>locators</key>
+               <dict>
+                       <key>iomem</key>
+                       <integer>0xd0000</integer>
+                       <key>iosiz</key>
+                       <integer>0x10000</integer>
+                       <key>port</key>
+                       <integer>0x240</integer>
+               </dict>
+               <key>parent-driver</key>
+               <string>isa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pcmcia</string>
+               <key>attribute</key>
+               <string>pcmciabus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pcmcia</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcic</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pcmcia</string>
+               <key>attribute</key>
+               <string>pcmciabus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pcmcia</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>tcic</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pcmcia</string>
+               <key>attribute</key>
+               <string>pcmciabus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pcmcia</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>cardslot</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>pcmcom</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>pcmcom</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cnw</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>cnw</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>mhzc</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>mhzc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ray</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ray</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>xirc</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>xirc</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>xi_xirc</string>
+               <key>attribute</key>
+               <string>xirc</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>xi</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>xirc</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>bt3c</string>
+               <key>attribute</key>
+               <string>pcmcia</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>bt3c</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>pcmcia</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>usb</string>
+               <key>attribute</key>
+               <string>usbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>usb</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>ehci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>usb</string>
+               <key>attribute</key>
+               <string>usbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>usb</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>ohci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>usb</string>
+               <key>attribute</key>
+               <string>usbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>usb</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uhub</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uhub</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>usb</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uhub</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uhub</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uaudio</string>
+               <key>attribute</key>
+               <string>usbifif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uaudio</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>umidi</string>
+               <key>attribute</key>
+               <string>usbifif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>umidi</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ucom</string>
+               <key>attribute</key>
+               <string>ucombus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ucom</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>umodem</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ucom</string>
+               <key>attribute</key>
+               <string>ucombus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ucom</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>ubsa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ucom</string>
+               <key>attribute</key>
+               <string>ucombus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ucom</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uftdi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ucom</string>
+               <key>attribute</key>
+               <string>ucombus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ucom</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uipaq</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ucom</string>
+               <key>attribute</key>
+               <string>ucombus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ucom</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>umct</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ucom</string>
+               <key>attribute</key>
+               <string>ucombus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ucom</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uplcom</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ucom</string>
+               <key>attribute</key>
+               <string>ucombus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ucom</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uslsa</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ucom</string>
+               <key>attribute</key>
+               <string>ucombus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ucom</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uvscom</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ucom</string>
+               <key>attribute</key>
+               <string>ucombus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ucom</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uvisor</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ucom</string>
+               <key>attribute</key>
+               <string>ucombus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ucom</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>ukyopon</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ugen</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ugen</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uhidev</string>
+               <key>attribute</key>
+               <string>usbifif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uhidev</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uhid</string>
+               <key>attribute</key>
+               <string>uhidbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uhid</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhidev</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ukbd</string>
+               <key>attribute</key>
+               <string>uhidbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ukbd</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhidev</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ums</string>
+               <key>attribute</key>
+               <string>uhidbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ums</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhidev</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uep</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uep</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ucycom</string>
+               <key>attribute</key>
+               <string>uhidbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ucycom</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhidev</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ulpt</string>
+               <key>attribute</key>
+               <string>usbifif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ulpt</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>umass</string>
+               <key>attribute</key>
+               <string>usbifif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>umass</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uirda</string>
+               <key>attribute</key>
+               <string>usbifif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uirda</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ustir</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ustir</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ubt</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ubt</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>urio</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>urio</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uvisor</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uvisor</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uyap</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uyap</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>udsbr</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>udsbr</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>aue</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>aue</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cdce</string>
+               <key>attribute</key>
+               <string>usbifif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>cdce</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>cue</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>cue</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>kue</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>kue</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>upl</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>upl</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>url</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>url</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>axe</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>axe</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>udav</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>udav</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>umodem</string>
+               <key>attribute</key>
+               <string>usbifif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>umodem</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uftdi</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uftdi</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uplcom</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uplcom</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>umct</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>umct</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uvscom</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uvscom</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ubsa</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ubsa</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uipaq</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uipaq</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ukyopon</string>
+               <key>attribute</key>
+               <string>usbifif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ukyopon</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uslsa</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uslsa</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>uscanner</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>uscanner</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>usscanner</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>usscanner</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>atu</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>atu</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>rum</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>rum</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>utoppy</string>
+               <key>attribute</key>
+               <string>usbdevif</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>utoppy</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>uhub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>bthub</string>
+               <key>attribute</key>
+               <string>btbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>bthub</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>bt3c</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>bthub</string>
+               <key>attribute</key>
+               <string>btbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>bthub</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>btuart</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>bthub</string>
+               <key>attribute</key>
+               <string>btbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>bthub</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>ubt</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>bthidev</string>
+               <key>attribute</key>
+               <string>bthub</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>bthidev</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>bthub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>btkbd</string>
+               <key>attribute</key>
+               <string>bthidbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>btkbd</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>bthidev</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>btms</string>
+               <key>attribute</key>
+               <string>bthidbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>btms</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>bthidev</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>btsco</string>
+               <key>attribute</key>
+               <string>bthub</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>btsco</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>bthub</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>ieee1394if</string>
+               <key>attribute</key>
+               <string>fwbus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>ieee1394if</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>fwohci</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>fwip</string>
+               <key>attribute</key>
+               <string>ieee1394if</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>fwip</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>ieee1394if</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>sbp</string>
+               <key>attribute</key>
+               <string>ieee1394if</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>sbp</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>ieee1394if</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>acpi</string>
+               <key>attribute</key>
+               <string>acpibus</string>
+               <key>clonable</key>
+               <false/>
+               <key>driver</key>
+               <string>acpi</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>mainbus</string>
+               <key>parent-unit</key>
+               <integer>0x0</integer>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>acpiec</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>acpiec</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>acpilid</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>acpilid</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>acpibut</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>acpibut</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>acpiacad</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>acpiacad</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>acpibat</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>acpibat</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>acpitz</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>acpitz</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>aiboost</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>aiboost</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>vald_acpi</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>vald</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+       <dict>
+               <key>attachment</key>
+               <string>sony_acpi</string>
+               <key>attribute</key>
+               <string>acpinodebus</string>
+               <key>clonable</key>
+               <true/>
+               <key>driver</key>
+               <string>sony</string>
+               <key>locators</key>
+               <dict/>
+               <key>parent-driver</key>
+               <string>acpi</string>
+               <key>unit</key>
+               <integer>0x0</integer>
+       </dict>
+</array>
+</plist>