From 32710c917e41b6a283ab73190614623c1a8e9508 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Thu, 9 Sep 2010 16:55:43 +0930 Subject: [PATCH] tdb2: update documentation. --- ccan/tdb2/doc/design.lyx | 119 +++++++++++++++++++++++++++++- ccan/tdb2/doc/design.lyx,v | 144 +++++++++++++++++++++++++++++++++++-- ccan/tdb2/doc/design.pdf | Bin 226890 -> 229821 bytes ccan/tdb2/doc/design.txt | 50 ++++++++++++- 4 files changed, 304 insertions(+), 9 deletions(-) diff --git a/ccan/tdb2/doc/design.lyx b/ccan/tdb2/doc/design.lyx index 276832ea..8f061a7c 100644 --- a/ccan/tdb2/doc/design.lyx +++ b/ccan/tdb2/doc/design.lyx @@ -53,8 +53,8 @@ Rusty Russell, IBM Corporation \change_deleted 0 1283307542 26-July -\change_inserted 0 1283307544 -1-September +\change_inserted 0 1284016854 +9-September \change_unchanged -2010 \end_layout @@ -835,6 +835,18 @@ Internal locking is required to make sure that fcntl locks do not overlap \begin_layout Standard The aim is that building tdb with -DTDB_PTHREAD will result in a pthread-safe version of the library, and otherwise no overhead will exist. + +\change_inserted 0 1284016998 + Alternatively, a hooking mechanism similar to that proposed for +\begin_inset CommandInset ref +LatexCommand ref +reference "Proposed-Solution-locking-hook" + +\end_inset + + could be used to enable pthread locking at runtime. +\change_unchanged + \end_layout \begin_layout Subsection @@ -1183,6 +1195,109 @@ reference "TDB_CLEAR_IF_FIRST-Imposes-Performance" \end_inset . +\change_inserted 0 1284015637 + +\end_layout + +\begin_layout Subsection + +\change_inserted 0 1284015716 +Extending The Header Is Difficult +\end_layout + +\begin_layout Standard + +\change_inserted 0 1284015906 +We have reserved (zeroed) words in the TDB header, which can be used for + future features. + If the future features are compulsory, the version number must be updated + to prevent old code from accessing the database. + But if the future feature is optional, we have no way of telling if older + code is accessing the database or not. +\end_layout + +\begin_layout Subsubsection + +\change_inserted 0 1284015637 +Proposed Solution +\end_layout + +\begin_layout Standard + +\change_inserted 0 1284016114 +The header should contain a +\begin_inset Quotes eld +\end_inset + +format variant +\begin_inset Quotes erd +\end_inset + + value (64-bit). + This is divided into two 32-bit parts: +\end_layout + +\begin_layout Enumerate + +\change_inserted 0 1284016149 +The lower part reflects the format variant understood by code accessing + the database. +\end_layout + +\begin_layout Enumerate + +\change_inserted 0 1284016639 +The upper part reflects the format variant you must understand to write + to the database (otherwise you can only open for reading). +\end_layout + +\begin_layout Standard + +\change_inserted 0 1284016821 +The latter field can only be written at creation time, the former should + be written under the OPEN_LOCK when opening the database for writing, if + the variant of the code is lower than the current lowest variant. +\end_layout + +\begin_layout Standard + +\change_inserted 0 1284016803 +This should allow backwards-compatible features to be added, and detection + if older code (which doesn't understand the feature) writes to the database. +\change_deleted 0 1284016101 + +\end_layout + +\begin_layout Subsection + +\change_inserted 0 1284015634 +Record Headers Are Not Expandible +\end_layout + +\begin_layout Standard + +\change_inserted 0 1284015634 +If we later want to add (say) checksums on keys and data, it would require + another format change, which we'd like to avoid. +\end_layout + +\begin_layout Subsubsection + +\change_inserted 0 1284015634 +Proposed Solution +\end_layout + +\begin_layout Standard + +\change_inserted 0 1284016847 +We often have extra padding at the tail of a record. + If we ensure that the first byte (if any) of this padding is zero, we will + have a way for future changes to detect code which doesn't understand a + new format: the new code would write (say) a 1 at the tail, and thus if + there is no tail or the first byte is 0, we would know the extension is + not present on that record. +\change_unchanged + \end_layout \begin_layout Section diff --git a/ccan/tdb2/doc/design.lyx,v b/ccan/tdb2/doc/design.lyx,v index 47220267..54005d48 100644 --- a/ccan/tdb2/doc/design.lyx,v +++ b/ccan/tdb2/doc/design.lyx,v @@ -1,10 +1,15 @@ -head 1.8; +head 1.9; access; symbols; locks; strict; comment @# @; +1.9 +date 2010.09.09.07.25.12; author rusty; state Exp; +branches; +next 1.8; + 1.8 date 2010.09.02.02.29.05; author rusty; state Exp; branches; @@ -51,9 +56,9 @@ desc @ -1.8 +1.9 log -@Remove bogus footnote +@Extension mechanism. @ text @#LyX 1.6.5 created this file. For more info see http://www.lyx.org/ @@ -111,8 +116,8 @@ Rusty Russell, IBM Corporation \change_deleted 0 1283307542 26-July -\change_inserted 0 1283307544 -1-September +\change_inserted 0 1284016854 +9-September \change_unchanged -2010 \end_layout @@ -893,6 +898,18 @@ Internal locking is required to make sure that fcntl locks do not overlap \begin_layout Standard The aim is that building tdb with -DTDB_PTHREAD will result in a pthread-safe version of the library, and otherwise no overhead will exist. + +\change_inserted 0 1284016998 + Alternatively, a hooking mechanism similar to that proposed for +\begin_inset CommandInset ref +LatexCommand ref +reference "Proposed-Solution-locking-hook" + +\end_inset + + could be used to enable pthread locking at runtime. +\change_unchanged + \end_layout \begin_layout Subsection @@ -1241,6 +1258,109 @@ reference "TDB_CLEAR_IF_FIRST-Imposes-Performance" \end_inset . +\change_inserted 0 1284015637 + +\end_layout + +\begin_layout Subsection + +\change_inserted 0 1284015716 +Extending The Header Is Difficult +\end_layout + +\begin_layout Standard + +\change_inserted 0 1284015906 +We have reserved (zeroed) words in the TDB header, which can be used for + future features. + If the future features are compulsory, the version number must be updated + to prevent old code from accessing the database. + But if the future feature is optional, we have no way of telling if older + code is accessing the database or not. +\end_layout + +\begin_layout Subsubsection + +\change_inserted 0 1284015637 +Proposed Solution +\end_layout + +\begin_layout Standard + +\change_inserted 0 1284016114 +The header should contain a +\begin_inset Quotes eld +\end_inset + +format variant +\begin_inset Quotes erd +\end_inset + + value (64-bit). + This is divided into two 32-bit parts: +\end_layout + +\begin_layout Enumerate + +\change_inserted 0 1284016149 +The lower part reflects the format variant understood by code accessing + the database. +\end_layout + +\begin_layout Enumerate + +\change_inserted 0 1284016639 +The upper part reflects the format variant you must understand to write + to the database (otherwise you can only open for reading). +\end_layout + +\begin_layout Standard + +\change_inserted 0 1284016821 +The latter field can only be written at creation time, the former should + be written under the OPEN_LOCK when opening the database for writing, if + the variant of the code is lower than the current lowest variant. +\end_layout + +\begin_layout Standard + +\change_inserted 0 1284016803 +This should allow backwards-compatible features to be added, and detection + if older code (which doesn't understand the feature) writes to the database. +\change_deleted 0 1284016101 + +\end_layout + +\begin_layout Subsection + +\change_inserted 0 1284015634 +Record Headers Are Not Expandible +\end_layout + +\begin_layout Standard + +\change_inserted 0 1284015634 +If we later want to add (say) checksums on keys and data, it would require + another format change, which we'd like to avoid. +\end_layout + +\begin_layout Subsubsection + +\change_inserted 0 1284015634 +Proposed Solution +\end_layout + +\begin_layout Standard + +\change_inserted 0 1284016847 +We often have extra padding at the tail of a record. + If we ensure that the first byte (if any) of this padding is zero, we will + have a way for future changes to detect code which doesn't understand a + new format: the new code would write (say) a 1 at the tail, and thus if + there is no tail or the first byte is 0, we would know the extension is + not present on that record. +\change_unchanged + \end_layout \begin_layout Section @@ -2519,6 +2639,20 @@ At some later point, a sync would allow recovery of the old data into the @ +1.8 +log +@Remove bogus footnote +@ +text +@d56 2 +a57 2 +\change_inserted 0 1283307544 +1-September +d838 12 +d1198 103 +@ + + 1.7 log @Moving hash table does not work. diff --git a/ccan/tdb2/doc/design.pdf b/ccan/tdb2/doc/design.pdf index 87242edc6e390f67b705f0fac8313d0be0d33ae3..52d0f9b09cd548ce7bd9b870a6227d4132ce1ef9 100644 GIT binary patch delta 56071 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 delta 53563 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%0A3Zkb)I;$f=7l(x-SoY>x^5T_AQ; z@=Cmdl$XgqoDcGdj%IR>HyMBA1siLxWv@aODEqLm4PUo5d*d(CLt~SUvq#p`wHjOvr3}SXWVXxt;u%b6! zu-V2(gI_>^B9K+*8nl0uS%7|O4?m1k4zJOBAEWqd(F-PH6rU#`WW!fk4q9T#@^RWT z&Og64aQrkR z%{q+-04S(O#s6s#~~=eYZQ+8L3GSD+?`#F&3F0*dtCx>EvG!RM&& zyIproW~UG-d*iOhj+DG`{!KU@rV7MDzT15&YM0SkUyVArqeTR0{KG9>i`s2Nf$b%Y z;^Zc0mFC(~f(b6TjC`G+wlQ*zpXUlR;mOu9^D;q|P|=z-hFrt^O9>qFDGNgmjpe+A zf@?Tik7Om8O+J5z9cB`fBFsG}uguk8N79T&dY*y{5!DKGqGXtzL+>9_5iRKqUx8UL z-6&o{As-in)SaJ$PR0d-l)cb3VnRU>sf!XZ5zxM?#!!Tuz#Mg$iB1H#qy|hCZi-G_ z3AY6qAi18I?uYgcg-O3o zO?B%=>oR{CHxqR>r9dHIkwVPQ*MO8?YQ#(PH452GQ8PLfd239U^c@m8b`3d53BM4R zP~V!Ipx3HqbSg=D$(l0D>5N^SpQk?Ii_wW9+1IcYs)=d@T`B5aUt~FRc^{?7jLU_f zT*~{r_@fS?waUb=qQo6_EL29s@HN3KPFjIe$XtK$N*Y!|q+B}8Z}Ace*{B4hFvO>* zQ(++7Rt(S@)JW_ZQ$)fNs8!fV?lCjR9RoqsgeTl+QlzEmCli8G3P>l~5)!_VtA#Hh zrL>)cANusn5ErI~>6jl9<}Cyqlr$?4Z~=|TTor0^#hES=@SOGyUcH~APAgv&kOYUU z0ylpNu5r3>WM=$PqJ_!U8S=~isKVW%3cThNl&CjRE1)IAfSZ6%B|DJQ($-etHst;C zGKC6vO0K5G6#3cZxmxYx2is(OAicUPQ~q5U}b^aI831+J1N<9@1&=7w! zs>;Px(i7|=ami%>70SsLswJ5KRG7A|^KljVxVCJhWV1TtB9gLSNXlc^-mio)NQX(E zDOF*{l>{;~T6GT@mh8lojh70!UCr)WHRtjbjZM^cj&sVi;?)+)z6$|ry9Vyr@3 z#&zZC+B2tW8W1YSR1t|>B0_SMcP|*9N<>J3dEy&&)g-;05k&2szEAIFj9tFx*(Tp1?7V5(gJw*({sDOf7t_J z>3I7Xm*?NE$(_sR<1HHH z7e2vV*w7=Hi&vG%m5(k+0dkfpd=A<8CG^L3w5vABd%Cp_zXj(D1#fkx50sQ&xHRpG z|E;ODPGweZsP(eRv;U2BxjF}kaZ%*$Vg+#W^c8&XJP9nCSY5sW zS{AP86gXnVl&FZf+NJ_Jyk)FgEFh6fDu9&5y#9>ksmTy&!zLLuuoa7b!yAYSXkk06 zyr>AR8s(})MQ9u9bjyGAi}kA|Iz$VrFlWH0TS+BqU3|zH)HHyCY$=O4ulV}4Iu}_)&=loa;iCpx;hg7gBslSw}<2~XmR>XVq+txGo9?^f3Sq|G|7L&_3Uwu7r z#j!i$o45rawX~>tuK;xw*x{t64dmQwR%WJ5BRF48Y4TBzOO9dG zze*|6f4amIMbQI?s>#3p!pamZ+V@2Sa&{7=EHvm8e#%Z_IgNybUk%zItyV-Jn-c^r zkC8h?eK9AardokuuKYB^?RR3SkkLbtoE} z0(+FKr(RKlJx3fj5IS!Um~g64DQzp@dlsvR3S?b`twVp-d@2^x9W$BfQ&Yhx?ROO_ z5e3MW6%ojJf*|FUSZefjPcUpt#4GS?x{DPNz!G)0+5n=Z6`wa?I_WU{vc)wth!xD0 zBnx0w-Rc^mW#KVPtWI28Tw{>DGbJyj8+fuX&_a@32?=tOxL?)U7Lx2{xX+$-7>Vg^ zj7WipX_$ZO8xg7z3mBgriVVf&GyKVcC^!nfR25_)VrIMmc6R>=qUDk2o8S(+i6-}7 za=MP!iZr(`p^#m4N|aEVJwctsj6shOz5=t>v3|5b$VJ1}Ltvs6RR09_unU`6Ub63w zqE{@;sc3*Fv#g4EfYnWzEgE^)8hP4)r#`(!qilbKt^zJ8CS#j@;#huMq#`xQyIOuA1n&Z>k&K1o8f!ZMF(6EaB>PYz2N2QRk3 z6M~`!!0wbD7>va~ zH9|}zU_LQokcBAd0u#*g`pihEY@ap)-#$o0@h(mmUeA40GAU68JeQN_XC6#&r*nVu z*eX73bUM$Nc)v=JvWO0TH4A4^a~|13|@zty<{GeV4BO z_c1G1fjhXVMFTxs{f{|R%-zgJX`g?Za}r^T#~RpJP;B*^sCK1H*avQgI~K03xPvr) zko>PICONx29y?yDMr zS}n{UB|t|qWA1}%R`#fUoS zeyr#%Afdy`(zW6v-7r6g-cLdXzBzo)r0((SQ+f}10fT&fYeX2fMI$IX`xHj4n2*{% zy{)XYb*M?p87AID*@TU1mB=d_OygsJ#~R#b^w$b-XSUY{so=6sV5fK2#)dn#P+%|N zc8aV@nVQN54A?M~&$Z;|cp-mE{V`P(&BwiC@)%U8H%e8~lMgIQb^ZD@4`?|%Z$@&O z2PI3^SFs;k*p^8<90<3%T9`3c%R)uh-mqRPm^8~cy?fsQp0W?>s1X(l{m22 zuY{Yk=Zrn7ySvoJHe<0+<3y`2`Eu?QXJ;a!Bu8BFVM6x&<<9tx!ZD7cqy`kzRkT4BAv3k_eO1*W<@J zFIGe#I~@;NMlBj}VLska)XXcCyu^1UWf=hxYDd?K&{OxzlC*~DCyyATYYHYF2{hMe>(9+tMX-Ui_BVxQBIqGzrEOcx5`o4yt zgjUXxBLjO?u^oSR*sD%v=0EuAw&v$zJ060{^A`h?#dauA@g*;n6!~5HSONueMI=y2 z%rhTLz~)_3-1DzKCp;DMI_p}13OOT92?^9(8J?-OLzF#jLH~T*K5hTqoWNTn!f|ko75s^BS<*o0sEbUxI4&800K0WMt zP}KxwLRD`G>$5drLJ4xORXLXW2?nF`Is+8?SF%yxM^q+sFao}@txm*8I$vORJQG%^zVQv4z z={e<|;)~^`g_!YT}CzA4de_=-+&IOa9sB zfAm9+aUMP^>>N$L4EE*T%bes^n`iFlMz=Uwl%hwxjE z_;6*!heO0Y!+5rjf6vP^!;g6yBW{EisGaZb_Ph4*alHHG-7iM&%;Z;68YBzrYn@sD z5U6d`a^(qyFUXkNF?doj^+!H}HsjDxcsYOFXt3|BCDn={gq`JYMMyD6OZ-l<&GGpB z^;cgV@O={DH`L93)Aaw|wI7D2KYaY^KcD}@dFmF$LnU1}c*LEP=ZFeD=kOeL;|~4V z(!pm6Ud0FBV?hiZ2?~_yp?3Vy?)QBl5@m{Rq%NS}-EHi7GFI5e<~DwrZp`Z8gU^4r zO8d<>@y`oI{CGZeKW<5$NNmIJJ2HZF`N!@4F7zLr3iWm22w3;=FqXvx7~!5nH@>8Q zz+V^owHwZFBsPSKt8i(=9IyR|*L8>U>v#PbZFKXgJ40*KB;sm!=V7@Vj%OK44R4Zx zTZz>$BV#zbK!gPF{{bIL7B32AZe*8M8vzcJcw2*$jjbV*e0WKdWn2^lGB7kbm$6y_ zDSsH-j_bDZ{d|RAipa&WqPyhNqCnH+q$$!SXcp*0QUtV3Tg1|$AxhcZe0}Cd+1Al6 z+Ps*f;cz(j89G@dt8~?$U_s#DU%yLM_<`$u=ZlATpMOlt)i&N%S+#mNuF^b@>#A8* zWgTaExq3LPevAgSv-J9)jWq;&`R`(v^Dmt4}yUv9#9F7^Tnc)d&OZz$fN5Su(0DuQI1@=8r)NsThxpr9jMM6 z5`&z%jWLm=)pyENtc+&)4MlgFOl|-WRHJpTylk>58SY3a%*Qlk{Q=1_D1XNX%-XcT z7=%;9#G(l-AXh#U^kXN!qObP)kwyo)=pq-ja(3voUUCi@7qU+cl6oye`7Bs|SK|H4 z4VWYo+XC3`%-|V!?A55H)F>k3Nf?bw<%W}$<;E-c|q~v&Z5YoZ;p(bf(T%1&YZNR zTnd0UzY64zv#o;yPjEmZ+VNTyyy|DQBjpF}-*Y9ny^Hk(V4N7Vi+@o#IE>e#iW*$X z-~vF9Kt&L!m?{#WBo+G?-cWLa1+W%v(4FMzf>6x>=D$smI?=J%8LI}&(aDM*<^tK`sRQh+;6-KKzwm^JzuYL z-OEaYP`~l6TeFaZ?rsoTOpRtf@s8I|smInIgyTp*@Dx4zGIXZb7TKG_vSOYpZbAW} z8QFcl*q8gLXK2p_y=Kb1{QUA@F%wm>hAbJAQT`GcjW$=C#?hA2YRmg3*}E)b2kue? z_0Uc=PX`ov(i;ZicsXdwGOAzlqh6hf^%Si$`<9r=`xP@)!T5<|y^J6C8`XWT1KZfk zSkO9O;XECyB2_PNL}nC@9HS{Bdoi`vIv&n~=%$+^@k z=U;rFw{Wra5zU0eR8zX)^UEo&4Yypnel@1Em^!m%ePa_MdFvpk9=JT)pV)Kq_NL8rosHNV; z`D=eaf=Ra9onToH%ynOUGj-^Q(-oPgv|_IVE*1MvnRd^+;*??+&}7Qkp5o=FS5T7* z_7c}4aw2Q4Z-!)(T$)b$5!b`f{ngr^`nsCGJWb~V>&i0vfh7fw@e3VHRDDV=ODyD3 z7gjG7cBd>HD!qU2P4w}*55z2}CACmb#rhcs6?sB29LFG zaz7nkzi{M=PJakyWwV)#;;lXP=QZ_bMZ&scW;CB(zt^yTSD<-8u+MnZJ>!aE`APnV zU%FTtGqJW#3s!sy2Q@9Pi7?ro#nITm@R`aE#?Wbv1@_W@iol`FFRlr_Q%txlPs`vu zcuMD~@R-Wc3m;C__o``F-h9zC2@lVQeyXS^D{p5@dVhFH`^;d44nCk@an|ogn1_dT zHRiM3jnLF*yJyB+5#Akbq@o5shgTVgf8T|!rRoh@KmYdj>^#O3W?Qt z%LWU@*ECf@C(omgTSZ+f$eoisZRBx35X}+Dpi?}mH{5Sqps9z8{Jt_y64z=zu#q#- zl16kDzG9Q)~LS=Fb< z3o9$NZ*UTiuhuTFDGrkc zvBy=M%bp>jNw3Q^U3j`>Gc@GCnsG_Xn6YwZi7L~}w>MV>BeqN)1zk7&VO=vnMqlBY zZMVZLJFj#;SWEc9;!0De?z`6-qvG!lM#ZT#aNlptc#>8TdM3gH+m^`x!G--;4Qb{n zToR|!VuqcYiH3IPLK>%MKDF#8;d$d68o9eX^OkbHxu?$ACGncGrOh>p)Yw!_%+KYC zCMSHgm3VCAzMy%GB_~cVwNFK5As3s-J10@J$SK;p)@xpvnC@&FW@dF!c8R~{9Pb9V zR}UPel6ZyvVc6H&2$Az+zhaIhlNWb;;BZX=aUaAUx0$iLADIfV#hH`Xe?MqIl8)zA zSYTflbfEcA^i$QLM1@H_)YI&PQ=Bt3)~w*dM+L{8aYn=enrJFlwVs~xFU)?wCv2_H zP%BeQbC{?1Ugzm)>T$>Bd;YG?yxlODK6Fj{$)@tztwRudj)d9X!DUsf2g=w8}#0-`h z-C`DAuTr`a_+XM5dAEsB&B;K;6acv{pLZEg7U1J)UOz>%R{f-fW4Cerf8f zuKeayc|K-LUzmiWliiUK(!6U6&9qX`kz+5fOiw-e;2`&%kDCLY^u5{;U-=}1~3t$LBa(d+$;{>A$PTv(eI%ZoxQ{vyvQX00}2 z+YWFET{aW_bUMgRPl(fQe8K#UF7H`w-h^6~02a2~S=Q~$_V1Gq&w6smSg;G?>4#03 zgif`eGUIt!+R?R=f1^Q|pZq{@i?OJW8E)BeN>l!;WoaJgmoas;*jo zw(Km|j^BauJaFLO$TrRl6;BoBKKehcNR`& zsD;k5_!s}hBS{8P>lvN2ew>Ne!h?>VUVA>aUnbRfPeQSL$&${6ZKly?A;RuJd?hq1 zt|icJFHkSF7N?#j#KW;w?YxWVFiWS5gvN%L5{e7nkURVqn;v+3l{7Bro1Gq$RR0eByDbA1Ir;;R7#YH_{6RvwglW^*>Fu$u{ zXG83Dp*w1wW`)#oF3eIwhn^eIh4?-y3YwsBXggmRqw>Hb2#Q55JH*^VyS_YnFIMF= z^=gpv(p{#LviOO_i}b5MSzrOLyHB1u_MVtCpzPITR-}ygPXGAPVWQAIDUc>i{8K25p6Y){-P zOwEK$!MR%xC3GGc$9$^SQ-IzzvDNDyr@>7+a8B7L`y^bc45AsX>~|cHkGYywpXXW0 zqe`n^)3~vt;T~8!!e@9Zubx7FAYNR7UH_F>5Z8T%z#@X8uQ-X(Y3R+3UXKd2f`wzIm#$L!k7tGLD&2GFmBs?cTu`)ELOQQMgi&hcO!2ok{n0 z65o#|w@T7t`>yEC9w()BAynTBc|+=k8dBEJ!s$aNTR7FzBkD3_NWL+yu&Gi1^Hh#Q zzj8P(=tT3_hw=z$zFtW^(7Rq(#?Z|<7ij(TuB8i)(~ex?&VWKDy_c|ui?d~<3nT9R zH;RI22`K@d>ClzF_KGBZ+cK5A6Zh?+yk0gjro|LkH-2@72ktB)ujw5dTkRAyRtr3H zV*c=*aUtE4_Ys;|?yY80SJuNWXAW?9&S``mO75XWM`$JuVbuH&e#>Nj9rj3BiDvYu zKiz8+4bz|>b3NSxXR~Q~n}rvw9z7@*z$IPU`GzTun@j7JESiZskEs|Jb)I+=Ervg= z!ID-%M!wn`Z++oI!R93S;kOBAPS(#|$J$cmMBf**)Cx8F_Wh$bi)pHBAtKY@u(xN? zuR5D&S<|Uw4N7M>jHL294qvm#bX@tI)AuN1B&U#y@xxYX(#_JWwVGIy$&aH4UwQH3 z%uj^LKEE@m_3QLc1K%8R8ah&D5;q;taB94q$4-6V z)UO!IP^1c#7KMAyOc(u!)^n7Gu?%NlZdBrii?s%n$YzyXd7l(*#=cGqRE(Z`wZ)&5 zDaGKGVjUI9YCab@{xz#+F=|WP=jB#nMjuzPaB&gD zf_Dx{#E0BufKd3}EHOwHzuJ#PU{Ux9fg`w1vr+t1*#X?AS`BHp={a-#d5eK41CQZF z%V)>??3B~ztazPb%4BmHqV9P3Ef-3wsg+FkyR8kfvk0j(lZ5iAnfX&1`QvJtOc%GJ zQmcaQ`)eCNv7JAh5>lc|5{uMuA_u6z5kfWDMuP z-?nscmh&uLuZg8(#o(;zs61)sK~}?S84jndnNDK{rrBn(Yi>K*7AaC&KBt4-XqokW zDXr><)VcM`K!KOSL9&_T7-1`3heUX8w&6b{?^=iqSV5o@oI|?BeXI#_? z`6amv#z)RDQNFz(JDl7#G15l*vXRM7eWG~{F{oXS?4esu*0Gvxqn&;=@wHcasz}YZ zc(Wv_#>Ze`maD@x`YJ_Y={hX+A#vqq^U4D2X&)Re1+b z6=7o4U#`|x82Iqx_mRovgp=FPcAxIzYHx)kC?AY^)@&0uWm>P-wW};>w4HHptEl$W zm02U9o6p2k8#+%_x!qBmO?rBaFQFW3d*x&IM6)Cp>AQ_Z(?_yv6Ui}eXD3`=d42vk zER;LE&GLF9yNt{J#3U+XrB%y-tDh=fVVs}LoSB9Sd|pWid)a?vvwZTbRqe=9!~m|u zYJ_g+^WA}xt@Nsy1Ey8u92O$4Mi7{0&sD~Z?$rE^LTE|;p?q-Pfi(AO?t^v^p0E@+lX6MyyZSUP`EWnh<>83{#jrD{%ay1Y6Pb5wwzdOvsa>4D7exf%Vh?8`E<*fPb|H}Aa8Ik~Q}5jt|?x_E|ek=A4{d9vz6m-xly zc%>Jv%!U`4)ZC_Sti?=1UunP6QDaPQ-C(dC)|E#bWntPpwn1v-12RHqwCTg79C1k{ z*z3J4L1&H3%|H_30l!uyS;E#zOO87~+;Miig5wvH>k(HEUC~C*6w*(^mCRK0mnE17 zJr3EmZc|rVQHM{TL7c?*(X?Fhy?lWqubGlo;zZ5QgpDj>~jrM}|1 zu<=QpjW^as=<|gnQ`8)FyCN=4Y2ijqa#^X5zuvhbp7Oy8DBe_eJu!gP<^K*t6{&~Y4)^UF zCJ)P>!d4@dv>d1I_EELREH=Lh4431%d{`;XKe0F1w z*o#DOOCN2#BG*7cvvBT!>Bk~n+`*9IC8affj->$U4Nq_3bK^xC+`C5AaXU3r@&jB}CGvsIFZ79DaVmvgk>V8_pITd=+7aM+1}~rZNJEs2FsVUi%$xvOz|+U_ll<+ zWPPS!e2m>tKPLzsn349(l*JGyp7Kzh_CThdKifsgw1sW*fEB@-;-3tC~I8##5}B59UMhPjk-~Z+|da4{c4%9_kO)oFh+Kj$ml zKN@_;-`UvCWJ&ck^7yUTk+2+%1X-muQj6Ine}OeO-4-{Yu(_B!8iRV#xcI2r8r{## zyGPT;ltd%Cb|}W`EXTCQ8KxsmKV9#k31IxJxVX9Fpa1djT{7Y9nE>VkinxnPc{LT4L!?4iPO{xE(5segAJD0hW6^jf>{KvmGom zBz4`7X$CE_gS-ZtuO}q>np!sM1<0lNaq!XTvAiNNnJX#l3pCBublHgU#&u7zD)X78 zdTqMPa#(p^Eq-HkO^qtIJ@e`VQztsjT3)HJ-1 zdl?t^h+p5w=$RKIdy;9HJRgqf0y&=FfswWH$Mks%o6Z{w459AT4?KQrTc4|sVDX%f ztIcas&#=odKzj~eWE&S3M&{v8zNY&?6XP;PqH>L!qB72Dv{tg#c4P&>DbdJfqv3!7y7NBdsSEu#D`#jkj z?9?g#c1>#=md&VN>lEI(VI^tRBqASQ>9=yqGX zgC+ZA2_d6j7m)Vg!TJQEJm= zT;WGvKH&nN+P0fVhN7uYkBs0FpGA2;kNA?=fu7inLycT(x!KoWex4Q4dVPRTS-IkJ zQ~u_m^4)B1WjCRlf)h$dp>=jUx#a7|(#A$d>phHz$5mz>?MbcDmkqxh}P2BMmihxKnD(^QN@d~e6?(9M}r0TxcV3S6W z?t{t&kg`~Q8U9l=(x>cwJbb+`+57OzqVdLABFu_=?^RX#!Cj)q#mh9{^+Rz1@NaH( zcs@%3d`L2dkSw7IzqAe-#V;$j|BU6AmEV7s=aBR*4k^qemnDPnkk0K6W$peq64YN)1KL)tPN%Ym_(daE2Tu`)w#MF z{grM`snA?cZ&7#o-e;CV)-sP{j@IVdcAxJ$`|SSpSHD-+G}9P_bns@?RDIg@B?aYN zKW5Z#D7jgLH3vd&Vktj!tAC7TGgR>W*4`{n=L7g`<~lMfBHL5(nxvqjz0-nksjVmJ9*Vcjf*w(ceUxsHrxh{qypNF zt5Yj?;MraB_BQxf!SI}?(%W~6{trt!$g1jjvp(wdcMQFlch9=N*iF0e@^ZDgQmCop z$zV0jjmlBxGS*mi?modmF&>_rnS?h&j5U0Zg(iLGn4O}%leOw|G``k>aIzrlH;$ipm&N-G~VPE!iaKa3yo16!n%GcU&8(aK`zb zgC}WdkN9NPy_EDxo1U@T=~Vhg8O?`je}{Nj<)+mrmsozxECZhxj}>|Q_1rX#+vvij zI}V27$-?~oT`d}P1LT=^?8coo29FdyYyQgIt!O)rAXR_zl93`Du`1W$c|GZ~(}ow~ z11Z<#SFfg@?yxo}Hc6w~9PMxs67yGsJlKY1Wn3gQuf?tDp$AQFW#t8tSy(K7e;N67 zbx5m)Mc1K>tLNtJrJ(UO!7EOZRJg%;o#)w4NQYyUX=B@*9b>x!nSPnQvYBA;gCz!YPRM5` zGllMuDk-Dit6oXVLMB>1?NA68=0uS_n$DliEM$@Im)v{a^hbF0uV{bX(1DRgTG+Qj zT;I^ClYj2sOap4pM?3)8l5i5OGMp67J5;AW{q))0(P^pa??Xskqmnt+wRH?j(^IpN zFX4_Ty`*rvrphP6QE$$CggH9Uq-?>BY)9CYV_k>vA z-)1{zcFX2~dB@nn>{XKA(osiV;GVqGQ2i7sb-sJ6?=^*fVQtVC2L6LQGUX?h!fqFT z4>n@^nH^tGOLl`-A?#cF%iRXA(oj}v8*#DmR+D=|-gbuzM!780F43A7xYtwU%s5f5 z{eC9n;8hV~xTAt;xLi6k(mq2`K(bWbV9RD%;~@7zuY&PhRo}fU0(M4Qx7Oa^bh#{Q zOYP~%o?Ng_5TMP^_Vo$6?W-Su%e~;<)B*3730ZA#?TJHkuPPhgp(GH_SwlWLHHA|4GJi)vf0(xj7#sWuJ(y&fWXDeq>u9_zwZIf-v zmma#Qw`MAtl_|3Q57Lv_I)kDvm*B21oD1M|3}u%}=l|{EX>R#)O(Nh{Q++^EYSVEJ zc762G2hu}VmMDx|+#LdtZ616*KB4_HH=NzI4R*PwktB+mm(q?kJ+SJ}xK7@>y|Vdu zd#koInDWuD^3w&D*8MxA$D!N2oZMf`6s!fc;E4vxLtR~LuWPS=lYX>LagfHI8hq*A z6>oc6HyXIgkdzA_QpbRlL+^Rp|9D|J8G;vv6yak=q&)bW$E5Ii8Pxa>S;F}KWWvXI z;;-l%fBWfyS9 z(cXC4{!Wfcg-e)`Em!{a+O5sQtk=xHc=23Fd^U9DSuO5DeqSC9_vm`lcRc3R=foh6 zoSv1a0M$5$l(@XP<2p?5-CWWSPQN{%qFV3{jg_vzJF;({Q$A^@V0r6_$^CQnO2;25 z!9KWz^}$#D=4X#TPj$Gr#mdui(qM@GkWq#w<$);o&5wPQ)4yYnIlQ-$?>WmAJRO$L zH`U(=9nPpup>eQ*`nJ={u3WKgr>&N1^u+zC^{Eo7rQ0`_&N7z-Zognjd==EN z?zA1SisiZOnOJ^L*^%L3G}i_0GL>`kG9R4v-bIoR+7=Dc?R-5MqqX}dF5jDXIX`vK)$yJM-$6Q? zliF406f=iLr<=ntC&@7~mERvGk;`f1P(2sEPx1V*^Ou$v8^K^lD1|#IIqar2On)81=F0AD)JkS#3qSYp)mW zBLt#Zl*E41UEsu3s?|_P8{2&i65q-!KPkGE+0S-O$!MV|r6_A&sAKcy%ev{WV$vkJ zr4!v*>29814&sJuUUKNL(7Jr7++KJdl|UnrzjN8bq-CJ7?d!KX6K$@jT^Z?{{O=FN z3bFbZmeSE{m7lmg2AzARUrTB=xgd?E9~w z+kOrc%yw(@cDv_0NI700ndV%y@;)5@d6X$hQn%^q(yLBGBju3bbDpYgG$9z_OHUpO z+^2BK^sLvn7(E%yAtP;};~h-F8z=@EJq_lf>vZyTSAQC zC%+PUYS&qZygL8)j{@(eF;Esv9m2icq%nTU?Qnu!@7qgWb`G-_`JC~(_B=xM(LGIV z9&z0-sBj0BD2B5)Hgop8l6Gw_X zn0`amV@3)p`|D>sH&}h6qYUMdS6>K`9Is4lC_ohTrvD&go*k&*#_3$K+Wh`}21)k# zg;xL9qoI1X=eC6C!xwvwXD5Bn|MfkvPN(@c>5LXeQxnS~cwPAclgZhjuC~aToI%7o|ivTIcX&pDpr@zTK<%`LhC;|k$rRE25vF^g#4orF&3jw ztGAHy5*9jMNf~b&s#d?Y7^W`jS#U{vmm&odS0*3pnz|%$TGKT=_$2Y+^MsmYu_@Q5 zlE=yP-q)$;C~tdWuw4~%S6A2eR*WLyrpmv3X=n95@%zn}|D z(nYM=Us%_d{YCv3;a z`3irx;p(!{t?EU0j*XW*Z`U6;IP}>_`iL>BI(3}ajkq334GM$DVmOnmHle73R`s)| zdv1OIPODm<^de$g19x%!&8YjJ%fwDJZd9!%YJd${!qxPfVx{S&;I>{thHkG{dCoi| zt;6Ekx2F;0p+9*|&3mvLUvW&!@9QnV6?j6e?`_@e8zW}AW&-kC2gKN(*mh(Du>D39 zI(0hgTHSKyseNZ7nVox3A&~UN7o07d_L)#r=8?p9q0hm$x8LD*$tTFIXz{!0?vNth zJp+x;&N_vk$v~2!u=`*9XR4nFqHw~;dd_i1pFRG*H0a|)>K@J0b_X_YvC$T27e?RJ zhM!EjhHU@n@;rQYO{{RSnfE|cW59LImik~uN{H#FC*4m+nS{V}k(K05Ne`NCcI>*xz=>F&MF$*IW-xaNS4 zt(FHvfuAWQ!)Z0DuROrLa4X9bYxEKS;beC60eOy)s{Y&qx+Y;?{;nAL_=V*d=U#g4 z7m8kzdXX1b^j1BE+C%SB$DAnqx)62)>#u*4PcDGhTXNIti=xi;8+v*EYsbGeXr;O( z+fT%+Ik#xAeKujY&WP(<>vM84jEn_@-Mp=(2K^Eiq3)$-Rop3bY= z-j6DLzj|1*ce&|U*!zYaQypAXq=h^0)=}O-6HO;C*5Y=)moBgGZmGMVl4&lPIkCUF zLAJbfH@WQSyDV(2#5J1R*c0ts?_m?xtS7%4mdC*j?$iq13G}k&1Ys6FZ-Y%M?0|=SNtFz`VEzu*K=pqb{8#FMsDtG&i}4FYB$Zf=K1j^_+Zib zKI>5@_06Jk_8sGCAr*x{cXrf_GjS%mu7MZs-c+d{1mT@3%> z{2MlJ@}DqXO&q+4x)-c5O{eX#9s4HvYyItTx2FP^3nL2z))M3v59S;So3dtpgzjin zpF6bt<3@#FLT=uomb9fSuT$tR-W-PNJ{J+q))K>ex|f=J84usHO|Qjmsiht2ofsHCJ5?!q z{xSdIU42HLZKANvY#vT}WV0P1i4tmIpKCdZS;LtlknUUf$VplpGC9x^(qf zNJY@ldEZnf3$}ZdGD^P?z5^1el+u2 zN^JB~*82#$ddC;&uI;4477?FS1KNr^;wPK>-V6RX%-^7Os*JyAZAHON6qiSW(237I z^aOR~UON4|$>a&HxFZcbFphL!H0*2BG331S&zOv#+gIj$xO?knC2liIRln13*p2Pg9hm1F zdF}iwd1^ya^NnuP=cC7a1}QJ%yaKMqRf_wYwT{oBe`;&t9ywijc*;Yrm|Onnt49-X$K>*H69KnRIQEv4T16hyr2XGx4S|PtH^Ayb4;C{=Uj(g{R6QV7XtG z2sH-FkJ`((;*&DC@iq+9_=0>9{B{;g>6iT9RMgd1+i)c1F_U-kKl2D(9P`om#Byu= z`+Q_6qT(bKUH{!4=_+;{#7lKG0KZg5Xk%3_f?uiA!7r90OHb4XlhQf|O@8z8`NsF- zJ`WtK50b@hbzyj?W+k*dAu&uy2wTWu6r>cb2>)wBC@RS8zgLu#mqPt}kHWuiHiOW3 zsTOuTM8i^gzJ&=Qd>jDwI1h>ApTGHyhZa~$D_eOX2nCynLehB3_M|`gWEyF0_e&mj z&hC!<3VTUq8fi@@TW@1;k4rxM3JQBM^S=zWf*iiHT@ml}<^Y_=3mwGEyj4EB*9fS` zucAUDZL28HuYmazY1^V?WcU^SCckY_C{Wl-XVd&=JlNz6gv1whVDT$&^I&y#h!r+o z0y>X$ynxlufe$%U^+@7-I=%7F-y-oBwk7a}-BkG4u5f%>2Mhe=GC~r(xQxHm$%22| zJ&M=pB6N6wr|)Kgi&h~*Pb&PQURQj1HxhPrMM&XI-nrtldXTW)8Bn|X?lIo17YWCX zK@z1?ecTY9@f{1iyADa2qDK9+))8$rS!84%)l%%^4i#Ze?)ZoC1{HO2xn(1Nj! zeTB&JDibsKjWHzrJP$Opom{{Rjyl(V4@cM>+eX|0u3yoMh>Qtu=x~!^#|*pF?@c##k>6c zTe!aU7O%a@3N}n79{URkGg<&C=XR>_$F`90?pYvZq=O1?_8X5sv5maF+lpu3Va1Q` zPQjsv5v=e*H-y;TU8osI!606waoq$iT`~(pEqXJGINJZ_dAP=OX_EnGvQc?RV0AGMY?W+JB01CCQf&wtrA0GwQ z17I!+wXXueToh_w1%SCI)V>N}3!%_^D&Pp6fK+g?_(vhIv?%nx3c!Sl#0o;IeRaSl zL81560lNf+-dBfUT@-rXBn0cC(EADz%!@+rYecXw3I}%FAHf6*qcHn+A($A2*_TZ) zD+;r(6~V43%)TlF!=iwn{yPe=EDA$Z23Qt_Au0n*i^33<0k%b9a71l@bx|0iGQhkj zu<7>)1@^)cl>r7uVTsBB3!|_^Wq^r6+_&Ek*cb(l#otkYjZs*lGQh|vtUQdOhdAIi zTLc|E!U`3^s7(L>I4(#Ge#-{ECip&9IGr7uf!kOCP{16}2pq=-o}PCCj40uRD&T1L zKRv#{VI1Hoh#MM&eK;W`UVKr!{5B7C0|G4Jj|xN=j{-Y-PpN-C9tHL_;nhEGB|;MYkep7$D(md{8mLFi5ya78t>mA8Lo^cp*BtAQGa6mqQU^ zu&)5r2|MvY$m9*sB2*B10ZZ}&*p*xngRdNdT3|T=(B0-5a3O(0P!Fsj2rOqU42{Fs zL*U8(2qa#P6M>Q-MQ{lBboytyJyr&=??0y7BV_;2bn*)D@xzb?d|VjXqeuq0ebV-a z9ubTOu;cG^f$;!#{4D_E$?tD2g7E;5{H+1T13>b(0E`EKm!?P;(r57odavfy2h0;qi~ z2XtX=B}h{QeP76fQD&8(mvFTLc={}~FXOW^p&mj zvswhDbfE#*QX5pboI*&Hm*_zZ5bUl4%2Dl*6#UQ-oDKRD&{H^C7qsRK-Jjsr2`CQs z)&uWWc)+_i`e2y4<3L=g0aOT=oB&UI>-*>=K%!`U&@SLKgoW>)fz;tyL+BFxzyQ1h zcHV$5odnZ&Foq}~*xC>rG|P`-aIOi!Gkqg4isva{=hMbOA+VrBu&W8^W`73E-24<_ zp{xie_AK-kwmS_P6Nn=mat^A6jX_MX$Gl;jDZo8B@QWJd?jVwZ{=i~^8MFYanL@1P zh30@)!4~I%fHn&-&V4h`GRqR;f#4K#2w6U01@S>}nFSb5iWH14YYiX(ZwY!b+Ca1r z++YPBWo)4pNO9i-5YIb$-wXUZ@94j-;NS5=V-(BHEHnr0zg3%{UJbOG|?Rb8ifXo?=OY`pGM?$0OV0bG6!%SMPzdTuu=b5 z7D3Z}5F#)pKn8Jth9giWBCRB_BqFZ_NQWlUF@SVvA{zsEh9vXh zQ$TpoL^cKp54f(~uaV_Pe?NWpAS#DEk`0JR_T62ewAk+lJp(L~k;R7Mk7 z8-e7YiL8x4a?nKDMj$!pzq}164T4{wA(6QeNDi7v-3TNHP2_F_l7l9aHv-8)6WJSq zu91c_hfkfIyV2x-ZZzIq~^grSTM5F%^Hy|4Q zkGKKR=zqiwh(`b8Z9p{oA8!Mq(L~-RLST%jzu`X66bM884PX9qc(8=etg+(#M#bT{ z%aA|ZV1!_S*A|x)#`P?9S2qtp@hg;1Z(t_YuF5pCW9|G9bJK?Uu+LS1F?%B10)dEjKLA)g1O@zpp!aa8 zKS2QkuHU={&`mNB)OrR(<*K+oVWHvqmC<^aC~1~q{7A|W%lH4MDFtN<`~A`-~$4+jGPB_-hHDCj0!9RVyA z9}NjZ@S{jDSAe$?@M;XS3l~O#hCp8lSmq`W92gCX?oWXFDsj*cxFiM$mXZfWpLn3) zN-XFL{DA~qkN^;W`zEL@%tVNnze$7+KrlKU=-_!C5-Ue0L3My-{pFGWQ1>sT`VY%O z|Ao%~Y#e#T@&kBC7J{P_fr|r~DBg0{J7B&42X?_OClYi5YW`)q0BOOl{x1td|CfcK z|I5PA|7Bt5|FSUje_0s%4-4CaT_E)@4Febqj@CYtv<0Y%CWZ)r=Awxa0^sRrVt@c3 z6b(XWB7&lcaWfbR4OIVALx4tN*bJ)< zfrU*2Tmfv90&uFw_o0t_Ijo)tuvcqRz?pHq2R8QJSp`KZI4>3Qf-l_%?+Tv*(CB#& zQNs3VP#GMY0^UidL+S9PRIt1E_#0gYI2pWY;0Osnglr+0CmkFE33+g4nll0K?gYj1 z{zs4}1P^8GAD{3i;P@~<1Vw%~a8O@8g(l(1OwbR=n}h2fLG0y)Sp@9Sd;-Ks%7Veb zWXNFiY$yT_cnaQeNCTE9m;+sfQ=WlywKtXF959uXEFce`3!Q;r_H6L@D-Svi;gdL! z<+cTo1;D}_Aho9u`VNQWLdf#rB1i#(zvL0rFM-@3*q{K^6Y`+&yHY^ns|rC8fH0WN z3uppvE&_dCy@XsKn5hI}Emtasa1e|y1>HL;AQ1?Td;!|;K?Ld*m}AyUFsYS~pu1xg zGz*KAgW@m)m`*}9ve0ij&01hu$(pz(4IV9cUbKtOdZbQXdQt3kuP z8enZISf&No!m1w1gRi{?yjglplCX@Fut@_Tw}mx8#nlFg3xc25f&qD(plq1A9%wk+ zL?FpD4Sz$#{h{*UG4QH|o5CjSW5d5YI2qk3EVc$0BH$2-6>>Se$Na@EG zpjhBrh#P{TR?uc|lYHm^gju!?6tg;^Y4}Pz5Y0ab=F;8;&BG3FfrQp>NECvTJ3!4w zDLT0G-hPs53x? z{q(3U08ccL*a7gw5R*gzJTZHe7)Quq0`$cE0baET$h9s=$YsXPJq6;Zf-cn7Ky`8EOg|M6{L1tQ-Dz6wp`+rU?$ ziF}*Dqlw8^0+0Sjw+Vvw)dmg;^N(&T@Z&K5_%^T!k#7S(g847s#{8FWWB$vxG5_V; z7$V&Ui+~~WXs|q(e>|G7Ui)zm4(N;_vTC3+hDfS`&Y1sjYM>A?7fSFw7{F`)I6wm5 z#{7p;gJt>;r3UNtA4&}t>OYhk#3z`4oEoT$`Nye&zL@`TY9M}}Q}6L@%zr2~5dR-a z4aEP4QUme-q0~V9e<(FDk?}uH4Yb7k7vtdW|9x!*kb}8D39?d42!N6Y=b^o?-hri}qz{6pF5~jEf{rZ!W;UAEIV|PHdaiSIE&m;+C7ylc$b?zVbE_esrf&^?$hA6*V48T#G9H9ik6bP_T zi&;R$XB3Edn3MDmb;*MH$-omxPKv|QRERQ|og4_arUP7Bh#El-!44Fl49wRCV<{0V z<(#w#Gz2db9xu=#P!Rl?3V|$td;kH`CWmRjNPB50dIm%VOil}ggKI`kpeY@w0g;w? zIhF~*1i=Xhz@TQ#i1%ol-!8UWOf9&0$Tz>3J;_I59Z7tsyZaskq=OI50L?X;0F72FCgLL2R0q$0kt3_^=A^%zDL=X`UBly6(KOxZ}L>4^G2lN9mBLu+*1%Nb=?|TkY3j&2ez8vlpMl`_h zL5Ywm{4?;N2qG1(Is{(r1#6|Eh_1cuK#2Q5g7Glo1DqfX#spWyR1kbi1T<8o0X3^) zh;;ahC=kx$28x~Hh<#|O$sH4xt*93jt5qyhlKG5_KMfQ`fe0w5@c7zY6S#1KOS0G}9QOaRam^EV^_ zSD64ZiBTU=2}2BvfUn2=i8u&B8}RQKVvq#5=-00u>f7LM7ILOV~Jh`h{qD03W(h>#P|(_ZWtUfeglykh8SN0yJLu<9GDu07;J*& z!4RWoum~7p^bD2?BjzD{e^bz#N5a}c6 zjUlp3&>KUfsh~H8$m$5RhnS!RoiRjGN8mt2QU^L?h@=h>It*B68Qk85I)M-oDIS3k z5h)&l5D_UJApwaYa=bl4L?n3xLWCuY- z8>%Ac%T13XA|S#CO$aG~rx1p4%>}|#!rfHAK4KEQu(bvN*{+boxOj1@3q%n>$@KNmt}kc|IGE{A908IcPw|8_?>4v0K#p|m3+d6>{`c$LzMck(CP4IJ)Uu)$ zqm~u57!@m;r?-RR%b^|GG1_vE_ILj^%wJF2$J2o31M4$35ZM5@!$Rg5b*qs{CNFk?pgn_ zOPK|bWscu=Im52o#0Ui8!y~8of4Rcl;WvH)8bttM-c$VEE8S*)`DM_u_28^6p9DBA zzntf-x)2=5(x&)ZKIJa z;lfb&HM7Gr58F(K0EFAu0E7>|im&8SAM>wV#n`Ou4gc!Zdl@YN*^Xa z)la+D-RKY60*xVl>tEc$N`Lz_zwW-6BmTS3x_|YretJNg`Z@P&zxOkIrRHngxBt%l z%HMe{Uqc*e`E~9!fA?qMFDSZu&F9^9BZGj*@FWf_N8=>+?MFjG>b$$)dRLFM+I7(@ z3)^{vBb0Rbb#7`$@K8G%f26w|Q5eGAj*(hqyB$%FoYZLc{0*1kV4ULJDl4b?096d-H19);;S}>M_dna_ZgyEuO8wSb+!?*>ZnPI-2qGjB z;fRO`Y90X*)O?7C(6{*z55eSofQMjt!M9$RsW}r#l7~V4Gm8muP}MT-Z@!g<69o^E zk2!w*cDKP_cnki`nF~e^?e5#|-ZMfS@3ii$9d6Bt|M0DF==R&(Za;TBtXp-v`;C8T zJ2b+$v%8H^V2-)t=%Z%E%)#> zXt0;}FuKIQDZifkl|95%rrwKNz4eFBk_qzN2qq}+1!}qxYM}H5$P<%1l&-;%1 zH~;jv`0u^5{~Gsa-|uen-Fs>GKli%@BmSQISo)F&+$kgemG8R8>w#^LS}q?L_=fcK z&3t3eCUgJN_gwAA9%M`QZF7hC@dw@WZZZhdiT?P9+yZ~aLvDX3bd3^)#>*qFMdRfW z)?%^q7?HzX=L6SQqRDyR=_Rzx17g$}ot8%=j7rNR5Jn&60SEUq9-Sf#M&slW1*16f z2!hcYdBnhodmbUMi2D!$BkTDP0R!msMwFA5(GNv$b@)1n&5Gj6qbDkgE03G@#C_6V-$e?Z zeZ=jd@@E0LgBu=?^^XjvVoS z+DoVL=Rhaxf56e88f=ctYl{EN=ZPZ-hTj4om)_y8&I87*L}{<-K#DS z<(emSKlTfW>@EMPdwVBHWkk$8Esy9It(nKPhKOhczZlv)VqX!x2z@b9c|^V zG#t{ah4iala7TA{zvv!6x_AGD)agX)2)}*5+cB+IjM>l`#k}t6Z@6{G;_`7-CNw?V zzcjtIds^>=G@G{l%M+~`-EYrmEjij1dF*iiG-E!BqD$L99qkvtf$wwPEXqNc#Nqz1 z54P?a4X`KFZEn5q=0Eq>>~{zGeM?%$`u!hl9mkw!ENPwiPBT-#bk@l6{;eggxBD$i zXgBHapxwd2Q}BDalweHbey{M(kb z&X_wfdeYL>8`rMi#5=3{m1VtlJy3Oiqdt`eTi^A88S>D>W=_HS6Qf!D8!Hg3d~DrVpGFZ0KAilGt&cSFGX9(owcbM} zNwj10SL$;M(c=lNC2I8Z(fCsSmCTT|L(EnY!Nt8&p$ zipH8Xtq57&q}{|sM~q3@83U%-&q4}OGD+u>kf!ciX0>Rsq+L-|q8k$$7Y{@@GvR++ zF?SQh{-q76eKVaA4?W04k=ee4s}&d6_d?)993$|bqDE1SktiRidKB%P(u#TFyCpP= z8?_K-R6mO2l(eIo&v1s)tbm-7hRC#7`jkexQgeZHvOw;n9m!`2f+jSw#-bh*8ktY= zA^F3^3=SpS7p0#z%yRLp5?Y(+m11i~s9PM_q}^m*i%Cgo)Iubaf&c7DsHSW-gl43l z;?P>6L8@IyLnvBlgqjGqIXQ&DtBzT55z05456lSX8X+X$D|S6;N90@_sf0#SLi{8} zi^sha*-w;M{PnaUuB&DtZ%0U3NDq=7;`*h1%TPzBXyLj_g9iVJn;F)$tB_}DG^8EM zObcAQ45^G}JGRbhJsfh&g$nRXB}cO}gB*a>FhNT{jIo@lYRj2Alpv;K)Ro}#KARz8ebH(tbl(3!nmutbyi^8aCP?{a1 z3^x}7|Dz7b%aHR)2Puobu5N5oSxeY2ZC8ad97W5GLdvVAEOdGxjsHnWeBHEj9kRlT z28uB4DkH1~2vJY407@BJC&O^72LgPIR2L-K^uPt!Kx@ZhB80D!Nf+D_({cph3Icp4 zEhGC;{o=-_ov9zzoB;+%JXW=<+im~-m93deEH|*WTJQ?8pJq~|<1EcDSlOD^AuwyE zLF`#;go5L*MX~@Cn`PyN5$7VW4N^dw#e+<7a={bLWXjC)2}@-rSV`1Z@vgRrlj$|v z_4E{Mx2vnm1kuT(i@FZ8=40I4G7EQUOwCCL{+GzC zKEWl5+YCavgl(7G6~h=a8HC#O&F6KDX(<2EBwc7O147&hO$t>FGDK`F6nkS zo|;zU#v58F$xX+oi;0dAI6$L*AZl9zUrFZ*yRQ3IKwaCeHprvGDD`D)h?6T^I5RL8 zd^KkP{6-Oj`-~;1tTUfg0FP9t;eUltn^{xBs#%TWC>fNL3zYI`sjhJ5O*badK6Js-$#a5Q-V3s3rcMwkyL+ z1r#k55hz-z9X+nbRLn>}5Qodi0)lSZAzNm3b!B9x=B2f|Z_UO_m02=FREi`N6fKm; zDOzDpM2%pYzT63t{UIH6q< zXdy4woDAY?!d4RY)Aj&bDbeX{D!m8nC;RWWTmUBJ2ATs(k z9k|B-k#?*_Dc68^`KpxW5As0G$p!^HX7;zGd znGUQ#TN4W4)6P|?(I6Y0X>Sr*D4`qIQxc1ytko=q&;~w699r1Dl7)i z>+LlAr$Y}ktTj;K#Do`D4LbJ*p)SKrhJ2q{ajGi&eX(MO{X}B4o+V+S@dCbfrGt0) zaN)I7=>+j+wFcyRdC!|_YAjw8sX;66*gC*us!(H+4gwf8D+cc>T!CPvI7Rpmu`ni@ ztA<0Y*F!!NWz}OWnGbENYK1E+w>1l%hqz(h1Oa~#B zU{;JW)xt`e%jgB}t!Uo@FDJKKSCrMs`sg65Mv(BYbQ}mV_g~(K{wj@^HUWQ(VIvV` zA7LW}^hKHLod#5DIp#h_(3>K^(d3hA4A3y8q4m`Rxl>^n3DDD_DXeCw%Stu|HP<{V z%jHL63>K(x0YW=fv?~rk!)ehIoaf)QDZp7BxhFGe?GV8&?OJj2!^PTk?ns6fDtukr zm-MHB0eElP&!c3)xX;i^wnWAqZVWZWI^IhN(xfV&CD=ta7v_RU%?^@6wlo}kJ#bAX z($EetFcw-rF9%Kkv>3_>lyQkB~8qx@Sj(77Ur->ZcMY4@-Uq(7DQ@n%XfaM7_|?Frf;UBK!IbDqe{nIy%6lgiorkp=La>P%m9ZmKVgHaMR2npqqmh|q4ZKSLD^wl{1od2_1XJHmM;3Pvi;xK^an zjA7%z4nbo-#L8PlK~#DrL<7vg6ijJZD6#qaL`dw$^aaCc4z44dV~z>pVKi6C)gZ%a zV#St5t)X5B|Iz7Yuny&XX6|@cX5Dy-<`HG6gil0_e3eneC8%K_+XKI(MBB*oWUr&K zMcj>j6X#6h8ggQ0G9(2I8escO7^K2qZY(6onnWXvNDx5N)or|d(xjZAkxEs}t#Fbw z2SMTk1sfM!&Fdh^x-*eBEhd~%qrXTS8L`8>nFtnDMP`CEFZvFXX8mzC92L2PmFy=j z!0=%7{819oM&6+reTeNai=!rt;7wzUV;N0|I(Ei89sx@Jm@TbiJCs2$+ps~3pqZWA z-CVqW-3I>aUc@4NJ9X^b_btL=FE|x7v+%Tha?!lW1=(qf>eD6{PE0JS7A{(t&ma5$ lo18y3fBxvDn^te!bj8NC>qeOZuizOy{@~*mEjexU{{TzPj*b8T diff --git a/ccan/tdb2/doc/design.txt b/ccan/tdb2/doc/design.txt index 88334a8a..967c0b09 100644 --- a/ccan/tdb2/doc/design.txt +++ b/ccan/tdb2/doc/design.txt @@ -2,7 +2,7 @@ TDB2: A Redesigning The Trivial DataBase Rusty Russell, IBM Corporation -1-September-2010 +9-September-2010 Abstract @@ -277,7 +277,9 @@ maintained. The aim is that building tdb with -DTDB_PTHREAD will result in a pthread-safe version of the library, and otherwise no overhead -will exist. +will exist. Alternatively, a hooking mechanism similar to that +proposed for [Proposed-Solution-locking-hook] could be used to +enable pthread locking at runtime. 2.8 *_nonblock Functions And *_mark Functions Expose Implementation @@ -473,6 +475,50 @@ it alone has opened the TDB and will erase it. Remove TDB_CLEAR_IF_FIRST. Other workarounds are possible, but see [TDB_CLEAR_IF_FIRST-Imposes-Performance]. +2.15 Extending The Header Is Difficult + +We have reserved (zeroed) words in the TDB header, which can be +used for future features. If the future features are compulsory, +the version number must be updated to prevent old code from +accessing the database. But if the future feature is optional, we +have no way of telling if older code is accessing the database or +not. + +2.15.1 Proposed Solution + +The header should contain a “format variant” value (64-bit). This +is divided into two 32-bit parts: + +1. The lower part reflects the format variant understood by code + accessing the database. + +2. The upper part reflects the format variant you must understand + to write to the database (otherwise you can only open for + reading). + +The latter field can only be written at creation time, the former +should be written under the OPEN_LOCK when opening the database +for writing, if the variant of the code is lower than the current +lowest variant. + +This should allow backwards-compatible features to be added, and +detection if older code (which doesn't understand the feature) +writes to the database. + +2.16 Record Headers Are Not Expandible + +If we later want to add (say) checksums on keys and data, it +would require another format change, which we'd like to avoid. + +2.16.1 Proposed Solution + +We often have extra padding at the tail of a record. If we ensure +that the first byte (if any) of this padding is zero, we will +have a way for future changes to detect code which doesn't +understand a new format: the new code would write (say) a 1 at +the tail, and thus if there is no tail or the first byte is 0, we +would know the extension is not present on that record. + 3 Performance And Scalability Issues 3.1 TDB_CLEAR_IF_FIRST -- 2.39.2