ELF>@@@8@@@@@@@@@@$$ aaW aa@@DDPtd44A4AllQtd/lib64/ld-linux-x86-64.so.2GNUGNUɔOWcbH ,#@ E!#+.֟]۲tC,IT5׆]|CEqXa*7V7O  W\4FXbi-xqG@7b`Aaa`7b  A`p7b]ada(a1 0@@a`7@7b@libdb-4.8.so__gmon_start___Jv_RegisterClasses_init_finilibpthread.so.0libc.so.6exitfopenoptindstrrchrperrorreallocstdinstrtolfgetscallocstrlenmemsetgetoptstdoutmemcpystrtoulmallocstrcat__ctype_b_locoptargstderrstrncatfwritestrchr__ctype_toupper_loc__ctype_tolower_locstrcmp__libc_start_mainvfprintfsnprintffree_edata__bss_start_end/usr/local/BerkeleyDB.4.8/libdata_setmaxbinszsqlite3UpperToLowerline_numberdebugthe_parse_progresssqlite3IsAsciiIdCharthe_schemaprognameGLIBC_2.3GLIBC_2.2.5Mii ui a.a#aa$aa%aaa&a'aaa(a0a, a(a"HaPaXa`ahapaxa a a a a aaaaaaaaaaaaaaa a!H}H5!%!@%!h%!h%!h%!h%!h%!h%!h%!hp%!h`%!h P%!h @%!h 0%!h %!h %z!h%r!h%j!h%b!h%Z!h%R!h%J!h%B!h%:!h%2!hp%*!h`%"!hP%!h@1I^HHPTI @H0@H@HHq!HtHÐUHSH=0!uKaH*!HaHHH9s$fDHH!aH!H9r!H[fff.H=H!UHtHt aÐLd$Ll$IH\$Hl$/H(IHHx?.HHtu.LHL)LH|8HHLHH+LHf.HHl$H\$Ld$Ll$ H(fDLPH\L[HKLGfHHtH!H5$HH !H81HfDAWHAVE1AUE1ATUSH8H!L|$ H|$HDŽ$(IwH$(Ht$HD$DLCHdLH!%tDHSHDHL)HG1|$ ID!HD$D#@pu1@;t@trHHHHxwH5uHcHfDP-YE11ɀ uf.P/A@uHD!/LeM)MOt& LL ILLLHt9Ht$L.?rLsLM)LK4'LHIZH5!HT$ffDP*AAP* E1fP-tu/tX*Af.PDA]LIAfDAMtA}u~L1H8[]A\A]A^A_H!H5!HH!H54H81Hm!H$(H56H!H81cH$(Lt=jHu!H$(H5H81$JIf.AWE1AVE1AUL-ATAUHS1H(HH !HD$H$HHhHD^dv=H!H5HH!H81{H([]A\A]A^A_IcDL@Ha!HHD$|@HI!L8iH9!HH$UDH!!L0AfH !H)H!fDH!A9~MH5LvHHD$LvH<$D$uH5LD$H$H<$pH<$H57 HIHD$uH<$H5?D$HH:H5HHIHM0H0H5LHHLH|$TH$H|$H5oHI@H|$8LIHLLL$T$1Hk1@HH5?HTHc!H81!1H([]A\A]A^A_H!D$HHD$H)!D$L H!L(H<$[1fH!H=,Hc1mH!H=.H<1FE1H<$4H|$*HH HtHfHcHDH8=HcgHpPtW@΍==wL LcC84tI@t4@wL7HcA40uK)ȃ;==wH H<;t H)P@HB@HB@Kff.e@SvDHy@HcHH>`3H>3H>/H>/H>2H>4H~1UHSHHHtGx.fHHDH|Ht6yHHH[]DH[]ÐAWAAVAUATUHSHHT$pHL$xH$H$EUH$H$IcLEEHD$@Ht$HH|$PHcHDHD=HcLKAxAD==wLHcE840Et?AwLD$@H5B4D);==wH5H<; LAx=L~`= E`H$EDEH[]A\A]A^A_fDH5~=LJcMOLeUy2f.HcHDH|HtU]ۉ]yH5L1uAD$Lemd@EH]x,DHHDH|HtEEyH] DHH=!H-PLUDD$d~-H5IHL1HL$(LT$ tIt$LT$ HL$(HLHL$(/HL$(HHHTH$HD$0H.A|$HD$0$MfHcT$L11ҾLT$ $LT$ HT$XHHD$(LH^&LT$ LD$(IL$L1LLT$ fLT$ H1HH$HD$0LUHD$0HHcHPHDHDHHkDMIt$E1Ht$XAD$t>L11ҾLT$ $LT$ HT$XHHD$(LH%LT$ LD$(It$IL$LLLT$ eLT$ HiHH$HD$0LQTHD$0HRHcHPHDHDHHkDMDŽ$DŽ$E$(E$IT$ID$I:11LT$ HDD$(DL$0HD$XSDD$(HLLT$ DL$0I$hI$HHL$I$D$DD$LD$XLH $H+^MCIT$L11LT$ HdLT$ HT1HLdH$MIT$It$L1LT$ HUdLT$ HT1HL>dH$MIL$IT$E1L"HIT$HHD$0HP #HD$0HIt$HHTH$B#MZE111ҾL!HH$BIT$HIt$HHD$0HP`HT"HD$0H#MHIt$I:HLT$ HDHHt$`1HHD$X,RLT$ HD$hE1IT$1ɾ@L!HH$LT$ 6HT$hLE1E111HD$HD$D$H$HD$0L\$0IC`LF"LT$ L\$0A|$HH|$`It$H|HE|$XH8HL!ME111ҾnL[ HIT$HHD$0HP`!HD$0HIt$HHTH$!MIT$E11L׾@LT$ HH$LT$ IT$HHD$0HP Y!HD$0LT$ A|$zIt$HHHTH8 !M!IT$E11L׾@LT$ uHH$LT$ IT$HHD$0HP` HD$0LT$ A|$It$HHHTH8 MIT$11LLT$ `HLT$ 1HHHTL`LT$ IT$E11ɾ?HD$0LHH$LL$0LT$ LH A|$\HIt$HHTH8H8MH1LH\+E1VHSLH$HSIt$HH8MH1LH\+E1UHSH$HSIt$HH8[MsHID$At$H\+1LHD$XE1HSHt$XH$HHSHH8 M!IT$1LE1BHvH$It$HTHH8MIT$1LE1BH5H$It$HTHH8MIT$1LE1AHH$It$HTHH8FM^LMNHIT$It$HLLCM+LsMMHLHtMLZML MHDHD$DŽ$At$L !MLLMLrLMz1L`LMhH1LHTE1ULT$ LT$ HLX"M0It$LC"MHLHt*"MIt$HTHH$DD$) ‰$I$hHTHH$DD$) ‰$It$HTHH$DD$) ‰$KHDHHTH$HDH$#HLHt"MM HDHHTH$HDH$H\LHHt\THDH$HDH$MIT$H$AA)Ћ$ ‰$qHL1H\+1HKJH{?MGHIt$1HTLoJM'DŽ$DŽ$AL$AD$HHTIt$E1E1L׉$nWMHƄ$Ƅ$H\+DŽ$DŽ$DŽ$H$1HT$PHsLE1E1H{bMjHAL$HtLMGAD$HE$HIL$IT$I$(L׉$LDM HAL$1HtLtMDŽ$DŽ$DŽ$cIL$I$HIT$ED$LLT$ XHDLT$ HtLHMvIt$LMaHDMD$111LHDLD$D$HD$H$RMHDAL$It$E1LHTGMID$H$ID$H$$HDŽ$HDHD$DŽ$DŽ$ |DŽ$lDŽ$\HDHDDŽ$$5HDHDDŽ$$HDHDDŽ$$DŽ$DŽ$HTHD A#D$ D$DŽ$HLHtMHDLHtFMgHDIL$IT$1LHDDuVM=It$LM(HD1E111LHDLD$D$HD$H$PMHDAT$ED$1LHLEMHDLHtMH1LLD1ҾXLT$ LT$ HLMcH\IT$1LE1HtH$It$HTHH8MIT$11LLT$ HtVLT$ IT$1HL]VHTLT$ HtL1HAVLT$ IT$LHLT$ GH$A|$HLT$  IT$It$HH8H8aHX fKMjHDHHTH$HDDŽ$H$7HDHHTH$HDDŽ$H$HIT$At$HLE1LVH$MH\1LHHTNHH$ HTMHP8HTHP@IL$L1HHHL$(HL$(HTHH$H8MPIT$MD$1L׾HHTI$hHH$MHIt$LHTH$MH1LLD1ҾLT$ 9LT$ HH$LMHLHtxH$MMD$L11ҾLT$ LT$ MD$11ҾHD$XHLLT$ LD11ҾHD$`LLT$ HT$`E1HpL|LT$ HT$XHE1pL_H$MMD$L11ҾLT$ 4LT$ H1LD1ҾHD$XLLT$ HT$XHE1pLH$MsH11LDLH$MIHD11LHtLDH$MI|$HIt$HTH$MHI:1HTPH$MHIt$I:HT*H$MH11HTLRH$MHIt$1HTLQH$M]It$E$h1MD$1LOM7HIt$EL$HLMD$1L%M IT$I$h1E$(MD$LMHIL$1HTL9QH$MHIt$IL$HTLQH$MIt$H0LLT$ H?LT$ HLIT$It$ED$L` MHHIt$LHTM*ID$HH$HDH$ID$HH$HDH$HHDHDŽ$H$HDŽ$HDŽ$DŽ$DŽ$IT$11LOHH$;HPHHDHDBM>IT$It$1LOHH$HcHPHDHDHHkDMHHDH$HH\+H{LT$ LT$ HD$1HD$D$E1H$HSE11L' H$MwHML$I$HHDMD$11LHD$ID$H$ H$M2HI$hIL$HDIT$MD$E1LHD$ID$H$I H$MHDŽ$ID$HH$fҍJHTHcHHkHTT1MHH|H$ MrI:PRH$MU$HLE111ҾkLT$ LT$ MD$11ҾHL LT$ E1HH¾pLf LT$ It$1HLOMH$MLE111ҾkLT$ & LT$ It$1HLMH$MHD1HDtHLIT$It$LLH$MSHDŽ$BID$H$0HIL$ML$HD+MD$I$hI$HLHXH\$H@HD$A$(D$ID$H$yH$MDŽ$kHHHD(HPHMAL$JH@IT$HP8HHDH$MrHDŽ$aHDŽ$PID$H$>It$11L $MDŽ$HI:IT$HL1V:H$MHDŽ$$IL$IT$It$Lv $MIT$It$1LS $MHHDH$nH fHMXI$HH$I$PH$M0M(M ME11H¾LsHH$XI|$MMMME11H¾L$H$dI|$HD$0LT$  LT$ HD$05LE11ɾLIH$/H|$hLT$ HD$0{L\$0LT$ E11H¾LH$WI|$HD$0LT$ LT$ HD$0(I|$HD$0X HD$0^I|$HD$0HD$0E11H¾L H$MIT$ID$IT$ȋU)M|LHD$0LT$ LT$ HD$0.MSI|$9MAf>!).!! HtH5\!HϾ1fLfDH9!H5:!HH81HtH5!H1&LfDH!H5!H|H81Hٛ!H5ژ!HoH81H!H5!H]H81iHtH5!HK1KfDHy!H5z!H)H81)HtH5\!H1fKfDH9!H5:!HH81HtH5!H1&KfDH!H5!HȽH81HtH5ܗ!H1JfDH!H5!HH81iHtH5!H1JfDHy!H5z!HbH81)HtH5\!HK1fJfDH9!H5:!H)H81HH!H5!H H811HfDHH!H5!HH811HfDHH!H5!HмH81e1HfDHH!H5!HH8151HfDHY!H5Z!HH81 H9!H5:!HH81HHtH5!Hy1"I1HH!H5!HSH811HfHHtH5ȕ!11H1HH!H5!1H81^1Hffffff.Hy!H5z!HH81)HHtH5X!Hܻ1bH1HH1!H52!HH811HfHtH5 !H1HfDH!H5!HuH81HtH5̔!Hk1GfDH!H5!HIH81YHHtH5!H/1G1HHa!H5b!H H811HfHtH5H81HtH5L!H(1VAfDH)!H5*!HH81ٽHtH5 !H1AfDH!H5!H׵H81陽HtH5̍!Hε1@fDH!H5!HH81YHtH5!H1@fDHi!H5j!HH81HtH5L!Hm1V@fDH)!H5*!HKH81ټAW1@AVAUIATIU1SH(Lt$ LHH=!L$L$THHD$IHL$HcI;H$B@@@4EAfAHACHDBuADfAWAC=><@@@tGA\@1Ҁ{=DƒA?AJ#A AHH DAPHDQuACAD{|@@@4KAfDAR{{'D{E+A'Wd~HDHA'McBDzD{DEuԺAADfAf.CAH]uADACH|$F~Mt$I}JIH511; IE3I~H118H|$0H۸EI}DMMLt$fDD$(|H$H$MH|$H$H$MH|$1H$1ľ/AIcADHt#HTDAHADHuIc׾}DAIc;ADPt$H@H;AHOADPu}@AHAFApsC A H t_CAuQfCAfCHtA*uCAK HtHHD$pE1D$x%H$/tHЃHAHHtH0HtPH$AAG\"7L"/THG7H0E1HAEtH58H8 HDE1E1t"H@9AAGHuA HD$pMA!GTJGA^ E11Et E$Au@VHt'Lc9CuHcA<VHuLcEt GLcCD$x B H}@$[ DQAAF҅ LfD@~HAE)A9rA9twA)EAEAEtOf|$fnL$It1f`f`fpfHD9rDE9tHcЃ9@L$xHD$pMƄ$%HD$pMD$xL$A4$/ID$A4$L MIDăHD$pA<$LD$x1DpH@t9T$xH$/vHAHSE1HD$pD$xL$At$.ID$At$ADŽ$Ƅ$-ɀ$Et $  fYu ݔ$T$hL$L$PLD$`DT$8|$@D\$L%o$\$ }&HD$pl$@D$xT$hL$LD$`DT$8D\$L$PD$ 1 r)ۤ r ʁ^~+ #  frˁ^~vr-t)>@ŕ^~v$ @vʁ} v)t+vʁ} ٍ^=؀$-D$xL%1$+L%$+D$xHvLD@ILH"DHAHPHQD$|$puH$7/HG7H0E1D$xH$/jHЃHAH1)E{HED$pH$H$HQHJHNHWHJHOYAU@DŽ$Ƅ$+RA$D؃ $.ID$L$HpIt$HGHpHw$zH$0/H$L$HFHpIt$/$H$0/L$ID$HpIt$mID$HpIt$L MWHD$pL%XLWD$xHH@HPHVHAHPHQL$D$r $-$ɉt$x@Ƅ$Ƅ$D AA $3|$xIELl$pJDT$xH|$p1AA0Yټ$D$fA fD$٬$ۜ$٬$D$D$A0ۄ$ DHD9uD$xH|$pE1DT$xHDA1Et.HEuE:0H؀$t,xHH@0uHH9@0t@.Httv$ulA@H}A+Hc~d0ֈHgfff)B0)Ɖ0AHD)|$L$xrEiD9|$xED+D$xE9H~Lf{#HNHH=LHEHEHp1tH$Hl$Ld$HH=H$Hl$Ld$1HpH\$Ld$HHl$HH~I"uH$Hl$Ld$HID$LHߋh-$H=IHH$Ld$Hl$1HSLO8HH=t L rL8t>HsH=kB!1LHHH!H9H!t.HsH=1[HC Hx%LK8If[fffff.UHSHHH~!u_H{!u"HsHH=[]H1_HH#HsHH=u[]HH1/HH"HsH=H1HH"HsHH= []HH1ffffff.H\$Hl$HLd$Ll$L-Lt$L|$HHG L%H-Hx HC HIDHxHT$h HLEHC Hx HC IEHxLx HHLEHC H@Lp5!HsHT$hIH=@!1MLd$0Hl$ HT$@HHHt$XHt$PHt$HHt$8Ht$(L|$Ht$Ht$L,$HF!H9F!tOHsH=H\$xH$L$1L$L$L$HHHĨH\$xH$L$L$L$L$HĨH\$Hl$HLd$Ll$H(H~HiuuH{LkLeDH5PHH=LMHEML1HSHuH=H\$Hl$1Ld$Ll$ H(LkLeHH= H=>!LLHH\$Hl$Ld$Ll$ 1H(>fffff.H\$Hl$HLd$Ll$H(H~HyuuH{LkLeTH5`HH=ELMHEML1HSHuH=HH\$Hl$1Ld$Ll$ H(HHUHSHuHH= >!H\$1Hl$Ld$Ll$ IIH(Nfffff.H\$Hl$HLd$Ll$H-\Lt$L|$H,IHC L5cLL$PL-eL%IHxOHC L2LDHxLD$X0H#LEHC HxHC LEHxHC MEHxHC HsLL$PLD$XHH= =!IEH@HP1LL$8LD$(IIHt$@Ht$0Lt$ Ll$Ht$L|$H$HB!H9B!tmHC Hx`HC HsHH=|}H\$hIEHl$pLd$xH@L$IL$L$IHP1HĘeDH\$hHl$pLd$xL$L$L$HĘÐH\$Hl$HLd$Ll$H-Lt$L|$HxHG L5L-L%IHxHC LrLDHxLD$8pHcLEHC HxFHC LEHx3HC MEHx HC HsLD$8H=Z;!HIEH@HP1LD$ IHt$(Lt$Ll$Ht$IL<$qHJA!H9;A!taHC HxHC HsHH=|H\$HIEHl$PLd$XH@Ll$`ILt$hL|$pHP1HxH\$HHl$PLd$XLl$`Lt$hL|$pHxffff.AWAVAUL-#ATL%UH-%SHHXHGHxHCIEHxHCMDHxL`HCHsH=":!LMHPHLd$Hl$L,$LD1H1HCHxHsHK(IH=9!1IHH?!H9?!tHsH=z1HsH={1HH?!H9?!tHsH=s|1lHCH-L=L5L%rHxHCLLDHxLD$HHLEHCHxHCLELhHCHxHCHsLD$HH=8!HIEMH@HP1LD$(ILl$0Ht$ L|$Ht$Lt$L,$H>!H9>!tSHCLhHCHxHCHIEHsMH={H@IHPHX1[]A\A]A^A_;HX[]A\A]A^A_fH9>!H9*>!SHtHwH=)|1HsH=7|1(H5H߃=!=!+H=!H9=!tH=1H5H߃-=!-=!H=1-=!HsH=]1[z=!AVH=o=!H=H5i=!1AUATMUH1SHHJ=!H9;=!tH=6!1H=l6!1H=!H9=!tH=YL1$L-9!I}H=1dHM11H=]{1FHH5H=A\H=e{1HWH5H=Y4H=|1H=/11IuH=5!1HqI}H=5!1XH1H=10H=)1rH5H=1H=1H=1AH=H=1H=1SG!H5 H= 11G!%G!~H=A1H=*1-G!lH=]1F!H=H=1=H=$1H=11/H=1H=*1SH=\H=1H=1+H=11H=}1H=1H3H=1HH=M1H=1H=1q[H=&1-E![H=13H=Q1:H=1'YfH=1bH={1f.H=i12H=1Affffff.H9!HwH=H1@H!HwH=H1@HwH=1HHhHwH=1HHHHwH=1)fSHH=1HsH=1[IHHfH=1fHwH=1fffff.HwH=1Hff.HwH=ִ1fffff.HwH=1nfffff.HwH=1HKff.H=H1.H=G1-C!H=ϵ1-C!H=61-C!H=1H=-cC!1HHHwH=1HHH=51C!C!Hfffff.H=1bfSHwHH=1HGHC HxtHC HxtEHC HsH=HP1 HsH=1HsH=~1[fDH=fH\$Hl$HLd$HHAt9B!H}t H}toHUHsH=q1yEt,H=1f-A!H$Hl$Ld$H@H=HH$Hl$Ld$1H(H=fU1SHHHoH=MH=]1pA!HsH=1HHCHUH=Hp1HCHKH=mHp1HHCHUH=HpI1HoH}FtH}IIH=U1CH=W10H}@!HEH=CH@HtH=CHHCHUH=HpI1HH=1F@!H=g1-1@!H=R1-@!H=1y-@!HH=[]1^fDHCHUH=HpI1H8mHCHUH=QHpI1HEH=f.ATIUSH9w -k?!E MI|$tI|$&I|$t@ID$x H!HcHH|1w[]A\f.ID$H=AHPHtTH=AHtA:B:B:B:qfHcH!HD-HH<1[[]A\H=x1HcH!HH<1fDH=|H=kHiH='AHtH=AHu.Hc1HH-;!H}D-=!7H!H5H81E>qUHSHH_tJ} ~$HcQ=!HH!HHH[]Hc-=!H!HHHH[]HX L@;9O)OOO)ONN@;@;N^N6N6N6N6N6N@;NMMzMM>M@;@;@;@;@;@;%MM%MLS@;S`SSSRRR)OORqRVR2R RQQQQQQQ)OO)OrQSQ@;@;@;@;)QPPP)OQtPQtPQQdPTP4PO)OOOjO=^^Lw^^L^O)O)O]]]q]\MM\\\h\W\\[=e[Z_M2_"___s__^^^]O[[Z_ZZZ]O[^_~Z\Z9ZZY^_YY_Y3Y YXQTPXX^^pXMX_%XWWWaWVWWVXV2VU:UjUFE_^_^O[]XXeEUEEE]]}DCMCMCCCBBBSC1C|CMMMM6N@;@;fBAAAAA~A~A]A@;@;LA6A@@A@a@;@@?l?\?UEL?.? ?>LA6A@;@;>>>>p>W>>>@;@;,>>K@;@;K@;%L%L%L@;%L'II{`5DXY=4?F/Q;M-hZ\_rq''eDEE$)*.+#44G7G7IIILI__III4444O4$4$444[ X[,+f"1?CMP|Tz{  !&")'89S44Pm2PrPP61-/.5]nl  $ kf !SZXthVdbBqs0WWWW:??:cccZ\cppx|_I3XYwzTNQPRVYopq[\]^_`agi{}mn#&"%)uvyzLNMOxw +,efghi'*( ;<@>=~sljbdR[WSTUe78Q^`ac|AjCDEFGJKHkortuvy{UOEFGHJKLMNOPQRSTNO*+IJKLMNOPQRST:<=>?@ABCDEFGHJKLMNOPQRSTXXn\JKLMNOPQRST*+.NOPQRSTXY|}~<=>?@ABCDEFGHJKLMNOPQRST*+,PQRSTT<=>?@ABCDEFGHnJKLMNOPQRST{:ӓ\ذNOg*+NOXY䴵XXbc\<=>?@ABCDEFGHJKLMNOPQRST*+N|}~ЩXY<=>?@ABCDEFGHJKLMNOPQRST*+STҡ<=>?@ABCDEFGHJKLMNOPQRSTȓXYZ]^_ܓhT*+Z[\]^_`g<=>?@ABCDEFGHJKLMNOPQRSTT [\]^_`Z]^_gԽ2*+h"+ʵ1<=>?@ABCDEFGHJKLMNOPQRSTӓ fؐ)bcdeg*+%n'1<=>?@ABCDEFGHJKLMNOPQRSTZ]^_;h*+*+jlm?@<=>?@ABCDEFGHJKLMNOPQRST\;7  jlm*+XYj\lm%'^<=>?@ABCDEFGHJKLMNOPQRST*+PXYXYXY<=>?@ABCDEFGHrJKLMNOPQRST*+ʓ46<=>?@ABCDEFGHJKLMNOPQRST*+jlmcde=>?@ABCDEFGHJKLMNOPQRST*+cde>?@ABCDEFGHJKLMNOPQRST+XYX0Y:0r46|}:NOrWXY\bNOP[WXY\nynDP|}~p{Щk0o|}~k:o [\NOWXY#\a/q158|}~Xcde;in驪ߡ’¬yvwtxpޘbsba(T⫭īūƳ<̘̘͘&˜¸!pppp\ k pruu,,`g,b$--3bzfqqsfz{DD9$|L====????@@AAABD????@@AAAB<;)>>====????@@AAAB$RCE????@@AAABCE>:@@AAAB$<;)>>=====????@@AAAB^AAAB"8*<;)>>====????@@AAAB$t '<q K=T;:)89$<;)>>=====????@@AAABMk+)n7$<;)>>====????@@AAAB, B <;)>>====????@@AAAB=M$,7#Y\]CES #^rCvWXBP<;)>>====????@@AAAB$&a=vWX=Y\]^" "R%C<;)>>====????@@AAAB$O<.K==Jj&u  ;M11/J~~<;)>>====????@@AAAB$=Y\]rG45L^N~?J}} @<;)>>====????@@AAAB$Gv] -CE@HPi@F#G>"$<;)>>====????@@AAAB99$<;)>>====????@@AAAB0$<F)>>===={????@@AAAB/12@01h$;)>>====s????@@AAABo7{)>>=====????@@AAABHD==(==AHD=w( AF54=b===Fz==`KJefpI;<r&KJ}=I;<HD=(=TUAc o|3!aF =h===KJII;<=6s=t%==u==H== $%=&'(====y I*%=`=+,!=)=-.=*=[4=[=E"e/0 mpq 23,6BE(3:TN[SL9O}UQV-i b ydfX$lx+w62?@ADdpqg GxQ \_~oVZjzkWlc_g8 m!'.5YZ=nK    v",$&s[ WYMR%(NWZ]kr}"N(QRI!\^3TJPS|z!L1IIING`oB~IB:vIIIIII    -0/3568 ;<A !%'EJKF9=&(parser stack overflowset listnear "%T": syntax errortoo many arguments on function %TAddCollateTypeAddCheckConstraintDeleteTriggerDeleteTableVtabFinishParseVtabBeginParseVtabArgInitVtabArgExtendVacuumUpdateTriggerUpdateStepTriggerSelectStepTriggerInsertStepTriggerDeleteStepSrcListShiftJoinTypeSrcListDeleteSrcListAppendFromTermSelectDeleteSelectRollbackTransactionReindexRegisterExprPragmaPExprInsertIdListDeleteIdListAppendFinishTriggerExprSpanExprSetHeightExprSetCollExprListDeleteExprFunctionExprDeleteExprAssignVarNumberDropTriggerDropTableDropIndexDetachDeleteTriggerStepDeleteFromCreateViewCommitTransactionBeginTriggerBeginTransactionAttachAnalyzeAlterRenameTableAlterFinishAddColumnAlterBeginAddColumnAddNotNullAddDefaultValueUnsupported SQL syntax (%s) unrecognized token: "%T"`O`OJ`O`OJJJJJJJJJJJJJJJJJJ`OOOhQLQ8QOPQXMMN N8N`N@OOOOOOOOOOOLPPQ@PpPLJJJJJJJJJJJJJJJJJJJJJJJQJJRJJJJOJJJJJJJJJJJJJJJJJJJJJJJQJJJQJPh&'*)"I$_,ZmY !nbY0l4`^wvd<Y8 ?B\*gT :c#re+/{7xy91=[a@ Y::]o>i%qY*uz.-fAt2YY 3js56(k !%(/7:=?AFGLUV[_cfkq{~ #(.49=@FJQSZ\^gkqw              $'+453.:B [U^J>#ei L A0000000000000000Malloc failure Malloc failedvarbinvarcharvarchar2bittinyintsmallintshortintegerbigintrealfloatdoubledecimalnumericnumberUnsupported type %s DB_BTREEExtracting name from a null or empty token Extracting name from a null or empty tokenMissing right parenthesis in type expression %s Non-numeric or zero size parameter in type expression %s Unexpected value for second parameter in type expression %s Zero dimension not allowed for %sWarning: dimension of string "%s %s" is too small to hold a null-terminated string.Encountered two CREATE DATABASE statements; only one is allowedThe table %s contains two columns with the same name %s; this is not allowed.Found two declarations of an index named %s, at lines %d and %dThe index named %s on line %d has the same name as the table at line %d. This is not allowed.Index %s names unknown table %sIndex %s names unknown column %s in table %sPlease specify CREATE DATABASE before CREATE TABLEThe table name must be simple: %s.%sFound two declarations of a table named %s, at lines %d and %dThe entity named %s on line %d has the same name as the index at line %d. This is not allowed.Foreign Key Constraint not implemented: FromTable %s FromCol %s ToTable %s ToCol %s SQL logic error or missing databasecallback requested query abortattempt to write a readonly databasedatabase disk image is malformedString or BLOB exceeded size limitlibrary routine called out of sequencelarge file support is disabledauxiliary database format errorbind or column index out of rangefile is encrypted or is not a databasenot an erroraccess permission denieddatabase is lockeddatabase table is lockedout of memoryinterrupteddisk I/O errordatabase or disk is fullunable to open database filetable contains no datadatabase schema has changedconstraint faileddatatype mismatchauthorization deniedunknown errorww+vwwwpw`wPw@w0w w+vww+vvvvvvvvvpv`vPv+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+vww  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~The table "%s" (defined near line %d) lacks a primary key, which is not allowed. All tables must have a designated primary key. typedef void (*%s_iteration_callback)(void *, %s_data *); int remove_%s_database(DB_ENV *envp); return %s_insert_struct(dbp, &data); return p - buffer; } int %s_full_iteration(DB *dbp, %s_iteration_callback user_func, void *user_data); if (create_%s_secondary(%s_envp, %s_dbp, &%s_dbp) != 0) goto exit_error; if (create_%s_database(%s_envp, &%s_dbp) != 0) goto exit_error; int create_%s_database(DB_ENV *envp, DB **dbpp); int %s_insert_struct(DB *dbp, %s_data *%sp); memcpy(%s%sp->%s, buffer, sizeof(%sp->%s)); memcpy(p, %s%sp->%s, sizeof(%sp->%s)); int get_%s_data(DB *dbp, %s %s%s_key, %s_data *data); int delete_%s_key(DB *dbp, %s %s%s_key); int create_%s_secondary(DB_ENV *envp, DB *dbpp, DB **secondary_dbpp); int remove_%s_index(DB_ENV *envp) { return envp->dbremove(envp, NULL, "%s.db", NULL, 0); } int remove_%s_index(DB_ENV * envp); int %s_query_iteration(DB *secondary_dbp, %s %s%s_key, %s_iteration_callback user_func, void *user_data); int %s_insert_fields(DB * dbp, int %s_insert_fields(DB *dbp, #define %s_CACHE_SIZE_GIGA %lu #define %s_CACHE_SIZE_BYTES %lu Data structures representing the record layoutsMacros for the maximum length of the records after serialization. This is the maximum size of the data that is storedThese typedefs are prototypes for the user-written iteration callback functions, which are invoked during full iteration and secondary index queriesThe environment creation/initialization functionint create_%s_env(DB_ENV **envpp); Database creation/initialization functionsFunctions for inserting records by providing the full corresponding data structureFunctions for inserting records by providing each field value as a separate argumentFunctions for retrieving records by keyFunctions for deleting records by keyFunctions for doing iterations over an entire primary databaseIndex creation and removal functionsThis convenience method invokes all of the environment and database creation methods necessary to initialize the complete BDB environment. It uses the global environment and database pointers declared below. You may bypass this function and use your own environment and database pointers, if you wish.int initialize_%s_environment(); int initialize_%s_environment() { if (create_%s_env(&%s_envp) != 0) goto exit_error; fprintf(stderr, "Stopping initialization because of error\n"); return -1; #include #include #include #include #include #include #include "db.h" Header file for a Berkeley DB implementation generated from SQL DDL by db_sqlCache size constants, specified in a hint comment in the original DDL (*envpp)->set_cachesize(*envpp, %s_CACHE_SIZE_GIGA, %s_CACHE_SIZE_BYTES, 1); if ((ret = (*envpp)->open(*envpp, env_name, flags, 0)) != 0) { (*envpp)->err(*envpp, ret, "DB_ENV->open: %%s", env_name); return 1; } return 0; } int create_%s_env(DB_ENV **envpp) { int ret, flags; char *env_name = "./%s"; if ((ret = db_env_create(envpp, 0)) != 0) { fprintf(stderr, "db_env_create: %%s", db_strerror(ret)); return 1; } (*envpp)->set_errfile(*envpp, stderr); flags = DB_CREATE | DB_INIT_MPOOL; int create_database(DB_ENV *envp, char *db_name, DB **dbpp, int flags, DBTYPE type, int moreflags, int (*comparator)(DB *, const DBT *, const DBT *)) { int ret; FILE *errfilep; if ((ret = db_create(dbpp, envp, 0)) != 0) { envp->err(envp, ret, "db_create"); return ret; } if (moreflags != 0) (*dbpp)->set_flags(*dbpp, moreflags); if (comparator != NULL) (*dbpp)->set_bt_compare(*dbpp, comparator); envp->get_errfile(envp, &errfilep); (*dbpp)->set_errfile(*dbpp, errfilep); if ((ret = (*dbpp)->open(*dbpp, NULL, db_name, NULL, type, flags, 0644)) != 0) { (*dbpp)->err(*dbpp, ret, "DB->open: %%s", db_name); return ret; } return 0; } A generic function for creating and opening a databasestatic int compare_int(DB *dbp, const DBT *a, const DBT *b) { int ai, bi; memcpy(&ai, a->data, sizeof(int)); memcpy(&bi, b->data, sizeof(int)); return (ai - bi); } int compare_long(DB *dbp, const DBT *a, const DBT *b) { long ai, bi; memcpy(&ai, a->data, sizeof(long)); memcpy(&bi, b->data, sizeof(long)); return (ai - bi); } These are custom comparator functions for integer keys. They are needed to make integers sort well on little-endian architectures, such as x86. cf. discussion of btree comparators in 'Getting Started with Data Storage' manual.int create_%s_database(DB_ENV *envp, DB **dbpp) { return create_database(envp, "%s.db", dbpp, DB_CREATE, %s, 0, %s); } int remove_%s_database(DB_ENV *envp) { return envp->dbremove(envp, NULL, "%s.db", NULL, 0); } int %s_insert_struct( DB *dbp, %s_data *%sp) { DBT key_dbt, data_dbt; char serialized_data[%s]; int ret, serialized_size; %s %s%s_key = %sp->%s; memset(&key_dbt, 0, sizeof(key_dbt)); memset(&data_dbt, 0, sizeof(data_dbt)); key_dbt.data = %s%s_key; key_dbt.size = %s(%s_key)%s; serialized_size = serialize_%s_data(%sp, serialized_data); data_dbt.data = serialized_data; data_dbt.size = serialized_size; if ((ret = dbp->put(dbp, NULL, &key_dbt, &data_dbt, 0)) != 0) { dbp->err(dbp, ret, "Inserting key %%d", %s_key); return -1; } return 0; } len = strlen(buffer) + 1; assert(len <= %s); memcpy(%sp->%s, buffer, len); buffer += len; void deserialize_%s_data(char *buffer, %s_data *%sp) { size_t len; memset(%sp, 0, sizeof(*%sp)); len = strlen(%sp->%s) + 1; assert(len <= %s); memcpy(p, %sp->%s, len); p += len; int serialize_%s_data(%s_data *%sp, char *buffer) { size_t len; char *p; memset(buffer, 0, %s); p = buffer; int get_%s_data(DB *dbp, %s %s%s_key, %s_data *data) { DBT key_dbt, data_dbt; int ret; %s %scanonical_key = %s_key; memset(&key_dbt, 0, sizeof(key_dbt)); memset(&data_dbt, 0, sizeof(data_dbt)); key_dbt.data = %scanonical_key; key_dbt.size = %s(canonical_key)%s; if ((ret = dbp->get(dbp, NULL, &key_dbt, &data_dbt, 0)) != 0) { dbp->err(dbp, ret, "Retrieving key %%d", %s_key); return ret; } assert(data_dbt.size <= %s); deserialize_%s_data(data_dbt.data, data); return 0; } int delete_%s_key(DB *dbp, %s %s%s_key) { DBT key_dbt; int ret; %s %scanonical_key = %s_key; memset(&key_dbt, 0, sizeof(key_dbt)); key_dbt.data = %scanonical_key; key_dbt.size = %s(canonical_key)%s; if ((ret = dbp->del(dbp, NULL, &key_dbt, 0)) != 0) { dbp->err(dbp, ret, "deleting key %%d", %s_key); return ret; } return 0; } int %s_full_iteration(DB *dbp, %s_iteration_callback user_func, void *user_data) { DBT key_dbt, data_dbt; DBC *cursorp; %s_data deserialized_data; int ret; memset(&key_dbt, 0, sizeof(key_dbt)); memset(&data_dbt, 0, sizeof(data_dbt)); if ((ret = dbp->cursor(dbp, NULL, &cursorp, 0)) != 0) { dbp->err(dbp, ret, "creating cursor"); return ret; } while ((ret = cursorp->get(cursorp, &key_dbt, &data_dbt, DB_NEXT)) == 0) { deserialize_%s_data(data_dbt.data, &deserialized_data); (*user_func)(user_data, &deserialized_data); } if (ret != DB_NOTFOUND) { dbp->err(dbp, ret, "Full iteration"); cursorp->close(cursorp); return ret; } cursorp->close(cursorp); return 0; } int %s_callback(DB *dbp, const DBT *key_dbt, const DBT *data_dbt, DBT *secondary_key_dbt) { int ret; %s_data deserialized_data; deserialize_%s_data(data_dbt->data, &deserialized_data); memset(secondary_key_dbt, 0, sizeof(*secondary_key_dbt)); secondary_key_dbt->size = %s(deserialized_data.%s)%s; secondary_key_dbt->data = malloc(secondary_key_dbt->size); memcpy(secondary_key_dbt->data, %sdeserialized_data.%s, secondary_key_dbt->size); /* tell the caller to free memory referenced by secondary_key_dbt */ secondary_key_dbt->flags = DB_DBT_APPMALLOC; return 0; } int create_%s_secondary(DB_ENV *envp, DB *primary_dbp, DB **secondary_dbpp) { int ret; char * secondary_name = "%s.db"; if ((ret = create_database(envp, secondary_name, secondary_dbpp, DB_CREATE, %s, DB_DUPSORT, %s)) != 0) return ret; if ((ret = primary_dbp->associate(primary_dbp, NULL, *secondary_dbpp, &%s_callback, DB_CREATE)) != 0) { (*secondary_dbpp)->err(*secondary_dbpp, ret, "DB->associate: %%s.db", secondary_name); return ret; } return 0; } int %s_query_iteration(DB *secondary_dbp, %s %s%s_key, %s_iteration_callback user_func, void *user_data) { DBT key_dbt, data_dbt; DBC *cursorp; %s_data deserialized_data; int ret; memset(&key_dbt, 0, sizeof(key_dbt)); memset(&data_dbt, 0, sizeof(data_dbt)); if ((ret = secondary_dbp->cursor(secondary_dbp, NULL, &cursorp, 0)) != 0) { secondary_dbp->err(secondary_dbp, ret, "creating cursor"); return ret; } key_dbt.data = %s%s_key; key_dbt.size = %s(%s_key)%s; for (ret = cursorp->get(cursorp, &key_dbt, &data_dbt, DB_SET); ret == 0; ret = cursorp->get(cursorp, &key_dbt, &data_dbt, DB_NEXT_DUP)) { deserialize_%s_data(data_dbt.data, &deserialized_data); (*user_func)(user_data, &deserialized_data); } if (ret != DB_NOTFOUND) { secondary_dbp->err(secondary_dbp, ret, "Querying secondary"); return ret; } cursorp->close(cursorp); return 0; } sizeof(%s_data_specimen.%s) + \ ) } %s_data; %s_data %s_data_specimen; typedef struct _%s_data { extern DB *%s_dbp; } DB *%s_dbp = NULL; #define %s (%s %s; *%s %s%s, #define %s %d assert(strlen(%s) < %s); strncpy(data.%s, %s, %s); memcpy(data.%s, %s, %s); data.%s = %s; + 1sizeofstrlen&buffer += sizeof(%sp->%s); p += sizeof(%sp->%s); ); %s_data data; Array size constants.Database removal functions extern DB_ENV * %s_envp; DB_ENV * %s_envp = NULL; return 0; exit_error: } Simple test for a Berkeley DB implementation generated from SQL DDL by db_sql Test data for raw binary typesA very simple binary comparison functionchar * compare_binary(char *p, int len) { if (memcmp(p, binary_data, len) == 0) return "*binary values match*"; return "*binary values don't match*"; } These are the iteration callback functions. One is defined per database(table). They are used for both full iterations and for secondary index queries. When a retrieval returns multiple records, as in full iteration over an entire database, one of these functions is called for each record found main(int argc, char **argv) { int i; int ret; Fill the binary test data with random valuesfor (i = 0; i < MAXBINSZ; i++) binary_data[i] = rand(); Use the convenience method to initialize the environment. The initializations for each entity and environment can be done discretely if you prefer, but this is the easy way.ret = initialize_%s_environment(); if (ret != 0){ printf("Initialize error"); return ret; } Now that everything is initialized, insert a single record into each database, using the ...insert_fields functions. These functions take each field of the record as a separate argumentNext, retrieve the records just inserted, looking them up by their key valuesNow try iterating over every record, using the ...full_iteration functions for each database. For each record found, the appropriate ...iteration_callback_test function will be invoked (these are defined above).For the secondary indexes, query for the known keys. This also results in the ...iteration_callback_test function's being called for each record found.Now delete a record from each database using its primary key.Close the secondary index databasesDelete the secondary index databasesFinally, close the environmentif (%s_dbp != NULL) %s_dbp->close(%s_dbp, 0); if (%s_dbp != NULL) %s_dbp->close(%s_dbp, 0); if (ret != 0) { printf("Delete error\n"); goto exit_error; } if (ret != 0){ printf("Full Iteration Error\n"); goto exit_error; } ret = %s_full_iteration(%s_dbp, &%s_iteration_callback_test, "retrieval of %s record through full iteration"); if (ret != 0) { printf("Retrieve error\n"); goto exit_error; } if (ret != 0){ printf("Insert error\n"); goto exit_error; } ret = %s_insert_fields( %s_dbp, void %s_iteration_callback_test(void *msg, %s_data *%s_record) { printf("In iteration callback, message is: %%s\n", (char *)msg); Unexpected C type in schema: %sret = delete_%s_key( %s_dbp, %s); , &%s_iteration_callback_test, "retrieval of %s record through %s query"); printf("Retrieval of %s record by key\n"); ret = get_%s_data( %s_dbp, %s, &%s_record); \n", compare_binary(%s_record.%s, %s)); \n", compare_binary(%s_record->%s, %s)); #include "%s" #define MAXBINSZ %d char binary_data[MAXBINSZ]; Close the primary databasesDelete the primary databases%s_envp->close(%s_envp, 0); return ret; remove_%s_database(%s_envp); remove_%s_index(%s_envp); %s_data %s_record; "ninety-nine""n"binary_data9999.5%s_query_iteration(%s_dbp, %ld%f%lf%dprintf("%s.%s: \n", %s_record.%s); printf("%s->%s: \n", %s_record->%s); %s_data_serialized_length%s_data_%s_length%s[%s]&compare_int&compare_long char binary_data[%d][MAXBINSZ]; int compare_binary(char *p, int len, int dem) { if (memcmp(p, binary_data[dem], len) == 0) { return 0; } else { return 1; } } main(int argc, char **argv) { int i; int j; int ret; int occurence; for (i = 0; i < %d; i++) for (j = 0; j < MAXBINSZ; j++) binary_data[i][j] = rand(); ret = initialize_%s_environment(); if (ret != 0) { printf("Initialize error"); return ret; } Now that everything is initialized, insert some records into each database, retrieve and verify themFirst, insert some records into each database using the ...insert_fields functions. These functions take each field of the record as a separate argumentif (ret == 0) printf("*****WELL DONE!*****\n"); if (ret != 0) { printf("Full Iteration Error\n"); goto exit_error; } printf("%s full iteration: %%d\n", count_iteration); assert(count_iteration == %d); if (ret != 0) { printf("ERROR IN INSERT NO.%%d record in %s_dbp\n", i); goto exit_error; } ret = %s_insert_fields( %s_dbp, same = 1; break; if (same == 0) assert(0); else count_iteration++; void %s_iteration_callback_test(void *msg, %s_data *%s_record) { int i; int same = 0; for (i = 0; i < %d; i++) { if (ret != 0) { printf("ERROR IN RETRIEVE NO.%%d record in %s_dbp\n", i); goto exit_error; } , &%s_iteration_callback_test, "retrieval of %s record through %s query"); printf("%s_record_array[%%d].%s: %%d\n", i, count_iteration); assert(count_iteration == 1); if (strcmp(%s_record_array[j].%s, %s_record_array[i].%s) == 0) { if (fabs(%s_record_array[j].%s - %s_record_array[i].%s) <= 0.00001) { if (%s_record_array[j].%s == %s_record_array[i].%s) { assert(count_iteration == occurence); if (ret == %s) ret = 0; else { printf("ERROR IN DELETE NO.%d record in %s_dbp\n"); goto exit_error; } compare_binary(%s_record.%s, %s, i) == 0); strcmp(%s_record.%s, %s_record_array[i].%s) == 0); (fabs(%s_record.%s - %s_record_array[i].%s) <= 0.00001)); %s_record.%s == %s_record_array[i].%s); (compare_binary(%s_record->%s, %s, i) == 0) (strcmp(%s_record->%s, %s_record_array[i].%s) == 0) (fabs(%s_record->%s - %s_record_array[i].%s) <= 0.00001) (%s_record->%s == %s_record_array[i].%s) %s_data %s_record_array[] = { #include #include #define MAXBINSZ %d int count_iteration; Test data for input recordfor (i = 0; i < %d; i++) { count_iteration = 0; }; ret = get_%s_data( %s_dbp, binary_data[i], %s_record_array[i].%s, &%s_record); binary_data[i]%s_record_array[i].%s, occurence = 0; for (j = 0; j < %d; j++) { occurence++; {0}binary_data[%s%d%c0DB_NOTFOUNDassert(if (&& {,"0""zero""1""one""2""two""3""three""4""four""5""five""6""six""7""seven""8""eight""9""nine""A""eleven"1111.1"B""twenty-two"2222.2"C""thirty-three"3333.3"D""forty-four"4444.4"E""fifty-five"5555.5"F""sixty-six"6666.6"G""seventy-seven"7777.7"H""eighty-eight"8888.8"I"99.9Warning: , near line %d CACHESIZEunparseable integer string %sDBTYPEbtreehashDB_HASHNo value specified for property %s Property setting (%s) with no antecedent SQL statementunrecognized characters in integer string %sUnrecognized environment property %sunknown DBTYPE %s for antecedent %s, using default of DB_BTREEUnrecognized entity property %sUnrecognized index property %sWarning: incorrect hint comment syntax with property %s@'0&x%x%&;hZ[[_|c|c\ddLeLLt̐ ,L̑  L4 L ̒d | , \ ̓  l4 L ܔl  \ <  ̖, D \ \t | \ | , D <\ |t ܙ  \ ܚ  \4 L ܛd | \ ܜ \ |<Dl<l| $<Tl  $\ |\l,D\ t<<|d L| $L l<\,Ll4Ld ,<4 tl$ T|<\, Lt<\| $< TMV0o F  K h E ,L 0MMN@K E |  X o 8i  , AGJAA4< +BAD Ip AABt 9DK A  8G G$ XAJA$ zN0q A W I $h<`3Aj\"D]t$AJAhBAv I A/Df4.DiLdJA| K A' (08DS@-AkP#AT<`}LI c$\LI c H [$8xMI b H sA_ H Y<ADG b HAQ S HAT sHA, MQQA H t$<MN0x M }$dMN0x M },Mbg J n,@M_7 M bdgBBB I(H0H8G 8C0A(B BBBH D8A0A(B BBBTOLtXBYB D(F0G (A BBBK (A BBB(G$AJA pMA [ ,D\t$KT4Ld|(Dc$@N t F  A  *A_$0bAAG MCAx?Aq$7Aa F A$D A G x A ^4lAFG T AAT WAA4(AFG T AAT WAA\BDB B(A0A8} 0A(B BBBA D 0A(B BBDA ,<PbBDD z ABI \lBEA D(G0O (A ABBH M (A ABBE e (A ABBE $4ADD hAA $$MI ^ D $L@MI ^ D $tMN0g F $pMN0g F i`G$AJA$QA X D\t.A_   $(<0T8l@xKhBD}At K $HMI m E [ M ,AHG  HAM <,BDA { ABK  ABV LlADD t AAA Z DAA  AAF  DAA DPBBB A(D0D@} 0E(A BBBX *A_L$AMG n AA[ L AAZ W AAW LAA$trLN0 E AYdp$BBB B(A0A8D`h 8A0A(B BBBA  8A0A(B BBBA D8$\0Q_@X`A-A0Ax0A0A1A4A7A@@Ax@AEAFAHAIAOAQASATAVA0]AaAhjApAuA=Mu 0@ @o`@`@@  0a @ @ o @oo~ @a^@n@~@@@@@@@@@@@.@>@N@^@n@~@@@@@@@@@@AAAAAAsAA%A)AAA/A3AųAóA;A?A޳AܳAFAJAAAQAUAA A[A_A+A)AgAkAFADAsAwAOAMA~AAAAAAAAAAA³AdzA˳AسA۳AAAAAAA A AAA%A(A-A1A@ACAHA.ALALAGCC: (GNU) 4.4.7 20120313 (Red Hat 4.4.7-11).shstrtab.interp.note.ABI-tag.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.data.rel.ro.dynamic.got.got.plt.data.bss.comment @@ !<@<$4o`@`d> @F`@`No~ @~ b[o @ 0j @ t @  ~0@0yH@H@@ @  4A4lAaa a (a(aa0a0 a  a Q 0-