ELF>0E@ @8@ ((!(! 88!8!$$PtdQtdRtd((!(!GNU1V>`G\Zb C5 QaC @A H! 0.$ 0`JI@Q@ȄEk A5679;<@ABCDEFHIJKLNPRSVXY\]_`bceijmnqrstvwyz}~d QH(>fd%m( (8*IGToKMK'7 cW/t+sY}"sYkE"SjsYOI^Tf#G=iqY>^}ҡfxC.pZCZAn{gFv-{'b4%96K1Wm>༓qFĔhK$1B) (JpK]Rv֙Ú8Hk qBEӲZ3,} rVS,P Y|@;ٸ>mO) y. `qXV|d m;&/OZ2 }la|Fa 8 x#3R"<e p `k 1. w px D `2I [ l#  M  ^ P3DI V# ds @W5 j `!t o  3   p #n 3 0 >, P  01M  8 ? p w ^5 2Z%  0  0     ] Cw P  u `  p*} `! J 1- 19   0 0 w   T# ) Y`!"   ~@ 0 0x )""  Y ) PZ 0~P 0E 0~"__gmon_start___init_fini_ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_Jv_RegisterClassesTlAllocmemcpyVSB_printfvcc_ErrWhereVAS_Fail__errno_locationFhEncToken__stack_chk_failNew_IniFinvcc__Expectvcc_NextToken__strdupstrchrstrtoulsscanfvcc_UintValgetaddrinfogai_strerrorfreeaddrinfovcc_Acl_Hack__snprintf_chk__sprintf_chkvcc_ParseAclvcc_isCidvcc_AddDefFbVCC_FindSymbolvcc_ErrWhere2VCC_AddSymbolTokstrlenvcc_Eval_FuncVCC_AddSymbolStrvcc_Eval_SymFuncmemcmpTlDupvcc_ErrTokenvcc_FindVarvcc_Exprvcc_IdIsvcc_ProcActionvcc_AddCallvcc_AddRefvcc_ParseActionvcc_AddUsesvcc_Expr_CallVSS_parseResolve_Sockaddrvcc_FldSpecvcc_IsFieldvcc_Durationvcc__ErrInternalvcc_ParseProbevcc_ExpectCidvcc_ParseBackendVCC_GetSymbolTokvcc_Eval_BackendVSB_newvcc_FieldsOkVSB_finishVSB_dataVSB_deletecalloc__rawmemchrstrcpyTlDupTokIsMethodmethod_tabVSB_vprintfFcEncStringVSB_cat__ctype_b_locVCC_Compilevcc_Expr_Initvcc_Eval_Varvcc_Var_Wildcardvcc_Stv_Wildcardvcl_output_lang_hvcc_Lexervcc_AddTokenVFIL_readfilevcc_Parsevcc_CheckReferencesvcc_CheckActionvcc_CheckUsesVSB_lenVCC_Newvcc_varsVCC_Builtin_VCLVCC_VCL_dirVCC_VMOD_dirVCC_Err_UnrefVCC_Allow_InlineCVCC_Unsafe_PathstrcmpVSB_putcvcc_DoubleValVCC_SymKindvcc_regexpvcc_Coordvcc_AddProcvcc_ParseImportvcl_fixed_tokenvcl_tnamesstrncmpVRE_compileVRE_freegetnameinfovsa_suckaddr_lenVSA_MallocmallocVCC_WalkSymbolsVSB_bcatvct_typtabVSB_cleardlopendlsymsnprintfdlerrorlibpthread.so.0libc.so.6_edata__bss_start_endlibvcc.soGLIBC_2.2.5GLIBC_2.3GLIBC_2.14GLIBC_2.4GLIBC_2.3.4 ui 8 ii DNii Yui 8ti c(!E0!EH!WX!Wh!Wx!W!W!X!W!W!W!W!W!X!W!W(!W8!WH!WX!Xh!Wx!W!W!W!W!X!W!W!W!W!W!X(!X8!Xh!N!R!V!Z!^!b!f!j!n!!r8!v@!zH!~P!8!@!H!P!`!h!p!x!!T!!!!!!!!!!!™!ř!ș!˙!Ι`!љp!י!!!!)!!!E!У! ![0! @!HP!t`!p!!!!!Ț!Ԛ!!!!* !<@!YP!c`!xp!!!!!ƛ!؛!!p0! @!P!0`!Jp![!w!!!!؜!!!"!/!G !`0!m@!mP!x`!p!!!!؝!!!!2!@!Y!s !0!@!P!`!p!!Ҟ!Ф!!!!7!A!V!Z0!i@!s`!p!!!!!!ԟ!ޟ !0!P!`!!5!=!P!`!ә!{! !0!@!ԠP!p!!!!(!6!O!!!d!8 !X0!v@!yP!y`!p!!!ʚ!!á!١!!!! ![0!-@!@P!`!T!!g!b!w!w!!!! !0!Ģ@!4P!ܢ`!p! !!6!F!a!k0!0!">"c"> "l0">8"cH">P"Y`">h"`dx">"Y"="Pa">"`"t="_":K"?K "HK0"QK@"ZKP"cK`"mKp"vK"~K"K"K"K"K"K"K"b"W" "0"b8"@"vBP"b`"ah""ե""!!@!!!h!z!^!&!(!!~!*!s!|!,!0"D("9H"nX"kP!LX!`!h!Vp!;x!!F!q!!E!!!X!R!!N!j!7!<!M!m!o!`! !x! ! (!0! 8! @!H!P!eX!}`!h!p!x!y!!!B!f!!!S!T!!g!a!]!!!!!i!!H!u !=(!0!8! @!:H!!P!8X!"`!#h!Up!px!\!c!$!%!A!!J!'!Z!>!G!!)!C!6!K!d!+!-!?!. !b(!/0!W8!0@!_H![P!vX!1`!2h!3p!4x!QHH!Ht;H5z!%|!@%z!h%r!h%j!h%b!h%Z!h%R!h%J!h%B!hp%:!h`%2!h P%*!h @%"!h 0%!h %!h % !h%!h%!h%!h%!h%!h%ڼ!h%Ҽ!h%ʼ!h%¼!hp%!h`%!hP%!h@%!h0%!h %!h%!h%!h%z!h %r!h!%j!h"%b!h#%Z!h$%R!h%%J!h&%B!h'p%:!h(`%2!h)P%*!h*@%"!h+0%!h, %!h-% !h.%!h/%!h0%!h1%!h2%!h3%ڻ!h4%һ!h5%ʻ!h6%»!h7p%!h8`%!h9P%!h:@%!h;0%!h< %!h=%!h>%!h?%z!h@%r!hA%j!hB%b!hC%Z!hD%R!hE%J!hF%B!hGp%:!hH`%2!hIP%*!hJ@%"!hK0%!hL %!hM% !hN%!hO%!hP%!hQ%!hR%!hS%ں!hT%Һ!hU%ʺ!hV%º!hWp%!hX`%!hYP%!hZ@%!h[0%!h\ %!h]%!h^%!h_%z!h`%r!ha%j!hb%b!hc%Z!hd%R!heH!H=!UH)HHw]H,!Ht]@HY!H=R!UH)HHHH?HHu]H_!Ht]H@=!u'H=G!UHt H=r!h]!@f.H=P!t&HϹ!HtUH=:!H]WKf.AWAAVIAUEATIUSHHAA uV$,HLHHeHAHEHCHEHCHEHCHEHC HE HC(HE(HC0HE0HC8HE8HC@HE@E$H}DmIcL0I$H}$LEAfC$HS9ljFσiu@8sLDD8HHw݅t EAED!D!9wi9w^C(9E(I$8H5 1LHs8L I$8H51*Hu8HL[]A\A]A^A_HHI$HEHEH(I$H[]A\A]A^A_fDHCH]HEHCH(HkH[]A\A]A^A_ËV$  H8H51Hs@HVHs8MLH8H5r1SHs@$H!HADH }H5H=H!HgADH yH5H=fAWAVIAUATUSHT$4HHt$8dH%(H$11H\$8H He1L1IVH1L1CH1L10H1L1Hz1L1 H31L1H1L1H-H1L1H1L1H1L1MD$@AMf.11EAw$xUHAG;D$@911&9ATH;T@D9~ՉzAAl$,A݉D$(D$$DD$0LcL HCD'D1MLD$C$1CD'A9BD@uDl$$t$(l$,DA ƅtUDl$0L 1LMIcDADT$!HD$D$1&D@AG$t$4XAO(H;L L-HLLDHD$8ۉ1H$1Io8<LEHMH11LL)IG@H9tYHm HHtG}uH11LkIHA t8DHHH[]A\A]H1fD HĐuoH@HH!HiADH ^H5H=@SH$(H%@t [fHXH|1H H@uH#1H*)H@uH[SH(H@t [fHH1H2 H^@uHu1H)H@uH[BfUSHH25(HD@Et H[]DH7HD@EuHH5OOHH8)E(HMD@EyHH1HH߾+@9H1HH8,aHH1T)H@HHH1\HH1FHH10HHH xZfDHH51HH5/HH52HH5*HH5zwHH5f\THH5{AHH5W&~HH5W HH5HH5HH5-au2H8H51iHH:@Hp)H@HH[]fDH1H1@7HrH1!HHH1lHH1H H1HHHfHH1HH1HHH4fH)H1EHH1/HHHwfHH1H0H1HHH'^fH)1HH1HHHH HH5YHH1KHH߾15HHH }HQH1H0H1HHH 'fHAH1HH1HHHfHH1UHH1?HHHfHQH1H@H1HHH7fHH1HH1HHHfH8H51+HHH[]H H@@f.SH.H%@t [fHHaHHߺHHH߾L@HH1L)HH߾1H[fDATIUSH}H5.!H'!HuyHH3HtHI4$[]A\@f.AWL LH HH5AVAUATUSHHhdH%(HD$X1HHD$HD$HHD$HHD$HH$1y{HH@t)HD$XdH3%(+Hh[]A\A]A^A_fDHHs1HߍA1HD$,8}D$8D$<E1D$(HD$0Ld$@HD$ Lt$PLl$HDH|$HHT$@LH4@%H@Hz11HSHH HrH11-H;H@HH8}-HLH?@pH|$@H5T)H|$@H5H|$HHT$@^LH#D@EHD@EHn11H>H8uWH]11HHHH:11HHH8tH1H1HT$H"fDH|$@H5zHuH|$@H5Tt_H11HlLHQD@ED$PH1H߸5 HT$HfDH|$@H5(_{H|$@H5FHHHD$0@D$8bH|$ MKH|$ AM@D$L;HD@EHH}qLLH@nH|$PH5UUH|$PH5z;nHT@HL$LH1H1^H5HH|$PH5tH8{H|$PH5H8L@HHH11HL)qHH譿HxH8H51HHH8H51ҿHH裿@?H,LHV H11HýH[@ H|$PH5Hl$@Dt$H~H8H5X11HHH8H5y)6LH}!HXADH ߿H5H=Hl}!H$ADH uIH5ϽH=qH5hH@H}!HѼADH H5|H=H|!H蝼ADH H5HH=H|!HiADH .H5H=H}|!H5ADH OH5H=HI|!HADH RUH5H=Nf.fUSHdH%(H$h1H$H\$ H$L$L$AHD$H$pH$Ht$ D$L$HD$IHK)@DALHHt(HHd~A/vLIHHu؍hHHHD H|$ HtH@HH8u褿HcHHH肽H$hdH3%(u>HĨ[]Hz!H薺ADH IMH5EH=茻ff.AUATI.UHպ^SHH>@tH[]A\A]fHh_H@uLHM,$9c=H׾@uHHuHtHL耿uLHHuHuH8H51*LH߾H8H5v%1 LeDH}tqH8H5)1LH虾H8H51ĺLH虺H8H51褺HuHH[]A\A]nfDLmDf.UHSHHHHuZf.HHHtD:!uH{uH8H5H1HDž@HHufH[]fUSHHXHHHq$HxHt请H{HzݹHHEwH}Ht肷H{Hm谹HHEH}HtUH{H0胹HHEHC HE HE(111HE(HE8HE0HE8HEpHEPHE`HE@HEpDžDžDHExHEPHEXHE`HEh6HH111HH1@111HHHHxuHH[]HEHEHEHv!HIADH H5H=ǀHNv!HADH H5NH=Hv!HҵADH nH5H=Hu!H螵ADH H5H=PHu!HjADH H5H=H~u!H6ADH ýH5~H=HJu!HADH yH5JH=f.ATIUHSH_pHu*eHPHSHH{DHH[]HAn!HADH H5AH=Df.USHHHL$8LD$@LL$Ht7)D$P)L$`)T$p)$)$)$)$)$dH%(HD$1Ht"HLH5>ѮH$HHH$D$0HD$HD$ HD$ɯHD$dH3%(u H[]f.AVHAAUIATIUHSlH5ѵLĬI9whf.  @  HHfuHv81دHQk!SHADH <H5PH=AWAVAUATUHHSHH5nH( HIHYHH8H觭H] H3HtsL%j!5fH蓮SHH0L`PPHSH3Ht5{uǺ HZHj!HP(H(1[]A\A]A^A_@H5D H$H]j!HHP(轪Hv11HZH11HGH11H4Hն11H!HEhIELHIEL(LmhPAE(D@EH}H5HH) HHEhHHHCHH]hPC(蝪D@EHS HH)D@EqH]PHuH[ H;uH5HttLc M A<$ Ml$ M, A}; DH8Mt$8L}EHD$u/L莩H1LL航HIs LHaHLx0HHEhHHFH0HuhPF(LcHC HS(HHP(HS(HID$ IT$(HHP(IT$(HIE IU(HHP(IU(@HfD1H(H[]A\A]A^A_H|$H5L1ڨLH诨@uHEPHH@uDkHCHxH51{HHH蟩OH迪?@1H!@L- g!II]IfDH1HʥH Hگ1H豥Hj1HH HƯ1HI$ H(1HHIϨI$HH1H詨H1H蓨L9*Hi1HH1Hϳ11H[LePME11A1AL$0Mt$MI9t M~1AM`ML$M9v8L@ 'HL9t uHA1L9uMM+NEF(CH1D,$D$H1裧A<$MD$IL$H11HL)uLMd$ M$H11HQH11H>H]8HuH{ץH[HH{!*H{萧HtH{2KH)I1H1٦HUXfDHȭ11H誦L0HUXHUXH8H5B1Dž@1H11HWHW11HDH-11H1HE@H@HHu"cH{迤HC H@HHtCH{oH{uHtH{KHI1H1辥H11H詥H±11H薥Hج11H}H]`HtBH*11HaHsH11 H11H:HHuH` 11HHX11H H11HH]`HH\11HӤHsH11HҚ11H謤Hb11H虤HS HsH@H211HmHH{H 11HNDH11H5H11H"H11HHȫ11HHͫ11HDH̫11HУH̫11H轣Hҫ11H誣Hѫ11H藣Hͫ11H~Hȫ1H1kH˫11HXH 11HEH11H2H311HHH11H H]11HHr11HH11HӢH11HH11H譢Hΰ1H1蚢H11H臢H 11HtHE11HaHZ11HNH| 11H;H?H[HH,H}H,HĠH,HmH8H5U1^H8H5 褞8ͣH|$H5HL1$EH^!HpADH ͨEH5H=ݰH^!H f.f(HY H0H9*XuLI$8.t#[]A\fD%#[]A\EL豕I$:uHBHJH9s7\f(@H0H9*YYXu[]LA\QH9S!SHADH UH5\H=Ӑf.S(ДHHt08111ғCHCHC[fDHR!HiADH H5եH=@ATAUSHHT$0HL$8LD$@LL$Ht7)D$P)L$`)T$p)$)$)$)$)$HdH%(HD$1 D`HH$H{HHHD$HD$ $D$0HD$_H{薒u$HL$dH3 %(Hu H[]A\~HQ!HOADH ۤH5H=f.UHSHH_1H}XH51H@H[]@AUIATIUS1H~H5GLΐ9uI}HÄt$  t)LH誓uH[]A\A]C<+t<-uSHHqP!H)E1DH vH5H=ɩ L#St'~#E1@H5gLAA9uSH f.HSHt'?8u!HFH['[HO!HoADH H5ۢH=f.AWAVAUATIUSHHAHIARHDEt@A A u E uH}AE1< AHDEuH}͏ID$MHEID$ HE tIE HE LLDuHH[]A\A]A^A_C<-tX~6<1<2ubMI}舒H}H\H$<+u4H}H5HwfHte9u9{uHxI$Ht$(HP@fH$8dH3%(MH@[]A\A]A^f  ft RHZx1Hz@zHHH\$0wHIVLMNHHHA)HL$H@H$H)ȹD$1u=HwI$1H޿!I$HL$(I$B9AH8H51vI$xH8H58H1vLH_zHD$(xRH8H5mH1zvLHOvZf.$5>,~#<A  H5ϊ1ɿ'I$~HomHv!H#y@HHLl$0,uHL>IٹLHPHT$H@H)к$1Os=HuI$1LYI$ tINIVH5H8I1H)tHHtD~HAlHWuHw@wHw@IŅ^HHl$0uL1L,$IٹH*r=I$1HHotHD$ 8HH5aHHHP1H)Lt$ HD$(A>tDLjI|H|$ ?IuIPHLt$ n@HkHD$ 8R,Hmn@HkgfffH8H5e1jH8H5b1jH8H5aL1jLiMtA>uHH\jH5V1ɿ }HD$(j)Hm@Hj}H5,1H7HL$HH8H51iDH8H5H1iHD$(xH8H5H1iHD$(HHHpj+H,(!HgADH u~"H5P{H=H'!HgADH 4~!H5{H=ÁH'!H|gADH ~#H5zH=H'!HHgADH `3H5zH=[>hHW'!HgADH }.H5{zH="f.AVAUATUHSHHH>LbXdH%(H$1HkD@Et.H$dH3%(Hİ[]A\A]A^HhHߺ(Fk@uLl$Hh LH_HD$Htx t LH@c,Hj@CHhHj@HQjHIgE1MLd$ L6}AL4$1LdHMHT$L HE,H.j@Hhg LHHHL$Hly t" LH@IHL$HUH5| }HE)Hi@ HfeH$!HydADH كH5wH=}@USHz0uWHHgHHߺUeHH5 |1HHHP1H)HE@HH[]=fH&$!HcADH {H5JwH=+~fUSHz0u{HHH {HdHH {1Hg@u3HtixHPH5{1 HEHH[]eH[]Hb#!HcADH { H5vH=6}H.#!HbADH aH5RvH=}ӐUHMIHHSHHHdH<%(H|$1HHH$N@tHH5`Z+b$c@ATUSB0HӃHzpHzHtTHIf@t []A\fDHcHKxHSpHLLCL[]A\FH!!HgaADH yH5tH=zH{!!H3aADH gyH5tH=zHG!!H`ADH !yH5ktH=lzH!!H`ADH H57tH=8zfDAUATUSHdH%(HD$1DHHL@t%HD$dH3%( H[]A\A]fDH$ELjDbA9tctDHiH8H5HH1aHǃ@L9t LH]bH<$b t[HHH bf.HHs@H$8@H5v1ɿ HH$W`Hp!H(_ADH tH5rH=xUHSHHHHH$dH%(HD$1Mc@t;HH9t HH}1G^HH[^UH5 SHHHDbH^HH5]@uSf.[{QH8H5|]HH]@u1;Ha@tH[]Ðu@HH[]*^H!H[ADH @~'H5K~H=fDS@H(`@t[ÐH]H~11HE[Hq^@uH1H [E)H`@uH[U]DU{SHH_@tH[]HH-~]HRH1ZHB}LxHߍH1XZHP0@uH{ HcDHH5 }_WH_@uHP\H|1HYHB@rofH\H{=H5|o_Hr|1HaYH[H@HT@H?ueH5|^LHH5{^jHH5{^OHH5{^4Hi{LHߍH1XHP0@"@H8H5Ry1 Zǃ@H[]f. HGHOHHPL@1H)HWHaZ@fDHHZHH[]HO1WDH@[DH8H5x1CYHHH[]YfDH X@t;H\\@pHY@H8H5y1XHHX@H8H5 xHy1HVH@`fATUSHYH[@t[]A\HTZHXoHH,HHHPHHQyHH1HUH1HUHO11HUH8XHNH1UHHMH߾1UHǃHǃH[]A\DH8H5vWHH[]A\VfHHHH~UHH8H5FxHHHP1H)V@H8H5rv1VHHTVH8H5w1_VL%P!I$H1fH8H5k1(VHcHIHuHHTHHxUHHTHPDHHTHHHHu1HL@HH1L)mSHuH1VHHwHL@HH1L)VHUHK1HjSH{HvH1>SH!HJSADH QvH5uH='wDAWAVAUATUSHHH? H8H5t1THHXT@H2@tH=`@R=W=L5+!uIH5"!Ht=8XLuHHuHt$HXtHUH}uH8H5u1L%!L=!SH=!tcLL-!L)J|=H8I$H5nu1nSJ|-t&H8H5m1IMSJ|-uDH8H5u1+SHHVH8H5s1SHHH[]A\A]A^A_Rf.H[]A\A]A^A_ÐtvHGHO1HHPL@1H)HpTHHS?H5jsV H8H5Vt1[RfDH8H5cs1;RHH R!<]BHtHcH|vfDHGHD=uHH>DG<=<~uHH>&uHH>DG<=<>uHH>=vHH>ÐG<+<=THH>=6HH>ÐG<-t`<=HH>G<1DHH>HH>HH>HH>HH>HH>Ðf.SH5PtHNH5qtHNH5~LHNH5 |HNH5,|HNH5QLHNH56HvNH5WHgNHH5!L[WNAUI0ATAUHSHRHHt'LHpRCHHDcH[]A\A]H!HMADH LH5H=bAWAVAUIATUSH(H^HndH%(H$1HH)HH5VIHJOA$HUH9Iv}.tII9tA<$.uEA)HD$LwPH$HD$H1L=+ImL9)A<$.H!IHL)L=!fDIIHHHLLuހ<+uAWLLH$AHHD$MLӲHH$1K=HLDAHήA11L!DHc`HpLKGL#Dt^N E1LpH $F!@H FH FEMMHEIHu11ALACD9uHN11LC(LHHHEH 1HH1IAHXHPHI$HtHhLCHdDHxI|$DHp`Ev} HOL I8H0H5LLH8L@HH1L)DHHLsH{E1E1$LDI8H5"Z1L_DH[(HuHZHH8LDiL8H0H5yI81MFINL)DCI8H5H1CLLC H8I8H5tH01LCHKL)CHLC1EH-!HAADH J{H5H=2H!HAADH oH5~H=H!H}AADH ulH5JH=ʫH!HIAADH H5H=H]!HAADH H5H=rH)!H@ADH ѩH5H=>AH!H@ADH tH5uH=USHH~0 V0HHcHf.HڪfH[]fHHHHcHRXHwHBH]t@HVd@HٚT@HsKD@H5H/|AS0H8H51@HAWAAVIAUATIUSHH_(Ht~LcfH[Htg9k uHsLL@uD9{0uHLAI8H5IL1a@H5+CL@1}f@HHtlLch3I}AHHCLLHAB(IF(k HHCt^HSHPI^(I(D{0LsHH[]A\A]A^A_HV H>ADH @GH5H=\HCIF0H H=ADH VIH5H=Ӑf.ATAUHHSH{>HHD[]A\7LFHFL)LƉfAVAUIATUS>H_(IAHuDD9tH[Htrk0 t*EuHsLBtH[]A\A]A^fIuIES H)H9~H{>uHC(Ht"HLL[]A\A]A^@[]A\A]1A^H HhH5H= AUIATIUSHH_(Hu69k0tA$@u"H[HtuHLAA$@tH[]A\A]fLNIAttHvHH9vmE1D tCAHH9t uHE1H9uAIQH5k1yH SH3ADH JHH5QH=gf.USH?uKH_HoH9s'8HDHQu<_uHH9uH[]fH1[]HP H3ADH G-H5H=ƠS9H7@uH6t[ÐH8H5=4HH7H8H5`14HH[3fAUIATIU@SHH7HH(LhL`HPHHt7HJ HHH tJHp Hq(HB H HP(HH[]A\A]@HSXH@ HP(HHP HSXHH HKXH H1ADH 5bH5YH=XfAWAVAUIATIUSHH^Hn dH%(HD$1I$IfH9s+6IHHDH t:HH9rfHD$dH3%(_H[]A\A]A^A_D#/C-{u {".LHs0H<"I7F_I} H$HH9s!HfV uI<_tE-<v>HھL0H$Im ; HH9ufHH9H $uHfDC<*4 H*ADH &NH5H=H H*ADH .QH5tH=^+AWAVAUATUSH(LH|$Ht$A~H|$0'/HIHt$H|$.AVI$11AT$AV(AT$(AVAT$AV H1HD$A+HHVIVH5H1{+L|$AtVL-/ DIH,At1ADE(uމH51IH$+Au@H*H-L|$HHH11L(INLL$HbA11L(H]-LH")HID$-IT$H5?H1*H)H-H\$HH(HID$ j*Ht$H-HthAT$LPHH HPPAT$H([]A\A]A^A_H H`(ADH R3H5XH=-Ht H,(ADH *UH5$H=H@ H'ADH ,PH5H=ŖH H'ADH +FH5H=H H'ADH *?H5H=]H H\'ADH u6H5TH=)AVAUATUSH HAպII'HHHEu)UtbLLHd'H[]A\A]A^U(uH8H51D(LH+H8H51$(7fH8H5ܔ1 (LH+H8H5۔1'H8H5X&LH'1UH8H51'LHf+H= H%ADH ?fH5H=H H%ADH ڋjH5H=~f.fAW:AVAUATUSHH8HdH%(H$(1S*@t)H$(dH3%(H8[]A\A]A^A_Hh'<H*@uLH='1HL%HIx0IL$IT$t4H8H5H)1L&HHH*'LDH8H5H)1&HHH&H8H5W1%IU@Iu8H&@ID$ML$L$ L{'LA)H$1#=YLH(@HHHh8?Hx@uFH8H5J13%HH(HH$'IT$LKLLHT$ID$H)к$1"=l;H(@HT%L"HH4ID$ML$Lt$ LeLA)H$1E"=#HL&HH8OxEHpHHxx Hx(Hx8L(IL$IT$H5dH8H)#H8H5{L1#HUH8H5A1#LH\#H5'u,H8H5T#HH%#W"H#eH&@+HH29LHH81"=EH#IL$IT$H5H81H)"H8H5|L1"MH8H5ԓU1"H8H5ѓ1g"LH<"nIL$IT$H5H81H)5"H8H5L1"h$H8HH5tIL$IT$H5cH81H)!H8H5L1!H8H5?1!LH!H< HADH ďfH5H=H HADH G"SH5H=H HADH ԎPH5H=H#IL$IT$H56HxI1H) IL$IT$H5I~1H) IL$IT$H5I~1H) IL$IT$H5I~1H) I~H51n I~11L~#I~H5l 1L HUHI~H5Y1- I~H5S1 I~H5M1 IL$IT$H5hI~1H)IL$IT$H5qI~1E1H)L}0JA}BuVA}JuOA}uH1LH HHIL "HLIM/M(A}OtH5LuH HADH PH5ǎH=ƐMD$IL$H1H1L)MD$IL$Hb1H1L)MD$IL$H1H1L)HM(H&1H1MD$IL$H1H1L)HA HADH H5H=IL$IT$H5bH81H)RH8H5L1:H8H5@mH HxADH wH5vH=uH HDADH LiH5BH=AHX HADH H5H= f.AUATIUHSHN,EF4A#^(O @jÀ1ID$ H8H5HHHP1H)It$ HH[]A\A]HF4Hu@HHHsDHtID$ H8H5MHHHP1H)<HsHH[]A\A]HF H8H5HHHP1H)H[]A\A]@H8H51I$HfDH8H5X1It$ HvH[]A\A]fDAD$4AD$0H[]A\1A]@H8H51KI$HPfDH8H51I$HfDH8H5u1It$xHfH8H5.1It$pHfH8H51It$hH^ofH8H51[It$`H.5fH8H5Y1+It$XHfH8H51It$PHfH8H5ʋ1It$HHfH8H51It$@HnQfH8H561kIt$8H>fAUIATIUHSHH^Ht&B CuCHHېuI]HuDH1[]A\A]HHtHsLHtIE H8H5‹HHHP1H)HsHH[]A\A]DIu HSLC H8HJHFLNHRH5NH$A)H)1UHsH)IE H8H5HHHP1H)%Iu HH[]A\A]fATUSHn`HIH} x HcHLHH SCu[]A\f.I$8HH51I$8H5Ȋ1C6@r B@uSu.I$8H5S1ADŽ$@[]A\I$8H H5)1볐I$8HH5 1CfDI$8HH51C[I$8HH51cC*I$8HH51;CI$8HH5i1CI$8H.H5A1CI$8HH51CiI$8HH51C9I$8H1H51sCI$8HH51KCI$8HWH5y1#CH HlADH YH5H=)AUATUSHLf`MII|$ xGI\$HcHH- HtM Ku 6fDKt+HHuHLL%uyH[]A\A]fDIt$ HSLC I8HFHJLNHRH5H$A)H)1$I8H5HsHL[]A\A]I8HUH[]A\A]H51Hn H&ADH hH5H=ӇӐAUATUHSHHvluKhH[]A\A]ShuHC8HLhL`H8H5HM)M1D4Hs8HuH8H51 Dž@|f.HC8HLhL`|H8H5ֆHM)M1DHs8HH[]A\A]DUSHH^`HteS0t H[]HH8H51hHs H<uH8H5΅1=Dž@H[]H H}ADH jH5H=ZATIUHS HHtNH@`Ht []A\fDLHt\HPHH@H@Hh HPHC`[]A\H HADH ^H5rH=H HADH kH5>H=@f.S:Ht@h[H HPADH RH5H=}Ӑf.SHHt @lBl[H@ H ADH \H5H=SH5H1n @[fDSHW@,HX [f.AUATUSHHHHtHH(AI6Ht;HHHhD`Lh HHRHPHHHHBH[]A\A]H_ H ADH ]H5H= fATUHSH HIHHt1HL`HhHHH@HBHHHHP[]A\H H ADH ڂH5$H=@ w  G(HHx8tHP8Ht SH+ ADH H5ƁH=fDSH5H @t [H5Hߺt @[ff.SH5hHK @[HHToo wide mask (%u) for IPv4 address Too wide mask (%u) for IPv6 address if (0) match_acl_named_%s(0, 0); %*s%sif ((a[%d] & 0x%x) == %d) { %*sVRT_acl_log(ctx, "%sMATCH %s " VRT_acl_log(ctx, "NO_MATCH %s"); match_acl_%s_%s(VRT_CTX, const VCL_IP p) fam = VRT_VSA_GetPtr(p, &a); VRT_acl_log(ctx, "NO_FAM %s"); Ignoring unknown protocol family (%d) for %.*s Mask (%u) specified, but string resolves to both IPv4 and IPv6 addresses. snprintf(acln, sizeof acln, "%u", tl->unique++) < sizeof aclnNames of VCL acl's cannot contain '-' snprintf(acln, sizeof acln, "%.*s", (int)((an)->e - (an)->b), (an)->b) < sizeof acln(aen) != 0vcc_acl.cfam <= 0xffConflicting ACL entries: vs: NEG_ static int %*s} m >= 0 %*s%sif (fam == %d) { %*s%sif (a[%d] == %d) { "\"" "%.*s"(t) != 0 %*sreturn (%d); %*.*s} return (0); } anon const unsigned char *a; int fam; if (fam < 0) { return(0); } named"!" "(" ")"(ae) != 0(ae->addr) != 0(sl) != 0.../mask is not numeric. /mask only allowed once. %u%nWarning: %s ignored -- %s /* Ignored ACL entry: %s%s/%u * getaddrinfo: %s */ DNS lookup(%s): %s !%smatch_acl_anon_%s(ctx, 1)ACL %.*s redefined vcc_ParseAclvcc_acl_emitvcc_acl_add_entryvcc_acl_entryvcc_Acl_HackVRT_Rollback(ctx, VRT_r_req(ctx)); Names of VCL objects cannot contain '-' Object name '%.*s' already used. snprintf(buf1, sizeof buf1, ", &vo_%s, \"%s\"", sy1->name, sy1->name) < sizeof buf1snprintf(buf1, sizeof buf1, ", vo_%s", sy1->name) < sizeof buf1snprintf(buf2, sizeof buf2, "%s%s", sy1->name, p) < sizeof buf2Only HTTP header variables can be unset. Syntax has changed, use: return(synth(999)); or return(synth(999, "Response text")); VRT_handling(ctx, VCL_RET_SYNTH); VRT_handling(ctx, VCL_RET_ABANDON); VRT_handling(ctx, VCL_RET_DELIVER); VRT_handling(ctx, VCL_RET_FETCH); VRT_handling(ctx, VCL_RET_HASH); VRT_handling(ctx, VCL_RET_LOOKUP); VRT_handling(ctx, VCL_RET_OK); VRT_handling(ctx, VCL_RET_PASS); VRT_handling(ctx, VCL_RET_PIPE); VRT_handling(ctx, VCL_RET_PURGE); VRT_handling(ctx, VCL_RET_RESTART); VRT_handling(ctx, VCL_RET_RETRY); First usage: (sy1->def_b) != 0vcc_action.cRedefinition: (sy1) != 0Symbol not found: at static %s *vo_%s; , &vo_%s, "%s"ASDF %s(&vo_%s);, vo_%s(sy3) != 0cannot be unsetvp != NULL%svrt_magic_string_unset); VRT_synth_page(ctx, cannot be set%s %c VRT_hashdata(ctx, VRT_ban_string(ctx, VRT_error(ctx, (const char*)0 abandonlookupokrestartretryExpected return action name. if (VGC_function_%.*s(ctx)) return (1); at->tok == IDnot a valid actionbancallhash_datanewreturnrollbacksyntheticVOIDENUMparse_newparse_setparse_unsetvcc_ParseAction=   =   ==(t_host->dec) != 0vcc_backend.cBackend host '%.*s': %s Backend host .ipv4_addr = "%s", .ipv6_addr = "%s", .port = "%s", Previous definition: ?interval?timeout?expected_response?request?url?initial?threshold?window .url = .request = "\r\n", "\r\n" .timeout = %g, .interval = (t_window) != 0Window must be 64 or less. (t_threshold) != 0 .window = %u, .threshold = %u, .initial = %u, .initial = ~0U, .exp_status = %u, Probe %.*s redefined (sym) != 0Backend %.*s redefined #define VGC_backend_%s %d ?first_byte_timeout?connect_timeout?host_header?port!host?max_connections?probe?between_bytes_timeout(vsb) != 0 .vcl_name = "%.*stl->t->dec != NULL .connect_timeout = .first_byte_timeout = .between_bytes_timeout = .max_connections = %u, .probe = &vgc_probe__%d, .probe = &vgc_probe_%.*s, t_host != NULL80 .hosthdr = (VSB_finish(vsb)) == 0default .ipv4_suckaddr = (const struct suckaddr *)%s, .ipv6_suckaddr = (const struct suckaddr *)%s, Probe request redefinition at: static const struct vrt_backend_probe vgc_probe__%d = { Must specify .expected_response with exactly three digits (100 <= x <= 999) Must specify .threshold with .window Threshold must be 64 or less. Threshold can not be greater than window. #define vgc_probe_%.*s vgc_probe__%d Name of %.*s too long (max %d, is %zu): static const struct vrt_backend vgc_dir_priv_%s = { NB: Backend Syntax has changed: Remove "set" and "backend" in front of backend fields. Expected '{' or name of probe, got VRT_init_dir(cli, VCL_conf.director, VGC_backend_%s, &vgc_dir_priv_%s); VRT_fini_dir(cli, VGCDIR(%s));Emit_Sockaddrvcc_ParseHostDefvcc_ParseBackendvcc_ParseProbeSpecn < 100vcc_backend_util.cField redefined at: First defined at: Unknown field: Mandatory field '%s' missing. vcc_FldSpec((tl->builtin_vcl)) != 0vcc_compile.c((tl->vcl_dir)) != 0((tl->vmod_dir)) != 0tl->fc != NULLtl->fh != NULLtl->fm[i] != NULL(tl) != 0sp != NULL(sp->name) != 0mb != NULL(p) != 0%*.*stl->fb != NULL\%c\n" "\t\r\%03ostorage.Builtinincludet1 != NULLt2 != NULLInclude path is unsafe '%s' Cannot read file '%s': %s VGC_function_%s(VRT_CTX); VGC_function_%s(VRT_CTX) (VSB_finish(tl->fm[i])) == 0 #define VGC_NREFS %u t->src != NULL "C{"}, "%.*s" }, (VSB_finish(p->ini)) == 0 /* %u */ %s const char *srcname[%u] = { (VSB_finish(p->fin)) == 0 const char *srcbody[%u] = { .magic = VCL_CONF_MAGIC, .init_vcl = VGC_Init, .fini_vcl = VGC_Fini, .ndirector = %d, .director = directors, .ref = VGC_ref, .nref = VGC_NREFS, .nsrc = %u, .srcname = srcname, .srcbody = srcbody, /* (VSB_finish(tl->fc)) == 0(VSB_finish(tl->fh)) == 0(of) != 0(tl) != NULL(tl)->magic == 0x24ad719dnonevcl_recvvcl_pipevcl_passvcl_hashvcl_purgevcl_missvcl_hitvcl_delivervcl_synthvcl_backend_fetchvcl_backend_responsevcl_backend_errorvcl_initvcl_fini/* ---===### VCC generated code ###===---*/ extern const struct VCL_conf VCL_conf; #define VGCDIR(n) VCL_conf.director[VGC_backend_##n] #define __match_proto__(xxx) /*lint -e{818} */ include not followed by string constant. include not followed by semicolon. No backends or directors found in VCL program, at least one is necessary. VCL_conf.director[0] = VCL_conf.director[%d]; int __match_proto__(vcl_func_f) static struct vrt_ref VGC_ref[VGC_NREFS] = { static int VGC_Init(struct cli *cli) { [%3u] = { %d, %8tu, %4u, %3u, 0, static void VGC_Fini(struct cli *cli) { extern const char *srcname[]; extern const char *srcbody[]; static struct director *directors[%d]; const struct VCL_conf VCL_conf = { .recv_func = VGC_function_vcl_recv, .pipe_func = VGC_function_vcl_pipe, .pass_func = VGC_function_vcl_pass, .hash_func = VGC_function_vcl_hash, .purge_func = VGC_function_vcl_purge, .miss_func = VGC_function_vcl_miss, .hit_func = VGC_function_vcl_hit, .deliver_func = VGC_function_vcl_deliver, .synth_func = VGC_function_vcl_synth, .backend_fetch_func = VGC_function_vcl_backend_fetch, .backend_response_func = VGC_function_vcl_backend_response, .backend_error_func = VGC_function_vcl_backend_error, .init_func = VGC_function_vcl_init, .fini_func = VGC_function_vcl_fini, VCC_Unsafe_PathVCC_Allow_InlineCVCC_Err_UnrefVCC_VMOD_dirVCC_VCL_dirVCC_Builtin_VCLEmitFiniFuncEmitInitFuncLocTablevcc_resolve_includesvcc_NewVccvcc_CompileSourcevcc_new_sourceEncTokenFbIsMethodNew_IniFinTlDupTokTlDupTlDoFreeTlAllocBLOBBOOLBYTESDURATIONENUMHTTPINTIPREALTIME(e->constant) != 0vcc_expr.c(e) != 0(VSB_finish(e->vsb)) == 0(0==%d)(e)->magic == 0x38c794ab(e1) != 0(e2) != 0" 1"VRT_GetHdr(ctx, 1)VRT_TIME_string(ctx, 1)VRT_REAL_string(ctx, 1)VRT_IP_string(ctx, 1)VRT_INT_string(ctx, 1)VRT_BOOL_string( 1)VRT_BACKEND_string( 1)(*e) != NULL(*e)->magic == 0x38c794abtl->t->tok == IDmsUnknown time unit (expected type %s): (*e) == 0fmt != VOIDIP constant(VSB_finish(e1->vsb)) == 0%gKBMBGBTBUnknown BYTES unit %.1f%f%ldUnknown token when looking for %s e2->fmt == f2( 1* 2)( 1/ 2)(*e) != 0(*e)->fmt == STRINGe2->fmt == STRING 1 2(*e)->fmt == STRING_LIST 1, 2%s %.*s %s not possible. ( 1+ 2)( 1- 2)%s %sVRT_re_match(ctx, 1, %s)( 1 %.*s VGCDIR(_%.*s))( 1 != 0)!( 1)( + 1 1 - && + 2 1 - ) 1 - || + 2(cfunc) != 0(args) != 0(name) != 0%s(ctx%s +PRIV_VCL(r) != 0&vmod_priv_%.*sPRIV_CALLvmod_priv_%ustatic struct vmod_priv %s; VRT_priv_fini(&%s);&%sWrong enum value. Expected one of: %s Wrong argument type. Expected %s. Got %s. + 1, vrt_magic_string_end - 1 ) -VRT_regsub(ctx, %d, + 1, %s 1, 2) -sym->kind == SYM_BACKENDVGCDIR(_%.*s)sym->kind == SYM_VARNot availablecannot be read(sym->cfunc) != 0(sym->name) != 0(sym->args) != 0regsubregsuballtruefalse( 1 == 2)( 1 != 2)( 1 <= 2)( 1 >= 2)( 1 < 2)( 1 > 2)!VRT_strcmp( 1, 2)POOOOOOPP P0P@PPP`PpPZZ\Z4Z4ZQZtZ4[ZZ4ZQZQZ[vcc_Eval_Regsubvcc_Expr_Initvcc_Exprvcc_Eval_SymFuncvcc_delete_exprvcc_expr_fmtvcc_expr_editvcc_expr_string_addvcc_isconstvcc_expr_tostringvcc_expr4vcc_expr_mulvcc_expr_cmpvcc_funcvcc_Eval_Varvcc_new_exprvcc_mk_exprvcc_Eval_Backendvcc_TimeUnitIllegal format in VCC expressionIllegal edit in VCC expression(fmt == STRING || fmt == STRING_LIST) != 0Wrong use of BLOB value. BLOBs can only be used as arguments to VMOD functions. . Legal are 'ms', 's', 'm', 'h', 'd', 'w' and 'y' Symbol type (%s) can not be used in expression. Expected BYTES unit (B, KB, MB...) got . Legal are 'B', 'KB', 'MB', 'GB' and 'TB' Operator %.*s not possible on type %s. f2 == STRING || f2 == STRING_LISTe2->fmt == STRING || e2->fmt == STRING_LIST +VRT_CollectString(ctx, 1, vrt_magic_string_end) -Comparison of different types: snprintf(buf, sizeof buf, "%sVRT_re_match(ctx, \v1, %s)", not, re) < sizeof buf%smatch_acl_named_%.*s(ctx, 1)snprintf(buf, sizeof buf, "%smatch_acl_named_%.*s(ctx, \v1)", not, (int)((tl->t)->e - (tl->t)->b), (tl->t)->b) < sizeof bufsnprintf(buf, sizeof buf, "(\v1 %.*s VGCDIR(_%.*s))", (int)((tk)->e - (tk)->b), (tk)->b, (int)((tl->t)->e - (tl->t)->b), (tl->t)->b) < sizeof bufOperator %.*s not possible on %s '!' must be followed by BOOL, found '&&' must be followed by BOOL, found '||' must be followed by BOOL, found snprintf(buf, sizeof buf, "vmod_priv_%u", tl->unique++) < sizeof bufsnprintf(buf, sizeof buf, "VRT_regsub(ctx, %d,\v+\n\v1,\n%s", all, p) < sizeof bufsym->kind == SYM_FUNC || sym->kind == SYM_PROCExpression has type %s, expected %s ?$@MbP??N@ @@u"A8~A@0AApB directors are now in directors VMOD. VCL version %.1f not supported. End of input while in compound statement 'else' must be followed by 'if' or '{' Expected an action, 'if', '{' or '}' Names of VCL sub's cannot contain '-' VCL sub's named 'vcl*' are reserved names. int VGC_function_%.*s (VRT_CTX); int __match_proto__(vcl_func_t) VCL version declaration missing Update your VCL to Version 4 syntax, and add vcl 4.0; on the first line the VCL files. vclvcc_IdIs(tl->t, "vcl")vcc_parse.c( VRT_count(ctx, %u)%s Inline-C not allowed elseelse else if elseifelsifelifValid vcl_* methods are: m < VCL_MET_MAX /* ... from Function %.*s redefined VGC_function_%.*s(VRT_CTX) return(0); Expected one of Found: or '%s'acldirectorimportp@vcc_ParseVclvcc_ParseFunction@0pX/* ---===### include/vcl.h ###===--- */ /* * NB: This file is machine generated, DO NOT EDIT! * * Edit and run generate.py instead */ struct vrt_ctx; #define VRT_CTX const struct vrt_ctx *ctx struct req; struct busyobj; struct ws; struct cli; struct worker; typedef int vcl_init_f(struct cli *); typedef void vcl_fini_f(struct cli *); typedef int vcl_func_f(VRT_CTX); /* VCL Methods */ #define VCL_MET_RECV (1U << 1) #define VCL_MET_PIPE (1U << 2) #define VCL_MET_PASS (1U << 3) #define VCL_MET_HASH (1U << 4) #define VCL_MET_PURGE (1U << 5) #define VCL_MET_MISS (1U << 6) #define VCL_MET_HIT (1U << 7) #define VCL_MET_DELIVER (1U << 8) #define VCL_MET_SYNTH (1U << 9) #define VCL_MET_BACKEND_FETCH (1U << 10) #define VCL_MET_BACKEND_RESPONSE (1U << 11) #define VCL_MET_BACKEND_ERROR (1U << 12) #define VCL_MET_INIT (1U << 13) #define VCL_MET_FINI (1U << 14) #define VCL_MET_MAX 15 #define VCL_MET_MASK 0x7fff /* VCL Returns */ #define VCL_RET_ABANDON 0 #define VCL_RET_DELIVER 1 #define VCL_RET_FETCH 2 #define VCL_RET_HASH 3 #define VCL_RET_LOOKUP 4 #define VCL_RET_OK 5 #define VCL_RET_PASS 6 #define VCL_RET_PIPE 7 #define VCL_RET_PURGE 8 #define VCL_RET_RESTART 9 #define VCL_RET_RETRY 10 #define VCL_RET_SYNTH 11 #define VCL_RET_MAX 12 struct VCL_conf { unsigned magic; #define VCL_CONF_MAGIC 0x7406c509 /* from /dev/random */ struct director **director; unsigned ndirector; struct vrt_ref *ref; unsigned nref; unsigned busy; unsigned discard; unsigned nsrc; const char **srcname; const char **srcbody; vcl_init_f *init_vcl; vcl_fini_f *fini_vcl; vcl_func_f *recv_func; vcl_func_f *pipe_func; vcl_func_f *pass_func; vcl_func_f *hash_func; vcl_func_f *purge_func; vcl_func_f *miss_func; vcl_func_f *hit_func; vcl_func_f *deliver_func; vcl_func_f *synth_func; vcl_func_f *backend_fetch_func; vcl_func_f *backend_response_func; vcl_func_f *backend_error_func; vcl_func_f *init_func; vcl_func_f *fini_func; }; /* ---===### include/vrt.h ###===--- */ /*- * Copyright (c) 2006 Verdens Gang AS * Copyright (c) 2006-2014 Varnish Software AS * All rights reserved. * * Author: Poul-Henning Kamp * * 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 AUTHOR 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 AUTHOR 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. * * Runtime support for compiled VCL programs and VMODs. * * NB: When this file is changed, lib/libvcc/generate.py *MUST* be rerun. */ /*********************************************************************** * Major and minor VRT API versions. * * Whenever something is added, increment MINOR version * Whenever something is deleted or changed in a way which is not * binary/load-time compatible, increment MAJOR version */ #define VRT_MAJOR_VERSION 1U #define VRT_MINOR_VERSION 2U /***********************************************************************/ struct req; struct busyobj; struct vsl_log; struct http; struct ws; struct cli; struct director; struct VCL_conf; struct suckaddr; /*********************************************************************** * This is the central definition of the mapping from VCL types to * C-types. The python scripts read these from here. * (alphabetic order) */ typedef struct director * VCL_BACKEND; typedef const struct vmod_priv * VCL_BLOB; typedef unsigned VCL_BOOL; typedef double VCL_BYTES; typedef double VCL_DURATION; typedef const char * VCL_ENUM; typedef const struct gethdr_s * VCL_HEADER; typedef struct http * VCL_HTTP; typedef long VCL_INT; typedef const struct suckaddr * VCL_IP; typedef double VCL_REAL; typedef const char * VCL_STRING; typedef double VCL_TIME; typedef void VCL_VOID; /*********************************************************************** * This is the composite argument we pass to compiled VCL and VRT * functions. */ struct vrt_ctx { unsigned magic; #define VRT_CTX_MAGIC 0x6bb8f0db unsigned method; unsigned *handling; struct vsl_log *vsl; struct VCL_conf *vcl; struct ws *ws; struct req *req; struct http *http_req; struct http *http_obj; struct http *http_resp; struct busyobj *bo; struct http *http_bereq; struct http *http_beresp; double now; }; #define VRT_CTX const struct vrt_ctx *ctx /***********************************************************************/ struct vmod_data { /* The version/id fields must be first, they protect the rest */ unsigned vrt_major; unsigned vrt_minor; const char *file_id; const char *name; const void *func; int func_len; const char *proto; const char * const *spec; const char *abi; }; /***********************************************************************/ enum gethdr_e { HDR_REQ, HDR_RESP, HDR_OBJ, HDR_BEREQ, HDR_BERESP }; struct gethdr_s { enum gethdr_e where; const char *what; }; /* * A backend probe specification */ extern const void * const vrt_magic_string_end; extern const void * const vrt_magic_string_unset; struct vrt_backend_probe { const char *url; const char *request; double timeout; double interval; unsigned exp_status; unsigned window; unsigned threshold; unsigned initial; }; /* * A backend is a host+port somewhere on the network */ struct vrt_backend { const char *vcl_name; const char *ipv4_addr; const char *ipv6_addr; const char *port; const struct suckaddr *ipv4_suckaddr; const struct suckaddr *ipv6_suckaddr; const char *hosthdr; double connect_timeout; double first_byte_timeout; double between_bytes_timeout; unsigned max_connections; const struct vrt_backend_probe *probe; }; /* * other stuff. * XXX: document when bored */ struct vrt_ref { unsigned source; unsigned offset; unsigned line; unsigned pos; unsigned count; const char *token; }; /* ACL related */ #define VRT_ACL_MAXADDR 16 /* max(IPv4, IPv6) */ void VRT_acl_log(VRT_CTX, const char *msg); /* req related */ int VRT_CacheReqBody(VRT_CTX, long long maxsize); /* Regexp related */ void VRT_re_init(void **, const char *); void VRT_re_fini(void *); int VRT_re_match(VRT_CTX, const char *, void *re); const char *VRT_regsub(VRT_CTX, int all, const char *, void *, const char *); void VRT_ban_string(VRT_CTX, const char *); void VRT_purge(VRT_CTX, double ttl, double grace, double keep); void VRT_count(VRT_CTX, unsigned); int VRT_rewrite(const char *, const char *); void VRT_error(VRT_CTX, unsigned, const char *); int VRT_switch_config(const char *); char *VRT_GetHdr(VRT_CTX, const struct gethdr_s *); void VRT_SetHdr(VRT_CTX, const struct gethdr_s *, const char *, ...); void VRT_handling(VRT_CTX, unsigned hand); void VRT_hashdata(VRT_CTX, const char *str, ...); /* Simple stuff */ int VRT_strcmp(const char *s1, const char *s2); void VRT_memmove(void *dst, const void *src, unsigned len); void VRT_Rollback(VRT_CTX, const struct http *); /* Synthetic pages */ void VRT_synth_page(VRT_CTX, const char *, ...); /* Backend related */ void VRT_init_dir(struct cli *, struct director **, int idx, const void *priv); void VRT_fini_dir(struct cli *, struct director *); /* Suckaddr related */ int VRT_VSA_GetPtr(const struct suckaddr *sua, const unsigned char ** dst); /* VMOD/Modules related */ int VRT_Vmod_Init(void **hdl, void *ptr, int len, const char *nm, const char *path, const char *file_id, struct cli *cli); void VRT_Vmod_Fini(void **hdl); struct vmod_priv; typedef void vmod_priv_free_f(void *); struct vmod_priv { void *priv; int len; vmod_priv_free_f *free; }; typedef int vmod_init_f(struct vmod_priv *, const struct VCL_conf *); void VRT_priv_fini(const struct vmod_priv *p); /* Stevedore related functions */ int VRT_Stv(const char *nm); /* Convert things to string */ char *VRT_IP_string(VRT_CTX, VCL_IP); char *VRT_INT_string(VRT_CTX, VCL_INT); char *VRT_REAL_string(VRT_CTX, VCL_REAL); char *VRT_TIME_string(VRT_CTX, VCL_TIME); const char *VRT_BOOL_string(VCL_BOOL); const char *VRT_BACKEND_string(VCL_BACKEND); const char *VRT_CollectString(VRT_CTX, const char *p, ...); /* ---===### include/vrt_obj.h ###===--- */ /* * NB: This file is machine generated, DO NOT EDIT! * * Edit and run generate.py instead */ VCL_HTTP VRT_r_bereq(VRT_CTX); VCL_BACKEND VRT_r_bereq_backend(VRT_CTX); void VRT_l_bereq_backend(VRT_CTX, VCL_BACKEND); VCL_DURATION VRT_r_bereq_between_bytes_timeout(VRT_CTX); void VRT_l_bereq_between_bytes_timeout(VRT_CTX, VCL_DURATION); VCL_DURATION VRT_r_bereq_connect_timeout(VRT_CTX); void VRT_l_bereq_connect_timeout(VRT_CTX, VCL_DURATION); VCL_DURATION VRT_r_bereq_first_byte_timeout(VRT_CTX); void VRT_l_bereq_first_byte_timeout(VRT_CTX, VCL_DURATION); VCL_STRING VRT_r_bereq_method(VRT_CTX); void VRT_l_bereq_method(VRT_CTX, const char *, ...); VCL_STRING VRT_r_bereq_proto(VRT_CTX); void VRT_l_bereq_proto(VRT_CTX, const char *, ...); VCL_INT VRT_r_bereq_retries(VRT_CTX); VCL_BOOL VRT_r_bereq_uncacheable(VRT_CTX); VCL_STRING VRT_r_bereq_url(VRT_CTX); void VRT_l_bereq_url(VRT_CTX, const char *, ...); VCL_STRING VRT_r_bereq_xid(VRT_CTX); VCL_HTTP VRT_r_beresp(VRT_CTX); VCL_IP VRT_r_beresp_backend_ip(VRT_CTX); VCL_STRING VRT_r_beresp_backend_name(VRT_CTX); VCL_BOOL VRT_r_beresp_do_esi(VRT_CTX); void VRT_l_beresp_do_esi(VRT_CTX, VCL_BOOL); VCL_BOOL VRT_r_beresp_do_gunzip(VRT_CTX); void VRT_l_beresp_do_gunzip(VRT_CTX, VCL_BOOL); VCL_BOOL VRT_r_beresp_do_gzip(VRT_CTX); void VRT_l_beresp_do_gzip(VRT_CTX, VCL_BOOL); VCL_BOOL VRT_r_beresp_do_stream(VRT_CTX); void VRT_l_beresp_do_stream(VRT_CTX, VCL_BOOL); VCL_DURATION VRT_r_beresp_grace(VRT_CTX); void VRT_l_beresp_grace(VRT_CTX, VCL_DURATION); VCL_DURATION VRT_r_beresp_keep(VRT_CTX); void VRT_l_beresp_keep(VRT_CTX, VCL_DURATION); VCL_STRING VRT_r_beresp_proto(VRT_CTX); void VRT_l_beresp_proto(VRT_CTX, const char *, ...); VCL_STRING VRT_r_beresp_reason(VRT_CTX); void VRT_l_beresp_reason(VRT_CTX, const char *, ...); VCL_INT VRT_r_beresp_status(VRT_CTX); void VRT_l_beresp_status(VRT_CTX, VCL_INT); VCL_STRING VRT_r_beresp_storage_hint(VRT_CTX); void VRT_l_beresp_storage_hint(VRT_CTX, const char *, ...); VCL_DURATION VRT_r_beresp_ttl(VRT_CTX); void VRT_l_beresp_ttl(VRT_CTX, VCL_DURATION); VCL_BOOL VRT_r_beresp_uncacheable(VRT_CTX); void VRT_l_beresp_uncacheable(VRT_CTX, VCL_BOOL); VCL_STRING VRT_r_client_identity(VRT_CTX); void VRT_l_client_identity(VRT_CTX, const char *, ...); VCL_IP VRT_r_client_ip(VRT_CTX); VCL_TIME VRT_r_now(VRT_CTX); VCL_DURATION VRT_r_obj_grace(VRT_CTX); VCL_INT VRT_r_obj_hits(VRT_CTX); VCL_DURATION VRT_r_obj_keep(VRT_CTX); VCL_STRING VRT_r_obj_proto(VRT_CTX); VCL_STRING VRT_r_obj_reason(VRT_CTX); VCL_INT VRT_r_obj_status(VRT_CTX); VCL_DURATION VRT_r_obj_ttl(VRT_CTX); VCL_BOOL VRT_r_obj_uncacheable(VRT_CTX); VCL_HTTP VRT_r_req(VRT_CTX); VCL_BACKEND VRT_r_req_backend_hint(VRT_CTX); void VRT_l_req_backend_hint(VRT_CTX, VCL_BACKEND); VCL_BOOL VRT_r_req_can_gzip(VRT_CTX); VCL_BOOL VRT_r_req_esi(VRT_CTX); void VRT_l_req_esi(VRT_CTX, VCL_BOOL); VCL_INT VRT_r_req_esi_level(VRT_CTX); VCL_BOOL VRT_r_req_hash_always_miss(VRT_CTX); void VRT_l_req_hash_always_miss(VRT_CTX, VCL_BOOL); VCL_BOOL VRT_r_req_hash_ignore_busy(VRT_CTX); void VRT_l_req_hash_ignore_busy(VRT_CTX, VCL_BOOL); VCL_STRING VRT_r_req_method(VRT_CTX); void VRT_l_req_method(VRT_CTX, const char *, ...); VCL_STRING VRT_r_req_proto(VRT_CTX); void VRT_l_req_proto(VRT_CTX, const char *, ...); VCL_INT VRT_r_req_restarts(VRT_CTX); VCL_DURATION VRT_r_req_ttl(VRT_CTX); void VRT_l_req_ttl(VRT_CTX, VCL_DURATION); VCL_STRING VRT_r_req_url(VRT_CTX); void VRT_l_req_url(VRT_CTX, const char *, ...); VCL_STRING VRT_r_req_xid(VRT_CTX); VCL_HTTP VRT_r_resp(VRT_CTX); VCL_STRING VRT_r_resp_proto(VRT_CTX); void VRT_l_resp_proto(VRT_CTX, const char *, ...); VCL_STRING VRT_r_resp_reason(VRT_CTX); void VRT_l_resp_reason(VRT_CTX, const char *, ...); VCL_INT VRT_r_resp_status(VRT_CTX); void VRT_l_resp_status(VRT_CTX, VCL_INT); VCL_STRING VRT_r_server_hostname(VRT_CTX); VCL_STRING VRT_r_server_identity(VRT_CTX); VCL_IP VRT_r_server_ip(VRT_CTX); double VRT_Stv_free_space(const char *); double VRT_Stv_used_space(const char *); unsigned VRT_Stv_happy(const char *); '!''%''&''('')''*''+'',''-''/'';''<''=''>''{''|''}''~'CNUMCSRCEOI&&||---=/===>=+++=<=*=!=!~<<>>bereqVRT_r_bereq(ctx)bereq.backendVRT_r_bereq_backend(ctx)VRT_l_bereq_backend(ctx, bereq.between_bytes_timeoutbereq.connect_timeoutbereq.first_byte_timeoutbereq.http.HDR_BEREQbereq.methodVRT_r_bereq_method(ctx)VRT_l_bereq_method(ctx, bereq.protoVRT_r_bereq_proto(ctx)VRT_l_bereq_proto(ctx, bereq.retriesVRT_r_bereq_retries(ctx)bereq.uncacheableVRT_r_bereq_uncacheable(ctx)bereq.urlVRT_r_bereq_url(ctx)VRT_l_bereq_url(ctx, bereq.xidVRT_r_bereq_xid(ctx)berespVRT_r_beresp(ctx)beresp.backend.ipVRT_r_beresp_backend_ip(ctx)beresp.backend.nameberesp.do_esiVRT_r_beresp_do_esi(ctx)VRT_l_beresp_do_esi(ctx, beresp.do_gunzipVRT_r_beresp_do_gunzip(ctx)VRT_l_beresp_do_gunzip(ctx, beresp.do_gzipVRT_r_beresp_do_gzip(ctx)VRT_l_beresp_do_gzip(ctx, beresp.do_streamVRT_r_beresp_do_stream(ctx)VRT_l_beresp_do_stream(ctx, beresp.graceVRT_r_beresp_grace(ctx)VRT_l_beresp_grace(ctx, beresp.http.HDR_BERESPberesp.keepVRT_r_beresp_keep(ctx)VRT_l_beresp_keep(ctx, beresp.protoVRT_r_beresp_proto(ctx)VRT_l_beresp_proto(ctx, beresp.reasonVRT_r_beresp_reason(ctx)VRT_l_beresp_reason(ctx, beresp.statusVRT_r_beresp_status(ctx)VRT_l_beresp_status(ctx, beresp.storage_hintberesp.ttlVRT_r_beresp_ttl(ctx)VRT_l_beresp_ttl(ctx, beresp.uncacheableVRT_r_beresp_uncacheable(ctx)client.identityVRT_r_client_identity(ctx)VRT_l_client_identity(ctx, client.ipVRT_r_client_ip(ctx)nowVRT_r_now(ctx)obj.graceVRT_r_obj_grace(ctx)obj.hitsVRT_r_obj_hits(ctx)obj.http.HDR_OBJobj.keepVRT_r_obj_keep(ctx)obj.protoVRT_r_obj_proto(ctx)obj.reasonVRT_r_obj_reason(ctx)obj.statusVRT_r_obj_status(ctx)obj.ttlVRT_r_obj_ttl(ctx)obj.uncacheableVRT_r_obj_uncacheable(ctx)VRT_r_req(ctx)req.backend_hintVRT_r_req_backend_hint(ctx)VRT_l_req_backend_hint(ctx, req.can_gzipVRT_r_req_can_gzip(ctx)req.esiVRT_r_req_esi(ctx)VRT_l_req_esi(ctx, req.esi_levelVRT_r_req_esi_level(ctx)req.hash_always_missreq.hash_ignore_busyHDR_REQVRT_r_req_method(ctx)VRT_l_req_method(ctx, VRT_r_req_proto(ctx)VRT_l_req_proto(ctx, req.restartsVRT_r_req_restarts(ctx)req.ttlVRT_r_req_ttl(ctx)VRT_l_req_ttl(ctx, VRT_r_req_url(ctx)VRT_l_req_url(ctx, VRT_r_req_xid(ctx)VRT_r_resp(ctx)HDR_RESPVRT_r_resp_proto(ctx)VRT_l_resp_proto(ctx, VRT_r_resp_reason(ctx)VRT_l_resp_reason(ctx, VRT_r_resp_status(ctx)VRT_l_resp_status(ctx, server.hostnameVRT_r_server_hostname(ctx)server.identityVRT_r_server_identity(ctx)server.ipVRT_r_server_ip(ctx)VRT_r_bereq_between_bytes_timeout(ctx)VRT_l_bereq_between_bytes_timeout(ctx, VRT_r_bereq_connect_timeout(ctx)VRT_l_bereq_connect_timeout(ctx, VRT_r_bereq_first_byte_timeout(ctx)VRT_l_bereq_first_byte_timeout(ctx, VRT_r_beresp_backend_name(ctx)VRT_r_beresp_storage_hint(ctx)VRT_l_beresp_storage_hint(ctx, VRT_l_beresp_uncacheable(ctx, VRT_r_req_hash_always_miss(ctx)VRT_l_req_hash_always_miss(ctx, VRT_r_req_hash_ignore_busy(ctx)VRT_l_req_hash_ignore_busy(ctx, (v) != 0vcc_storage.c(t->e - t->b) > strlen(PFX)VRT_Stv("%s")*q == '.'VRT_Stv_%s("%s")free_spaceused_spacehappy(memcmp(t->b, "storage.", strlen("storage."))) == 0snprintf(stv, sizeof stv, "%.*s", (int)(q - p), p) < sizeof stvsnprintf(buf, sizeof buf, "VRT_Stv(\"%s\")", stv) < sizeof bufsnprintf(buf, sizeof buf, "VRT_Stv_%s(\"%s\")", sv->name, stv) < sizeof bufvcc_Stv_mkvarvcc_Stv_WildcardRegexp compilation error: %s %s '%.*s' could not be resolved to an IP address: %s (Sorry if that error message is gibberish.) %s %.*s: resolves to too many addresses. Only one IPv4 %s IPv6 are allowed. Please specify which exact address you want to use, we found all of these: pp->l <= sizeof(struct sockaddr_storage)static const unsigned long long%s '%.*s': resolves to neither IPv4 nor IPv6 addresses. VGC_re_%ustatic void *%s; VRT_re_init(&%s, VRT_re_fini(%s);and oneipv4ipv6(error) == 0vcc_utils.c /* "%s" -> %s */ (sal) != 0(sua) != 0 sockaddr_%u[%d] = { }; %s 0x%0*llxLL(const void*)sockaddr_%uvcc_sockaddrResolve_SockaddrvarfuncprocvmodwildcardobjectINTERNALERRORSymbol Kind 0x%x Name Collision: <%.*s> <%s> vcc_symb.c(sym->wildcard) != 0PUTTTTTTUU U0U@UVCC_FindSymbolVCC_GetSymbolTokvcc_AddSymbolVCC_SymKind('%s' Line %u Pos %u)end of inputC{ ... }C'%.*s' -- (l3) != 0vcc_token.c[...] Expected %s got (program line %u), at Identifier (tl->t->dec) != 0Unterminated string at tl->t->tok == CSTRSyntax error at VCL compiler internal error at %s():%u Ran out of input, something is missing or maybe unbalanced (...) or {...} contains illegal characters, use [0-9a-zA-Z_] only. /* ... */ comment contains /* Unterminated /* ... */ comment, starting at Unterminated inline C source, starting at Unterminated long-string, starting at vcc_decstrvcc_Lexervcc_AddTokenvcc_isCidvcc_IdIsvcc_ErrWhere2vh->fmt == HEADERvcc_var.c&VGC_%s__%02x_ { %s, "\%03o%s:"}; VRT_SetHdr(ctx, %s,(tl->vars) != 0Variable is read only. At: is write only.Unknown variable static const struct gethdr_s %s = vcc_FindVarvcc_Var_WildcardModule %.*s conflicts with other symbol. Module %.*s already imported. snprintf(fn, sizeof fn, "%.*s", (int)((mod)->e - (mod)->b), (mod)->b) < sizeof fn'import ... from path ...' not allowed. At:snprintf(fn, sizeof fn, "%s", tl->t->dec) < sizeof fnsnprintf(fn, sizeof fn, "%s/libvmod_%.*s.so", tl->vmod_dir, (int)((mod)->e - (mod)->b), (mod)->b) < sizeof fnsnprintf(buf, sizeof buf, "Vmod_%.*s_Data", (int)((mod)->e - (mod)->b), (mod)->b) < sizeof buf if (VRT_Vmod_Init(&VGC_vmod_%.*s, VRT_priv_fini(&vmod_priv_%.*s); VRT_Vmod_Fini(&VGC_vmod_%.*s); %s(&vmod_priv_%.*s, &VCL_conf); /* --- BEGIN VMOD %.*s --- */ static struct vmod_priv vmod_priv_%.*s; /* --- END VMOD %.*s --- */ Previous import was here: vcc_vmod.cfromExpected 'from path ...' %s/libvmod_%.*s.soCould not load VMOD %.*s File name: %s dlerror:: %s Vmod_%.*s_DataMalformed VMOD %.*s (no Vmod_Data symbol) Incompatible VMOD %.*s VMOD version %u.%u varnishd version %u.%u Mangled VMOD %.*s Inconsistent metadata Wrong VMOD file %.*s Contains vmod "%s" &Vmod_%.*s_Func, sizeof(Vmod_%.*s_Func), "%.*s", (vmd->file_id) != 0 "%s", cli)) return(1);INITstatic void *VGC_vmod_%.*s; VOIDvcc_ParseImportFunction %.*s does not exist Function recurses on Invalid return "abandon" Invalid return "deliver" Invalid return "fetch" Invalid return "hash" Invalid return "lookup" Invalid return "ok" Invalid return "pass" Invalid return "pipe" Invalid return "purge" Invalid return "restart" Invalid return "retry" Invalid return "synth" ...in subroutine "%.*s" ...called from "%.*s" vcc_xref.c ...which is the "%s" method Legal returns are:'%.*s': %s in method '%.*s'.Unused %s %.*s, defined: (That was just a warning) Function unused pu != NULLpc != NULLreturns < VCL_RET_MAX'%.*s': %s from method '%.*s'. Undefined %s %.*s, first reference: vcc_checkusesvcc_checkaction1vcc_checkaction2vcc_ProcActionvcc_AddCallvcc_AddUsesvcc_findprocvcc_AddDefvcc_AddRef;,tTdԘ$dtԢTd4d|ĸ$4 D< T  T t T  T t$ < d , d   $ t$ldDdl4<tT <DT Tt!T$4$d%&( )LT*|+,--1l5$894t:T:>@$$HTdIK4KTKLMdMN N\dOOO$PP$S$TT4UU4DVT$W^ta4ctmqLDsdvwLxTy4z z,zLzl{{D|| |4 zRx $pFJ w?;*3$"|DBEE E(D0A8G@ 8D0A(B BBBE o 8A0A(B BBBG [ 8A0A(B BBBA LbBBE B(A0A8I 8K0A(B BBBP LBGB B(A0A8G{ 8A0A(B BBBE <d#BBD A(G` (A ABBA ,ؚ5AAJk AAG  AXLBBB B(A0D8GR 8A0A(B BBBH ,DAe J N J ` E txAZ E sLBBA A(G0e (A ABBH  (D ABBY hAe J kAe J yD$xAAG g AAF 8 DAK  DAE lAe J e,`BDA f ABH 4 BAD Gz  AABD ,RBMD wABL$BeB B(A0A8G 8A0A(B BBBG 4txAAG [ AAJ xDAL BBB B(A0A8J 8A0A(B BBBH ,dAAG  AAA L,BBI I(G0S (A ABBJ $ (D ABBK $|@wADG hAA,sAFL  DAD ,BDD AE<BGA D(D0| (D ABBA ,DXAKD E AAA ,tjAGG d AAA ,(oADD o AAA ,hAID f DAA <BAD D ABB l ABA ,DhAAJ AAA ,t(!AAJ AAA ,(AAJ AAA <BHE D(D0 (A LBBF HM`d,BBB B(A0G8N` 8C0A(B BBBE  8D0A(B BBBE DV4AAG @ AAE L AAA 4AAG @ AAE L AAA 4 PAAG @ AAE L AAA T ~DQ A t x~DQ A  ~DQ A  8D @IAPD A AAH Q AAE N AAH D H/BDD  ABG M ABH dAE\ 05Ht X|A@ G 4 BDA G  AABA $ <ADG mAA< %BED C(F0] (A ABBI $4 fD` L A A L\ 7BBB B(D0A8D@ 8D0A(B BBBA 4 %AAG h AAE  AAL $ TANF zCA CD0y A 4, @ADG0X AAJ  AAF 4d BDC G  AABF L BBB B(D0A8GP 8A0A(B BBBF < BBA A(G@/ (A ABBF L, nBEB E(A0A8G`R 8A0A(B BBBE D| BBE D(D0G 0A(A BBBJ 4 hBAD G0  AABG D @BBB D(D0G@H 0A(A BBBK DDBBB D(D0G@H 0A(A BBBK LFBBB B(A0D8Do 8A0A(B BBBF DBBB A(D0J[ 0A(A BBBH ,$AAD S DAE 4TAAD i DAL D AAA ,@APG0h AAF <ZBAA R ABG b ABE <BBA C(D@O (A ABBG ,<PADG0e AAE lA A @)Ac4PAHG  AAB L DAE A] B vT>AKG S AAH s AAK c DAX x DAK D\pBAA e ABD  ABF ^ ABG dBBB B(A0A8G@ 8D0A(B BBBO D 8A0A(B BBBB  "$#A<D$BJD D(D0m (A ABBA LX$BBB E(A0A8G 8A0A(B BBBF <'BLA C(J@w (A ABBA ,X)AC BJ D ,D08AAG { AAJ Lt1BEE B(D0C8D@ 8A0A(B BBBA ,(3)BDG RAB(3d 03#BBE A(A0T (A BBBJ s (A BBBF A (A BBDA 4t3xBDD N ABE ` ABA 4@4^BED C(D0E(A ABBh4L4BBE E(D0A8DPz 8F0A(B BBBH <LP5BHE D(A0] (A KBBO 5]6*Ah6)406BBD D(D0(A ABBd6BBE B(D0A8D@ 8A0A(B BBBI D 8D0A(B BBBE |P9?A[ D ^4p9AAG ` DAJ DAA9Y40:AAD @ FAC D CAA $:wAm B B<D:BED H(G0[ (A ABBE L;BBB E(D0A8DPt 8A0A(B BBBF L(BYBBB B(A0A8D` 8A0A(B BBBA <$8EBBB A(A0X (A BBBI LdF BLB B(A0A8J G 8A0A(B BBBA P'BBD D(D0 (F ABBD l (F ABBA h (F ABBE V (F ABBG S (A ABDE \<TGBED D(D@A (C ABBD O (F ABBF {(F ABB<UBAA ~ ABK  ABH \pX?BBA A(D@i (A ABBG W (D ABBH O (A ABBN L<PYBBA D(G0V (A ABBD (D ABB4ZAAD T AAD Q AAA 4xZBID W ABG v ABA  [EAO A P[MAW A <[AX\[AQ<|BA A(G0V (A ABBA ,AD M ABA @\Zm\DA_ H [$\A[EEWWWW<W>XWWWW<W>XWWWW<W>X W W W W <W >X W W W W <W >X X XNRVZ^bfjnrvz~T™řș˙Ιљי )EУ[ Ht  Ț Ԛ *<Y cx ƛ ؛ p  0J[w؜" /G` mmx  ؝ 2 @Ys  ҞФ 7 AV Zi s ԟ ޟ  5=P`ә{Ԡ ( 6Od8Xv yy ʚ á١ [ -@ Tgb ww  Ģ4 ܢ  6 Fa k0! . > 3(!0!o o 8! 5 ooooxo8!>>>??&?6?F?V?f?v?????????@@&@6@F@V@f@v@@@@@@@@@AA&A6AFAVAfAvAAAAAAAAABB&B6BFBVBfBvBBBBBBBBBCC&C6CFCVCfCvCCCCCCCCCDD&D6DFDVDfDvDDDDDDDDDEE&E>c>l>c>Y >`d>Y=Pa>`t=_:K?K HKQK ZKcK mKD @vKF ~K KKKKK K @bWbvBbaեlibvcc.so.debugҁ7zXZִF!t/]?Eh=ڊ2Nclx<9&cM`";1%pU; ABwI#]7C2MKK;VV 3vK4kS@hd8DȞc{]r). `/b SZ~~Z6qzvvpit4_"o}O]5s8tU\6S*y9MT-GCI\e!1!ˏ;He9n.S)"YSk㰲YCTמ:e*}_m2y=l59vn`!t׽+ܛnF=&sہc'!t7!ԽiiibQ5||**prW΁xr`WN \aP !R@|2}%BO?RL(U oy29(Ż a>aIJ{{ȆWR?q7M"#+Jc_+9T,9ml:DDNKbnw> fI:hECBʹVHV|k?Qܬe" ݨ[Rb<~gw}76{# E?J=<:.;M*8`2tB9&:EO_D1o/(ٳ~+&LZZ&+m*uZ_M|Jw춲#yLcdB.͉qz>'$deqn@j0{$dVqo5VU3p$9A* ;"Bj7u=@NC50&3Wm:mt=W0~X~v_Cy 8A-mjl@MXË y i8Ou9wx5ϸf\lkϧKQ`=<'23sU9YfP68"v; mTٖ-'Wey7ڡ8 Ԑ#aFLrp E%Qe#IXIRU93jrW2\[ 2hZpϏ3K.Ozbe\]');JuJ] R('G%y"z`'] g9QZRV8x\,a`WDc}o6oXLtDc~\VЖM5ňԮu)5lY|=)RzOv{FL8Vљ򡉖8hk=fSO쳑9W<%Rucus)FA(T@!G;Ĉt>LudQM]CeӢԪ1hALc1"k߿Fs-K7R@bw<5Nnm2rZz] 2'|U"آu U>S&^ov2U2Ld)ں3)g ~T>E}9=X ',hQd[{$|n#loSz81"\?)s6 4 ykuڳaǍĒ͢C\l8gr\Yi3;#~ Ěc݇J/z{N>"z=GVKq疱9F)NǔL[ elQ>h0}4*JQbI(ēfC2c\ϗ#-A #p0l#jleAs8_( ƞg!pk<|YWnW pgP遺U?sBKN)LN9DL>kQ%}]m:sey$U}ö2EQ)A=IXS3#w @NQC}žtT-:CL# Pn[\"J9Q.>^ef @ZO RBŒFn>6SG6v1zr٩GORW t>yI;lLK 3e3p'Uq݁㝝 69oe:MKD SFU%>x^k m?ZsgYZ.shstrtab.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.init_array.fini_array.jcr.data.rel.ro.dynamic.got.data.bss.gnu_debuglink.gnu_debugdata $o( x 0o8oxx EoT^B55 h>>c>>pn0E0Et33 z33˂ D(!(0!08!8@!@ 8!88!8" "