SQLite format 3@ +%!  L]Of1d2d2f924e986ac86fdf7b36c94bcdf32beec15H4sIAAAAAAAA/0vLz+cCAKhlMn4EAAAA ,]f1d2d2f924e986ac86fdf7b36c94bcdf32beec15       tablefilesfilesCREATE TABLE files ( id primary key, -- strong hash of file contents data not null -- compressed, encoded contents of a file ))=indexsqlite_autoindex_files_1files~##Ctablefile_deltasfile_deltasCREATE TABLE file_deltas ( id not null, -- strong hash of file contents base not null, -- joins with files.id or file_deltas.id delta not null, -- rdiff to construct current from base unique(id, base) )5I#indexsqlite_autoindex_file_deltas_1file_deltasEYtablemanifestsmanifestsCREATE TABLE manifests ( id primary key, -- strong hash of all the entries in a manifest data not null -- compressed, encoded contents of a manifest )1Eindexsqlite_autoindex_manifests_1manifests  0++tablemanifest_deltasmanifest_deltasCREATE TABLE manifest_deltas ( id not null, -- strong hash of all the entries in a manifest base not null, -- joins with either manifest.id or manifest_deltas.id delta not null, -- rdiff to construct current from base unique(id, base) )=Q+indexsqlite_autoindex_manifest_deltas_1manifest_deltas / -tablerevisionsrevisions CREATE TABLE revisions ( id primary key, -- SHA1(text of revision) data not null -- compressed, encoded contents of a revision )1 Eindexsqlite_autoindex_revisions_1revisions L //Gtablerevision_ancestryrevision_ancestryCREATE TABLE revision_ancestry ( parent not null, -- joins with revisions.id child not null, -- joins with revisions.id unique(parent, child) )A U/indexsqlite_autoindex_revision_ancestry_1revision_ancestry ]Eecb1d32dbb67d626a30a066e12abad54bff385b7H4sIAAAAAAAA/02NTQrDIBCF955CPEBbf5LqWUKQ0ZkBIVEwIb1+bemiq/e+b/Eet77DGS/q R2lVKq2EqPSKO9TCdJxyocAQNGVrWbvpkSBrx54RwVkKwYN15LQxqxBtw9jpKt+pZQhAjFi6 VOqv337AZaNB908qIXOrJ9VxyBoNGg7GUfAzZD8z8jPZOQeXMrI1iSjraRVvA8XRsb0AAAA= ,]ecb1d32dbb67d626a30a066e12abad54bff385b7 + ]ecb1d32dbb67d626a30a066e12abad54bff385b7 - ]ecb1d32dbb67d626a30a066e12abad54bff385b7 0]c38a86896900a59244fb1d0191a740a5688efce4H4sIAAAAAAAA/8WPQQ6CMBBF95yi6QGUtlDgLISQTmcmNCqY2nh+ASHRJW6czeT/yZ+8z1O8 udQ/KT7CNAqpZJaJdTBEIeUqAtKY1tuiIMQ0iJY8KDQaAWyFVltncpdbS0o7cFgWwGzqEqou u7s09DcXL0dCnxSnLwz9BwwhOFxpJjkv+w0g/DSmhahlhRo1N7qgprbO15aRKzDWNwV4ZKOB yKuy279tTYzcjcNl5sxPfTbmw7kXjVZ7hygCAAA= ,]c38a86896900a59244fb1d0191a740a5688efce4 /2 ;tablerostersrostersCREATE TABLE rosters ( id primary key, -- strong hash of the roster data not null -- compressed, encoded contents of the roster )-Aindexsqlite_autoindex_rosters_1rosters''ytableroster_deltasroster_deltasCREATE TABLE roster_deltas ( id not null, -- strong hash of the roster base not null, -- joins with either rosters.id or roster_deltas.id delta not null, -- rdiff to construct current from base unique(id, base) )9M'indexsqlite_autoindex_roster_deltas_1roster_deltasN++Stablerevision_rosterrevision_rosterCREATE TABLE revision_roster ( rev_id primary key, -- joins with revisions.id roster_id not null -- joins with either rosters.id or roster_deltas.id )   S]]ecb1d32dbb67d626a30a066e12abad54bff385b7c38a86896900a59244fb1d0191a740a5688efce4 ,]ecb1d32dbb67d626a30a066e12abad54bff385b7 3 3 ((g]=Q+indexsqlite_autoindex_revision_roster_1revision_roster$;;_tablenext_roster_node_numbernext_roster_node_numberCREATE TABLE next_roster_node_number ( node primary key -- only one entry in this table, ever )Ma;indexsqlite_autoindex_next_roster_node_number_1next_roster_node_numberx=/indexrevision_ancestry__childrevision_ancestryCREATE INDEX revision_ancestry__child ON revision_ancestry (child)o##%tablepublic_keyspublic_keysCREATE TABLE public_keys ( hash not null unique, -- hash of remaining fields separated by ":" id primary key, -- key identifier chosen by user keydata not null -- RSA public params )5I#indexsqlite_autoindex_public_keys_1public_keys ,]ecb1d32dbb67d626a30a066e12abad54bff385b7 ]1A475055ec71ad48f5dfaf875b0fea597b5cbbee64tbrownaw@gmail.comMIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQC/HQNfzi8oL+fR0tF1vQ4h59k2ADpi1EMu ht4aNoVtWdxTMQXFblsVXL7SiJJ5zuJtPcT8SHkdAiVILBB2PF2B1g14u5XuAyBIi/9REGGB 4eMaXwhboOMdChV60OkeLRSHXGXxk7CwxFYCk9+FUbRbbcDpqFMUb8rkGTBWNdJ1XwIBEQ== ,]475055ec71ad48f5dfaf875b0fea597b5cbbee64 1tbrownaw@gmail.com    ll5I#indexsqlite_autoindex_public_keys_2public_keys`)){tablemanifest_certsmanifest_certsCREATE TABLE manifest_certs ( hash not null unique, -- hash of remaining fields separated by ":" id not null, -- joins with manifests.id or manifest_deltas.id name not null, -- opaque string chosen by user value not null, -- opaque blob keypair not null, -- joins with public_keys.id signature not null, -- RSA/SHA1 signature of "[name@id:val]" unique(name, id, value, keypair, signature) );O)indexsqlite_autoindex_manifest_certs_1manifest_certs;O)indexsqlite_autoindex_manifest_certs_2manifest_certs 32 LyL,]df2dca34b2fc3f7a9696cc8acdc768697ca0fbde,]a1fb38d159ad9aacf7dc233a11da8dc9aec015ea,]153818d9032a0538f937f8da3d7af267ade532bd,]1ecb5ad0ae2eb4dbbfec9edcd5c101e493a92d70 LL&]1kchangelogecb1d32dbb67d626a30a066e12abad54bff385b7YmFy tbrownaw@gmail.comfpo87A8ueqB2oOp4vnM3NQd11]1kauthorecb1d32dbb67d626a30a066e12abad54bff385b7VGltb3RoeSBCcm93bmF3ZWxsICA8dGJyb3duYXdAZ21haWwuY0]G1kdateecb1d32dbb67d626a30a066e12abad54bff385b7MjAwNi0wMS0yM1QyMjo1MzozMw== tbrownaw@gmail.comGtcj/}]1kbranchecb1d32dbb67d626a30a066e12abad54bff385b7Zm9v tbrownaw@gmail.comOaLY1HdsIkmcVMvRMVbgCdddmz. UU"_J))Otablerevision_certsrevision_certs"CREATE TABLE revision_certs ( hash not null unique, -- hash of remaining fields separated by ":" id not null, -- joins with revisions.id name not null, -- opaque string chosen by user value not null, -- opaque blob keypair not null, -- joins with public_keys.id signature not null, -- RSA/SHA1 signature of "[name@id:val]" unique(name, id, value, keypair, signature) );O)indexsqlite_autoindex_revision_certs_1revision_certs#;O)indexsqlite_autoindex_revision_certs_2revision_certs$b1)yindexrevision_certs__idrevision_certs&CREATE INDEX revision_certs__id ON revision_certs (id) LyL,]ecb1d32dbb67d626a30a066e12abad54bff385b7,]ecb1d32dbb67d626a30a066e12abad54bff385b7,]ecb1d32dbb67d626a30a066e12abad54bff385b7,]ecb1d32dbb67d626a30a066e12abad54bff385b7 oochangelogYmFy DauthorVGltb3RoeSBCcm93bmF3ZWxsICA8dGJyb3duYXdAZ21haWwuY29tPg== &GdateMjAwNi0wMS0yM1QyMjo1MzozMw== branchZm9v     zs$=tabledb_varsdb_vars,CREATE TABLE db_vars ( domain not null, -- scope of application of a var name not null, -- var key value not null, -- var value unique(domain, name) )-%Aindexsqlite_autoindex_db_vars_1db_vars-| A)indexrevision_certs__name_valuerevision_certs'CREATE INDEX revision_certs__name_value ON revision_certs (name, value) !''Ytablebranch_epochsbranch_epochs(CREATE TABLE branch_epochs ( hash not null unique, -- hash of remaining fields separated by ":" branch not null unique, -- joins with revision_certs.value epoch not null -- random hex-encoded id )9"M'indexsqlite_autoindex_branch_epochs_1branch_epochs)9#M'indexsqlite_autoindex_branch_epochs_2branch_epochs*  xRSmFDCTsJO9YLjO1g4OFrGMX3dDYpuzfEamMSlol1dFZ9 Pvm+31rsXXki4Duwvb3cIS0UTtD8CeFISaTiM6T3SciQq6TK1lAhN18V9ctFOA65op2uRJbb uv1m9kf9HFYkqzA+skffGOu3IVM= wDkVyEDFYMCtr+bDjqCJTp9wSqKGktpB17zvAVgucb6iW30EJOC6ZRPH/Wb/GQkaymlA p3KcvH8+E85INpm1wDAQCq0tthrgxLK9QeaMoISIlvgReq3F9rJ+ZyzRhSj/XASWt+YP4pss Ab4wmIth5pw8JdFvHcUQa0VoDI8= 29tPg== tbrownaw@gmail.comqhCmt6+paejWXF9z1a4/DtMYL2CA3yvHOppDX9MvCt9ogwSEw+4WFB0lWAanK04u2O6/9q/J pjzGUG0d7exXVPY6UlFBSomYsUrZOutp0AmDeVwXPoDJ2vdtC7zZn32HT4oPBC/ujG379XZI iMqCrmH1hEg2ClATiQRW8vA4d00= 2XglghJICFwWmd2+t3H+Kqc0knAcXLJDIYka6u6IVHvGbOBm1 dLjQgIzPbkxgKw6wAnPboJmMn8PPmouIk1IFEWRtbM82t/5b1RVqcqtWwz/ediQEdDR01F8Q lCxH137idIDwPyf4ziR3GEwyW2E=  AAX]]1ka1fb38d159ad9aacf7dc233a11da8dc9aec015eaecb1d32dbb67d626a30a066e12abad54bff385b7authorVGltb3RoeSBCcm93bmF3ZWxsICA8dGJyb3duYXdAZ21haWwuY29tPg== tbrownaw@gmail.comqhCmt6+paejWXF9z1a4/DtMYL2CA3yvHOppDX9MvCt9ogwSEw+4WFB0lWAanK04u2O6/9q/J pjzGUG0d7exXVPY6UlFBSomYsUrZOutp0AmDeVwXPoDJ2vdtC7zZn32HT4oPBC/ujG379XZI iMqCrmH1hEg2ClATiQRW8vA4d00= :]]G1k153818d9032a0538f937f8da3d7af267ade532bdecb1d32dbb67d626a30a066e12abad54bff385b7dateMjAwNi0wMS0yM1QyMjo1MzozMw== tbrownaw@gmail.comGtcjwDkVyEDFYMCtr+bDjqCJTp9wSqKGktpB17zvAVgucb6iW30EJOC6ZRPH/Wb/GQkaymlA p3KcvH8+E85INpm1wDAQCq0tthrgxLK9QeaMoISIlvgReq3F9rJ+ZyzRhSj/XASWt+YP4pss Ab4wmIth5pw8JdFvHcUQa0VoDI8= $]]1k1ecb5ad0ae2eb4dbbfec9edcd5c101e493a92d70ecb1d32dbb67d626a30a066e12abad54bff385b7branchZm9v tbrownaw@gmail.comOaLY1HdsIkmcVMvRMVbgCdddmzxRSmFDCTsJO9YLjO1g4OFrGMX3dDYpuzfEamMSlol1dFZ9 Pvm+31rsXXki4Duwvb3cIS0UTtD8CeFISaTiM6T3SciQq6TK1lAhN18V9ctFOA65op2uRJbb uv1m9kf9HFYkqzA+skffGOu3IVM= ']]1kdf2dca34b2fc3f7a9696cc8acdc768697ca0fbdeecb1d32dbb67d626a30a066e12abad54bff385b7changelogYmFy tbrownaw@gmail.comfpo87A8ueqB2oOp4vnM3NQd2XglghJICFwWmd2+t3H+Kqc0knAcXLJDIYka6u6IVHvGbOBm1 dLjQgIzPbkxgKw6wAnPboJmMn8PPmouIk1IFEWRtbM82t/5b1RVqcqtWwz/ediQEdDR01F8Q lCxH137idIDwPyf4ziR3GEwyW2E=