dpdk-thunderx-doc-19.11.4-150300.16.1<>,npc$2p9|ZdP(y1m8-y ۨ_!nKl*M^^^MϧmwM$iLe>lHwL7RTmni⩩a8s,$vv3#Kۣfh²珋LUx09]^r{al'S"q-ܓs@ݸ¶5{F b燞>nW~gN1/#(Ԯ !H_@M! ? 7J{ CsepE+=><F?Fd ( `& <M]cl % 1 J   <--F8FXFlFGGG!(G"8G,F9HDF:LFG"H:PIRXXYX\X]p^'b(Pc(d)e)f)l)u)vAFtFxF~FCdpdk-thunderx-doc19.11.4150300.16.1Data Plane Development Kit API documentation (thunderx)API programming documentation for the Data Plane Development Kit.c$2ibs-centriq-5SUSE Linux Enterprise 15SUSE LLC BSD-3-Clause AND GPL-2.0-only AND LGPL-2.1-onlyhttps://www.suse.com/System/Librarieshttp://dpdk.orglinuxnoarchFgmnsH&"^?# *1?111G &yBM,8?#k# T :kb ' c  #R:k o8l? # Ldm`Nd?t-PV+ ` (qolXUU@[U-a-N*,*Z!Q?'jogPsYa9>US4"~mu$hJDFcיuO/{*VB1^Ekfb0'b0[1L9%q e/mwrJ?7y=i|>_MIWl  aBAS~kz7IjUZ?y D6'Q1eGx=*^r~J$4^1$aT\hU 2]DfpQPEd(A?n&k` s)*!Q)H~V(b A2Dv\ePEt'>%_r)QJ)EHO}$S[' l`  x ' 0  [#!h q r YH#: | ] jqx  x G Z ]  b   %2 ` l&8 Y c _ ^U e x yBj -F _b{ o-@)"P6:RVź0rl ]9E+4QFXnE?BR>_(&Q|+%:[1H\f+,sT[@3U-U[M,-q˾*^]1hMTeBJw!!U.t NC@c.]'.^B,C'G$cFu.=%N |0.NCr]n8.$XlZ4F]H=$.aq=;EZC{kE}YUVm=-H$KpEb O+%Q?j^\7,8Hz+Ec0]`B^)Խ4&]c<E(o]o^c CE4$Lj6a-+?M/O3)o__>j81?!yU(  O:KH0vvY_`^gl8^)ӽJ1_Ea3\v73jHl)f<)a3[7_=K82L((IDQ;WJ5zH4C;?1= C 'Qu1c>tREq_&V( B2D'jsuV&+shJ(b@8T( g̀:M ;dsdY:2 S6_iO4birx;ߦo&)L,x9BD ?Q8 ^3>lZ \dm\RTu'igvtFR  ;W"[F9 +2ViOD: & '  6 ].`Y a%x=%x(+0$p$f"#r-0#r`9]6CO4EH%$-K"-SHCG,!{_?-{, n NA /\AB%%W$ mn@Q4& 0 <'5  a 7289]!l 2 U*:(&X_qHB $| |"+ Y7 ?+06sS$z"]"t -"Ap#N':K 45H|Q?B>0;A;XF??19U^0 =Uy1 H!W[l#6u03(1$$I(4%x{*#6[~e2!  / $/7ZRL#X%_5%'  $8##fqL"a J,j*"?8',>%qM+ 8 R8)U;D!~D&(X 3Ghh&)GN AE+vz2"=.M<i q!CcdD</O D #G+"`%fz":%k+!& "! # +'k!a>'}b,L\ < ) %T@$!3$ |2 $Z'W?{y/!E]C0"!uY(5O>_67R&/'ew Hw(+!6>zh+")w&"h"C"f%! !?0M |!$d!0"/ z2$3z  :4&T&,jdlhY+wR[$!< y_N*-RI:.UM$=!v  AA큤A큤A큤c$/]c$/_VC_VCc$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$/`c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.c$.8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8c8f51eb104af10c4608837812e3683d4580a092df05367809fb3bb60eb6ba8be19e7ed0ef70f99bb7f763a48ddd95d5990e103bb145eedfd0a76d19c122374be2782b30d237bdbeddfde4aed01f007264cc116b2d4be2f398a7cb74ec7a5bc58b218a2c54e4913f1ba23aefd3a0f7f6c09899cd822818576a8faa1a0b330260cfc98c02adc57337f58c40aae15bbac05a3ccb364e5adb1d610a16452e92f1783049bb594174bac0cc4c0d2efa820b51f0551b528e7aca4189bb4b362e7873654c243fed04a856798bdc6440fc10faff8ad4305df24fb00eb64e93088ff232978ee2b93f28a6e7674ae64e2c2bb852ca1b82ea03f3b6679fdef239103919e41721ce4679bdc8b73628ead5c5948ffccc39fa731cde5675feda38eeeb73661650ea6dfa131c01ca2151ad5f7bf5f9e5ac04844bc18231c0f783da97f6fe887c2c3eb4d1c577d1b5c0c83aea52277b2a8accdff9061da268927f2c45ff1cb76c79808bc62daa8d7045d01e808bfcec7c059e3e145b145e763acde8c9881ad099a5b58ec21373612c0e30cba72408df8c0d216fb408b4d08b29d80f5afc6dcaffefd1d4bed70e0a5809686e9971d2bd26e21eb3ffbcd6be3d1f7e8ac598f49a42213180f5ca36f2a0fe8183c321b780f24acf73291dfcd8a795db2a97929ba8106f4d1fdda4846dd429c2ee984524d940037fda6bfb5f1b40139c2f59596aab01e846162ee51904c5d5ea90af8757f30b3ad53a481fc98c7627b0d529d9537f9d78c32d3a0a4e7ee9d60adb5940e0cb27403bc84864e3f59f522ec34355867ede2b0750df3b6c46715878ed0bc6e1886482b117af62cf07d4caef91ee66cfeb048a85f593c3c5c2e8466722add91edb91a05880c86ca6c3653aff92659156cc1dc6beb1df4af60b2cd7a5f64b0e9e252587dd29dfddaaba7f8ff52ad1f9db0b470f5de35949e5f2c1f6fd1b3effb6ccf8846c125083c2e9fc981c0418df6370f1484fe68154ab8351bc5346084660d8ccea31a3ff9800af4a87f1b67252a65258ebfa9bd7b62a3bef4bc4c0bca77ee62b03b1de2e2d578c0bca325d7c1c2f1ed3db0556cfb270ffff2e169eac01fe6ab6e6ec440d2f27d114a7701a288beef477ac2d00dbdfac87696ea072b15f3ed65fec9bf6364d5676991184c519f714400c7015d8a300c78f992a2966f522ce3c70e66f497a13ee4d6e7d87f4352b62a8a84b14e4379de372906ededa35b1dc799a7675acc8e202f8b805bcbc8715e37eddeb7d7f918f44e69ba2dde069fed3d7f844f5b1dfcc65cd9754e4b58f8df9e0bb448a28a6675a1704aeaa4a0ec11e6f89591fdbc64a88f4d1bcc178f85ff5c3b6fe1e4462cc34a041c6eb5148895a58edd9748ea250e8283fefea0ef7f6ca0606358da59c252ad1d104b07d81326986c0bf56c6e4e5546b61f17c695589979695eec0a22a57444252a49e8abaa67fe58eddbed19819889fe254a7ff183cbd0c51d8808f87ea6c26970e4cacdb51ae250b5160beb723cbbe8e71eff19b37be55214b7ccf038341aaeebb069ffd478e4e7e10d879ea36df7f7284a0777411fdd94a606b93b437aa3a3fe412ce4d92c5dd43fb9027a2e88ada2c1f4a30b5e378907b01057d7dba0817788a43b7a34148d1bb0afdb3c8959a532c9d399c6a5eab9170c2aa0ab5dd90c35816beea4ae5a3688fcb96a0891d6e7bd9e3737a75ebc52f1ec38e74798ed10df656b938e09a12198865a465ee1bd37efc80cafb81110f9b84e8c250f8305ddf698a09347309ad45b268231fce3e305d62f35666791ff77297df2377c2dd9093f81296af9c24043080f7523b6d2b7ac765d6242dfad107fc57f1e8f9a33389aeb7b0c11a29aa8aadf45fc08b5dbe876f856b1f8963635170e7c692a86bde9ce8ead7c854f9799f540fa18d69198d2537fa967cbb5bf26d8ffed924f2afbfaff75c0bd254f5a83ecd342f9d3d98636cbbab055c9d1236c685d6247b29cbb650d79488fc113c6af1be29566261a1b03f74b8d7e18c2f8b8d97a5aba2faa58397f299f1c095b5db1bddc1fbc541bb3c9a213a85616bc6ffc3c1eab5bee23afe2487b0080562cb56b11a72a80d052b8de78be7677b06e2d8c417aceed208c7bb1290287160d261f9116832eab05448f8b98325471c58ed107ed844ce5151fc539f0822de5baf70af8b5c2fbf6ffd29ec8a7a56bc9bc5cef964abf67a8fbefac0a9d395d1ab9b34c6a1413c3f65d5718bbfa29c45ff9d71ad8131d48776da3e6c82850e4938adddd3d55e52f30bd300ef6f58209568a20bb71ec8b2ddba5f116ebc490974e73249a1b99ee147ce6a1c16ef6d11be24976542539d92e46434de62c3b11c0a07a661e207472e61faf190bac498268211f179514ae1081e208c45bdd86eceb3f8c6100b4c54bd88ce5a5f3eb8b4da651228c358dc2ec654a38b0a313dcfcb83ec2366d7d28054f20fa3a4af71930e10c33872103710bc43e8dcc6ab8296a78138c4577e2feee6af4014cdcf3403f99ca7ebedcc15f31d97e4a5909fda2f2523824f4973641543c5fdafbf58172b964ee12e74bb4163ca6d7dc37f189f755f99eea5f0e97ead9c9760f5b456c82dd6251643f3b0336fcfc81c72c8d3723b8fc4725d8ae4a77cdcf447ca7296aeaa59c9a04be1523b18c2d96d282408ee0f8c5ad3891bfca6c660bd0d0e0c604b77643c8e3eb21cec36c75e81d571bb4cca05a06c812352e3f0b8fee70ec855bcd761bf7d0e71dfd50fe6370567f7269f685487648ae5d5152a556198e7b69c1e5c129ab52786467fd2b73e494cc04cd773a7224185ad1bf584f16077b0cdc83c94c3410dcd835da6bfd911046941da5f0e2b3a27a18bfeef4566d35ca6c27c756780db86f390b6b758eff9a1745da497048fef74c5ce934f73b82c706b2de5bf6b5d2dc9e69776ac7e533fc5fae31ade12e3e6f54e280fe951f9f1c3e04c5deeaff37cae6190452aebbff2c0755cbd19096f521cae4c4534f09befe59c116cb5fb0edf725d9cdf505b6d833f2db1d8c469be7e3dcdf5728fb10a2c2d6c64e3fc89087caed0a527db7af56cbf5b62453661e94f7f7ae6cee52c7fce580eaeeebc40282bc6163230deb9ad22532b9c493513f8d972b5ce35350993f0053c4f674a42f2122116219504d26773b94db46b271dbe334eb6a8e6a635bf01d4ef66286408d3fc29917acb1922d04b2ac78811ba20105f9e41bc83d8ca4e3d0896fd9c353409e0b2346665ef67a88eef49c31adb2daa6e184dd8918ff2e520c2b30f931607129fa833e28505b1c54bb680181165dcef7d33bc0f6f53d17f06cef3ee88f215c932e57f2d6ab8f11580e66604ff19ffcae7032d823325cb713c44871cfbb998e32901300fa8bb3b38a93e44b780f772a4b6ac1a6fead1495d3e7f0663c35e724446940090eac3eb4d0244ad298e3abff8c9a0c6904c842af3c27a7b05f7630c4384a2bb5fb5f443191dbcad9c1d8b8686534f169612cee574efe8f4611865352b812b8f52de1ccd6cf3c9af9604fc36730a0b82928c49a0c84bbc79175445ae3345991d708fdf613dae705cd4cb41607a30d7820cc20ea76b4a3b8f57d3d2b7d102b58c8e13ad95e83aa1932077dcc51a0071218f704ec9ac2488624f789ddacaa4018c53ab0033a76f3830533c72de5c34df37037008cceff17f7669e21434befe144b87215744a36bb36973a2aae66bbb99f2b57f2ef160182825fa5305444511ca1eca4e1b0b38528bbc656bd8eabe7d3ba94dbffdf2670f5e3e10e16f058cb09cfafad55e919e4316316907916a45b20eb48df844cc1eba0f4e173dda7c13fb64f349004011c500b30e6acb8ef407b8459f71c0a70082162f07f30cfc86ee5e79bb14878aeb835af4039d8fbad6a73b0f6205d54a210d80e841044b6b74a02c0666e4be3fcedcc74cf2710ba7fdf11f05d4836fc66898f5285d467bd6128c0501cec5762313c29793966954f655b2c0c327de88868eb597c0269574f24c8e33164d33e24eda7bba4acf0e59482f99efaf9943580801a0a12f67f78c7a8752ec0c5593b573b8ce783e8fbfb5054de12e5301807fe4cda57e207f7221ea4572951d237ec73daddc4a2ab52c87b2050c45e8f7427ea50be6fc004e0099c20188b0358b7b00f51b050007b0847e9a11ee10348c4d7f3d66579c3bcffccc4373015943a02f9ca3153369de6a079284f935bbc69f8176408b89ae7c37bc9c921a56e39dffe64b58f52301633c1426bb58688e78d10b6cade8e74f97bcbeadc6d64b1501b00b5db0f4ae30060bf3dd58d7c839ccce1d983c0d23b4ff859d5fd7cf5b06b64132a2f9c8ee8c07f626963ca83222bd7927f176f07568041a2833f18e9a05a06474c431ada59615d2e19cb14745952c1428334cb468333987c730195b3b9e6324f916a02516dda205609be47fcaa179445cb8900fbba40004822827b23ed8f1fab260e9870810549eb3b58e6395a3ff4adb43bfe255eeb8382b340e7a5b9fe552b79ec146040789df418eb0e5fdbad5debc09de0bd738d6e5dec6adda0bbc082e77c8da84656cf247f69ee62127743c0ce1bbf1403af4234e7828a053e4092e32df4d3874bc58252a7a1a4db4d753655317a2b7b79e1286f2566affc3a99c808f8375be5ca6dd92a5cfd77b849521ee34e7fe845acccb930c4f6f4c0c4340fa9fb889a6d5db58cd59db6bce125720e5ca27e402838902925e4c5d5b4b35e7e12ee9221722ad1fd01c9a3bd07b8c614e53cb26a0378c2a042f183b41cf63470f76b832d33e8979abfe61baab344434ae5f832b350945e8fb948c1c5377446ae756e0984f58592cbb04480bbacdef9de6884dfdd7ff720463cf88607c15eec2c521dccadc4e55c666374d11b0cfb244f59592e966d42a8f991e880051379c8b5062a3c1581245a95ae1a1b8e6e85b54776e79acf7e597285eecec55f93eb8a11bac36732091ef9bc9a47473452bbf5335b2c60f47779ed856c06c82f0b3d77322ae0e132899e141623e4eb09f774f97aa918eee8b9dc20c29df76f32626ecdac6f6b48f807de5fe7aced9299810dae9888eed49d0372b9784982d93e7f83fe313ddb9e64929844a9c112f5b5170eb5045ca4c6658f58a07d3372dae939ce60b79b33517e0f5174693a8d0c5ce32b9661f1b6953f17ca7150c00327f4cc62459eaed8dddc2e926e9a361775d1d35bc752fa6918fcfb77e9bdaa632e32112781c655d26667e50277a517188e8166e0793ad6a1c1b18df5a7da234c12287836120c86bbc1979db76216f7d477304660fd784028d05050bbc190e1b38f871befcbb0fa9066cbdba716a218a4806202adbd8f70b0daf08832f101ba5c6018898c89666de1c991862fcc909e438e3779ab6dc7b06936f7941d5992eed6ddf0196269c16e27609851a1c99a354f762451779a2d98b18e99206e8a1310f11d1f50d51879d9525b6ebff681da8a1a669fe4573eddb5e6df18884f37fa4c6ea6d26fa711de445ff188a26d367c143ec7ef66cc8122b80dba3e7bb0f69101300f4c901ebdaab781a0d4b1f949657608659dd9a232d3cc0c50e51e6dc7a972bc71e422cffdf139a18c5401dd640b3f514be0c46ecc8f9a79d4e02571108f21b32ff6c16394a273c00375f4891b7483b64b67803dc259e3517737bddc94cdeeee6c588f0e2696797bfc574a2ebc4c7eefa10bb4ea6387f4317e1f909243219b09e5e6cf3ee08907863028b81b3d3e4f156cbd312e961f538567ea9637f4ce8668c48a6764c55ceed61b7714088b33eaa55e048ea11a494600c10534238dacdaaf067ca3f3faf7e4ff3e3c604065b5f43ba8b15380a7ff24eeff8d82868efd76eb933597081e06000c273b1b20c325b78106e6a96ec066a06881a30a5ca0c282deb67bd832315d898e274e76c977590e6c242c4070f90274aa06ba98f00702e724f0b51f855b77098c4d4f3399cd3b784395e5099fa0807320a828e29e80cf5530628a5622aa0dce075b588e8cbcbda0f252d0c8b8bc6cc6b329d7bf839ab6eeaeee8a30b45e0448136deb84c30e03f09449b6d488440ed9c4a5b5865452744077848f572a8a745dad6f98798ef0a4ab665c3b1b2368cc9717cd5dff92f6bb23efbbeee149ea8815142830f850f724f5a9e28a6d398fd76c45d34f16bf257b947df46ab270d68c26613757108592c05372bcf8e330a83b973a3c1929b3d99e818d38c7ef2725abf67b03c3863c74de2b010a8aa7f0bab121d6449c05e532724654cf21d6fa883f0e5674d42c90d5bf146ccd6ec772666c49b2a71282b773eb716257f63d142719c545f02ca777a1d3b4c09cbc71fd2f8c3d066374fd27daaca769b3270b4fc873b5a66ded6d8f564f5875637c9d981ceb2a7a78990f45c19391f0ae091b8331e97f1b37a363fa6ac3cfe2b47958178c808b562d4d477c06a996a1a3b24d76bafb66e2d4780edc6100b5c403229d21bbb1cd2563bd7e69e37d17c48a245e8333ed624efdc3a691dfc12c4c74ecdd293fc9811045084df884021949d3acb915e037b87eae0e6193b685718dd7d79ed8ac92bed1d37e427183316b41e94327524d1825a025eb72aa707cd6885a21664089c66b0cdd4eeff222557b6404e33d77f98e6ab4ab1842e042a4024f89f09077cccb7362209155343c425fdd23ece022864f64ffbe28ad706ec1131ecc4784a913980cf42b46b61be3239f8770a3c952083e3b0c6bef7951ad9af8691ad4a5c35641b173e1a62649b6ec95a4612990631459b4b877b7c6b7cf5cb6ec381481bf0ac73dab67aad5e05707eda22c74fc51790439043496364ef3707c04ed22288386c179dedd551d7c4e6d1262bb7c74e2f0121fb030e79a5b6e1dccc38eb2028095a6b61110e19dcc5b5ecdfe9a56b4f1e23da68dcb3afa45ab3329691ebff6d604018ab8a25b2d4b5dceb8298058bd7b0d237744e48e62884fb63193af0a5d8f66776db3f60e57a28241348089cb6a6d1c2e4b2547fc22e7ff088d5b0197ec3c4981f453ef294955a82a381e9388035b911bda92ae742538cf5e83546dab8a41d38375e34e2fcf624bc25d2fac72eb87033aad0dae6d83c0012daa99061e41877b735ce0a9673ac4a8f46d2d474bcec721a875b19392003bb3e19ab38dc2a92cc5f3e3540ea43e040330e31dd3cdbe0f8f1816248736a82c1f37885fd46a2059d1cc5b87ac3b1a31b5222438f3d1cfbd0b62bdac89e12e83bacd58c618042fd1df6da14640ee0f263a418c67f6b7a1ad89f1660e42dc3279c77df547281ca26d917e5ae40ad971c113fbec8f1ec2078c2f2769c6329465d376304197d018d00108761b0ac6a4116619c8d870c7a185d9862ac0f67de575d4f82dbe614f1581110903232785c114bda71e5977f36f7df1ffccb0927d759c4e8898063ec86a63aab9c135807b066c1b2eb9ba99acc8a2410dcc65f338912d28b7c5a1e59706c8b82ab5b39c726a8768043ae0bdf0fa491ce9b49346a46305c659fe5aa9a93e073afd6161e155cc729ec0ecc4d06548f2683fe7d58fcb24395f524647d55c089fa074fd5538105df527091850b18b97c75b514adcbc8c5bf58b433832452a93e00201cc93d830d7583ff2f72f5ae35883200b52e60c5a35fc8c4532a7f273d7f14e71dd2f6918ee68037c0bd20102193e7ad931aafc076002f29b437efd8d7a839a03b97f0dc89ca4e30d400d1407dbe6c1e8a0e760abc2031eaae7d715fe51b088f54d97df43e0d44f78cdf365f8a1578815f950910381179409fb791fda21d8761aa1d05bffcd82d5c0219d8e49db5ed8789e4783da45de5a67a7a8fdd70600d3b1594265a8fe7f26dc6d4eea214c71d95001ff4ddd14d19205a44d4c9e4aa259a0d9afd7a5b41515fbf4cc5fb04a8f5861c106a1a517f57f6542e5dcc12aec9bc6a384a1fbf439eb9470056fa4383b2526650b8749eab293a715637a33a89d16b501b62f5c92dd558ac707553384bdbb0fd282498bda74425f3b6f6300ddc1a919a640548e472c32f234c1d9f81490c63887b5f2d6e4fb76f4b2b134aacf86e6299535d6cc7f36c2d88acd9b190c2c381f2ba379c38b1bd6b86022d702b25bb0519df4fb50e5b235379833151b82d37b8049b35911be63f57fff9358a0f2bd41e89e4bb3b35a638ae8424add43cb91e5a39fba48450fd856215f765079e64ee8b5949efbcd46958587bbdf996b8cb0e163bc6d5d054084e793ad945cd5088c0a76fb6204fd6bfaf7e59d62b962eefdb18b67229155c72e6224956f68e274a36ba936c07d4ae8a760b3a0d8d0cd5596756ba31bba9d67c2ca0ff988261466b6bd889c4f7ba0c1d2260b7976dc6ac839c61c132f6604801a4c0b1e6975600de0148d09e60672f09e640473d138d67bd8573e0fe1e9fbb44ce69aa675726a3fc7c42ab1b05b6aac851647f04fc1ef6bfa5aeadd6bb376c21638f0234e8655b4f07d83798aa7a6b15e44d2394b8e4ff1122675954ac684476784aa72e92699f7f54827487fdce15f938f0774258a3a1ce187c8dbc22e7ab4eaaa0e19c3c0f8aac0129189fb49eb11cd3b68f1bafa36718468a2294de47a1c55ccd7fb7d1485f70437e0fa10b780146fc468c920dc7d4db2221d399d753323c71172b8241e842a7ff8b0929f3d6105d7582b0a6da4eea04caae267a092edbb184838c6cbb9a4ec30748d87051b4b7cd493175f0e3d7932833be0ea25eea3da772da4dbe30e28f94fb8aa50ecc852c95c8d7403f761f23a3e2238d6669ada6277af9bc1becc061e3784342fef662a13c8f8de2a1991415a20a3e5cd69b82eec202503ef5d4b791e42e1162af303ce1fab9b044a4bcf7e625578baf053aded0a19da7fecb0d508770af0ce03598bfca6b8bf5e43283e6e61de3123eb423f923c232306eae5674f5fe6633ea7b1c6e0abb16b93cee9080768c424f3e8d9d11ecafe3a93a24544e108f156dd8e460b87ded5c918df8dfd3972bcc712e2194c3c5c2dad6b83aedbacf580e2a1c4cd12cbb1721c5909ad45cf612ee97b30b5135441a0d61fe10601ca0cadab1df9682aaeee89271fb712ab1cc6be598bbc544febeff45b99a9f46922911f692363ad6093805fe0b1da3b58cced9fffe3d7cb6ba2a491635ee4f40e1643b4a42db27fc4c2311fc5a47b2297390f1a377cb80d5a459538ae61f15d4fb3071b238c8a7a199f8ad13f5a7cb4fd06bd9ad98e758804a858ff74dbddf30277792cc0960ffb23cadf6881fde931e93c1fd4ba44bca09f35cb26220c648e647877e5a2d5258d1e396c6ed3da0c0ac5959c7ccadc3d27adf87c0564356b235eaddc33d9e7946236e080e7a63ecd0a3293dc7b69d395ae0baf9a828b7147a8576b513376fdb10ddf9e6047dbee6fc092ea54462cf993966ad5dc9a479010ef17b02517c7c958bfa314b300cc10b7b528048f3bd38017ad683ef64ffe5fca52760d5f6514b84b01cc39528f2a0d1259efdaa6fddc721b54cc6444197c33f70651eeca015c0d406b1fdf26d950d7cc6b17dcb445a41fc97cf6f9830817783295d5c8d9ed6711768ead6dee00880ef0f0f0bb18556164870486d1e1a15046bb562b7977557edbcaf427c3cf5cc1faf6bb9e157cf272953480e21e5d6c0ca996329c474dff66649c92cce80ad2ec1618d284cd5579531e4d1a37ed4b8e9554e63aa9d7d5475a12959133ba7d431d7db185d89abe9c48e269476d618e4f74a1daf0e6af07f46a4b5a10eb103561f98bbb7f56e8a444b7bbe52872e2b17dcdff7712e5b43dec02382586ec303df379073675ef1b1fc7a76a20536032622c6138a9a8d85d3b957619557d273b4d20630ebee35ffc075b9d0f84a047dce6fddb19e76fba90581c9e7adaa0b4fbbf31189576aebc716075bc666ffa2596e2b2801538330a2f19a6f23d02f4a2c9c22aa258b192f7307f8e85fbca2128bfb945fc3788e7fa2cd8d1f706c232a8e8b6e4878c847a800617f9d0081c6c983d4ac6835de4e13f856ca9ee6a4e8eb7269d234be108ccb9dcac097f88863cac24e6624993651195f981ed055864acea17016d5e0aa1a5e90255023aa5d61eb10ec499edf2f86b87c0fbffde065f765f09f66137b34512b5930518ef30978306f7b04abafeb64b65a874140e61b97bff90abeeb1356eb01a95d0eca697e364ed824958ce83c2f7e61ce84fbfc17c6b5a825d5291f798f925c16f7882447cbb349e600041f5be6d110e2ec9856bdec7b05b9972bf873a1d5b45253d514a13e57c2a4452877b7cc551448524fdc864a71e04548df92a5f4e76e6e261423bd259d338b98c49f20efa6ca13a1c87edcfbfc91317896452c31a9d49c4768f1b4b46ac32e0907e00a73680166339ff62595dd2d2eed3a79fb9fa0c2e8250e89539f6d678aa2e5e51e26244db1acb393979876db657c3c3d26cd9af6e283f0b33dbc4d8a12eb6698921fbf3d94b5d4b345c876dc7e6ca7026aa8daf4df176ea093b3bee1ded8fb065aeac3a53a311bf68d1db978a372a88db11eb3524eb85838d1c87a5bc600f24bc171f3f804046d1a0b76b82999d068b0f90449fc29978a256d21f4b42544490c9fe9d384cbad24f816c1b20f7a759a4d8021837cbf2e4f21bed71d57ee20d3c58fd7a87124c2ccd88cbb55c318b1782b7250a06993162fb3c927497ddd2419dfa041268256a569d4ad3686750ab685ef8584ea8678eb7afb0dd03fa1a1ebfef0e301d1702bed1de9d5997552cd93326691543a150f0e473fcd395005a30d4260a5255c88e8caa0df62d3f4e6675a238a1e9c72739f7893ec066972979fbe5510b28aed8298bd037747f73c006b03ebe06d8f6022515c328c3d5e04c2c37198d735e5deb3e27bf18a7703686bf746ee7a4faa263dd377f379486fb1b9e3dae8c06f38325649c8f5623222457ad57f829120819c27649398a1f38bb1169647f1328dd37c8c54210fe45e5ac10e0499769df227e77aeb5ff3a065d6cc876c05252870fd8129467c852618b4cf1885715c6384bb899a418e8f47be8b889682669bae3f6ce7046f44b1b8f21649b9eadfd0eaa164929f61a7b986c7de8bbcb94c3335027b07c7ae6a46fd2d2988c201a1632871d9ff541a2a02d5c6652f8c6de6cab9bc3650b09cae8f88c8ee377c8122e8458bf9e789e52068898b89f73fb701e21a64cf1461c1dc168d08adbb6a16211b035f16f30cae56e989f886d6388f26f9d668cbe8427d7c71bcabd0ddbf21cf6972cae6aa43918ec7655d08493240f41b6765f0c49f1d3838e51cb1de4b88a017acb403dc0e8e8eeec4e962d7fa470c22581c916030a817f92d8b41025344a0e7c5205b54ee06fd04d96506b602639ffad3a311ea706c2a3a669a7be313c0cab58198080f42adeb2175af2a763e189f16606ff7ac7d326e911e055a7203248887a13cc05f9e47d18ee60588625f3d74c1f7f3f8e32c3809fd288da861e33b968459d2a80800e277dc79bcb60aa50df34c16089d81f0d926085fbd25f53dc5cc60d153303f8873ec40e78a2519bf77da0ad035d24e32713afb92b89d6be8848c286b87659978e4bb00435fe6b28cb947f02864dbbcaf0eb3237845ac4ad8f0a7b0b060fe2991370a8e60d34cf5b4b1fc789abfd5f66e696fc2d9e6481791ecf35b851047172a9ec5dd4ebe71a47934104c555771bc5ffaaf32f7c17afce429369f320fd187a75845bb8edeed7196bb3d7889f808316960e16da6d4c44b39e2768e27a552398afc4d493d9dedb0b65694b6436f14bf210af2403a2c72e8a7f30aa85d060abc5eebd1633e63aeef07a6a66b09f590dbc6d1501a0bba03e427dd92bdebfbc62ee4636c904ac5263dc36e292022f4255ea1808e8f7aceb370bd64d300a4b2561020839fba2d4f22b36e7035293ecd2f61e902fc69597bd71069402aeeb82601afd07e29cfc3fc73f5a6ce54d68854009d84057510f4ffbc065cc162638d4a47b86286886195690312731a2472241ad47d5de4c5acad59795b59cee4b501f5fd4cd8f4a4e5886e26bde96fc5ab802498b939ea1ebe64021e44a018936bd4d01320fad2e40e32323f05abf1653255e2f5fb99c99d365a5e3e83c91f59ed8fce13b852e013e44f567276be20c20699b22815db261e32a7b6f5d26e3ee06a6e6b4299168d886a53b9c9bd5d8802692ee5ade8b6eee513ce693113ea10b87a58a5954d9b3bf7618142a0317b370d4e9100ee7c7f08236b7464f15eed2e5092a751627474987118246e0e7e3e304a95ccb3c14e873562734ce75cd3db40030db74e5d0fcc6425f13ae016f9a22475bbdd88795158c236bb66da09427970ef9649c0566de2c6f19c8492a27231affccef8443d76ccabc5df5249e26f75268984fa21843066debe5a5c2faafba231e8e78b4b203aa738169a5d592fe1dabce55ada42f9769c1f299649844141c60c8d0dc76af5e72e080a65c45cf499019deb26b9d1c2d230f4010fb256b71d8942e086bdd81f932769636e5bd9d426bd42568f4e83919aebab2a83dd94f540aab4071ddbd901844870eaacbe4324a0c0ace693bd58c1cd377beb0eb967014b61a9765c42bb825e35f9486e1af3f556fb545bc6db89ca9a82370ef02ee7a30192aecaf6e30a7efacd65535db993706bd08675f1d1623f4faa81a311dc36c07eba74caa80d34ff55221b06f5d4edcd515de4891d51ce35e20c248d950b74f8e7086b9d2f485e32e4802c9276896d4f4ee273321c99f85a31e049bac6af02e34a9a737bdd3a278bc4a7db8ead677050dc2c2218f7dd8a5e86bdec751713d1c04ca8144bc7d1805599647353e64da5bf1736f35a44d38b8e35a862aede5aa12bff79d505f130863393a5c93a5810dca079faab25e83689fc244ff630db0071c9d659a564da013f9ccbd772752fa5f3aa3558d46663866baf375c071fe4614159ac930a4708261d52b9c1c89f890d2005b5c75b2b4c787c19a60e3863febabc0d0827d64a68dfaef9d5c27e4575c49f2334f84ae67eeb61f280555bde11d9b7d7147d2eae9050de580bb18901e1da9de2f3ffe502779ac24a1fb66811a0c1a7f2d337e34c6676826486e4127ca62875aa7d46a4a9d845ce49665f81e0d4914e32d5cf7d5ca4224872d7a74fbd08b4a0fdcd4ccf040e5fedc0f66252ada94eb57bceacff7cd1886650bf9fffd9c29e7eae97a042a3870f5d7ad100318144a6aa91fd8cdfeb97cdce544c4f627c0126aa2d88886f0a33cdb1bc109019edb6e837baa89440c2902479391d346339ba07464c496a8252af30f7e439993561c0f248e6445aa4e1aa15c0bd898c0526dc4d42afe409e79ec640d425c0ccbb7aef729cf62525bd2131f6ab48e7780d15974f90c97d94c44ba9f79e2cbcb5268aec7318acd8e09c61e8b3e4ef22da21ae95c7086075e5ea7dcbf8526fa7a28eede305417fae08d104bb59e660e61d2879e35617b22a8cc91ce1c5312070437ec822ca6ae62ff596bb133d211c213f58789c153ea22ff271e49594fc5194d9a66ca5f8a0533623363dd7f11ab32c3c02f10427352913e72c22410c78317ab24457aba73f3eaafd363b078f5d68981877a0a967e43938ebe038730cdcc78a934014562eaeb27289c96f340163d15a7e4399f3948ee58cd54eaf0e564a1c03efa59b0708053a385dab6461d24b99df9a42254a989111e5a2d8015df0b2d314ce15f18cb53abc7e1fcffbf2bf8448a70836be531b8087a3316fad2525ced23d8709484488c6d2e29f0d7c6329694f2340d57bab20294a2a6f2abdf64782b312ccac375ca9540a6016afb9adc8cea5e96fd41e63fefca1f1d638960cd4f6247f80369fe941f28bae98b64062d4ebb09d59ca3502d97187224c6c9d2a1bd88ef3108183396444081bf903a53ef8a65a2384e4b2641bf736623188f5bb160d58edee6d1df2f68d1901510e01755c43537be5cf9a61c848e2aa715e7d4d426af2d78b8fc4a5caad2f7456721d4f67d601ca35c0d50656a39062568976566a5f1b986ee01d37f09171ebf9c209c713bdf2ace24ceaa08d318a281a3947efd439ce96cc91e9de27bf0f1b4614b7213efad077a68b8d8286237561cb2025a0ae0bd9929872b90d7a6771f1d5c75af808f554a538b95eb3d567862bfbdd69a3ffb38bc95a7f9781aabd04ff1a45477775c4c2457aa16ebba853a07e9288c4fdb42a0adc8947081c045c219dc2b54a8e0efd6362454cdfb6804bd1c0fef48293e34ae12f4e9a9259453cdcaca70e1768bb2b29f0726c51ca782b0b3be338728e3a6ee636a98b5d985e67c7402632f14b4c82fa6dd427662ea2a310f49d6cb03b3f906f25b1c652baee0417762aca4ea3de15e29e0e1aac6eae5498eb974ed676a9a2a22b36e530802620a9adf90de08d6a003acc95f7ed36a99e5ef46331690a2b8876e47320b849f02d0631fb6f631cd96d1fe81906c50af06b87c1569982c367828d06a9335f0fac4dc0a0a632c7684a57fa95f2c4e4762edbd8981b4f734bec633ec3f9d045e41f1df87bb959ad4135d1bc2b6a7c0366828922a3376042bf594197f1c1e3760ed6223aa430fe6cb4feeb5684275b0d6f6840d131416d75a824bc858fe3019c0972ab6a832cbd0a47c036f5eccf52e098c91c527f893ea2894b859ec090a6d0c1e7738547d85ac4cedf5c87e8d0e2647ef8230a4f92e2b02dea6086bd4be72b67da42c55488563e1f420c5c11fbb1fd3dfad73de433eec3384b5f770750bb1fd2333a97a8c74ebf468eff7d93290c1c81c808e7ac2590c682f9833d667881a10ba74f7e2c8e19e53a552efd421a4dceec7c72ca68d2c2ef9f56419ca1310f3e5019dd882d90e594ad9b9ce8174bd09b31b810279274a3a17888f77021eb150625ca6b93fcb8cc47dd98766877abc2b654810aa04ce188105387b3b6e6d6767d8f8ea4c6e2cab22404957734e913a8014197ea089cfc3f54f1d57fc90f6418c922747b025f4a64a9c3757cb3f8eeb6ea7976d5bac31243f10766e37f73a4e6fec9a6ddb19125e0f539e85d1e52ee972a88d9749b11957f7b68bd06e496b09894e5f0f664b0c21e7c30e7fde2b80eeb29bc83ebc4c90e152886be36e2dd393f79dd9236c6efb78f4558f2672b8764cc616ba9442a40f0474d3106d19ccf81f45bbdf3ad75a914eff784804ae4302be347db7fcece7dd69c50357af18b2f9e8648abbf8f2c47ca99a9433ba11908d5a79018a8cbd21f7c97fcb16a523002b63f3cd324dd63f7926166d398b059c66a8e33b9fc1960bef53819598eae3040987cdff0584b4bc6afa4bc5baebb33a2b440316cd7e645e6dd622a1ed17576f671c754cacb4932a1f4a631ad0cd003a5400653ad61b3f5a2d6c0df1db83394800876429410ba5d35d39f463a638f66217b884641220a47322c6da86fa8291157b33fbf174f07a05058b6feb44116196649e713d58e8c6c40c432f88d8b6249b9b625d3284e73cd44b765041f7e60eafe98bf775b2f07c4ab40b254983acc56dd8e274eb79e7cb4fcca28e186c1273c5035c8a7db7f48a6222ec54e2ee467bb179169fcfe5ab8a60161ac9c7bb2c07498bbfb314b0597db5c2cb42e0b04f97bd95bd0dfed5923d5661cfa7c9fbf4e893d5ff9f451e46eba550aaec33c7ec1235db7570534e071814beb985dbe8d81a1804fd0bceeb015509ed2ae6aeb1ecb53ecf61168912c047e5cbbfcd1a1714e3401affb21350774cce0f6bfdb161ab423e7c09a6b516e7d4454a73462b0470c35df650d8a9e2393566309e45f9c857c6a1bca1b6e81a2b2be78facbcbdd3947c53c665a6e4b320c43b6e51ae8b5c4663d5535ca1860330e68304906fcdc6226e54bdc6a72666e1b300fdfc5ecf102714c9fd57df76fdf47139f8dbf8ae59863643171164c16baa5953c17821a7ce5feac673c05a56b287453ce3a0bf5048f0999b7711604d6cdeaf3cdfd661fa21fc5bf18de929671c801f00415eaecd35abda3a04665e9dd0ef5ef2c6ddf02b4a12472984485adb027fd12ae6c60ffd203b1a42b2576fd2bed40ff26230852971654fc4527a58127090d2566c8cd9413e3a1dcff1ae66ccf167ba5e75020cf3da3a2bf8b0d0c9ebbf15f7e8426062f48184b68a186ce32339f7b7c5f37c0049f1b15b102a265f4cc3c513d37d404f5a1af1677ca4700b400450c0cfa8f5127c6bfd8bb58ae53535bbff622be8afe6eed0278cdbfe7d230ef0aa6335156e7777b651fabc594fbb42ad4e14a10d0f5d2bc37d60a6323e25879e84b3e7f706ff2dfcd278aed8688d243bb7620aab84f24cb997fe5cc595692ce33e0130c5bd77258aec6264f0d982a5ec5b4a57f65462565aba09b792db3099b43035cad16c2494a158f59bee98b7d9f049dc5f8bcd072168097cfdaa75b4f5314ee0eccce839f50c4118c790d5ac8339aad643fd5abe093e5a98a6caa2ab77d3b20014e72c9f127c234cc97360b9f566ca1c8208be09ae08cbfd6049f2696eb9b1c479823a6591b8f5b0a33446cbfb71ba6ee924b41ba6b2c8266d6cef36b339936a3a16d1c5777862acf23683802b8c22c855ec7a0a3574a0c877dcbaf7b5b226719558cca5042943df4e95546c39aedeb3177d8e532cbe1f44bff72fbf021929fa36a577fa67362f69f14925c518219e8504422401bfb3eb9f3a769c07066edda2f2f5290be86bd568e0df86e52cc4acf2a773603a43a569af85a7d6e5405862ead8b7e481fc0c5ec274d077206fa8262a55a513c31b3d1ab3c28654bb3e553b7a4485bc0422ddefe3110f784adf9df6a97a189192d8c0c22cee191938f87e5c53df764ddda7cc5dedbd698dc0aae9120a95e7d4d0dcfae3f1fbf60ceef6535057d7a6336d7ccafe81546fdfb3cc86a5f250b6523fcafa1f0a28f1a1aa4e733e7eac0e0f6902a0af0065e8c816661a92f838d4120bba9e542d1f976a045482e187de23f376f7ea8f7964739e2fc5c8e7600aa3b697c6e59c8d162bd303f660378ce0758f8079e7352ab1b851c38c4c412f7ef286dc65f6f08ac4a6a4b9b21b76dc0ba1af26875f04acaed2fcea08c0cc84f2f52b8501170bd3145c70eae2177807a81967f994e6a6a09f0c57cfb2c2abb83637ab776bb96bc630c245e6be4198f3c441ea05c9021c0338d55b76fed40521845922bc7225b5853eb901f291e1bf61000576e31678e0c25f8a5e1290aaf079a98780aa11787f119ff41d84772a934f862b4d6244b5f4a85c2aa07e59ed362b03186bfaf47f5fbda71aa0d5be9b163bfcce4f2f104a65337aeebdd439006658b1f1c296950d67d40137feb75316162d47dea9b2184cf71abbb6c683318c2f49dae651f8a607c45e658ef17f3c3c976a6bfc7ed5a86355833b1bf195bcd76c8793f8f71def02e3c167688f7dc1b0ffe1f9e0c5c195561075b4fddbe44cd3887daa4c36a57a1ae474a71746ed951b7018baf91ad83d5ef3c949062ed7c34009bc954a1d640c1128b3ffc01134d129d645a78c21013a260f7ae7c020fe256069d467ca3de1fe07e7cb57708f45659304f88ef9e2be0b030858104d5efc2d1f2f3bcd6d21c6bcfd3b94780717b8f9ac9459131ff6685d3dd295bd8db9ed7a769a61eacabd34870238aaba0bfc359386b2f9639bb49324381a0b2b15affc61bcdb8b25bbb7795b728ef990b6ceefd9611f3f01d62d8e2c582623d57819254b8bb37e0d26351a443604aefcdd43e96cab0fbccd82fa7ae9b86696caa248b5b52d531b5bbc596acac10cf9c854e218903284381c6cfbb8854e791eb48a15b24ff043b62e775d3dc4a056419b8f976fe421cb75150a7dfb14de54d101a55bbcd3482153f47868ff083c69ec78b26e8402ca1fb1df5ec39b85f57ea745f43540409a3a6ed52560dc82ea9a493001ecf4750e778726e8c78136fb90b910697576a2b32b58053df96207508269d2534360576036278cbc35240a9c1a182fa32a262669202f6499ff79b0c2146272c0c34f21310a26024fc83be9391ee94af9c8024dc432320489829ad1ebfcc770044d9d0c49f2846ce5d7970980b5e71049015def4be0d662797fab15c848cf3803441ae845bce6036921474c408c67d494dc0ab3bc101c5103c1ada198e6514fe30027706cb703e92e594283986669695331e793693ed7e8ae95958ca7fb8060fcb4229266f391a7747d31eb5c8b271fff9d545d01b1935208d1d4adc25f3ed544823ca93e507994a445321aa9836e4c87eee13845faedb02ffde95ceb85453dc3fd4fe8bcc7bdf6af95ba2d4e47a5c53ccd3915bd6d5c9859af6144e10667c50fd587b9730e3260d2e0eb48e5c93b1b2f174cd837476307090af8ddd4b81fcd0a218ac72afb7658ba086495af8fbbd6cf50de5bddb5929d621e1776900cf4e9a0c72da796b0af6f0b2d3f4f71b173cc84995cce661d13c83c6e500ef2d4a5d4c781b0a40f674cd0f154812c2a6d70f2ec34e8da969fab7fc608afa4fc169d104eb8fe85477d5849e522c1fec6f5c459790efdbf069c2df436eaa4fa68788500e3d1858f72fb04cc6022a8cc8d1d58c347e4c294df694f52ac00eb22d1024041f65f3715772c180296383dd992742a3927ed73f7265f2abe8a0154067f2250828bad778c4372cfe0fa84fcf7a947ac482cffef011e3f0f83cedc4506ac1e9fbac81aa9848e3241b592bd8f1559107b8f70a68ba69592c561eaf1fd4758603bd5b6b860a5d7a0030db1382aefbeaee097d1a7adfd0a2060c4a8aeec6a0dc8591ff72dc7355a072d9454b487915367d7a17f2baf7185a5b183d2723954f92408773027aabdaba909c31673280f7f54757cc8e5c8b63e49e4ff9f41790e8bc8382b8caa45827ce14c0c1fd8c36acf00bdefff765d2bf418984af599a23bf85dde92705ac08122fa4729b47e14dd0a603e2540f5faa6f309f906019ca26c1ff9e64979d6d40199c370b65e8e49fefc9fd417ffb5e4ca26461b416f6e17cd508eaf5c7229ccce4d8883274f26101636a8a2450d65c928a51fc556f6de0d62da08dd87a9e1ccbedf79011e80cfe0af564bbdba3a7c95b07e6c8ea360d4a381983e1a79632a63c0d4f49dc9fd8392de8ae7b0c43d27a5358dcd9054afd1079b19c7bd418fa198a94d32dd5c3403e0401b705f060e3faac14ad154528d5be213507f84769f3a1593c75177d5a58e41c75fb09f804cbc07ab6b0c017596f55d9d86f2f7d60c488df41188adf16f04ade16ab2ba7a088a2c71c34bdc2f190d72799f28c2ba6b489fe13ea919c9d50fc2b6438a072bdb0fb57941c2260dc9733a4aeba9745b79d64e41b9eac2ebb56661522c17f6c20478f753e36552a1e728bbd0f9f64d7113c51161630a03a11770d2da0dfe62704a282a369b3f0749b50f04483412d6b35a459cafae7bc38e2586daee613c0c279aeff7e84a5d59189426bd80b243384c0e84845c243c2191a8ebe3cacae9f6009d87fec96af254859caf420b16aa31a3ac212975141ccb3501f56031e4e821f6d361f0e69a5d5fe858cafed35c44e875ae3012827075a9a0fa9d06e30a4f5394e228006466e470b355e23025d22f75ba3209ac04d9bc89c787e07bfae170d86ea53561209e15ab2ba32c0c9af0838669107e089f54f68ac3e73b58f863ad71473d88ee13af4650ff9db0a54914bbb9e93f5611169c765a17413f3699d78da12d33af2cda955e6323e0670f8931055ba0a822919e81e621a0960a5c44cb42878ad4d89bdfb83fe09230dbf0631a3313a5bb970aecd333688100a70a3bcd1cbaea6d07624df21c00da1c47fdc9b657e38ed7da5902f227ffdab032f6eb6ded15eeaa37988ecae98d5d53054308b6aaeabed446c2866f11a639ad6f0f5c0e49a22fae55bb0cdcbd492361ab931c57f3009cc4cd13c87ce1673a98b853b52117d5d9f38eef1f798aca8988ca27d61b046c76b43a710ce6ef27c4badcd1a687d157b2d0911870f00e919925efcc7f6d522cd8326538816b8f642e2ab48e2a417bf055368b357853ff876287ec91bf563346b2548d248511cb00c8ee87cc84768955af5f5b7535630a52b78d3d0e251223cd2bec04ad042ab3292d52027db80052000cb2ea4a0353eaf4aff6424380e01b08c4cd6d5558ca4dbf655cd9639c3566e9824102f05eb63482827f5795c40782041afcc68b0f348acd784389810391f31e5e328de532d20893c0616ef0d43e9bd2cbfcee0a5b99d2d2f048159080b342b65d7c3a2ab59c1b4f1817939e7ba9a0c3d975fc93ad016707b5abb8efe18a4340859b66b780195541a18ba0c81b3b5578ce655cb547a506006502274e1461500bdb396ea6bf88afffb98e5896ddcd2ee41377885ebf072f1e474c10e47a3a6c07be6ac3e5f21825fcb2677972ce248ce80ce51b5ab5a1a28b8d631bfcd4f84f839f3fb8989c1e480ea4bb4edbe67c860b1ba7e1b31be8b6fdb8354e4efd5dd25916c8862f58842148812cf49b44c348c880ba632b4d29636342aa135af44f56cab1f343107154713d5396f9fb3892269b5a7efab8a6899495605fbb47729c29a54d77fe1e28c0e194aac2514fef957b1d5e9c82e9d93a34bfcf42023df100a33d5d4c269b873e6577907e7edafb9d0a46af606192f91253916d9546078e5df4c84563548ecbdf85ba4095372587d681e90a0639c6c94ff47f897eca3bce8741beca68fd7945a1006d577ed946dbca967d5c8a3748cff024346a835c9802463b8f751f75365a3157d4961a7e2d397f0b769b4a7f46238f2481f13dc31efbe72034a6f54f2f6cce9f98a7f11960cc373b749548ab80947145787c9854b4d4a9686627766f0f7cccebdb592de539ea69085e945f7b5928430525112eb33076d0f52b4ac81eeae56d816b8dc5ea5c263a76fad7d8b5442f44ab34a4186e988df59ad3ac07371ee61e5c55baf4ec0e4e7cd20f4ebb97d6729b1f9f79f2cb4b782785b0531c03ed69b42fd1199e07a176912e824f654fcd3fa03366b0021bbf14359b34b208406c2545027a16fad766a4ce02aed15ab6d2e643822f4d6d5cc7cfc57d1398efcca5197076ff4002b74405d62d83f86754ff5170b8d2b510e0319f3bcf323e2bc70368af4050a6de3ae57b11e6fdbf2628b37b199c137382551812cf8b5c6ca61b2c7432f7dbac40acf4abd5fbfe6624cf79738cef0e9b4a2b7fa7f27c5adb3f859c9dbaa0068208c7166a0f629033ce49adb4d6f032c6b4fa7e5e08fc98e388ee62618eea4b76a77427af5948f4e27da4247e9612153b6cc9c01871146655bb644facd9b0fb26a5c5cfeaa76071711b66a1c3be1216a61151d710bcd1a67442562ed3ad6b70bdb45ebb749d9caefc79946d75d1baf2f6b3b5af82f9e22c5a944c0f4e02e630de8205111506f12d3f346223d0653aa2017291f1470465a35c7769d67e5aa3d16f34d08e62826a0e39acab5fef3677e14c588f000c704a2808743803c415652b4bedd74dcef510814e1578b0594533359cfc6f4e04d43f2cce4fcbb8415b17d2fbcb09d989525e3ce6bd3988d19416d2b8df085e532c9371adac0dc1e1f4857bb61eff8b4caf244974d7e4ad9ae2b1d9817ea367063b44f156cd09b2cbe1d34ce3a08b5dbb6046053ce809c2a08d3cb60052f4e1479c117ea6a6e2094354d3aeb2405989b89822e7a17e458d9d491d01750da184e769a7ee6bf2a834199668e19f9717e4b213f3de27cfb220d47a74d5229a3714feab7f6e3653b2765a9307036392e93346b529f84b01e3061f889a01f23307d01431c3a52474ef75fccbad4e87aa27660f9b8258ddd8ef58d6df56cdb0bee42b8b11d3bb87f676bffb73eae4ce595afbd1bb8f5dbe73bdb56fbc845a45273998d8ab5647417618b40bfec7b93c7707618b8ffca2926400405ff96043f421ff4c8bfe0331f5b6ca1ea5ed9d3c616fbcdf0cb42bcdb6ca888569fc4c04990cbdc6b9a0094669731103ba287aa9979b383f56e29c0e9f8fe9601f7962a94aadefa1a43a08fac646607c39b3fb304ccae58fec54a736ff90c89403d8f31cb1c2e7e16c472cbff3b11b2093f95e508a7478f88c276dd7f25181836cd0b205b9996823db54f96262fb13e33889cfe55a5711417941cee2689075e8a4840cab90bd81df8229b29ab4946a0f57ff79dcf0856d2b8bfa5d7d00d155f7231799f83a0de90604e28ff8e6fcbcfb007d5e593fe3ae0d99261fcf2cdcc4c9044516bf5a200f32efbf34e5ffb639158e639ef91090b8f28f1d57755d76361f5ef8f77a229a4697decc68e52254fdfa7cd31eb7bb225b7ba64a29719131084fb7e3a04ab557cedc138e314e4e772077c1c6ae5458df6cba239433a230a2b16845e6f007cdc41c626cf7d6a442e1acbaf10f96d05d3a07e0b8d4a6062d77a89ff54836769e460576e89a4687192088990286c64e4fff63a03792f01f696fa5303fb7f618c3e0126ea31fa0b97a039430e27f9eaa01f8fefb2e8f0ae5285223b080074a88336078a8841414f1e93149d38f10bb347ab5031c950a73838c71b1ef48ebfd905cf9fa18c5f1b58778964b1a53ccab925d6c39ca7e434be5a8939a691796e025939d882bca636f1954f353566b92f834ef2b79a6ca44af4fe06d7780ce01cc53aeec4320cd03c779a9a27ace2de4164ec1ff49510a5538ed9cf62b7a81b1526da6a4dede96e40ea283bf17698658e9118cde30a7b2e116e65f9fa2f02069bf832650e2da0a7974b38cdf2f11d2c7902f4a701bd8839af109b23bded18e6bb267c74fee6f2bf4da499ab0254e3fef5c360996b27d1f04e2715b1ff278d519af6cbb1d9d030e6c877c0a1b83bab65a403dbf3be6a26349c46717e8f89696864ba87f2e8cc24a8f2802c7d7e9de9de76fdddf06802f87f0fdee7d3ad743024ef70fd296de57c146ff6c8863108169ecc591726e908d540d7c539a8d8ee1db6f6c553959be521e7acf59647a8d2b5aeaba81f6fde962a818a10d654afd2fd00801a5b13085013400ecdbdf7c310e66fd48a6b475b34391786442f3558de87281a1aa33417479842b87a289e786991682f372fca417310c9973aab28f1fcc55f0f293907018236a24b957ea1a006026475d9e100c87fa1761247dc8419e5a517a2479bdec72b6e64ea3f84d46f2502fc0492f6af2273f24eaad7be47f83618e36f0535e51a6ad75a449d11710963ea78d51b5c508a39ba5c80a9b0774ba8bd872d71cc3e30b4efaff78c587724dc83495188b421dbc0bec65b7c38353161cd2d419189506db857453836180d26df7250c75a123fa22dad7b4be622e0f492f906029b009cb57c14e79f9b6dd8c061e91e6cf737db6931c61b414bf32b8ab3213f6d3e8442fe860845865d419ffee7beae8707e420e4a6907316b0cc94212990dd361ae6f05a36defd869695e032bdda0d24074e6e3a365e294bfeee5436a511c301fe7a4ed35ca872bffe90a81e19144ff796d109d68ffd740e15055547aa4c147de6a0063aa00d824ca52b1434bde77cd395aa0187425136b8ba77cbe5ad94d899b4c6c0de94c2334664f1af9aa6198106084eb052c8a21bc7cfbf51d67817eee7026ea045f98299b6e427d3be02cc8aae4dba63dee121476e938fcc5df4a3346a965597931fdc929230dce770b6eacf183344017b600b9bd1ef90c786c09052c8538fc1c5931c2a4d180fa867695d174fdc91ec115e64b2371ced3242b15702abfd9c7a5cc360b0587c19b6b42cb092d56a9826cf1a1f67f8361b280b3ccab240461d12a74d34613c743659efa44dcd73c79549f5d679f9e0e82f7ece8cbe63a3a7f75f8b200442db305297ff7e1e992281c8774c7c5060eade7eeda2fa0bd4c94479ef75a9ee49a06f344fd380425f6a14ef7175e13b67d82a26fdbf90047c6c170365a881fcc643dd8373bbc64a1d539ce92d49bbb519eb1018ecd470657c9dcc0e5c3a6a7b684d8c45a693e63f76e6565cf13094513d7e655718ab785c9c9ffa12e57714e7658346edfaf13382c3c2aad8837b896b739acffff1299e115a034465bc035a405bb4f18ede14c5c18c956f9b73da8c71b980234c3b2fee717d81590ec0a7431ba636e39a50aa2ae804a5d606f51fca5765e926f431e8c33216b67e93be3fcc98b57440201be1cdba8430f65b3d93a340d9e6740da04b2815f58c1b54c7862164744e21d475c453da6b2b6fe39d3d1000e58b22f2031d130d6b8314eaeee3a006a669aad5cc8398cd45215ca31a6f9f934916369f3bde1ec16a75b10c09eea90f21c17ba5fa11c58d47b590e8337a106ce895350efcdba41150feae305ba65f49e518521427d4c0aa4fe26822524f3cbc8b009ee11e1993ce359d8076261aedda8655ae074c0fda918b63dd57c0b23758377d1bc2a00957e4d19e2a5eb1a16c880ca07d06158f10fbf3969f21a65af9d1cb8685d5bd2ced9d93b57eb5506e9760659572f6b5385f0f3d9306514af919083dcb10de512b003b69073a905242dec9d81271542993166855c14aa0f327f53ee425e98b91e8f4ec1c39fc469241f18cdf84f9618f2b88aa50ce08f9117d4c423155bb2bedc59b567e357b69ed3d43dde6e225d8b846965fb0e95b2f20a344863a8539f9ac3c393c3ea5aa30c1f0d2d9d034ad8f757fbdb81ed5d9713bfc68942497fa9739080d5c49f44ea0b818c72ef1c149e30fa54a4d70124b73822b5b0cfec26045c0c6a31a058bb581869bc827d30c64a73076ee504458ef0501a1ab21bf93889bbcabf78bffd3e62ef0528318465b9b889096c97e9472935b5af10ca3bed2a2e70d65b6ee576630923a005b84320c40efa64a3948e509e0763328240f8bd601e63abac572e1c8f04e17475e162a24572a30db93792006b9e194cb6e17efe061afb396a172cc432f8347bf4ecd3e4d4941fd3fea1241ff61f648159de16112c28a181c8278cb2ca5471657f0cae0b847dc82fcedfbbd062bba58190ad79be8ea5ab081ca803a67152147274a72cbde4b80ac6ee6672f936ca7731fa6dda1965d9e8a042a85fc51d19e1fbda08fa1d8ece686ba1cbef3fb04603162c8201011738d58def3c5b8ffef6ba192d5b214e929e36e128a84d5b4503fd397af058d43280d5cd0685a7a65492ffb306a8366fca1808b596b54b1b7c58e2aee37665b97b6d1517795f9094d67d2f5c83e625ec2907d132d87bc0db1bb5548ea90beb8478bed505032f57d46c02e7e80ddfb0de311f6045c40b36431a868a52a577ebb433c2abe075abbd487d2dbc5e214789234a63f9ae6191a275477585d59095393c34e9845f0d0a30c1fec88df6c3a42dcc109c5ab8fb0a1b392514d47de12f7b02a14ab60b93c06801aeee4f0cbb456e6257d9461209ccc8dc84e966ddc10cc10efee5f6b512967be77fb2905b1ef6c82a5248983206e2a85dadf5c4ec9183dc04741581a43b3ea3af034f20c000b4f8e2a16e28fbc2065cefc9607db9098bcb09d16dedb8788d8afc94a89d7955c071bf2a7cbfb541b9fb210d245bf5349f113b2d5bc8705a2ffa0b949fe3f400ad64e284584d051f6c038ed368d03b614e31e2b6396afaf261df9dd279390f09402b34fdee7bce2ec4ffd80dd994d9f0a92374d8cf9e97d0d5f4a8746f6b857e359be3bb2ddfe8859fdcb858fcbec179a645479aaa4f8e5c275b043756b9b28329ff02e9521c5400df0878af612816167d8f8b9af572ec605b338cc0f21647fa134433ad4a23c12e90acf74bc23e407311b7cbfce7bafc0a1e1488cf9beeecc7889dcd08fd446be049bbf3c734f517cb227d48bdd98a15f392653277752ad3a398c10b7196af5e9d45b0b683abe46e42f0cd8cdbed9157281ebeec4a353c81f21877a93c20d3dcf45a0b6fb17ffaff839e6e2264084faab072494491561a50902f9f13c44f3fb0fb408078250ab368c92bef231a269c404bce4643766b785310ee354dd7713de7b9edcf220621a620ebee8fd985d3a1c42894531c9c48da8a41026bf88189c466f5a78bd9a581e1e8b51f75ba9e8a1caab0f7c487e975c49a312ccbe08acd17dbada571b086dc5fef4b7674f2e3e3e19745f8a50f77198ca90dbeca3822b8c0c9378db04d22ad3bfb54c2f4834b333c5a01eb411c32439a0c027551148ae1da18672780eb017cdd5fdb031ed945fcd1fb6601d7f94967a7408144a617835f531f9e7ca39cc73e43bf712ffa0132a92f68d85d621c026864c43421c1db24c7a371dc37d849cf5f3b83dc15c243e978356246bd31f1b839ca156a825e449ca70df22b5fef4bdf35c8c41f71c285af5c2713353d99dd6914190ecc4faf4d4e6334fe092728412324cf47cfebb69e0d453a45dc194d72e0e6d8464d98b88603ac06b00605fde1294da176c4e4a635b7b63e29b60755e548ba3e2bea8c3106e14176d65fed32a735cd9b546e6bd139d3383fc5ef1fce1ec77c07185ed47df690e78d3754fe40d4a14365df0227caf81e54bb9ee35147fc1d15d76c469b055b98e384d4908163124c581dfadff3af41a2bc64b9536a35ed204dedec49c26ae854da0d5fda3243145535ab15aee24597adf19a3fb55bd35b11c47591aa63b28133314f1fd63a51f2aed0d9cba4290f933eb7aa38ab018ceb3057d41e1999cfd60ba2686524142d1262e1772bb03cd878aa0d0af5079f8da90e9de2ecdfc5c78e70bb95035eea46aafd44cb450fb7f88185db30dd329911334495b0e2c96717be4603cc1708e3c245aabc19758d8dcbab4626142e7aae74b0defd9d3f69cf520f4e5ebe220ee22378c01ab767b1c7820844beb70115ff3dca9a12acb1194e8b95af6fc1a380636f42250d8209e3aeedfb23321aa4e0228d91e47ce1d0e975fee97e4944b3c387a3a5cf0e88a0bad93df7fbd6983e87f88709064bedb3bc5dff8b691de4fc1cddebaccc3e7655b212b842c0ffda0b188947bf3de962df60f695bd06aa6c5ccee974b5fd3b6856bdce25ce56b422ff9a3ad11b59706060a886cc7699bfa5b125e37aff12bafd66d3554b966bcc2b69b76e0046095744ea7b8643be0114207f4d2e0a9b04765e79b296e533cc54a897907286438af159c6132072f9147f02877997dc363cdd11c96fcf11e941593db3db08fb5459c950ae7e3ef71bd224cca424300633f0d1860ae347b6b9b000d531f92734947d5b0f0caa1b340047aa5af8d0fc821aae06c03fdfb729f6f0a9c4d8a1a2ee5c479afb7afa9f4fc61baf1a972300ca4b3bb76adbb3903098572474a70cecffd864aaf1248d9dacadc5a1024bc41f51791d9bd5e3819299be80cb3e781d2a7f29a83afaefa61af537a5c8f2f8d90760e193a4cfe44e47e890ff463cb6e0e88acfbab5b8c74eb8dd4845706849e1974c8a23ef45b5d822f9f277ed36a5a7b8af3e411fb571ab35c8c382c478869d03191ef83eb02b439b59782285631c37fd4c6aeb029656a3311f78b807ab16ec65a4b5f9772964f4804699a3ebcaa3f22f1265c9894a48690fef2f996b6b29edd02f7d0deabe21d557064fec99f22e710fa51610d632ada18db47aeed9e5f3edd66c997875f5f1a7dce7330e68b05e792e28b91e07b08e9739cd9d4cda0c6c3a51cd6442d513565953bd934a34b57675b58b3a46dff1cf654038dde027ab594f17bf07024a91e498f267f280df0453a4e41ab72aeabf5412d087b374a78ac29a9743496c02137192e7df3d38c29b6fd2f644df7ec1ed2677923950f78421588d7125ea24b26169e391e7220a1ca617ba29f1f6ce215debead85d3ee457a39a17fe852a876adb6a4466f3d62299eb3c0575b04e6c6628645b746b99bf3bcec5ddb12b01eda7b093cecf7da58178e3d52d648423656da6ab20f1b61712fe7b72872f60dfdab06544c63905bcfd10d0a5b7fbd3ceb98591a203e843cd92739f34e33a5aad725ca8cd3bd91dd80cda096fc855e7e07f32dae0b7e77e208995bc0d1246d21da0b50fcf33d8d23d04b238bcf596a6f46984cbf0349be8bbf486ffab9db50fb1ba275b8df8785b9c3a25f4368dd4ccafd3f8c7acc17b7b8eaef153177d247457b6b9bdd5509480882613557d784fe05b98b8022f4b8c8a2a8f4b7df371e3af81faba866a21b5e1b3b1055831464494815fdc62f1b5b9403629d688501242662fbf2545196d49959d952148eb4c0ae56442df1fb3d0c6e6e6ecd0afa2999432404e7a08322af3e170fcac2c9b5895b8eeef8c7af8fc94ae86a4e053303d14642424f0f6b94e7cb0b13ec25e643d45a5a56b115c92b0762862251665532d4228e1ea927050b957772ef046c62452237f1af103f0e74e4689e3b566574dd13c76f7e338bb5db3ef9e9845bbce06f0a3dde251ea585ad37d29b6ed9fa1880ce728f387684275f4372391bbefc6f2b69ed67c44583e92d7781dca5223fe62555c66a6df53845df38a5efe700a621ebfc343c801c44414f152303db035b69ea1d2e5c46eac269218152a040967bd12d37c397db42cb09e602bfddc768fd63bdf4baefdd90f9e1bef7867955cf139628855983e7059aa120c2ad4fb00551d0612233a3fbee935d8289b2a498d9c6c745391ecaf0b31e82dd0dadde7031bd0f1cd0de5145889229948b3a2968c564a562777786aad58d6025dccdf0c09856eefe4e43694d550d543be19c64ed85f6e2cc2c8b6a6e7033b8ac24d1a8299c3b29ad6d8ae7c0685f9e3426516a8a8c36edae40f713c59ef4b585c7d8947a6878f5c456cc3a471009cc71a0a2575879371ea407abcb5405ade329f6cfbd8e19c3049ec9e816a0e9094e66cfcb4b38e4d567f66ef576244ec360eb3796711440f6d50bacc57af04edd2d79ed16ab6463db6a137e3ee5e7fb51479d5db4fe89d98b3f38faedb4361fc04ea43d5d1416925d792637a92cae4f92f5280c78a2ec417ed0423fef79a2fdc4a4bd059b25cd2e2a2aa506303d23018141b8624d19247cf528639dbc173a905d63423136a84f5714fb873ebe1d4c0820143265fbaf871196e80f9d025c923ebb6990960f0512e7cede559c1c04d60ab1a5a6cf7fa21a3d44adda22f6512e3963a715a8c6df30dd34d30d240f0c0070c0085dd67deedcf600fc0fe5fb3d41630f36349b16f5d436093aa15fd6ea2a48117df6a62627a00de944d6ead70cc8b2ba1cc38879e4a41d711e41ae78d022ae83fac30dc10b5aaa55b61a2725ea98c0c9c4fba1eab5f7142c2919ea35675dfb7e9363be59ae3a52f55a7aab3282cfc017e5035b024f93cc2e61b596dc119ed51398b82005b66edd5f4e88c9d69cf5d9e68bff25c374dbdeaf6696e7c76a7b944b5a1cbd8cba8a6fb86911d826003c640989102e41cd9378232f1610d884dbd7db98ebb5746f50da2892fa7624f72b4e61b0e8ec9d06927022f0a8210d067bd5b5a5103099eecb0cdf0df936359e1c0b1c6d6e5a804314e9fc992ead7b657189e26a280544f97017fd4c381c727f6d0eb709e0c7c9d9d0d1e8150310753a1fd73ea3bfd4decc04a2171376c174c964dffa6decb17312bf304a807035236b46a046bcbb73a0a47979e824cfadb872163dbf540ef245244386e2893db10d0c73b5bc63dd74ce6b79e1d69b468659b97bd1032373d35b13b1615e45029599c46182a61d13a1f45ba82e9739fba54454b02e62d221b1c2fa4fe91f558931724a44b1a97c9a911b24057f319ff1cdc948991955dfb2e08e1e9d503d19e46d06b1e1944b9e5c73c71b22e391bf5be7a8204c928d624a296a7fed920e6139c773104dc08b14c0b7b40b65ad519f4d3759300d3d97e4f2ef72e45c76d9bdc135220707dd9bfe3494eb968f816781e22e12dc15710f83e947bbe7f60e4f27225775791f1451cd837545b270a104b46c7fe2662c27226ce9387b686d60e6b79a08fbf53efd10ce41fc51bee82dd7c6d0e19afe8cf4e0353ade980d5ec240de43cbf4dbde6abfb3a6612c0521ad52d201f32458ec729b9495fb8b489512d2ecaf04f16ebf01ae2082a1256180b780d162451550d184206afef7a73679d6b1613f42ab891b896058ea5b5b2e24a5630a3ff4a75e889056db8945ead13b42efaa9e79de23ceb7a9927f134e318dffe28f565159d21a3a522aac7b48272a71b1f0dedaadf71bbef7ef4574254e85d0f1296452dff14c300be34ca0512dea76c068a06a506ce4eccf55ee3b96bff3e79b1e228b5b820a7bd28bf34174a3184443424cebf315446a330fdccf27a08b1e368a1f6ee7903a0fe3b88666e3ef9fbe9bd38bb3d40de8905c778e08852f0527c730a2287fe717bef46f33c3e83880233c9f2eefe729094018a057954b66e24047dcb3200a5c00aa9f7a8fbe105f6c58635f992ffb9020576294af49c27b146e2e27d1a3b1e113d43c3101dcf206dc0bb79f2bf083803ebd6a61004e69459b58edac624693d740e180937ff3849280117b50a5892631429b1a2d6c7a0a8ef604ac39b7361ec18ff27daa665a0cc9fea922c56ac372cf4aa9122f548fe0089b473a3212ea72369193dd2cf891154fb33eb8c63ecff685f03c389c5bc6e89f68ac348a8c666a8336c39586d73d798615d1436ea557e617daf52b6e9bbc89e5dd1e70a2709aa24a9ffad18e1fa95f34b4862a5df9144fb00e0f7c2cc7954a641da9df38af81002bf289760182580c8d971eb72eadc1c6938feab7bd4a48aeaf2e407b5093e7f59fa5d25e1c850d4f31699e7b4e9a3b5c8c71a5f110ca61db3effcbb8b959990fde3eed96391068d53af426f22a4ed469166be09ce5d2643551873ff7ef87eeec183c17116d61c5618f7701603eb93e4799e86f0f18e74c11623ed5c535b8dfb660b9d13e1b712b658a81c2b6065f1ba1d2bec48e891689d7a646444def3783aeced423b9b72f1d4c883e5522da6e6a23c89c63eade6aa4a15c988a47e146120b2bc771036a75c14baa018446d7063bd84addd975dba69ff74c48000731173142cc7fae86eccbf5eb6ade05789a3628383cf5440e6c235d47787df9371a544ab4ed4ff57e553650071d26b880ee2252afabc268d0b41928e41bdb50756a9a1e8d52b8ba3dabe82281f47637195200d5dbcc9ce0ad04634c9d3f566aec168970d58baba4930be607252d080b399a04e8e83b7026c0f052bc223ad4632e39cd407550196ee3947d6b1514e2dfd6dceabbb4e8b4ca84f92cf23a4467f2b55f4b72a1b912e05673dea2afaa1768e656955937cc03267cfb011b56b1e5a0067a188aa497f0dc2f41175f96592f8cb2e9f357d5a192e1bd9243cc9c92dfe8c7a40d27295f805c7f15686fc62865574c100466142bd760f43e8d9ca16bf0df9e90f0567a2620379924307a47490d2d6319654536cf16c7022978162516624995296e789b02e4e02c08d815da16a48c42eb7e2d850645aaee605ed550c225cea17c220e391903cc1033c7eae417692f7cfb4b588f843d68995ea07239faa79bce10d5a24000429e4d9a4d4c5af0d1e0c954fba3843d0057ec81eeb95a08fc9042e74155436ad7a02eb0933088eeeb88189995dcc7435b354d8392eae70480ae4cb3a436981a6da7cbf25db1ef9f57f8e108f3824069300be9fe940d3e66b0bdbb1a04ab40720e03ae12260f5001a790f8a8d673afb0501bce0ada82590a63f8f47fc372a1e39860502eb6606777906cc81e81d509cf739ac8ade2e84337f397f8efd6ed8f5b8812803509365205f55ea7ba0c07893f5f4115973a29225f7b1d454d656094e9a68e230d09421cfad7d1aadabdb34c3d2359c92d04d27a09e508c8f6ce0c918a80e1d03222bb1a73d522452b93ba5e92a1a6d2778e7113342392a303175aa8dc12516fd83d37bef13b9ea1a20b4e409e62829f1757f19690074c3787fab2b52e83fd2bceb25f2018fd54d88b5d1767575ed09f8b48046eb1fc7f4a3839e405eb73ed8b439702864739584d6b0387a55961b8888295a41d2207750c918896d992109c06fe89c73c9d16cc6595961a96a5ff2660018a7704759c68702256ef2382411b6cfe8f097900e287ec24102ead90702864f3eed6bedeaedffc66bed4f36fb1db450ebb7f0eefada9c46268efe3211ea549a7c8c223139b8ca9b8fec5fa3b52aee5fc2101267231c6ca562a955c65a8a70bb5313e02942e2c898b4412f12fdc4b17f9d174b6f9dc267a714b804b2db72f8a9d3725df93e421f04333d1015e2ccc6d1550767f642a9b7b97df7a25f7e9d8adb98aa91ddd9a21d8e8afa09c1b8c2739fba40818ffeaad44e2facd6c7afc9233982d31fad58b841c432580d6f6c79c679d2996ec29f765f508e462487a86007cabf2cbce81cf62de2ac067307146f52780fe0f6032248f4701db0e0012644247ffbf444dccbe542cde73cd281c88e89342a4fd6dad4d0d3e201237086c709ec817c643f002e0e99edfbdce214ae7b40e249612e7e9bfa0f5b3783f1e30360d4b8f5645a668ac7d56c17c53ed803941eddd04b0b82c32d6417c8e600b58f97de3f5538063686fcef47a3aee5b26dcaee048719d210ed10512e7b173a7867572aa053f57da90f6858740dbf35ea77bcc1fb25d57b426d66455fa4764c03402c0280921ae91c1f7beb4ec3244359128ebd6de87e18309f99acbb625299349d8ca77c2def019404369b7d6d0ff5b44761583e7ddea03bc377feb88770e6f2aa7349d4d4c2c0fb43976dae1c9b0d19301630ac2b2ba2398ded87a6b3f8bbd2a1ed8c046c8d5e16f7b067e3e556db86b3f28b0d74dc4f347a80f03f8fe4d7ab88b27bad85b43d028d94b825647612b69f359745a73b92fcc0b5c48bc48aa15f635f8af27e229eeb7038d417685e88c354ed3515e8fbd0ff7fd7a05b5340a99a1889b43572b170793e447e70b6d97cda9025a11b66838bd21b43c7405c86d2502400f81d04cfe4bcc6a02ef88a2cec4efdb59dabd1d9840c7df95e5f6ed3a706da049d024962cd33fe218bd38fd92668363612fe334177dc0eeceafa81a00c40967f750cb4bd7a99f713fafabb707731cb614778010367282c8eaa79cdceda18588b1ad242c9660c9f53551b06e761971fc05df127c6c42476dac8854e0419bcc8368845affbd2f4c0d802435519474f9ad230b3cec313a19e31c59fb6fd00c78e4152dbdf3aa47f03e355858357be2b6e375255d60e034d267a8f6489c4fabb6456141e79c5731e4d0353eec9c51f2e88af9bc1fe4239855aa005180ca02cdee71f37e1c3c9468fe22128be0cae0556e70a68fcacbc06a6c5f5e9195c49d999633ef78ffb3a7b870f29c4e2f0ca78838a0687a4550faf1cd24f47f1b7b0ed3534fc3fe42a063e0eb0de86ab451092d9f9a0b6f102eeb1aa29745f90b8dac41475c03b86cf88bc25369bcf154edcac1281439193241f3572a934da95caa50301906396cc8e6a2446c935d11d6f5e5d377f72adf6011e35f79575ffd4653b78a4d778ee7893e6014aed4b0ad97a7799e6f5833747101573ae67fab434de6754847fe5cdfaa7155444d0f62885d0c95c5ecaad9b0d999a28747fdbaa92496c4180c02738b5d703b48a69228839076c8c59ce9c7463d058ac0a9a891b9528edaad1522142bd8bb8806af817ccf2aa425f1f6fa120ce9edf7cf3915bd54aa055db31866e585709806287ed996f28ac136f560cb7f49b95b3b6d64d5cdb6812e7b4976fb876dcee256f5a64266d49b3c9e3285c9f777245556c0d11550ad5606d8c993f5e715cabca075a330bcf7d925c888cf5b92872dae81c13b3af8aad8dd0d400f3f0c7d0e21bdf92af75403f974425c6d744f963745e601105b473c66807de53944b81ac149cf6ea43887ef1c92b8e58333b3b9c634feb12b3f1e622dc7e1cd62483019069e26f51e0809ef5b225285df0a8eb81262d32d081ab03f5d77c68dfd2730a9648c9465abe9887b7135794c843147b4402e26546d6de037e13339107c80802143a0455bca1f7e89e2ebde08c2ec5854240231aacbaac8021b6abe811dd6bbc5b66f6c21b168ab33a392cc10559ae5ccb6a85433acf0d909689f2a3daaa2d56ee20b2362d27c9b2fc730719d5dd86c227910fb1135a0d724f36756b2684a19e4a4b3884779f6898ebfb55110c4717a5fea6cda3c552233e93019d0a17ffc6dae6565343460aae5ef431337be92895f6d071ca2258ef21d3b814329f4809f991392a57a658aefda9a1542afcbb6761d1eaec721786bcd86d66ff5260adbbe05d24c80c7f55509da34e3fe9a28573d6080a9b7c80e99793ea021b02df0faf66bee318b5bbdaba54f27c54286844472ab976f2d984deaaba1a5ba0dd9e82605db9cda12a588a66b8a3b66a8e12fb0dfb4f542baec2e4bc3924c5f7ab767ed28df945c231e46b84b810b725bccc1ff358e096830a4a94ba1f4e8d116e55d7ab065242d3cd21a23cd7bdface41d65f35f8dbd052c41a9832e3d6e5b418fd111b83e49b8da9d9dd315fd5f54e84b07f762dc3e1b1a6870646e4151b38445e6110aac304a4e3db85d05a595d021a1aa634dda6ba9f5caa5a0a80d4943b30ed4a1cb444626eff085feed80c76e878d8cb310b06bbd20d067f4757c189de895cf9203d1ed118b74d57f35c307cdd3a939b4fc7713ddc78c285adfe242fe59f88c6c869fac54ed7cbb3fb3287077f340fa52f3a42a7a14eed23811a458807ff78b16eb1fd6e0cd1f33e786b48cddc7555fff7122bae00525baa6cee254bc008ee973df2274c743dd9333cad3006dff8ef5f5bf065c5845bac9267d168ae1b0ac35cca37b445fb147fbd40193e672a4a0395f235c385f6c974b15b16244fcaf34f62316c0d38ffb0670767a344a7e1d14833ed8908219ced6d2e4468c412c573e941f5c4ed21f58a84a6eeff2f82534648e47ec9b2f2b646df915b91f16d6e7222b64e93c37af3cb00d5ff2f1a74cd379e671bb4550a6902de7ffea5e29334478e6894aa8f8ac33ed4c51eaf3f5d954abfc4b5b1c0b776a3366931b198946ddefa46b736f368944ea93a9972b249a865206d32d092a5de981476e2b6ccfdc8a2c2811343165e74997df7668e4f313a94fd34a4ace70c4309548d99f8d796fc8bd01202fa4bede8187c1c09d6a8ad7650ebac6dc21b6571c9aab067780ec071d0cbcaa6d289e27a1438fcb411db67c524b81782cf2c76b9288104bf6adb872154d79470e377e9d885ac81326de49abe2f8a1f1485095e3eabe1103b8c5b339a034ebd7fc387d14eb9acc75db526d26d63b8f5d21fc5e93bfe918578ec8d94bdae851e5d5a7c35f0f0b3ffa1bdd0f6c9d68efc5a4a602ffeb845f1c70122926f38c1a3148a44d7a9034ae918d4bc0bda3d4c70fd69e1e60015d65038e03db6649a9ab8866951cd591c4d2e9fdd30f8f394f8353dbb2aad8443b2912402917fb6f4144a61f11d87d850b5db01ac3f1a71a737e32559de552bc1e63a9842b164f1f8c02f3f0a7ab9de1ef272014535ae22a777950d923e05a160d584ff88c3b3f0ded53d52a1e8e105ce3878ec60596c387bedb0c34d45f0247ce5b705c366adc68278842a936febad1823872871c78ae5875ea44b9daaf8fde878e2cfdee8e71e00cfff4da3aac7b0545c0f37ce6cb7635bf07a553f574568f5e65fecd40dc7375b42612bec0dd6dd4d639913c42e9b8c53fe9d0a411050dea6c32dba41f793097f443d83dce9c847e2c3c131241d3416a63fc683cc4bc4a4dd9f8c46a399dd93cd2eaa8dcc4ccafbb474c97e24cd0923ed22317da61c5d5b3aa9b6cb7423d61877e7125ef1f3237a626dcbb467d7722a9ef65eb39de55b2c85f1f0c8f43d9842a19fbaf393762830d8bc78e93566078a1124b7985a90ebc2ab343b16da3dde8d19b8350d4cd45c626cb4a8a89f9c41f9c38d7528451bfac83c997df562800c2a32194028ea17dee64757164d303459813250e60e0f21ce6f83b6d61fe7adfd4a893f890639c742a30d3150d9d9748c81a6e5b77a33d89887a5a71dad452029a04f5e3aa5a3290e1ae61eb9be7581923479b40abe704c409f967ef87647c165df9ba7a0bb59ae4fd57455d7fa9e1c4323805e5e73676aff0ac29ce25fd2d4211e5e8df363a87c7f75d7b89a135b902b33ef63399210d446e7c917f883fdfdac5821fa9631274a1422e937be8ff2747c3514b5342802091e77abf51a3a291eb16b3622b2593ae1450e8d9f2fd9e4ed7687e9eddb459a82f73048e257c2482bf3412195f69f495b47b46791b43b1d141c34d7d74cc7a6789754f371c36e33b41b62250cccbf44c5e389ded920bd9ed62f1d8ba4ec61d4e3131d13cf75b9ee928eea23fdca870be8747bdb6dbfe1c5fe8b36f65ce70e9cad6db2987ca55b0561a574140707045cc847ba2b4915e2eed1983f466b11a95d1645ca2e3dde8b25db2001af197f19a5f2c9c4d86818c4d872d31347144696c3afd5c351769e3144df0ff0382cf103d1a8e19be4c61efc5f0ff8db542eb75e2dd9c510995fd742e521477ce1b232f6eceea0cb61a11760c5cee0408fbe8de0220454d079ee9adbae2aef02739d4b78c20b2edb2f64148b85175950b02b84b1a66fb7bfe047c471accbcd0e2d0a3b038af6641419a1a4b4887a67eb3637ce2ab44a23fd4b617dc7c98ed883eaf24df8bc599795a6e0616e9178cd5da4ee6e7829045f7a381c84783ad8519484c07bb4bbab3237c066e8edc6a856d6e8abea950feb0658bb7bc477e291172b9197abc1bae495dc080fa0416ca7a92201adb43292cadd446a4de559f51921f9f7c689f285eafeaa0f15a1959c349a91d65f63dd98319283ba3536e61e03e8f1ac6b6246059421f526e2a62e0f3f8d61d67d040bd649684a7de630c578a243842c90a418691dc175d8d9bc38cdd097c6bed15a8f405922e3b9bfe363ee3a5490ab16262df6b246470794ae117b3e055c980e3a51b64c6f8c1ba4aacdb3c9f6969cea6ba784b3f877438280240502eb12f9e7202b2fba57adfdd1a4039de594ffa2fa9405ad084f895f896968c9641b373d7aca9a1ffe3743dffafce5130e75404f9de6810beb695606eeb81a675c6bcc437506abb561113aff5af8ac2caaa19e3af0f3b81d1ca41ea4eb439e562f3acae9a6e2ef4b65b9e4942da9b1fe198d0a2f6d526b9723b2f7fd24b652016da3a2bcb7bd33f3ffe659375e053018373548267d7b6511407c369461264749cc4fc11f4657a0669c82f617846c7bd945cfd2298858e5a5cabf70ce9179a253e40eda750d7004d5b4adafb7bae4e463184bfa319010597eca754351afd68946a798732c8466230c105a2942d452bfdb968f8be7a15bf8c00f17e4e5cdd08559ad4d27d5856abce2ec98319b3925012a9c776f4b9f2cadfdf7b4bcc056990fa12c9759cba1213a761612cfb50351e49cd72b7369bc386ae8a4ff380ff655bb191c313b210d6c1cb6ecab8ef6ee16fa87653691bb4fc4260c76a8a06b9bb52baa5fddd267a2f46346acbfc5d9d9c4ada73609f0344d9f7d9ced060abb00e0e3eda086a4299cc03c50e6bf6fb29f7ec4e6950721b24b32616970a3fade8012859f24772a7755a4a5a33704ceda1903020c5b8acc7a9202adaf11658418f92e04c3110103157ff962554fa1eaffad15b5405a7c1b26f8c83b2af9fa274877b6e3ea60b2ba0973ea59578d4e21193350e5c58283bbb9c0dd1ce104d31a051c6f22e89005103bd965ee610103f6335fffae1987aa43e2748b685ca050964290d2be3cece74d7b32c2dc91018e8df0b98989c8620f6d2e9dcfb4446a027eeb4e9a3edf387cb4114c45d608186d6058baeb94cc4b01ca4fc0a261f1f623dcfa7f47fed8248e8fe5a030b74586c2c58dec323bf7b3621c51ff024e590838b0ad9ead334e1738d5f0cd75dae726948519dd1c91c901f086fe48b6de794446e1ae06b98025d7acf5ed253c5a4e9d716bcb49a316469e55e9d0ff926e6b6b63b553dc2d9320bd7baeb72fb3acb48df533c4bff24b483f0f6eb1d3449c4157f13cba9fea540652efca373c12cbec11d43e7e458364e747e2a7c036c11206a4f55ff83bbf95326b588c427f27fd5d1b05634ab5554ef1ad1e30ccc61fde15b2f9c8e1a68f4ec69806d4e63856427100e2dd19346e5f0bc1e6f69a6cbae58054c8248e3fdd99c629d1612c09e70d143953d6ad052abce1175878af3512f60a8a2950f5037e5a9fbd89cd2b2882fee5f50913b494a620bcc81b762c8f2bf0e394fbde952f01a22b0e8d9611b58a17cd9f868e0119bb9a5f5ff5743e3bf1b20bc1e4689f696ef72c7e212c6011ab16cd1f08b6064633f759fd4f277a6c7344de831bce231a04e04e1dadbefde52c18385a02acbab37920d42f40f01ad455ab76b545770885c94c492940e4163e19a05642798d37848b877edf192b28f592a669363f2ca531b612cd5f6831a282159920b927c7786a815c8f42d99b1eb622f43f70f391f25f79419458f287c3d466a2e7deecde5596fd0a77f2e4a61dbd6026cca8b5720a157e6dc6624a27773f051a989d55ac2d4eaed8c824fd31cb50ebfb7af278eb1d5c5b3c9109da967ccdb84403a4aa59e4d630724c56f28a6258e4b14ecb73138c20f8dd5009edfc510ef12741d020564e964031bcb88f2c3a2ef5ad90b19c87ea65314c3715e5bf97e2aa5d097cca5eab78ad7598aad93163fc45ead66d551d0059a8693fc7ce059f584b7ebdc16587643c861ccf5bc33147fb1610bf68177a5f47b51b5fa99c6e22901d9f30e0a42602985508b41ae0808369dd5df3423f374d93fb7a0dac3b8412b02cfa0406f0199a53d1a8f2da0746130286673f41144cee75859a6fb6199e9c32fe96947d56e5b6a9cfbd423dcf3da5d3902d324efb07488f770547d9449c3f08e90fa771a450a33c95d27a562203e74b590356ff4b4d495ee52b1d52bb07acec89c3ec458785ea81271cbe8451c591f325c2ba7e1ce4af88dff4f188f22fa3c5acb5082c427eda3d1107d89977a412dba54a87f1be985e16e62ebf435b51cedc4dede6658990b8001c37e3ad474dbf95c51c42f1adbe3947c03b5000a1b547277faebab9a5851bc0c95e7b780e0911f5fd1857170d79a2e7cb91cfbdbf960cf250e31fd7f50c822278e1f3905b2a4ef1967260673f97557094953bb16eb20e3c5513c1309789197a17320dc62d20347e7ef5cd8792e7ecad8fc7be2b8721f7df35af29c3209feacd76bfc25a86580f24e6d1eef9e2a7a5ac10bba1c63002c718345d2424ef51f92711f1ba34c308ba7325f1830d455bf191a469acdaac0e01f666bbca7bd004e9693e0b85dd65141f3b6da39739ca724b91064c3f797db345382dae9946823acee536b4d92329529cb896c4f3ddd625ea691259881bd9961146361dcd5a28ef93e15787818545bf2d4ce38a30eed2dcdeb11dc063b43f40802619b07a25e1ab2d0eae36994b4c610daaac25f12aa3ab58426e163ac0aadcc90cf2fb3150a53cf0b60a3f39ba1a055f32b9ba4459d45c5e912a733fdcf5d578b9a46cbfd77714a1617480b5f04ac6a1c6b61253ecf9359d0dda5d7c06d05a84021d0385a8de9b65d096e9b8b94add6721f69de7c9b4ef1df47d7cac5138c13bb351b9d290a1720977a1dfccc502ad8036b66b0595d4e28008100ad345a530117157e67312510a04332b86ff27864a639ade447429e9cbd789fb4fa800d8181a3b40170d01cbea96fa289a3bfeb37565ee07447d5d1a7f592f40d6c82b924f445159ad50952ca430f3f63dedc6bb1268f8f84940850b135c29e6bcdeacc4c8e5f19fcbe916f6f01ae5471a36dce85621847f2615dbfdd7bd941ddd3746bde562a0273ee46f554994ebb0dbc16b9dfbbb98f65f2438a2e7c7b2ae652c7c549b769a27cd04189598eeb6dc20a71e53658fa2ad34c8df9b0b2d3005535dd587b0d765af0bce20ea72d7cb61ed8b542151910903381721983dd61893c299bd6c878a4bac43084beaa42ddcfbc4967a8023b390f05913998a721a9f6280f0bf61ce503bf3a195a18f14b434b4ae0ca8c8748d6adf0607499722e0c8c7a323d249f9b446986a9c817d13a941295dd97b006083e07066075fc91219bc83121cfe96bd877b8c16959bb824e5bbf37ea0a4b6260e30ebf3c7c11acc27aeb0f4d7d726b61d6f7e8ab65f89ca7d17f6577a48f851f64861c417e46c510c84965cce6ddaf324562e48b3510abb6db172da0d1909b00d261e90ee0b44714167ebcb3bea9b708883d55d2a6a1e398183fd6adb1ecab83951434f66545684f82473afa577e04360dbb935f696131036a150fd573aa80616a7ac68dd0b6c1d899063aa87f64860516c6b3aa2fa4191ed6c60cadb4aea3f9f8444246db690f4e7c201b7b23224b3d629be0c840e4d2c1e3f9913b8539c0e71d9a630656e7c79f66d13d5bcfa60ccdfd9a9f4cc03ba8fa2143d90db6de1419ec443ae5b9914adb83875af3c2c48126f69813032a3c56af22246d2e7211321693d96d584e67ccac6b647a597b54fa764e04f8e0666a061a1245d75c3af41f3b4deed4127255b90fb5f33f590458c65c409da6b53e24a01f06983659107bca9611de809635f8759680ee6e6ce18f2f4802531141d4c79abbd65ed1d7d61022b9fb3cbed027118f66b7c5ee43ba5f15b414f794dfc03ebdc69c2f27b868401d4378906a93b9b36096c22d29354c66af8d4c5d3e06fb3b8cd5e0b3ebd9a9242e044fb024975599528776482a9ac302771cda1716aac02720b1fe4f000ac2e4548a21f7ed2e83016da15e1b4b30e4c7aafe16550b392aa1f0fd2488d648a318c0b349e5e6710fcf443791a0e1cf843b35a5395c64487c44d592edaef916cfb122fe8732c47f12a1e113217cdbc45a4280610ba128df377051bccd6938c5660b32764729de19d69134b82434035f5a6d96eae83753b3063bb89e2df23d7fd4af600c38af22b25618c79ee7726dd7bc0a3bbb8fa974854884d4ed3c653eb6c8aa465d15df8a61b831741b910f9d5f1d816c62a618907d3ad00584827df044bac09205ef63fbda7fd9b6ac4d9a03e1724cc152fd96fe98e6fd3576eb2f6eea7e5c864200666e604c8ccd2bacb80ab7b4cb0d55fc1d87d07b2d4048d1d75f3e2cea47dcfb177df42e3cd72e225c853a7abcc67af581cd4b40b68195058d4190bd582511680344a75669d6fe47fa39753ccf95520af5a5fef4897dceec88032486371f1269d869a91cc1bcc9d5d59e39a3628b4e8ab2a5e6f62ce9f4060b2691bd1fab9424e8118e858cd0d4266a5420fc16d4a2fbc36c26c3ef8cc86cdcefed49a6223fe2afacc1eaefca7f09419c7bb528f053539780677b81b0a972a3fbfa5b5966329e7f695cff4f6cd945eb1ca7a54cb58ab8456ac00208ee99afb29280882aa685872c0abcc4cf8faafa55cdabf31af0b7d67ffc2e953b39d844da7f9a45d31b8441a9427d3b320d912c210a5f238a71b13e6d2f26de7e98b36dce58d7b68f96f4192d95bd027eb7c7bfc58bde7a6d985b0a95a37fec420fd97f8c0b2c29ddefc5c3696c381f8b5a5664f3016ed9d2f4fb1860fb652b69266f5efe2fb9f0ebe80b3b8325dcaf116c8b9c169314f07d7a2801ee398281c0860a86b09e64eee1f5814d77f9db8970879c951f37e1b6df9154fb53a74e906bfefb2d0966761ce5bcecf45b5e80f1b6498d1820e709bb57c7317df2f0939833504e69b09d081f48e7f058dae0b0b833b1e8b3c39de8dac95131dd1374e423ca36352afaa79b86b4da5acd0997a3c56b41518b99ea6c68d9f1538618abee429cf6ba34bd5181113c5f36c6a33dae67041eaa8f60fccdd7a803d7fec04e2435534e6ccbcaa8cc87d5fef9987d18b973fb526ce27f53c62e5040cfcaa60bb54b5c51db19f7544253086a432621627249085e6dd11c7f7691455bdf19896b39e11f60291693c64fbf20db8b524f5e60b0a03c18edb5a60b7c63224d36a186f2f95306da3dca0d634604d5a520cba6c71ff61902006a5b7c44397de58b43af494630a276abdd8cb3a162cc7daac3489729f5034ae6f74265cb25793856af80a516bd4e808f1dd7f81a2267474af5f2c0fbf2677344916b90ebd3a909711e4662d805fb3522d84e268ac307499e25fd88002f7c6d6d367652d0d0fd5307e649e7fbe3a0d0079df0d763ed8c07a65f6b8fb206c460ca24b4bb214fd430fcdd5fdff5583aa3f91068e156030f863ba0156dd896f7085c7b5cf7334ae62ed22360a2d817c50429cba0c57dd04a539c02156563041c35967895fee4276940d9cca4ff76cb8be0107c02f88f66283a845519a79a3310447f5255aa2cc64d0f95536e939f805be8a4dc41f4ade8f986eaf944dd502d854b0817ae9ce894cac96762184b1e7fd581db216bc2044ff8b3645823d8b15f6412b8d2728ef66150d25bf4432cd938a010fb134f15313aea611348423204f8e3f47cda852b55ff465567939234c360823ce123465e86a847e01530576f2b1e39ed7b7377d05718b36ea315e2753259dc379eb1856b1d3f2d2071cb055203665a9dea19c1c8d1c44f85ed141157c8b5b816792222c3c9bdc06a89931e38719a74bd42e889ff990b0dd6185f14fa4a15f0990187af476c439e608e6a0dc62767def33d433cafd397efa7ff66467587842535491ff62450019e93f0de5abd34da731384d3dbea8549b41851d1fdbd85173c9f58210c9f9d3e47e320b4ab6c6ceac00a4bfd6516e6181a14ee0b8a3b6e6d12bd2812f95728ff26489bc885ecb871d82994edbb4993aa15ea82ce412d2d21686f7f481cfe6656071d0cbcaa6d289e27a1438fcb411db67c524b81782cf2c76b9288104bf6adb85318637343c80a4b12bcb6fd1095ca7ebd0911a049ac833e6f70f592163193876f9b39c80f323f6455b555964f91761540c482fbd25e888473dd25b0c26119accbbf5f2fc3311a67c2a5ff3743f7654c40ec91ac5c6846605c914d61de32c1c55fabcf7f7ccb67ee0d6cd9d67264575f2aa090f092f1c6a49f4017ca87dc519fbc774de1af063c7f5ab87f9ea28e11d440aa6c6f0d8f65ebaf136ad5b5deafde9c07b9dfdad807627746daf810de510b527420ea7de3da3fdf13ef438b32253526bda14f82fbc6da442d21fdcce1a03cf5e1f15f2e92ce76a0be5e9539ed73d6059e697d732e2b9bce82757a5aa0ab74c42731c848abc0c442135d6fb8162b142e3076577c7f13314f5ecc113182fef068b2bc0524e12ba3f40d61b3a1ccc0df27a156923052030615bb8a346ffbdceb4f07d8703dfda6c1aacd6481adf254b35dd5bcaca578368eed441d3a6feb7073c28f6c6872eede266d0a29c65b2fc51b4578cfcc6d365c242632dfff222402f146f274ed109f7630a3a19226d6d9989f2bfe53922391d696dbfa266d4f4f438ecd06590118a6ce28f55aa9cca8443c9561877e7125ef1f3237a626dcbb467d7722a9ef65eb39de55b2c85f1f0c8f43d985815db6e51c081271b95e67c7cfc000da150c8c93b66f4cec041e65b0a8f899e8d19b8350d4cd45c626cb4a8a89f9c41f9c38d7528451bfac83c997df5628004654e513f539556ca5eac01c9aa1557e23cd816e13d282ef0927ff1467be1bffd4a893f890639c742a30d3150d9d9748c81a6e5b77a33d89887a5a71dad45202ceb855667d9bab072819ac1e64f80943c4a6c9adc0151e1988912cbf18936b4d01a07d89252783d96362390d2e6b30c4d1703899273e74b472741f69f70f7ea64ae4f14c26018a409f46028d31403f41fd50aa8c7f5e54cf81f1cf1564fa58510f00affb4526b5c4df0af9802dc00f307ebccdffa847cc8266c8b316be6fe09424240a156b8b6d2f9beffa4cbc840aec77a5015d557fa789cd64e52cfb1576aeec053cf4663027268d305e8f2c63d0bee35a6fdee2255d255e30b790cfb663dd636bde3f17adb3b233dbb3cc56d13e8bd2a82cdd1e52cc756fa520bb41b839e2259ae9fec386aca1d6974ab2c411821e5625e07248f0e524f3bed35cb54c503a1c8ec3a277cdf182882db3eae64df96f1aa25b8dfe3e8a1c2ead413b2db2513ec601fc93d6aae1fc6a68bb7a18b0d7295c2937380b427ba3b67058017996cb0481009cc9e6ca4d373bbc2b126590ea564e2ee2d9bd6ef9417709fe0817b495f48315a60c767e3af3bbfa57a0234ea612c6a45ddbbcc1fbffba298afdb46afdfc8284c53d250083f4a01f58928681738b84a0a661d611bc9bbf5d291e31667fe8ae80f208a42a2507f61bbc882b8f59cc303083b48f2a2f5c7495421401b7e549f56014b89eb22683d7393da7eacb4d652d9aa818c12068364fb6bcd8ba325d3659c0d154785a6dc2d8a30df13170d641c68e9edc5e311be812615f7a17f9fe61dea5c0132021604862d34382aaef20543a6e2ede64ea1c2b391b1f67eea8ab6d1f9f7c689f285eafeaa0f15a1959c349a91d65f63dd98319283ba3536e61e03e75dcb2822b477a386eba179069898352c05bf55797386e5ee7ac0c32c55d9e9502e66e9c1e7864f9eff91e72e3fc453deef0a33fc8718b663b5e35711666763d6350cdc0c81f04af79b49bd86a52039653b20be8574a0d98a875b88ccaad2b6d6e7b691ca41364e684cbd9a443f034421c870f1f3ed0ead39df02e241ec4ee638189fe86b3851bdc8defa660e4b3d06430431fe519f4220aa7329582f4773d775404f9de6810beb695606eeb81a675c6bcc437506abb561113aff5af8ac2caaa7aa3bdfd857a3f562f8c25719224af49af9a1456042e42dc16be7594a2310e95c4f540cfafdf4b9569c337ef25faec4bb5d58e137a98e7c468b3b730b5976b9a4c52304b5985f89c3171ad09e03af708798f92bb71f3039258fbd87fb7d59622fd014fde7bfc03b3816bb6d475827cf63348762dc07ea064880858871f456ac71c555557ca84ba3598f52c281780dd7e22655db21ac383712e62d4540a1bc5259141d747b5d4ca6e7eae97a9c4d99be9f5d1fa4f0c0c14bcc00c53ea6ebd81bd65fc81d6bc260fa62d39e1ed166eb63f72ffde431f9f2c4bcce1a6fd0e0b22964ae383b63005914799a27ede59075b8024b917c13cd9f4978494f19117323104c91b9ecce0d3c1b4c428de3a75ab0f77a18b7201ff3a7443f3d30cd263042a8b2a13bbbd51bc5c097239b9e76672814b5fac829b4b82208858921ded348b01ab9cd87c2eef952113dd72faea3a5ff61c2eafaba0c2fb8e94a24fc2c5419461a62a7f7e67d5a2c2b2392bfcdecdb9424fef0fbcbb669fa62adda83c40c3e9e4d2ee6666e40c2fc4213c929620eacc2988764c1369f26d7866fbfd389a8100325ea3825a08e6ef4f5f71c9f7ed2beb712bc7f6f9a684ccb2a2da76421ca6d231d4b3f64d42e1df47e3cdc920927e446a272eb676ac13470aa2437bab164337e247621affb9b336f04adefa951a0f4e6779a0b80eb93fa45ca0f17101277c8e35168bd368d701fb1dbfe8a9123af18c8e9b291269a33cc15fa1e543593397c65a444098bc334b4a8d480d2ecac8a37bfbfed27ede1e9140dac2831ad2f4aaf340aeb185368aa3d55e62d3957eaa8744b8721bde6e92ea6c529aa4d62dd1e4e9512e24efe4e7e2e56b16b3fad3958d122c1601433668e4454f17b96ba32151629d59dbd552e5afa3463f8341c83627818a5749dbe8bcdd9914486a465de1947f867286043e10688ea868398d180e24f2854f985aee6f3f51ac1160441bcbe651d6a9a4a8802eb51a60d6f2a8deb54fb3479f4c328c5c63eda9dd80540b64cb8bb8246de1091f8c5bc33ff1d39d1d35e8ab4a84f51fc5d220004f529539139f068071eaa9bb62e09792834606cbfa554bdd67ea2502aea2bcb1f7388eb38684cd0e2680114a0f9cf5b72a604e8c36093b50c1a21ea969b0698557b72f96440e7c4b86fe9e8b16866fb6494d9b18c64535abfb178fb5f7f56d4eabaf5f52ecb15b0ddb4fb3bb567752fe137acd45e98a6fba13cad9ca791ad9dcc2c055fee9985a88090f90a9c3dd119f1751a021ebf789d1df2e83c646c1f18eb014c5de45f6b65eb275db18a19648bb69e1d97f11a96099794fc50e7f025251bcb4f20cc08d125f4ebe124232ca9b044e31459cd11a5a3586ca513d0ac3b258fa2320193ac2c3680848aaf50de2a693ce24f1cc4fc8a9af7ccc6aac77f8b133ab4da8f08c47473b2577af45ff74a753a0d39fb6431630a15a35f482a302eebaed5bb967c6568d33b0696bc38271bd7d07886b0e5a6cce73f542ea60290bec14335db6dec98a3d06ecff0c17d7af72150704428b72e739aad74ded2d10ce453705cbabd4b78999e71e012ed607e55466ec40d3348075709e60bfa76e90dab725ef4280ab3c6e3253379258b874d809922299f231729f0b0665880a5dc4e097288281314334e6cbc1ad027aded238a36a89f50b0423cd68e0b6e658183de44befb188a1530a4e07d394567c9b60257264512c858a59a20d4e9d1682c428e53ac2b6b3945426142933250138a7723a0ecb5c182413a84b490d1068afd089ed14bf6b2305dd701445a2b1f5f50c07c3b6c5a96d389a22077a6f8017391ed34e0d1f4c09ff8e3d76b204e56389cd52faaed96b359bcd91cf0e808503ff49477442f241a179fe0469b3dd91d4aefa4047dbfe525f1889287388fc6cb30fe4e7fd98e9e47d96988ac793e9c960e5e461022796cacb6b64c7162873fd71f78c6fd9bf7f443a9beeca4424f8248e6e5670868c140d3f3b8dd1900d8390df7a9733ed2383fcf8e9004011f3a22bace7d3abf8a4ceb4fbf0ae78b1279b1ea372e34096d172c7c578c55b827af948897ba01bf6561ec48b1a71c2c75a370b85512f466de4eb81357d6bcdfa6f674f47365b6b66d890e8a9b919d9d8dfab800c5b2a10a66cd9691153a915fa69b6d3e265e3ad3709273d792ae7ecf8ecb23ad3826bdc44536d37b4446b1cf553c938c03306a7ea7599805c641bfe2a22fa9de98b073b24585e2ad765133d7dd251df78e5b7157d3f893aa5d5eb13ce64792b3f809f32d3438999f34a269fc38c0520d7f2c81e8f4f0ef53a0c505f04ab16a2ca432e4547d544844e4c913999a07b09835d457aa9e2afacbff6aef87400867f4f63e285de1549faa4b9e429e95794a4a74c26a4d1e14fcfcdfb497ad86621e7df9e03defc72ce3e86cd3a33d9544e951eddaa9c190bc5ee47c9cc90d377cb6a318d60fc30ce831d90c090a01d663803b46d22aeeeb814b01edfeda55c4b919064afbfc0280841c9eb76f7f2a20a723a0f4fd5551a6f25144d9c5c29d8d7f785c4675e0b9e1fc18276c864f849f0bc5064649d5acabfe51a865b82bd25623f0005da8a5332c09d300a9fbceab89ab2b9e1a8fdffda12c6d579270a14108699da7cdc10a1e5941068a808c4054e7a6fd0681282f8abb25795ff8a8197989a1224d91a84643552e7d15ab837614c73c04e65c7c1dbeb70b2fc88cfe07beccceb7838efd51e3d23151e83d3d576d01c1f5651b0cf2278c4bff264317123eb93e901f4c9b3250e2049c8dcebc55fa6c70ae060163adb4ce55895edefbbd43f1746530d95167d73ad7cb1aaf2cfd87ed702a0a698294dfdeee688e5b439655766c12519e92844a76878d27bffcfce1cdbce15648c480a3f03c524ff6cac01c3af16a799b503ac979e2cc4d5a10b66e60cc803a81841253b5b17b1758f7c665fbe560aa95fb8710405067a7b66ab9a5e0e59bd23fec72484a3b2c6fd11784168e2e59e72fc90db4516bd337a70226779f9aabf884c8462eac6024da2571e3915a978ea2092e04db08996528c46cb7af57050f421fa768dce01fc8946aa640127138229cc388fc8611f142e9074d93b43af231c23e44342bd23b292bc49af891546a60f0f4fdb4f16d33eb6a2447102cd91a1c453e2a121829c21e6766733d2804df556c33bad852b4a2c51bc9da977564627c560bc4bb651c036348ce7fffa468c9a507d73a4a68529ab0763de82016d120b6016d4421d0436ea2056d500bcfbb883c89545abf0b8257226b0ed831bad3c4fcc80ea780e87e829b5d83bde884b335871c2bbd5527146fa30129981802fb2ad3eee7aa06e44d2004631a8319640d11fe653f0a6b6507bb76c09fc7c04e06af25d3b4239fe95612e65a5fb0eb29e3f8204f0e9cee4ab5fce7bdc7e4ef3134da067266e00c38df1b225881276ca2aa8b7e8da74de5a06fe60d91ea4faa68766a3706dc5d0a843b635c02a29da88a87ff5a4b70b2b3964ce2b708333e9fe281bdcfa99242df2e1b99a60b65c5676289b5b563261922e00f849d487a3a9a482222e6de9d0fa3d4fdffe8d366f4f20dabb049a40da538b2f1c3f3b1ed529e1da262c10cb42cd742bc0dd67222fed9340e1efb6c0cef289a0a41ae238bdf37975d14b8a3dbe69e3dfab57171db04dd73775c4a14480d4f07600823974efa6f8ada98ff15b2154566e1f4874668ef24524004f0304078b24287a82371cbb9ebce23fd28b75421dcb23576be0db49aec127f1ba1bf301401a263b6bf0c5c087b6e20af56ab171de4b3dff5e5d10d938f50803f3dcb5a98a464d679c277774a7c77da8d1cc1ec5bb21bb4fd38750769b0607dbdafcfd85793835411fa017c8a38808e72d565d9031e903df19cf22e5cec60196db4a0012064fb879ebc2972f8d200f2e0abce69e7653a881350e9ba7d0d0f864f240517fa55a7725776b7d2472c729cf5f074ef128954e896c19144d969f36c42fcd0cbb0afecd5fe2d1572b8a77599543a0d8c9792233cf0f983aa5857158b51264e8bf1bbfc6854ca176fdf1dca8333723260d2bb85b0888652ad7d8dbb4eb4518e1939c12a3102024edca99a59406872a3a2a52a706e75e3a95e7e55f679be17792bea300bb3a98e800a506cade3adcfe3435d6bcb8f0e958a2b5075e570d0b277eeb64de398f17fbe25873e2d2aaff126aa3ea2944a78ec6417fc1e08ccabaddaf7ecafd748ba320d17dc5205836294d9fce7902db847ee99db4a451c7b46ba45e372db2a8d13f562aadec882a27481434b7f360a8a229b921f3eac47e2116545bf5b2a59d5b2bfa2d97f5764cc0ca29ca16a125c4600835c776069f2798803802ef23ac217fabe9bffd7edc4feb4ea0bf3c776c01029e18918486098b3b37faa325819dbb2b7d1d3c57d78c9bc98f9e02efa9fc39210b90b51186856b762861bb598e60ad973b58ee8f7667e71a74bbbdebb84a3bf90697f39e87dccd211a1a30de9fb237ba26d719d859dda3c9a17659272a925218eb61986f75f7f877f1f737fa98f06791ce10416edf46f6c0eed221028e0471bc26acc0f679c3b92d585d3d91ae689645cbf394b74cf1d0f1729449dfe243671aac87a6ebf7a75affde91aaaa7267758efa478df6fa6f1cbab11e70b22f9862c20e809c9b7adcfaa7d98d19645d778faaf28564d90bd7f8c8627529c6cdfef5018b77caee4af11659444cbcdaf86c43ba67fb7d83e1117af7b8d3cd1a5b59ab0cc5b41483f762ed554ab7b1c03ba971ed548111735397d7a486c119621a90b76d4a7eb47eeceaa3c8e5224145e1bfb10096ebddef1865c8944dda4d485d48d9e7ab9f84bdba292eaaf04ae6ba9bde05fd61de1b49a2c3afe2e96d0287ff6513ee70f91875c15c499056830ba1fe2978c7b813229b427973ce7d6329a890673ccbe29ac032191ce586577570caebb4d2777d84d008e237211c0c882c732dec8cab968aa9b801b57dee645f38ed2101657f4bf7832fd2fece1252e549ecdb535250d4b4f548d2ec8de84d493c3036c168b574c220b6864685ffc743ce38983d04ad44c8c9c0976960439a7764a6cc7db0f9ad0d5b7471810cd5a75718d626879484ca3d8b206f9e30012544b330a2e5a73b0c84804ad3a45816302f77df72f897c2ef1e269ef4bde2f069746ea08698d32c4fbeea78a597ba1aea56c0cd46aba5f7add4ea84818dfab5da4d24331a59eb41b13aac5e9b4f68f806e2e68f29bd7fd2c3fd4038adb9196bdb26a529166d424530475150af51eb1141d0a706a553f1cd8b895bdf088c6fbbfc94cc7aaf57949b9fb49e23f205358b8829267903620f8dfc966563b2520ccfefa2c55a42cb05cb99fbbb3779c44a086ab4e317b6593f0aac46182e4464d931c744a1e7e3646eaef8893087a89c19e40452e7bf8c96033b5ec8b4f525d17510f9aedbc4dc928aace9aa553ca55d523a6a18d8b87fd89f2e93216281b7c7803e3a69cf07468aab56d2a16c9926b5190651216c34083e1ec17e7b01cdddd89258ad54ef5f877f732f581fb02ea48f1c4aa2be341f95e7ea5007c10dcbe1b8e6f139df26cb7ae530d10786b4546bb0c2d2ea31e64408e1c1a1c2602a186278304e086e35b676681362c744945ba2fe7e2dc1a8626850619227c3239900eb3e5f905f4e38347c6d97f612448ea93bbb56845c677213eb34962fe830b90e47952ae0c02b2054343118aafffec2da8fd0cfb73f943ec4508229101aaf25242541840e270e0915030cf322393464bd086ab498a6be482f5a7b47063b5bb6b68caa4b529c9f7afd6b57afba87fdde0ecc237c205887168ee49214c2ba9dbd672a021cbb10d0599c100a357e0496d5d1ada6e8c667f5cc611a6b37c62cc9d62886fce5bdd00c14d487c5d937a07d99cb5db86e4e6386b72f0bf9204a5aae760eeb0099c7e2ca90414182d7d75032e1551b6b2419cb251b20f6e27acae62bee3ae372dac828395634baab2bcadc221ffb058e3344e7ac168536ceb6a9fa5589b33232c7db6583d74e8206a8640835cc4227d57eb6bb0d62afb22a1cebf607be903ac5b12cb17a42c73e62eddc75cdca6256f73968b374975a93947b3d1af6fd9792b59c196bd7baadfed6abb9b322cdbf102bd75f28e2babb9d34fe674eb80e72a2a4f617453778c9f86dde9f04aae1affb34941eb7559d426bb57b3254bad34cc088281019dc453a5c7ab9261599c6ab10e0ef365badb4668f2550fb15805ca6db9dbb95b2b90f75f10a80c10565c251b228e2d580f079c237b2f828924e27ff1e17e948a2a8d86da0b77789b66f1ce1c63b6654f2d76cb15e939db9287db0d547558be57708019da0d96c108f94abda8547c57a767cbbdac0360db39d22e973487c12e0460e1bf0bc25d4c6573315ed7e80bebb90589db622ba9b8ab00903b47157971ae8982fa094f045816d7f2c7e0676218cbbd2952f8c66ded99228f5e2589f0570091e3282a720463b487fba73c41ee87c192c0bb4aacc3c8ab615b7ed1f2f57b4cc3cd0829a52ddd6575a3b18000e4b0fab9f64d81f517c67df6e9f3d22b9e13336fd2403b69a26a0b09392cda32110e2d932d8a4bb31fb07411d5a352e633406a5ff945676d79979d7110bbbb852ac61b3d9d99fcd794a91793b8a959525962a441e11b5b46d295a3f12244ab0bf556ce83ab6e041660d0c455d74cb92df4b2dede35f708611dcc8fbd81e7b8e9476613202c3be5690826cf8beffdfc6d62ace3cbdb57d914d59ac16b62e8240b7937be8e340f55ea8c890ae4e28ede11d12a6454cc48e7cb74c05771b6bf53884e71ccfe05b02b3f626f3860245e9956918a1629b57e69508b64b4e7aeb3e910e28744d12c800fe3c938c904afab4035305567a7bd4fbbb3fcbc1e3846b9b0495a67b0db53fc87f18a225fa8c6cad7372459d227db7ea6d4cd9b15bbdfdbd18cf6f6c8caaab22127a0dd1be303b4d0a5a3ed54acdccab8f086b1989a2dacf6597f6a83368c5b418650cef9ade3880f3d9de7c5851f9147abd31c603333f0157546ec169f2ed049066830b0c39c9a16dddf8667dad0740096cac8d0eba6dcff18964ec2d2e818997c90852284c8bb95f56592cd35b114905b5cdcc45c460ff7f1a8b9c47d876226a999e0ef05d5ced8af3ea7f3e242f5d8d728627a0c7aa12703aa87d7421bd480324159b924537cf58761b8f7d9c3346bbc9614052a50580dc3af39b3e34d78e922ac813f0c015037ff111780fb98f1f8991df72e5b8bf18d2728fa9c89cb18fcd7b9930b8abe826f392df7872cf38311c63659c1482c996f4ec0381e4e85dc4229dc410cb5039b35aceab2c1be55083d8bbbe7a31a271e28d32fee9262b1a407a7d3f10dcc7447a8383c43b2329e97202ad6460b82a413e0bda171060a3c6093379f39b2f0a17661936fb9fb2854f94ad5ca4c3f4847d404fd2bac08e70767c70b1908c3f92278f84c72e4810e84ccfe09f6c83164e708533c2646cf7431599766dbe23ef8b351db47e79cda11c368c851804e7c6c5e082d52b263f71c08218fa3a449fa19b6dd32aca48a5b30587f4b540ac63c0eba268e57e216616b9e724cf7565745e8530902c636ce0d6bbcc3b23ac02c5c1916a665b7c95720475af99d2c467ea0aa5a2b2f8bf5d7b2bd1811813b3a13ad74a63f48dd48808a504f951fc061d7e7de3f30d2e46b6e78bced2a73ba4a732ddda8a6b48df38e8b3fa6240f42923fcaa1289bb071c19e5ecafffba6e73283e3df6f39bab53004f21d003b48b70892d4468628019e7edb9fb959ae60946a1e1e38e96515a037a24d17d76bf49ee6a9a97bfce8a9cfb19459cce3b3781fdf472a3a2b162f27e8093ada6468a0057a9ab00796c936ae396d42f699828fada5f45fb264e825d870dec7e6184d85edc1dee51211aacb6dbee71796ce585ea3d1ee4e946433078105f50fba94e16fc4e7b61bde0c6c87738a3ec9886f8b832e11f74494da4838b2f7893e360452296dd9ddc8e1600f6b1347dc43e84d409855ed341f3c856877d2b07667530ef33130d4794627654f1ba26daa37360adbd40c101d9982c71554ce2d53eb2a5589425b2f7ace5b43ff27ed89d0deb85be7f6eb6faa72889b7bcf49e8cdd814daa2421e7fcf31b61a01699149e99f5df47c94281bc2aa5ce21c3473fa3751ee90ef61cd126a6a5214106877610990aae5384bdc0c860ed520db9b3b11c6be909a28ce215f74b94a72162bbceaa5e81be0e070d71536779140a2d6129fd756698357f90280d9ac9961c2840256683190e558507561e4ca561242dbcd9116c79c3232c787a97123ec479ee08ed8bb1e6b3bd740427685d26bf22da618025aa1b7bb03fe881eba083d796d9030250e15779e7bebbdf2455ddfeeecdfbf43d79e4af693480599ec4cc962e75257a67690b99f26c3880da1dca220a1a032bb7c27b6cad59d70eb554efc054e67b1993d022674b8b07ecab3cd5924fb3e66c679ccd4b03b1b579f5d81102f686918a0ff92f5bb9943ddfea8633a761b09a60aaf1609f25518026326b3b6a907e198d5fbd1f865556400162ef06b79063969c964b8d031b0f6d16a4d8eb15759a21e7992b13712890106e52470716421c4955455d5d9bc0c660c2915d25e565e430c976bb60d795b66d88544175acbd7d5b51f6b0c32fa7b38cfb68df384722283a6844885e815c7818618ad1f701c5ca89062667d85b08bf65289cfaf0b66c6484a67f8b2e98acf3f36b6619d7df1e7446e62f9bf73466718e0d20b5e27dfd627e585c0e727e015963d9d92fe4082f5b6f2f5caf2bb83d8a84dfeeed5ed534c28aadfac2cca80dc3c9a680f8ae38da04d4ef6420f24fc81ea21ef234ff46fd24acd7674d470f64b9bf6f3804f4662fbbf4b8660f5aade7a2ff3d13aba300c13ca654f173e13321451d9e85d1215461433accd192488f08b8f79fdb56d692921d746d00668cd275ceafbde978befacdbccb8d1e46b89d2ea5e1751da0276b3a7ecd3c9cf0548c68a249fc9b54c9da1abb83f571b79543949525bb4eaafff59da8a4a8195a89b6dd6eea439a8454b59b738ea52d5fbdf4f4f019315597690f7bf11e8fac5d72a0a08ae64f87545be80601116047be4ef91bcccef063e98c7db7ffa6ab8a2296e331a3b48168d96bb7214edee7a74b54c9dcd2d66915c6af468cd28c0c02e83c65722cf27ee3e8864fcc6d8a03d9b7d95e9522613b24d48e4d1fabb5572c21529ed1494ebf994fd52ff1f0e65f247b8109dbf3851811819df4019464465d7fc54bd7931d98232c4b1d53cb7ea3066bea9eb7a90e638bb64adb5da5bde830d880dc540491d6246be32639290f04df68722df566d50d72b96fe26c07e404f0959ca5cc81bf42861dedf6b64201deb9adc4398d89cea7917cf5d0e49f77f0f131ca302dab513ff215c993a0c07f0e4aff5ddaf4742ea468f249f58049f3bd805a8af3f8b43ac357a6c03ccf60e0355f40454f25a0843cf9791ad0457db1c429c6fe44e72f451f63948e5b40edf3f56cdc6979e520f69e8ac76c22db69d19c31b723d2ee6d5f6cfdf1e8e718a4369551544bcbcf0501d5669307bb9cf09a2636190cbe68864de79b1947114b153ffc067a4190dde1a9997c00fc79353270b01d6b0db81333e840b4a0730b2b5b5f4b2b6b8b526c8388b25b9369f5d89e304a737fa7e4e0c1d503d55a6e3e79c5967c68fa9b362dd6c10b652a42be673e7cd6f8372b7b4d58e026474f4f4e2a6a37df8ebea61e5cd2018b2e383120d17ede0fcb4ae89df5a951c9c29d897f7567c13b3e4e68040c22988b3bb734d97e9974edeeee6e2bdf6194e1ff8553f0fd3e6c7a7bc14284f90620a05d55ed7fae77331492d4a51a8037de474c0f2cb4e877b6cf13f7dd33dea6ab2e83414449ecd8af2c47b4ad247797b2fe3068d8a53cc63623cd629a97d8174d65924871f2ea57baf589915b24e9a7f49334d05886b5e9a238ae36c151496324df644065507d000c70ea42d9e12d03831a7978e6d33d6a8c0ffdbdb972d173150bce695dc5cb3223dd061e27643bf7d56db87afde215fc1a43c78431cba36e7fd06eeb5cf98250b5727213a048e27657960ad733adadf3a5ce62858a5301c0730f54484c03d075e6faa7d1379c6a8c949736a1503f8766c44c5f41791606a2e3bbb1db48d0407d768361afb9a9fed4183676f21e2a5cc8007c68460f1a5b2286391090840b2cc0f9d2c2d81510c4f7ec75dd1a666132cb2f180f25843971d2f32a0b8042e79ac6214cd2f5ee6782ab32df0b28036486b486bb23acd9b858c8cc5b18e6909ec0b41de02ea7a7b7fb02554ff747e69fcd1ef1fdabd9e81d14abfc1a248ca28b4646c8dcac67bd1843e64b210f3f3bbd6692ecc38eee452533457d2faa3904cbbe7d9a9a5fb9c425b8a2c1d930ad37a837319ba0d3d96e203e31c61a3668d01ed0904e5734e5193f4e7e7983a1929b7283fe5de6dbe7be747ae1ea13b2ca466ffccefdbe0e45074a5671f1663fdc3d8e56a30391ac0668be265d39e9878df47f8ef5b3a879ecb7e6d6a4ebaf7a084ae52278bd7ef933b214d01a89d9ff03eddf385ee1975e8c1d16c1c6b5b051121ebb98ce08777872e996032f032dfa084ceb2b68e6e3f32c77a589d94ab6fdd696d547105b89dea5d2ac9c0566f7f02fa8946535b0d86f40bd8bf308254feb299da5a83d73eda34e54d9fb07f9dd7e8a2d822f258424900779ff0f095650e8201512d61dd07e42f3d2e1728cb1b27d3a987f75ce2a52273cc1a97485de03ee4637b288157b2029cdca4a1aed9bc6a1031eef5b4ac1287d61344c831c54dbb50bef831b91d6904966b8710073a5883ce3f8cd15186d8e80cfa4b2bc894ec16ad9715e191f8d30948bd0f5f299d47d61a4a205e9227bc8003ce1a8733c37b1c34c61fbac312110ae0773689bb0d4d607a0687519036d8b3c902992d644be124cab83894b7545f435cff5e1c509923aae009acc164bfe4bf4716d2881ab6cebf4d6fdced99f557067a12e7c15601221c4c7306d371a5d1d7ba45e69422b24c3def1af5528ba60b45ca041f881ec22b573f19898de20fb22121b336ced7fb60af9ecc3c39745682b5b33c50c61b95afce65da0028ae1f0fc8ea1de8fa56fb72a8a4129201a31413ae1bfaed10f668013c6611fa18b1dba59f3428d3c1c30d3785fa77237b066da79248704798c6cc7b797bc98edf0deb133b67699b170a2db85089b9f61f8265e4f87029a9b767fcdcf1d4242bdebe255293927db78a10946d19b30dcb2f1d0cf66422643b7c5986c4292d4cfe317c31e85e6139587ae1dad9067ba16fb16f0fd5c069be7099d7959aaacb7fd9101dd1b77e5d8eb0e3902efcb894ed0910951dc0c17655347fa312f6f7b9b82e5a43dc9cb36f84adc989e462f641f534f36500819d842a17e6e9d10193b6100fe9f60b1de04b5417aed836e80a86fc797767ae85da4c5de9c9720af1736eb8d241ba6848ba770e22d99fdd3af37027ff64e23c9efe2a0d2f83e26ffd4ebf98798957cb619467047ad7306cb68c78c803aa5730243ff90a5718340262ecacb91b180cef740d44ba9d6baff38a9336e22ce760144058c68a77895a79b2c5640ec35e31b9dc0d5c8263d093e18bfd724c5db6def3eb01beef0c89ac8934f53f603268036fcaa0890c7faa49ce08a50cdb1f0eace99964eef663d34fb8a692dee76f97ef31646112639a32b661f37d44b5abe8acaa2a3d675780bec27e802455b83a925e9cca0b3c9d439eb4cfa2994f0d06b45ae5c7b86835d2e6750a1cbb945704be208260437f712a0e7b18cbca8773c1968f9f5e3ba58319c57c0659e7a5597489cf5dd2178980a82bbf656891d7fa37e770b9b3cd31d4263727eb302c9e7a0dc5ee3ffafe2c39e58a46bab2caaf85c1a6dbe235bc906713a7e5d6381b1259f279aee921816cc33db00fd10d7f15246a535eeeffa1648d20c5554281fa99db56b10ca8a7688a513d18575d03545280ff84c3aa6cef7bdee37f77afffeeaef4709a1eb44261a1a6dd70e87ad49131ed8c89457344f74a2df07e390e1940a1e09b3fd316359b6c1d16bae7f86e18a1435f9ca6f9429a8931c4c3e963cef77feabbbc67b8a74115e2839aa17d6bba86ada4e090b061b3a3ce947eb06da074c83d288cdde2bc23f4a5941cc269a2baf8750988cf8fb8c4c674d9a274b7a3bebfe42b501bb3721c4f3ed990049b9e52c17943154be82e00e1b3390fe9102a6d4d1468d4f54fce2b4d7fdb530407a3d5b1a126ad67385d63b71cdf0787200758f6f255f69a947eb1ac179fd2eda77b222cffa22c8fb6c02c52ded6b98aea00a6638a46d019705584234d40bfc0c60cc1ff090f795c3377b6cae008b3d2a202f146db9751e1be19c8094239ebb02fc75250670a36bef8c0114a24001b54a65cbe728c864ea66b0372d2de7e5ff066420afd26b0c1bb408a006d139b3f34caefa746ce2019991f92b9177819c7a64f6c9afb27b8ec86cb5b0c1f2b3efe53309093b6e728de478c81ba9fb5a2b7a1c1aa0726c773bdd5b99f2b5c9650ef2ae0ca9beb35e5c7820f1768663b5f33cfc81ef2a558bbce8430a08970a2f8b5369e3a6e33b0be78f6ff0dc66f83fa262de64b90311eaaf30bf4dbd1fcb941b177640c8db672143287c9763dde25e377ec135f7c3c73bbb9971d4116e3473a8613cf8e2a595d0220ca8b2ac93f68ce759f451a4922a23abbf258752d0cc65e63bc0f1182ebd08b1df4219157816d748a1c27863ed60b9a3d0924aedd5e7a54873200703428ca6cdcba6358d2f5fe52a3152b152032208098021e5ca25a79dab3c22756c9536732d7470b178458d6feb44151bef774d25cf7e026526880efb60b451e25572d7549fb94cd98f256aeac7b08b1b6dab7c74150347f7e51d8ea10b23201c4f1c93933d7cab2b5e032d50b9c8ee43246dc7d5f826b1430175c735c81d6aba9449faa76d34bb95912fa1ea11bb4d13fb691501840e1340ba5872862c9dcd858a55389115d30ea6695656e31c55f01b59b5ce675ee05433d15ee2060faee2310a7cd442019c2392e84f18420e7d22036cd30eae9a307a2f91bd248ea346a9df28376e86699c77e0e7b26e76a97b17c19005e5d6dca32f69d6bd6162ccf746be6ff105883f6286ca4bdb2c0473eb85be67fbfa1ae0624968e72b407faff9d390942388d511019842371136dcc3ed502ec06be5e4260bbe343c454059e3833754c457909eb4ed1a621e1ba4d8282c85d394e8bc64b0e14cffade7698f7e8c5b5303099b452f4dca5621d7d562835399e886cf2a8b32664605f5a7f78aabd8a941badf690699cfdece2e0f7444454441073de2a88848d0bb40944ee67e9c485f89e0d792e25473e132276d56bf0bcaa748f2ae21a71c408ac0ab0b7386f40b253c694b199ea411c31424772f0a49c9fe8050e2aedd5763fe0237603dba36494dd81a6a114524ef188283699f04f05e9ca5af49ecd67bd5f5cf7bc5ea705c41de2dc9980695e398440ab16a1aa7b56dc9d1034d0f3f34114ebd3b65f84c80de3929a874663130ef03b199530a61f7381e671866255e3f9a64f6aaa6c1bea63100dd56266ad598a5cf50faac0f866320d00b2a4f94b1d29be302c4018c25a098b03b9d8a61789c4682e54153dc5d281d5b927e222f140deb48021bd9052a3cbc6dd8fdd344508b5f10ff3853bb319faf227ce8e3f20daf874cb6495f7f097fdc3bde1af0120f80abb2f76addc17c0ec54a138355a12ef4c5465205876ed64e9a2348950112bb69866e1cc7edf5d2fbd8de05258928572c6dad2bd57ddcaaa479f315a5d1bc97cc9b07609480d8c71a22ed1f3f5f5ad9cd884b16b71deaa307a16887db52563df93fb5f63957b4d7739863eacf196c99475e19e62a2d6b04e825be693c5cd89ba88678a6c04e31a6d3304f48e5046e51e6b224b9a67f8bcaf7637632c291a476e543e7414f9f3a1c2197019d74deef875038dadff0ba9263569d0a6f6138a71b793186ff87bd2e17e4d0afa2fa3bf466bbaed908842e884653637982c404ad57c04134f7dc196524a3781944a380c6c5e68fce9387d0f0b0b4308d998116595ef1cb9d091abe9a70fc6bdbfc5f7f40fca8106bc2c5f16db41005779d9d9a1b6067193d4ee688365a961ba824c1e521b841638680e56a077e070b2fe45259c044f36d324846ffc688d177b9715356e54467a04fb45b37e9f31a1c7c20b80d7406410f088268b0f0db7bfa069b7f91668998efcedc68e0bca061f1be1e3d42b18f9fefe02a06212949ec59c45bd688a3b86781c64fdc524b4ba1c1baf1e7f16a16b110d2f77c096c2ee1e9d8de5aab04b5326ed901d8899d35f0e7e3ceb52a8f07b5b4e0e77ac0ca2f777d7645dac89827e131643c8f550aa6989811197dc73bf71d3fffcb9c0eba7698589b0fe5e4766a6428397263980079c09f368ab5399426b2df57cc5161345149f66f2a3358d2d442eb34f8747e9aff17d73ce03532b9de3f456aee8d43336e853c38d5ab2b597337ba12eb19ba8b5bb5362a5538ac0858e9a08cd773cc3ad511d11baea8a4dfe72f9f4a9caffdabf58b2cfbdb6e27a3791e2f6790a25902e827976b49739bfeb79ab737db6acb821baff5ee4146049fcfe6395ef46791733426189bcfcaa705f670d24f2c56c6f281a1039eaea507e3108c4e8e1a1e9f23b43634a23abc17496512ed360ecc9f37e4a77e8e26b55e90a54745daeb8fdadfd30ad73f536f692d2e7f62428f15e6bcac9c89499d0aaf664d66d72c4c3fc6fbf212db13e35aeff100dfded55acd91f4bd954f1544ab03e06985f23e8321b16a1d910049176abe2da2a4bfe5ff8ad2c47370cb3b8602cbffa0c236f7084acbee8d2b4f2a4c54e3bb68f52dfbbea827483bb9d272de3a5c046d9c5b8b8dfe0894a1c7079986a0b72c7923a7e6a682f5e51d4b3e70bfaac35ceba609f718a85b6f49ba7886799f457b1068ee9ef0eac00cfdd7a3891a6bde7c5bb112e4569509034f5d53bbad56f98ce18edab79b939800c86ed1ffdb13aff2838f3259e2ef5db27d5c1498a26981423af7db037e11c2d5ac3607030a7d1b9643b6077bbb2ceb1d1191554e6e0416b8113bbaa703465a5f808fe36d696da97b54416e5662bfd619fb645bc21825ee5ddcd6b84aeb2dcff0aa9b2f1b034a055cbee70a26d27248f6749cc5677e4726a0c57ed182da1b49a61ac3bca32411c87d9d98e3d17aeca2c77c4c4c6eb941d2db175b0f40b7084dab8d3b924f5328382d1c756f3233daa1035d597f3ecdd06362745e50741dab1922bf321fc3fba827933729c5a9a8a29e6220693e8dc6829f2e3478b8494223372e9d0ab27783ed1787e9c8d72e170d18aa4faecbb85fe345284c7279a302e3be7679da535b38050e17a3f0d159d4dff9e5629ae2e1768b0ebbaaf01627900ba37588f1e67cb1c5a8a3f0c31fd48334d29a2d4656f7ace07b2931493d5b3dfbeb5d3ef7cb19dd1fc96e535a34015228a4bcbabdcdb301eb9955f58bac1b3ebad34efd1a2f47684d7de69e001ab3048caef6f9719fb9eeacd00cf5f8de9d7a41497a82fec37b0e0142789151346a8efaf373bc6d02c6a59ebe427fbbd157f41c040c39d9fd947411c7b94053545ce36289848f9a89f37c4c2554e469e54b3971fb4106ae784c9f57e2dd74ecd678eb1610ca69f5884479667bc3fe60758369d4a0faa4d30838e47c3461943e49cfb525d7ee89ce93de9dfb08519bc800b4abae99eb2d98d598cbe1a7d8dfd43e33109e379a463c1f9caf636e4a8f12ff081e9f885134fb2bb1195ed10482a5fb89f2e72c55d3c66169515f843b91168d111dff562eb9fb013f43eb025f0a48ee0f42ef2a86a13f93e41883453e3ffc26781d15d3d5d89598f7384818718cbb472df3d7e13f1524c358c932b34dc2a39d503e225c64af43a4d9737d0d7fdac155048eef9e6378c5e8fd954cb187f3cc209fe57e0541b706d12ef03c900417ac4426f0dfd20a3db4f8c21044ff876c2ea87d0005eaf0aa8a3645c95f9d2d360b6fd0cfbfecdc6a7d7ff2b4441aa510c47c809df5d0dc8aa1623f000035f1eb54c18fa28203a9a1c7dd0b65cb63cb5d882cadb118718725cce93f80e814ea2e9ccda22a1ffcde424288e85fd1089b2ae82be53c0e450baa2ad5988a176a03549f83d047bb355945786c701c8675c712d5edaac5dbcf59e862369cfa6737401129e27bfad3a04f492f3251602b579ead33193d329cea1240019c93c34003dd9a178244c6566b97870ecc10fc18203f4dc4ce194a88329f9a1ae9904929a980387524720d6d4b55a1e56976282eba7b2f17b9219888226fdff2f7f0b614af2b8c9d56f855b07fbafb3c64eb1630e8312a48f226b100a35f017c36933825d21559573861ffd13731870bf5020c5e175f9a337b626d95f26769ae373ebcf56ab7860eedf82372217d11168b58ba79dca88e1ad18a719ac69a87e517a1ce27fc08f58dbc40d39017be89ecc7ad0b00175c55e641fa1d8c4e5a8fc8112c03c5040ced75cb86cfd0c818b30eec1c536fc72080bfb064484385f7b26b610babdec2ad890390fcb8ed58502b44ad66afd560d8de6f788c501e361670a47a7401725f74f1632e921f19bb8d329a8e56b2455c1c1ee1f32d72ffdcbf1ed86eceb18b3d96fb985b4bc63bbb9d8b378162fcd3de19f56dc395ff8ae7a15099f5641fded69e50671e48d3b1f5b14c96552bad5ed2743699d6b1b49641aa7ee519e153afa55be3854eb1463f7b8855c2a415e00949a264a87662f6230026775575d8556f01713ebe9516ea73fb98ce9fbd7c9b59786ef36de7eee43c74a58c3ff4531753c14688295cd2817ce482dc2d3a14f00193b77eaef35dcfbf000887e858c87d7ccf7db395e5620cf7d8c0f1c120b794865f587048ab0f5a628213d13288a6bade6ff1344881ff1ce194a55c1ee72e228fe80e224549d53c467bb8ffe1e7ee417f991f19e23736a96d77dbd0eb2048f31ea41044488df56d017c0294735d45484c5674a90bbe23f14e7e6e9aa340d866e4b47775887f07b3f98d779be6a442d3c027a45de7495c619bbf726900cf09e522c4743ad436ab8b34d06bbe5827eef1bd9644519e25f112abfd4bfc6f6eadfeb3d94bd4085588f960e4242f3f09d8d0167e5977e2241e92dd95cdcddbfe3dada09eaa3594747c4e033d9addc010e8f30abe77d680fec1337fbaafef915ecf7f6197d07ef77767a7c3e11fd0c07f5bd2675fb4dce04ada7f179a4c70fe078129efb135efda4d66ee87a12c1a0fde6f145783d12498eddc33fe477748e99863da5c08b4e68abbc0f5b5f0b7a4972aa8648e30d569e7e3a0e7b3c23a04e8aad81016afa54d559ea45b32974bd0805b6f0e9f9ab2421847a8ceee1248156fd13563f3ab7031f96da988e918d3139b15d508c8031dda1cd48a35cacd9f428111b67692809b4394128787ab8efad8279f3528a1afbb96193839f5f4d268552b715d513c1f89c1c309451c0ac46e0389bd8523d609e729c3ab45b5ce9d1695ea1bb716260aaed848d9c07756ce9846a50f5ea2067490a160226699139fdf79804109d3dcbd39fd8a37dd33497f3381aeb1ce3a712e3761a080ef2b106504b1982fc18453dbc5e488bc518bf0971a7008bcd17f7c68257e735a60cd32bd498a883a8ec2c5c3acee593688c688f456efd2296aecf8cfdaa749fc2c77a9585b74d50557dce241ba7f714071b67b202f00008decee0e92a80549bd71fcb7280695864cae888405bb956fa32092f7c0761c673558c1b52571c7a5068127a7788fa29c1da5dec759111c2cbaeeeac03bf795b59cbfe44e9f62b2a23ef676f32ba12106e37fc5394aaeea0f2bebf2afdf3b8c73464caa48d1b98775db8ceedf12ce536850fb3793424129db32653222d89347c5589bd8f57dc03da50e416d40322511fd3eb188edab2dfaeb63d80d9d6a7655c56630e71d3b7d736936cd8db7a7346becb866c23efca8bb4b3b75cc0f40400f79c998fb0cae0334fde3b05a1b253ee92c32ac1c589752858b32640bc4c77577ce61b8fe906ad987f069a86a8173fc0fab2cdf358403501538d2f2ce19443c79695e6cd1492fa6039e72efbb763f0b06688b9a0afdc07d2938ac5d2082d40438b63e7832a95f0e2315ca8946a3fc1ad7ae91be775b85fc741848faa3f23e469883be05c3dc0403c7e6ddb1cf916013247581d99e0cced1849cbf60f54ccf010e32175450026a5528c58fde44a5e366b5730877dbebc18ebcf5fdf9ffe999430b3c5a6050ed614c623e9496a709fde8090758c216ea2b4545e6c6280e4aceed7e5742aa6c23e5a39fb5597a7b4c361147200ebc96ee68ed819b8237b4b3e853173874e781136191734dd0553c288081f295d54c85cb27bc79272fef6b84b695b6b903265dfe5c24c004f4690cae7ba457d7a3faff8ca78d267d7676bc0bb18eab076362cd7ed3531772efda74f4b995e4af2d506e9641f7a2214adea1dc8a6f92b4cc0054e54f4e9d91b57747ebb70777060c4b4d1f0c88328d8db2a69460958b0c265ffa48b0da8acf5d9f9ac1658f0046df24147c6c94ff08709f7533238681ddb2fb797480a6321b58d6e1188c37235a1d432292a9e789ac89535c25fba7074db075f7b8e682b95a6dd28bed0bc86f06b7ab07bf59104046a2094f5b9185e24b1fa3dcf464cec83698fb4e63574ecea3c2f65a89c07239b86f5b37056ab2eefb819567262268b4aeaae0b8c3e1a54e32d264e7bfe1bf49c89d212af360e0d84a2928b5e62a1ee0f9941b07b043dc202f35a345b389b29ebea9c33db030c0c9a28162312e854d61e447f6eb5d5c696b94c62e210ec580c4fc626943541478d56a087ed018b805a20c81b461e5ac885b7e7000ed5baf755b4d0b6bd307e0620adb4ea1f6ab3368c6c613f06d128ef2f002612e1fb0af96617e2ba335e2e9cde87f4cbe53a8e855db325592a290331031f9cd6b9615d8b5aa0832fe008cffe7f8830c9ef4edbb76714e9dd7d2590e646403620f89fc092ee1e3f73335715d34b3691a7d2aa7ae562ddb2ead23b188f80d0c97a0cb96ecce697aa3ba5bc24527d93a0d4b0af86089b9d4dccd9ab5da571450015dce1e20c803523bf4d487d186f100898d8b5a03713a75b663e6bffc3e82dcfea3e335642de78cf396933ec8fab590936a672dc36928962d7aed76bed6e9b49166a83cc231373ddca319b9d65ea003e5df4bba5e29d99d988f961ae3721b8d3be1a73d411347de5376d947e6c322874e6ab544201da97d2cdc1765fafb18b92ecde6621a82ce3c14a761e508e554994af3d7236fc85224da6d5279685ab6943f4b7c4e3ec1b70baf7ce26efa562f7430806485d138d8770ef398e465d793f319847e17e6edad45d340ec3c4b53259e82df596a9a21930d184220b52f6d0076464b92967b5725391d100b2e4e18a0857d10ba30166e062849d648607afc0f7d42480de015e2e372236da61e47377e1cf98e5149a66428f2fdbb97df8aa722c5f1a21f2e83b2ab8714fddffab49d01488c56b04a018770a4c8432daecca4ed430b2f7b332b0e607469d7dcd4cca48b26407383b4311d4c5624e2546de0258acf90602dd63082d4e83b476e7d6e6a73b0f24b49b7aa426c2c818e6b5527be5c89f10d84b959b6c0b8eee450dc16cff0ed5a78c67a5c560c23760e290a4caff519e72996bbfa2c6c3b31595151ac15a2b30a2656cd6cb72ed35bae47b0d32e8b19b599766220963189dcfb530d77a8481d4d71818e4c54fae7a045f327482765210bc700c8424fe0f995fb4cb6d6ee2bb2e23303d501fa0e6a73f3b444d07daa964e1b54b27e094a80647ce7fa8b2b265931959bd1a9cec54e8059c28904f18f962f98ba3bb072fe4a3d0e3cfa2cef2a67b8b8f9378c20ef061ae017c86bc14ed3703d5cf34192f63f68253f07eaa1f27cd1b6486fb0ef20e45f9c39e7a7afefe09d9be4865c9356baa0df71beb4c85aa3d2a6cebc12c25d9ac35a07d97e9218c130837997d4c9a7122229de1473f53b8c724c144cd821d41cae0977b169fa6c6b8b53ee9506fab60a14219af8071a647a582dd1f74fed6ed29d6194f0509108e1fd620f059adb922108ffff375a2eafb2ea347a9eb8d1bfb7d2cc4cc1327ce92165d8d58be8d9c9377977590ff70184c3b00fcbec231164c28e0afa7de177f1d289e8d54be84f4baf5b9afe34e932c83f03188956b88174e7fcc9a3a6b7afb71b483a78d1e8ce02f65f79f2587bc3cd542bc79dcec4974bdc8432654df364b7890743d9b73261dd716b03d78d6ee3c89d1278afcddac8b6ebabf67fd9a82551c1f5c060671f03f6694f5bfc09d2f7ca479f8d5bb2722129c914602b18e9699441e7bdf609d8e8adbdbd30e0f4b7313ad3ab93d331d59e6cc34eaa60c2769a7def3bb1d344d629b69e7bbea4cf2a371bb009a141d8adbe4cd178de539c0da1fb860ccc884fea64b0acc1c37066de537b9fd4bf29c71fe84b240bfa66a3b9901d8f4bdf8089d3a22bd1a3df1070870f01cc6eeb7ad9f090dfa7d08b4673ec91607250b208ef9b36315c037d5f1cf4e113abdcf86fab66ce9fc1d9482cd22acdc65254b0aed75111e0df8110d200dbcd18200272135315138260ef6c27afef32f08b8622abe57cf593a2a76ed94f835e3a6cca55900390bfd3e95314db049f4f769ae7cdb8668b0b76c20f547fb251a191ead1bf1777ca5de2b8f9a132cffb0317c72b0b531440649f6a1dc9ff7524195e6d520d403690cfbf351cfbfbe3a5e5b2bf7a038e6f50c394f286c258812e2f4f51a085e10346ee7d6c030366d2995232cc9755efe94e107384c3208033ab099b356a7b6032528190e6955d991b6284f1e4d8bf4ce5e8fac21a54bef2c6d90eb5a8f3d8178526d3b465255a9e5cb1b1426954392b1c727bc71386cc634056be829d2292c892d64f8785c6b4af661e4544ca44839c1153ee0fa51643aba4cd2e55c11719ad8ebc8399d061440bf7e4d716f43113831646677abf200a01dea26fe07cd18e91970d74bb2dff60f40d2804e1e6fe4b8151c3a4510696eac604288f3b5668275aaeaa7ffb70ad17ad7424ca677cc609868320e4c715222411ec57d8043b1cb029f505551bbea51afa4578353368aa0c0be954e67ccfaca40f570e341f29ec0de5ff30f60238dc16addfd335e57228d6161fd28a53c20bc923b1b3c6d3d5eb28a0ee080efc4b98385db1343af0377ddc92f965775a44462390abdfdf66f411796f4c499b63c2427462f7a8fdd6950aab13e35d2093bd4a9b69cef597fc1bc7b7a514538e5f22aa1c480c107dad89c30545e4d15b7b01a460840af64b2f88d583df63de1499cfc30592258e75d28b1ef11b686be3d2d077fe020a470cb41b30ef1853a1a9102bfcabe0512aa5b9bfb23d30df94ae9ef065a4c2da140ae1def2e206bfd3703ea7e2b88229ae8c8aa33b352f17aa84107b3ff4b0c2c042cb47109dfb33c03e31c4e3f1ea82546a88df71cff2ae04e78cb2acf968583f581fe60f1ca59c148166bb377cdd1bc8ca4d8ac169b5b7307c0516b9fe06250bdf340f639daa7d11cb19247eb974c4fc02a8f6a4a7ff40c382d537e943df7b2e506526f71a3276294ad7026f19f10357d99c018e00a6b8aa52effc7951ef5cdedb5c4ccae019cacc65c3f62ff9fa16c6cfd8ff27a6aa77fdadeca4c17bc972967c07734da764fa6b52d45d883f422e08c9645953fb031234add93135bfb0cfd37d94380d379177a955c2b20fb2133b0214c4166aaaeda35cdc30e0779cd7646905d647f275034022a5d8499b0512f1528e5c2ffa8935ae625e4df2358b666c82e06ad49feb79f33b64afcb4e6426cfbf29af944853e4d381a50b13617366172e17c4f81a1965d50494bb488001f0a7e1efa3c4ac7636a23f101c7be678a6744f74d46a9d3ab5a9dd5466877437175b5551d19dd5660be81fc0f3d06827346322c2725336fd29406fb6c64203eaaa434595f917ca363d5b20ff076fe3cee854a78a1ae8b6d3e3887c19502855bf7eb009a37788ce954b2ea2034d1279953c2a1513513385e502325d8bf8d205e28d62c760f0152a9bdfa70b5cf37944de076140dc82ca63a63803f88f7e504d9b029fbcda7cdb9133ccc25ce247731b80bb88565cc110f716e142fe103c9f1fc32d82f83ef56ae88e1c960f2f30b0c20bb784179aaef565423040de842acb4ae706aaee09e2579279c8bfbaa586b18a84cdd86ca7402abfd7340bf04e19f6d57dd73a61b814fa2d5e74d6e3d855a9a2b9ad59a23fd0f3eb2086b08a03d0ce08077ae6f179c418424854c5caf5ddd8be937953c7f8b46644dc5d6536143abcbe6a954620f4fe4356936703becb277798f93bcec8ce84d546074b88832b0d8b6b63e87b0d79a56e55453676300003eb17e51a4fb20721b47591c902e77082f1386bb896633d037543f969552c121a4d04a5ade9f72b36b8dcad1b96e6fc488980bdddd69075478b66b07958c0208095c72cc555ca958e2f9489bf2de416c476ddbd1cdea7a20445fd4eedc2df67354b1515ee746e43ee440bb249d2dd565281dd8b0aa2a90f4d83255aaaf9e16f3545a2406063ae26d352b2f50c08bc90afdd1ca1eb05690e265cb3164fd45d0eb049870f332bcff98b1dad64e505a1cff2d90917d86d9e63e4a2b5b36f62f51b7156c679c69b4c4b7fabbfe105ce91bb436a8f0e78ddd8b2c613e22da2bc772a11e539b15587ec8826f11eed3d271a6b6b3bd20a43f33ca805c8e6d690c57c7d461621ca8b9cb2bc74c5e06d0b912bef8302e13d76297b2e4817493f1c82d306d64c60fc12a1d149c6511170e9c07fbceaea7ed167e7dcbeabe2916acb8e0762b280403d783f6e635a79c7e0eca857f2a9f51244899b115a99539680f145d6b6a48d0a1ee9fd5e758233dae3e08bff26b0c89f080618aae9be67426e858d39f5a8bb7fe361dba8280d76f79437fcb77be6efa727e4809ea320a725cbb8430eec9724e949772df67aebb5a911539bb4c3250c259104ece33c443bfad0f0bfe0c9ac5856291b3577b0d8ba3fb69aa3ebdd3fdea88a15552a69cfbeef922f2b11ee419d75ce7792e1098ee044e5ca84cec39c93ef82edef715a957e90afd1253fece4c5d1a9380d2734087fb155ed36fb32236116c4cd9ca89792de641c24621560ed91dfb60b39cf0df0e655f043410371d118be9bd9e789e5e646228b50cca2db5edc00a66bfea5cfa0b0fc9c8471ccf11039d5942a71e2bfcae95e60b2f7b9757985370aa394a5f7be42f52f545a6f7be9c5fdd58cfa95b09aed337ff9b615c4cafdc97cc11775ea7cb95e24228a2f90746a8d7c2a28750074e15ade71d8f92def8bfbe69e104a0a6a89913a17e595f8c464b11ff02255d8ec3147865de42a169483d56dcbed3727e522f360f548aee227e5199f0df8b8d937b452b9f8883c76145e1b834ca72c79e0c8f364b2aa4ec42088773f906ecb919d5498ab887c58b5337b53d6e53827f0184abcb979cc54838b214dd337a3b56338166dd1b4567d0f47ce6128cdb7c9453c218d20750d88f66e328873aa73876aa2f253fb0ab220a0b74dd71ee6ecc2b524b87f63a0f305c2d20c970a2bc44acdef834783c10b92b6700b67365c6d69b3e1ca612601a752a017247f0e5c350e33c0dd69a2dd12aa241be098641127255a1a6cefb6752e8e01211990b27b1d61e2666a5dc951cb9356c5a53dccc164b96cfb9bee9d17d4888e3746efb4999d601e0aa1a0a4aea574c75bb6af38990b6b90cd7e152aed8d355f8a78bcaf789e19d83413ddae7b4de8c58858a9acdd2cd790b8223a1b622fae029cffede7a4d49eea609447e2865afa33624e8baffc06b146b096d558358b675f27b63ba5d0ea25d1036bd1600fac4fe623bdcf38a4f8045c4402f4b08c8debe8bdf5bed9ab4230b56c41e61ae9c7c25d82ddbfcb82fe4c307b4609222600872fa8ae4275a63db3099d32f046bdc154eecd95ed1e0c0384acd31634dedbd69719c2a728b9a5b49152a2183814c4e6e362e3d96a0886b2c5da7ee2feece88489f124fb836a765358f6f178187c3fe2d00e6926eadf2254fe8cf753367a7141ce0d6a8e1df1d8265b6b30b3205864e74a2110d603086d4548381566a4f5e622344bd20e2b2a34c1739d8d9cbee8a897c41432724334c5d066372d46e4a2bea65e84df4685f32f3dfa804974a794db2f49cc6c1c16e9eb509fc7c1382d9683544519c5a51b3ccf21de83c1273753e127b958e7fc2ff9fb68904e33571b8c224d6e46522d24744f02e5b75ca2a251c3d260b86529de01d837c8027e3b8965cc7e64d836b3fdbbe5c8d37a503bde1ccd2388be1af02c679e6c02d4a2cfea8f94b7e5669ca79070fb7d0582d7119f270180f7fce955ce276a3966c8912ffb1907d89612bd7b70f1034a8d87c050a77a0105f9aa0ad0105867a82f25f4860cd169ae835fe49656a98cd1d20bcd0ce984d0e535a19a4fd6d63d885055d0cfeb29a1bfab2da9d0909c7b8d492ca2173b961f1c2825d1a8917e07e548da3a3a0c111aee920e6766b5a3ca3fa96bf2235210d1733fc0d2802b4c0aefa5c09df239bcba0c183ec442cc90fe27a2dbafd4e1c791aff374b5326ba16880a16d98269abb731904dd1f8eb00aaea66bfef72d5252931d84cc01cfabde3bea854b5b145ddd37bdced843340e0679b6b4e7ed2fe318fd0cef76d160543722e0c3eac11f901ae15db25905dca7a17b81c6d51869fd12ea569fc4b072d217786b4b4d73bde4b9bd9425bc87b33d6b1911e6398673939aa2f15ac505b9a1ab029b8452dd0869f392daa28adc942272615ff2db16bcf084f01ec9fcc2f7f6a632b2bba8c468655e985a3b271c25952b7ba3a9142a23515947e79dc051e75d70f84249a4b15e7f9fcd4b4b6887bccc0d8c1a8bf7c06ac800b0325d60634929746fca884eba4441a2d7bef6a23c70d99ebb68855b003623180685215918fc86347762531e44044078ece61a4a6ab0235cd99463fa03d68a01aeb9a37bf322646fbe9e63b3a52378f4a6e7380260db891d0589e138e1986e46291b37e4d3554b9e6f2b17a456fbf0ee2ee41f3f4a36d37f3f63d4dd080a2d1efd20a18cc886ace417e09bea81dc82a3485ee4939762430b35eda2d600f9ba3d88802d752990793e3d7eee4cea3884c1490ea516f5dc119fc5a3780a1d4c57ef268516e832fb95fe98e57ed8c4derootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootdpdk-thunderx-19.11.4-150300.16.1.src.rpmdpdk-any-docdpdk-thunderx-doc     rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0.4-14.0-15.2-1dpdk-any-doc4.14.3c@bk@bj_s!_i@_2@^@^l@^\@]@]@]\@\Y@\o@\I[Ѱ@[[['ZZ@ZZZH@Z\ZTZ@X6@W= SLES15 It needs rdma-core >= v16.- Removed 0002-kni-fix-build-on-SLE12-SP3.patch since no longer referenced in .spec files - Added 0002-dpdk-eal-ppc-rte_smp_mb.patch to fix an issue on ppc64le platforms with v18.02 - Updated to version 18.02; some of the changes include: * Added function to allow releasing internal EAL resources on exit * Added igb, ixgbe and i40e ethernet driver to support RSS with flow API * Updated i40e driver to support PPPoE/PPPoL2TP * Added MAC loopback support for i40e * Added support of run time determination of number of queues per i40e VF * Updated mlx5 driver * Updated mlx4 driver * Added NVGRE and UDP tunnels support in Solarflare network PMD * Added AVF (Adaptive Virtual Function) net PMD * Added feature supports for live migration from vhost-net to vhost-user * Updated the AESNI-MB PMD * Updated the DPAA_SEC crypto driver to support rte_security * Added Wireless Base Band Device (bbdev) abstraction * Added New eventdev Ordered Packet Distribution Library (OPDL) PMD * Added new pipeline use case for dpdk-test-eventdev application * Updated Eventdev sample application to support event devices based on capability * Added Rawdev, a generic device support library * Added new multi-process communication channel * Added GRO support for VxLAN-tunneled packets * Increased default Rx and Tx ring size in sample applications * Added new DPDK build system using the tools “meson” and “ninja” [EXPERIMENTAL]- The vm_power example does not work for ppc64le since it uses the IXGBE PMD driver which is not available for that platform(bsc#1082154): * Disable CONFIG_RTE_LIBRTE_POWER for the sample application; * Disable CONFIG_RTE_LIBRTE_IXGBE_PMD for the actual PMD driver;- Upgraded to latest stable release 17.11.1 (LTS): some of the fixes include: * location changes of the GPL and LGPL licenses; * net/mlx4: - fix drop flow resources leak * net/bnxt: - double increment of idx during Tx ring alloc - group info usage - check for ether type - size of Tx ring in HW - number of pools for RSS - return code in MAC address set - link speed setting with autoneg off * net/nfp: - MTU settings - jumbo settings - CRC strip check behaviour * net/sfc: - multicast address list copy memory leak - DMA memory leak after kvarg processing failure - fix label name to be consistent * net/i40e: - VLAN offload setting issue - FDIR input set conflict - FDIR rule confiliction issue - setting MAC address of VF - flow director Rx resource defect - warn when writing global registers - multiple driver support - interrupt conflict with multi-driver - Rx interrupt - check multi-driver option parsing - flow director filter * net/qede: - enable LRO over tunnels - reject config with no Rx queue - check tunnel L3 header - tunnel header size in Tx BD configuration - VF LRO tunnel configuration * net/mlx5: - Tx checksum offloads - un-supported RSS hash fields use - device operation type - pedantic compilation - fix pedantic compilation - flow item validation - flow RSS configuration - UAR remapping on non configured queues - secondary process verification - port stop by verify flows are still present - flow priority on queue action- Enable(disabled by default) MLX4 and MLX5 pmd(fate#322609)- Upgraded to latest major 17.11(fate#322609); some of the fixes include: * Extended port_id range from uint8_t to uint16_t * Added a new driver for Marvell Armada 7k/8k devices * Updated mlx4 driver * Updated mlx5 driver * Added SoftNIC PMD * Added support for NXP DPAA Devices * Updated support for Cavium OCTEONTX Device * Added PF support to the Netronome NFP PMD * Updated bnxt PMD * Added bus agnostic functions to cryptodev for PMD initialization * Updated QAT crypto PMD * Updated the AESNI MB PMD * Updated the OpenSSL PMD * Added NXP DPAA SEC crypto PMD * Add new benchmarking mode to dpdk-test-crypto-perf application * Added IOMMU support to libvhost-user * Added the Generic Segmentation Offload Library * Added the Flow Classification Library - Removed 0002-kni-fix-build-on-SLE12-SP3.patch since patch merged upstream and available in 17.11- Added missing supported broadcom chipset family Broadcom NetXtreme II BCM57810- Upgraded to latest stable 17.08.1; some of the fixes include: * net/qede: disable per-VF Tx switching feature * revert "net/virtio: flush Rx queues on start" * various fixes for mlx5 PMD drivers * various fixes for bnxt PMD drivers * various fixes for i40e PMD drivers * various fixes for crypto PMD drivers * testpmd: fix for non-consecutive ports * ethdev: fix ABI version- Add missing libelf-devel dependency- Updated to 17.08(bsc#1050250, bsc#1046598, fate#322913, fate#322608) Some of the new features are listed below: * Increase minimum x86 ISA version to SSE4.2 * Added Fail-Safe PMD * Added support for generic flow API (rte_flow) on igb NICs * Added support for generic flow API (rte_flow) on enic * Added support for Chelsio T6 family of adapters * Added latency and performance improvements for cxgbe * Updated mlx5 driver * Added NXP DPAA2 Eventdev PMD * Added dpdk-test-eventdev test application * from 17.05: * Added mbuf raw free API * Added free Tx mbuf on demand API * Added VFIO hotplug support * Added PowerPC support for i40e and its vector PMD * Added VF max bandwidth setting in i40e * Added LiquidIO network PMD * Added support for NXP DPAA2 Network PMD * Added support for NXP DPAA2 - FSLMC bus * Added support for the Wind River Systems AVP PMD * Added vmxnet3 version 3 support * Added MTU feature support to Virtio and Vhost * Added event driven programming model library (rte_eventdev) * Added Software Eventdev PMD * Added Cavium OCTEONTX Eventdev PMD * Added NXP DPAA2 SEC crypto PMD * from 17.02: * Added generic EAL API for I/O device memory read/write operations * Added VF Daemon (VFD) for i40e. - EXPERIMENTAL * Added generic flow API (rte_flow) * Added APIs for MACsec offload support to the ixgbe PMD * Added Solarflare libefx-based network PMD. * Added support for Mellanox ConnectX-5 adapters (mlx5) * Added ARMv8 crypto PMD * Added crypto performance test application * more details can be found in http://dpdk.org/doc/guides/rel_notes/release_17_08.html http://dpdk.org/doc/guides/rel_notes/release_17_05.html http://dpdk.org/doc/guides/rel_notes/release_17_02.html [-0002-kni-define-HAVE_VF_VLAN_PROTO-for-SLES12SP3.patch - 0003-kni-define-HAVE_TRANS_START_HELPER-for-SLES12SP3.patch - 0004-net-thunderx-sync-mailbox-definitions-with-Linux-PF-.patch - 0005-kni-fix-build-with-gcc-7.1.patch - 0006-kni-fix-ethtool-build-with-kernel-4.11.patch - 0007-igb_uio-switch-to-new-irq-function-for-MSI-X.patch] - Use updated patch to enable HAVE_TRANS_START_HELPER for SLE12SP3(bsc#1031705). [+ 0002-kni-fix-build-on-SLE12-SP3.patch]- Enabled CONFIG_RTE_MAJOR_ABI: libs SONAME equal the DPDK release version- Split libs into a subpackage to provide multiple installable versions on same sytem- Do not use obsolete pci_enable_msix for() kernel > 4.8 [+0006-kni-fix-ethtool-build-with-kernel-4.11.patch, +0007-igb_uio-switch-to-new-irq-function-for-MSI-X.patch]- Updated to 16.11.2 which provide bug fixes as below(fate#321541): * mbuf: fix missing includes in exported header * eal: fix debug macro redefinition * net/nfp: fix packet/data length conversion * net/i40e: fix setup when bulk is disabled * pci: fix device registration on FreeBSD * net/i40e: ensure vector mode is not used with QinQ * nic_uio: fix device binding at boot * net/bnx2x: fix transmit queue free threshold * net/vmxnet3: fix queue size changes * kni: fix build with kernel 4.11 * kni: fix possible memory leak * kni: fix crash caused by freeing mempool * net/i40e: fix allocation check * net/virtio: fix crash when closing twice * net/ixgbevf: set xstats id values * net/i40e: fix hash input set on X722 * eal/linux: fix build with glibc 2.25 * net/i40e: fix incorrect packet index reference * net/thunderx: fix 32-bit build * net/thunderx: fix build on FreeBSD * net/thunderx: fix deadlock in Rx path * net/ixgbe: fix setting MTU on stopped device * vfio: fix secondary process start * net/virtio-user: fix address on 32-bit system * net/virtio: fix MSI-X for modern devices * net/virtio: fix link status always down * net/ixgbe: fix multi-queue mode check in SRIOV mode * net/i40e/base: fix potential out of bound array access * vhost: fix false sharing * net/thunderx: fix stats access out of bounds * net/virtio: disable LSC interrupt if MSIX not enabled * net/i40e: fix mbuf alloc failed counter * net: fix stripped VLAN flag for offload emulation * vfio: fix disabling INTx * net/igb: fix VF MAC address setting * net/igb: fix VF MAC address setting * net/ixgbe: fix VF Rx mode for allmulticast disabled * net/bonding: fix updating slave link status * net/virtio-user: fix overflow * net/i40e: fix TC bitmap of VEB * net/ixgbe/base: fix build error * net/ixgbe: fix Rx queue blocking issue * net/ixgbe: fix all queues drop setting of DCB * net/ixgbe: fix TC bandwidth setting more details can be found in http://dpdk.org/ml/archives/stable/2017-May/001809.html [- 0005-kni-fix-build-with-kernel-4.11.patch] - use default gcc which is now gcc7 (bsc#1042372) [+0005-kni-fix-build-with-gcc-7.1.patch]- Add upstream patch to fix building against linux kernel 4.11 [+0005-kni-fix-build-with-kernel-4.11.patch]- sync mailbox definitions with Linux PF driver(bsc#1035993) [+0004-net-thunderx-sync-mailbox-definitions-with-Linux-PF-.patch]- Enable HAVE_TRANS_START_HELPER for SLE12SP3(bsc#1031705). [+0003-kni-define-HAVE_TRANS_START_HELPER-for-SLES12SP3.patch]- Fix dpdk KMP build fails(bsc#1031750) - enable igb_uio kernel module(fate#322394) - update kernel version for SLES12SP3 4.4.59 for bsc#1031705 [*0002-kni-define-HAVE_VF_VLAN_PROTO-for-SLES12SP3.patch]- Enable HAVE_VF_VLAN_PROTO for SLE12SP3(bsc#1031705). [+0002-kni-define-HAVE_VF_VLAN_PROTO-for-SLES12SP3.patch]- Disable dpdk-kmp package for ix86.- Upgrade to LTS release of 16.11 which contains fixes below(fate#321541): * app/test: fix symmetric session free in crypto perf tests * app/testpmd: fix check for invalid ports * app/testpmd: fix static build link ordering * crypto/aesni_gcm: fix IV size in capabilities * crypto/aesni_gcm: fix J0 padding bytes * crypto/aesni_mb: fix incorrect crypto session * crypto/openssl: fix extra bytes written at end of data * crypto/openssl: fix indentation in guide * crypto/qat: fix IV size in capabilities * crypto/qat: fix to avoid buffer overwrite in OOP case * cryptodev: fix crash on null dereference * cryptodev: fix loop in device query * devargs: reset driver name pointer on parsing failure * drivers/crypto: fix different auth/cipher keys * ethdev: check maximum number of queues for statistics * ethdev: fix extended statistics name index * ethdev: fix port data mismatched in multiple process model * ethdev: fix port lookup if none * ethdev: remove invalid function from version map * examples/ethtool: fix driver information * examples/ethtool: fix querying non-PCI devices * examples/ip_pipeline: fix coremask limitation * examples/ip_pipeline: fix parsing of pass-through pipeline * examples/l2fwd-crypto: fix overflow * examples/vhost: fix calculation of mbuf count * examples/vhost: fix lcore initialization * mempool: fix API documentation * mempool: fix stack handler dequeue * net/af_packet: fix fd use after free * net/bnx2x: fix Rx mode configuration * net/cxgbe/base: initialize variable before reading EEPROM * net/cxgbe: fix parenthesis on bitwise operation * net/ena: fix setting host attributes * net/enic: fix hardcoding of some flow director masks * net/enic: fix memory leak with oversized Tx packets * net/enic: remove unnecessary function parameter attributes * net/i40e: enable auto link update for 25G * net/i40e: fix Rx checksum flag * net/i40e: fix TC bandwidth definition * net/i40e: fix VF reset flow * net/i40e: fix checksum flag in x86 vector Rx * net/i40e: fix crash in close * net/i40e: fix deletion of all macvlan filters * net/i40e: fix ethertype filter on X722 * net/i40e: fix link update delay * net/i40e: fix logging for Tx free threshold check * net/i40e: fix segment number in reassemble process * net/i40e: fix wrong return value when handling PF message * net/i40e: fix xstats value mapping * net/i40evf: fix casting between structs * net/i40evf: fix reporting of imissed packets * net/ixgbe: fix blocked interrupts * net/ixgbe: fix received packets number for ARM * net/ixgbe: fix received packets number for ARM NEON * net/ixgbevf: fix max packet length * net/mlx5: fix RSS hash result for flows * net/mlx5: fix Rx packet validation and type * net/mlx5: fix Tx doorbell * net/mlx5: fix endianness in Tx completion queue * net/mlx5: fix inconsistent link status * net/mlx5: fix leak when starvation occurs * net/mlx5: fix link status query * net/mlx5: fix memory leak when parsing device params * net/mlx5: fix missing inline attributes * net/mlx5: fix updating total length of multi-packet send * net/mlx: fix IPv4 and IPv6 packet type * net/nfp: fix VLAN offload flags check * net/nfp: fix typo in Tx offload capabilities * net/pcap: fix timestamps in output pcap file * net/qede/base: fix FreeBSD build * net/qede: add vendor/device id info * net/qede: fix PF fastpath status block index * net/qede: fix filtering code * net/qede: fix function declaration * net/qede: fix per queue statisitics * net/qede: fix resource leak * net/vhost: fix socket file deleted on stop * net/vhost: fix unix socket not removed as closing * net/virtio-user: fix not properly reset device * net/virtio-user: fix wrongly get/set features * net/virtio: fix build without virtio-user * net/virtio: fix crash when number of virtio devices > 1 * net/virtio: fix multiple process support * net/virtio: fix performance regression due to TSO * net/virtio: fix rewriting LSC flag * net/virtio: fix wrong Rx/Tx method for secondary process * net/virtio: optimize header reset on any layout * net/virtio: store IO port info locally * net/virtio: store PCI operators pointer locally * net/vmxnet3: fix Rx deadlock * pci: fix check of mknod * pmdinfogen: fix endianness with cross-compilation * pmdinfogen: fix null dereference * sched: fix crash when freeing port * usertools: fix active interface detection when binding * vdev: fix detaching with alias * vfio: fix file descriptor leak in multi-process * vhost: allow many vhost-user ports * vhost: do not GSO when no header is present * vhost: fix dead loop in enqueue path * vhost: fix guest/host physical address mapping * vhost: fix long stall of negotiation * vhost: fix memory leak- Fix broken dpdk-pmd/* soft links(bsc#1026804).- Do not disable cryptodev as EXPREMENTAL tag has been removed. - Remove CONFIG_RTE_LIBRTE_MBUF_OFFLOAD as cryptodev is not depending on it anymore and its removed from the upstream.- Enable rte_kni kernel module for dpdk(fate#322394). [+preamble] - Build dpdk-thunderx only for aarch64- Update to version 16.11(fate#321541). Some of the new features are listed below: * Added software parser for packet type. * Improved offloads support in mbuf. * Added vhost-user dequeue zero copy support. * Added vhost-user indirect descriptors support. * Added vhost PMD xstats. * Added virtio NEON support for ARM. * Updated the ixgbe base driver. * Added APIs for VF management to the ixgbe PMD. * Updated the enic driver. * Added openssl PMD. * Added support for new gcc -march option. Detailed changes can be obtained from http://dpdk.org/doc/guides/rel_notes/release_16_11.html - Resolved fixes in the updated versions are : * enic: Fixed several flow director issues. * enic: Fixed inadvertent setting of L4 checksum ptype on ICMP packets. * enic: Fixed high driver overhead when servicing Rx queues beyond the first.- Added gcc-6 as default compiler for CRC/mtune & other optimizations. - Fix possible parallel installation of dpdk subpackages.- Add pre_checkin.sh to generate the dpdk-thunderx.spec file- Fixed paths using %{name} to have the dpdk.spec aligned with dpdk-thunderx.spec- Added back in all the architectures to keep .spec files aligned * Driving thunderx platform architectural dependency via the ExclusiveArch tag- Added support to build code for Thunderx platform(fate#321960). - Introduced new dpdk-thunderx.spec file: * Removed architectures not supporting Thunderx platform (e.g. x86) * Added dependency on gcc v5.0 for armv8a-crc- Update to version 16.07.2. Some of the fixes are listed below: * ethdev: prevent duplicate event callback * hash: fix bucket size usage * hash: fix unlimited cuckoo path * lpm: fix freeing memory * lpm: fix freeing unused sub-table on rule delete * mempool: fix leak if populate fails * mempool: fix search of maximum contiguous pages * pci: fix probing error if no driver found * net/bnx2x: fix maximum PF queues * net/bnxt: fix bit shift size * net/bnxt: fix crash when closing * net/enic: fix Rx queue index when not using Rx scatter * net/enic: fix crash on MTU update or Rx queue reconfigure * net/enic: fix crash with removed flow director filters * net/enic: fix max packet length check * net/enic: fix multi-queue Rx performance * net/enic: revert truncated packets counter fix * net/fm10k: fix VF Tx queue initialization * net/i40e: fix Rx hang when disable LLDP * net/ixgbe: fix VF registers * net/thunderx: fix Tx checksum handling * [The list of changes is rather long so please consult the following resources for the complete list of new features, bugfixes and other changes in this release: - http://dpdk.org/doc/guides-16.07/rel_notes/release_16_07.html#id2]- Update to version 16.07.1. Some of the fixes are listed below: * contigmem: zero all pages during mmap * crypto/null: fix key size increment value * hash: fix false zero signature key hit lookup * mem: fix crash on hugepage mapping error * mbuf: fix error handling on pool creation * net/e1000: fix returned number of available Rx descriptors * net/enic: fix freeing memory for descriptor ring * net/i40e: fix dropping packets with ethertype 0x88A8 * net/i40e: fix mbuf leak during Rx queue release * net/i40e: fix null pointer dereferences when using VMDq+RSS * net/ixgbe/base: fix possible corruption of shadow RAM * net/ixgbe: fix VF reset to apply to correct VF * net/virtio_user: fix error management during init * [The list of changes is rather long so please consult the following resources for the complete list of new features, bugfixes and other changes in this release: - http://dpdk.org/doc/guides-16.07/rel_notes/release_16_07.html#fixes-in-16-07-01-stable-release]- Drop code for generating our own linker script. * Commit 948fd64befc3 (" mk: replace the combined library with a linker script") added upstream support for building and installing a linker script so we drop our code from the spec file which generated a much larger and possibly broken linker script resulting to linking issues (boo#1002534)- Update to version 16.07. Some of the new features are listed below: * Removed the mempool cache memory if caching is not being used. * Added mempool external cache for non-EAL thread. * Changed the memory allocation scheme in the mempool library. * Added a new driver for Broadcom NetXtreme-C devices. * Added a new driver for ThunderX nicvf devices. * Added mailbox interrupt support for ixgbe and igb VFs. * Updated the ixgbe base driver. * Updated the i40e base driver. * Updated the enic driver. * Updated the mlx5 driver. * Added support for virtio on IBM POWER8. * Added support for Virtio in containers. * Added vhost-user client mode. * Added NSH packet recognition in i40e. * Added AES-CTR support to AESNI MB PMD. * Added AES counter mode support for Intel QuickAssist devices. * Added KASUMI SW PMD. * Added multi-writer support for RTE Hash with Intel TSX. * Improved IP Pipeline Application. * Added keepalive enhancements. * Added packet capture framework. * Added floating VEB support for i40e PF driver. * Added support for live migration of a VM with SRIOV VF. * [The list of changes is rather long so please consult the following resources for the complete list of new features, bugfixes and other changes in this release: - http://dpdk.org/doc/guides/rel_notes/release_16_07.html - http://dpdk.org/browse/dpdk/tree/doc/guides/rel_notes/release_16_07.rst - Or the doc/guides/rel_notes/release_16_07.rst file in the released tarball.] - Removed patches that are already avilable in dpdk-16.07 [ -0002-examples-ip_pipeline-fix-implicit-declaration-of-fun.patch - 0003-mk-fix-external-shared-library-dependencies-of-libraries.patch - 0004-54f9e32-vhost-handle-dirty-pages-logging-request.patch - 0005-d293dac-vhost-claim-support-of-guest-announce.patch - 0006-d639996-vhost-enable-log_shmfd-protocol-feature.patch - 0007-ixgbe-fix-VLAN-filter-missing-brackets.patch - 0008-app-testpmd-handle-SIGINT-and-SIGTERM.patch - 0009-bonding-copy-entire-config-structure-in-mode-4.patch - 0010-bonding-fix-active-slaves-with-no-primary.patch - 0011-bonding-do-not-ignore-multicast-in-mode-4.patch - 0012-bonding-do-not-activate-slave-twice.patch - 0013-bonding-fix-crash-when-no-slave-device.patch - 0014-bonding-fix-detach-of-bonded-device.patch - 0015-bonding-fix-detach-of-slave-devices.patch - 0016-eal-linux-support-built-in-kernel-modules.patch - 0017-examples-l3fwd-handle-SIGINT-and-SIGTERM.patch - 0018-fm10k-fix-VLAN-flag-in-scattered-Rx.patch - 0019-i40e-base-fix-driver-load-failure.patch - 0020-i40e-base-fix-missing-check-for-stopped-admin-queue.patch - 0021-i40e-fix-inverted-check-for-no-refcount.patch - 0022-i40e-fix-overflow.patch - 0023-i40e-fix-VLAN-filtering.patch - 0024-mempool-fix-leak-when-creation-fails.patch - 0025-pcap-fix-captured-frame-length.patch - 0026-port-fix-crash-for-ethdev-writer-nodrop.patch - 0027-port-fix-crash-for-ring-writer-nodrop.patch - 0028-tools-fix-unbinding-failure-handling.patch - 0029-tools-support-Python-3-in-bind-script.patch - 0030-tools-support-binding-to-built-in-kernel-modules.patch - 0031-vhost-fix-leak-of-fds-and-mmaps.patch - 0032-virtio-fix-crash-in-statistics-functions.patch - 0033-virtio-fix-descriptors-pointing-to-the-same-buffer.patch - 0034-virtio-fix-restart.patch - 0035-PAGE_SIZE-constant-is-not-defined-on-ARM-since-multi.patch - 0036-examples-fix-build-dependencies.patch - 0037-examples-ethtool-fix-build.patch - 0099-mk-fix-gcc-5-version-on-suse.patch - 0100-kni-fix-build-with-gcc-6.patch - 0101-ixgbe-fix-uninitialized-warning.patch - 0102-ixgbe-fix-constant-sign-in-left-shift-operator.patch - 0103-e1000-base-Add-missing-braces-to-the-if-statements.patch - 0104-igb-fix-constant-sign-in-left-shift-operator.patch - 0105-e1000-fix-missing-link-interrupt-check-brackets.patch - 0106-app-test-fix-missing-brackets.patch - 0107-examples-ip_pipeline-use-unsigned-constants-for-left.patch ] - Created soft link for dpdk_proc_info and dpdk_nic_bind(from dpdk-procinfo, dpdk-devbind) to keep compatibility. - Added a new binary dpdk-pdump dpdk-procinfo- Add _constraints file to force build dpdk with sse3 enabled x86 machine(bsc#993462). - Enable compilation for ppc64le with the help of Rüdiger(ro@suse.de). - Enable example package for aarch64 using Rüdiger(ro@suse.de) changes. - Do not enable PMD_RING on ppc64le (missing rte_eth_from_rings). - Disable examples that need LPM which is disabled on non-x86. [+0036-examples-fix-build-dependencies.patch, +0037-examples-ethtool-fix-build.patch, +_constraints]- Added support for aarch64 compilation. [+0035-PAGE_SIZE-constant-is-not-defined-on-ARM-since-multi.patch] - Disabled aarch64 dpdk-examples package for the time being as it contains lots of Intel specific code. - Added proper "Group" field for the subpackages .- Add upstream patches to fix building with gcc >= 6 * 0100-kni-fix-build-with-gcc-6.patch * 0101-ixgbe-fix-uninitialized-warning.patch * 0102-ixgbe-fix-constant-sign-in-left-shift-operator.patch * 0103-e1000-base-Add-missing-braces-to-the-if-statements.patch * 0104-igb-fix-constant-sign-in-left-shift-operator.patch * 0105-e1000-fix-missing-link-interrupt-check-brackets.patch * 0106-app-test-fix-missing-brackets.patch * 0107-examples-ip_pipeline-use-unsigned-constants-for-left.patch- Removed unwanted files(bsc#984437).- Added missing GPL-2.0 and LGPL-2.1 licenses.- Update tarball URL.- Applied all the fixes recommended by upstream for v2.2 stable release(bsc#981996). [+0008-app-testpmd-handle-SIGINT-and-SIGTERM.patch, +0009-bonding-copy-entire-config-structure-in-mode-4.patch, +0010-bonding-fix-active-slaves-with-no-primary.patch, +0011-bonding-do-not-ignore-multicast-in-mode-4.patch, +0012-bonding-do-not-activate-slave-twice.patch, +0013-bonding-fix-crash-when-no-slave-device.patch, +0014-bonding-fix-detach-of-bonded-device.patch, +0015-bonding-fix-detach-of-slave-devices.patch, +0016-eal-linux-support-built-in-kernel-modules.patch, +0017-examples-l3fwd-handle-SIGINT-and-SIGTERM.patch, +0018-fm10k-fix-VLAN-flag-in-scattered-Rx.patch, +0019-i40e-base-fix-driver-load-failure.patch, +0020-i40e-base-fix-missing-check-for-stopped-admin-queue.patch, +0021-i40e-fix-inverted-check-for-no-refcount.patch, +0022-i40e-fix-overflow.patch, +0023-i40e-fix-VLAN-filtering.patch, +0024-mempool-fix-leak-when-creation-fails.patch, +0025-pcap-fix-captured-frame-length.patch, +0026-port-fix-crash-for-ethdev-writer-nodrop.patch, +0027-port-fix-crash-for-ring-writer-nodrop.patch, +0028-tools-fix-unbinding-failure-handling.patch, +0029-tools-support-Python-3-in-bind-script.patch, +0030-tools-support-binding-to-built-in-kernel-modules.patch, +0031-vhost-fix-leak-of-fds-and-mmaps.patch, +0032-virtio-fix-crash-in-statistics-functions.patch, +0033-virtio-fix-descriptors-pointing-to-the-same-buffer.patch, +0034-virtio-fix-restart.patch]- Use fdupes to manage duplicate files- Create DPDK packages for 32 bit x86(bsc#977639).- Add upstream patch for the ixgbe driver * 0007-ixgbe-fix-VLAN-filter-missing-brackets.patch: Fix VLAN filtering logic by adding the missing brackets in the 'if' statement.- DPDK is most common vhost-user backend, Adding upstream patches to help qemu vm live migration with vhost-user (fate#320713). [+ 0004-54f9e32-vhost-handle-dirty-pages-logging-request.patch + 0005-d293dac-vhost-claim-support-of-guest-announce.patch + 0006-d639996-vhost-enable-log_shmfd-protocol-feature.patch]- Move the combined library back to the devel package (bsc#975123) Ever since we dropped the CONFIG_RTE_BUILD_COMBINE_LIBS=y option, the libdpdk.so is no longer a shared object but rather a linker script generated by the spec file. This means that it is only used during linking and the linker will add the individual DPDK libraries to the DT_NEEDED tag on the dependent binaries.- Fix shared linking against libdpdk.so (bsc#975123) * Restore the 0003-mk-fix-external-shared-library-dependencies-of-libraries.patch patch which sets the correct dependencies for the shared libraries. * Drop CONFIG_RTE_BUILD_COMBINE_LIBS since a custom linker script is used to create and install a more lightweight version of libdpdk.so. * Include the combined libdpdk.so library to the regular package since it is also necessary during runtime.- Removed unwnated patch and reformated patch file names(bsc#974903). [- dpdk-2.2-dtneeded.patch, - dpdk-2.2-examples.patch, - enic-pun-fix.patch, - dpdk-2.2-warningflags.patch, + 0001-enic-fix-Type-punning-and-strict-aliasing-warning.patch + 0002-examples-ip_pipeline-fix-implicit-declaration-of-fun.patch] - Added CONFIG_RTE_BUILD_COMBINE_LIBS flags to club all all *.so into one library- Intial version 2.2.0(fate#319169)  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 17      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     19.11.419.11.4-150300.16.1dpdkdpdk-thunderx-docgpl-2.0.txtlgpl-2.1.txtapiannotated.htmlbc_s.pngbdwn.pngclasses.htmlclosed.pngcmdline_8h.htmlcmdline_8h_source.htmldeprecated.htmldir_07a86b3d66a084d891545ff55cd051cb.htmldir_082fac248c5922c9b524b8ed4e70e149.htmldir_09939486c1591516b984494000c3f64b.htmldir_099d2d80b969e7fd740b685b10b04f52.htmldir_0c4a44b1891135ef8e3f51c114dfc40e.htmldir_0d8d734d473b3cabdef3fd977d50bf3e.htmldir_13eeac154bac823f6a128588ab25dbd1.htmldir_14bc92f4b96c8519b376567118ac28b3.htmldir_1cb3d74b2ac9573f839cf243cfa1bc11.htmldir_1e371fc4c61fbb916177b5ec80f09b33.htmldir_2154f83b08d9713661fee356762316ea.htmldir_2164e25561eabb34d2bd0b8fdda0aeba.htmldir_2874bf55c2200dd42774d2ba99074e53.htmldir_29193d3218f7ddad8237cdbcbdc9f2a0.htmldir_2d618a55e588f156483774ccf7b84b21.htmldir_312e5f832048176c38c17335b02a769f.htmldir_313f6c18e163a6142a5a3b7a38753440.htmldir_3241a1b75803951af6cc6f4dc301eca1.htmldir_35ae03c0f35416b98825df846a315ffa.htmldir_38b2ae9befb282239df37d3eaa427f9c.htmldir_41189bc1b2cbbbf473cc198cfd351ef1.htmldir_425fd6afd4367244802c1f095c2bd91a.htmldir_465fee731b4650f251292c02a329fbe4.htmldir_4a8e137842b96fe670fd4b2985ac89ae.htmldir_4b8e6c0016b49edb5f37b579e2023f82.htmldir_4d32756cfe7396f6b5bd672081496d5a.htmldir_4f2295b392fd4902b00407c8774475b6.htmldir_5035da364ebbdb660400f67ccee744ab.htmldir_5188debcb509bb3663f061cc199aacda.htmldir_537c65abdcc57b6687fa40a177fe2911.htmldir_57fc2e9d988df25248b2986356737354.htmldir_5baebda13ce0cd02061f41a85f42fb63.htmldir_5dafd97c0d945e0ac41aa1317e88fadc.htmldir_5e14993b9b1571024c777dcdb495ae81.htmldir_605c07ae6e02b3d13cc3bf92b6c5e54b.htmldir_6242a765e90f02e6b399e351944e02df.htmldir_662763201df975e54664a452d4fba6a4.htmldir_68cfe39720133e98f6e3a4074209d013.htmldir_7fb41ed998b608e7313c151134bd387c.htmldir_80017d03a93d1c6dc29fe032f2756a58.htmldir_80aaf5c78aab202ac8db50cd5384bc56.htmldir_85ecb587e53a4a73ea61471f0b12c7cd.htmldir_87f0c34ed8400daf07819036fa8c39bd.htmldir_88c81b6ae6213964a6a534ee00cb813b.htmldir_91ededd9c78ad866b6d26d7a496929b6.htmldir_97aefd0d527b934f1d99a682da8fe6a9.htmldir_9b3d03c4eb61cec62b5319e654017f5d.htmldir_9cc23110c523433deab11cddab39a876.htmldir_9dfdb91ab02719873a80bed01b3a1a5d.htmldir_9eeab561cdff5b79b69e3433d5c0167e.htmldir_9f54a0e5c0accd58ed9d59aeb0a494b6.htmldir_a1590196e97b8334b8475f5e5e087fd0.htmldir_a837e178e589be76a266a59d671110cc.htmldir_a914dcfab5ff2d1bc9dd6b873a7b604d.htmldir_ab1cf081cc3a382f37f4faf4624bc98a.htmldir_af404d643d0129b0e925f84c76faf17f.htmldir_bab3158cba42af609928ad7bdc323e4b.htmldir_c03c86d48a65141580da7a91109cd316.htmldir_c546cd799bdd92435e34b0203cfe1750.htmldir_ca0e660c1b82cc3a269d55a810660e54.htmldir_d5965c24693e7b1ab7ad0767cbd37f15.htmldir_da18e332567afad90ca07324c52c5833.htmldir_e4d91705e579e3718a61980d7fa2b542.htmldir_e6bf5b3b5611bc8c19dd42f833c7eb40.htmldir_eaabdb77807ddb33c9f95a20e00c6648.htmldir_ede7e24c7966ae13eacb9e9d5c8994f5.htmldir_f3c49864a69d49874faab6e12ff2e6f9.htmldir_f5e0cc2a752635854ee1050679b5092d.htmldir_f9bb17aa67306532eda035e0955b885e.htmldir_fd57c5f233fdd9e7da26a5e5f646d081.htmldir_fdd811c43070b66c424782ec94ee51d7.htmldoc.pngdoxy-api-index_8md_source.htmldoxygen.cssdoxygen.pngdynsections.jsexamples.htmlexamples_2bbdev_app_2main_8c-example.htmlexamples_2bond_2main_8c-example.htmlexamples_2bpf_2dummy_8c-example.htmlexamples_2bpf_2t1_8c-example.htmlexamples_2bpf_2t2_8c-example.htmlexamples_2bpf_2t3_8c-example.htmlexamples_2cmdline_2commands_8c-example.htmlexamples_2cmdline_2main_8c-example.htmlexamples_2cmdline_2parse_obj_list_8c-example.htmlexamples_2distributor_2main_8c-example.htmlexamples_2ethtool_2ethtool-app_2ethapp_8c-example.htmlexamples_2ethtool_2ethtool-app_2main_8c-example.htmlexamples_2ethtool_2lib_2rte_ethtool_8c-example.htmlexamples_2eventdev_pipeline_2main_8c-example.htmlexamples_2eventdev_pipeline_2pipeline_worker_generic_8c-example.htmlexamples_2eventdev_pipeline_2pipeline_worker_tx_8c-example.htmlexamples_2fips_validation_2fips_dev_self_test_8c-example.htmlexamples_2fips_validation_2fips_validation_8c-example.htmlexamples_2fips_validation_2fips_validation_aes_8c-example.htmlexamples_2fips_validation_2fips_validation_ccm_8c-example.htmlexamples_2fips_validation_2fips_validation_cmac_8c-example.htmlexamples_2fips_validation_2fips_validation_gcm_8c-example.htmlexamples_2fips_validation_2fips_validation_hmac_8c-example.htmlexamples_2fips_validation_2fips_validation_sha_8c-example.htmlexamples_2fips_validation_2fips_validation_tdes_8c-example.htmlexamples_2fips_validation_2main_8c-example.htmlexamples_2flow_classify_2flow_classify_8c-example.htmlexamples_2flow_filtering_2flow_blocks_8c-example.htmlexamples_2flow_filtering_2main_8c-example.htmlexamples_2helloworld_2main_8c-example.htmlexamples_2ioat_2ioatfwd_8c-example.htmlexamples_2ip_fragmentation_2main_8c-example.htmlexamples_2ip_pipeline_2action_8c-example.htmlexamples_2ip_pipeline_2cli_8c-example.htmlexamples_2ip_pipeline_2conn_8c-example.htmlexamples_2ip_pipeline_2cryptodev_8c-example.htmlexamples_2ip_pipeline_2kni_8c-example.htmlexamples_2ip_pipeline_2link_8c-example.htmlexamples_2ip_pipeline_2main_8c-example.htmlexamples_2ip_pipeline_2mempool_8c-example.htmlexamples_2ip_pipeline_2parser_8c-example.htmlexamples_2ip_pipeline_2pipeline_8c-example.htmlexamples_2ip_pipeline_2swq_8c-example.htmlexamples_2ip_pipeline_2tap_8c-example.htmlexamples_2ip_pipeline_2thread_8c-example.htmlexamples_2ip_pipeline_2tmgr_8c-example.htmlexamples_2ip_reassembly_2main_8c-example.htmlexamples_2ipsec-secgw_2esp_8c-example.htmlexamples_2ipsec-secgw_2ipsec-secgw_8c-example.htmlexamples_2ipsec-secgw_2ipsec_8c-example.htmlexamples_2ipsec-secgw_2ipsec_process_8c-example.htmlexamples_2ipsec-secgw_2parser_8c-example.htmlexamples_2ipsec-secgw_2rt_8c-example.htmlexamples_2ipsec-secgw_2sa_8c-example.htmlexamples_2ipsec-secgw_2sp4_8c-example.htmlexamples_2ipsec-secgw_2sp6_8c-example.htmlexamples_2ipv4_multicast_2main_8c-example.htmlexamples_2kni_2main_8c-example.htmlexamples_2l2fwd-cat_2cat_8c-example.htmlexamples_2l2fwd-cat_2l2fwd-cat_8c-example.htmlexamples_2l2fwd-crypto_2main_8c-example.htmlexamples_2l2fwd-event_2l2fwd_common_8c-example.htmlexamples_2l2fwd-event_2l2fwd_event_8c-example.htmlexamples_2l2fwd-event_2l2fwd_event_generic_8c-example.htmlexamples_2l2fwd-event_2l2fwd_event_internal_port_8c-example.htmlexamples_2l2fwd-event_2l2fwd_poll_8c-example.htmlexamples_2l2fwd-event_2main_8c-example.htmlexamples_2l2fwd-jobstats_2main_8c-example.htmlexamples_2l2fwd-keepalive_2ka-agent_2main_8c-example.htmlexamples_2l2fwd-keepalive_2main_8c-example.htmlexamples_2l2fwd-keepalive_2shm_8c-example.htmlexamples_2l2fwd_2main_8c-example.htmlexamples_2l3fwd-acl_2main_8c-example.htmlexamples_2l3fwd-power_2main_8c-example.htmlexamples_2l3fwd-power_2perf_core_8c-example.htmlexamples_2l3fwd_2l3fwd_em_8c-example.htmlexamples_2l3fwd_2l3fwd_lpm_8c-example.htmlexamples_2l3fwd_2main_8c-example.htmlexamples_2link_status_interrupt_2main_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_client_2client_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_server_2args_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_server_2init_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_server_2main_8c-example.htmlexamples_2multi_process_2hotplug_mp_2commands_8c-example.htmlexamples_2multi_process_2hotplug_mp_2main_8c-example.htmlexamples_2multi_process_2simple_mp_2main_8c-example.htmlexamples_2multi_process_2simple_mp_2mp_commands_8c-example.htmlexamples_2multi_process_2symmetric_mp_2main_8c-example.htmlexamples_2ntb_2ntb_fwd_8c-example.htmlexamples_2packet_ordering_2main_8c-example.htmlexamples_2performance-thread_2common_2arch_2arm64_2ctx_8c-example.htmlexamples_2performance-thread_2common_2arch_2x86_2ctx_8c-example.htmlexamples_2performance-thread_2common_2lthread_8c-example.htmlexamples_2performance-thread_2common_2lthread_cond_8c-example.htmlexamples_2performance-thread_2common_2lthread_diag_8c-example.htmlexamples_2performance-thread_2common_2lthread_mutex_8c-example.htmlexamples_2performance-thread_2common_2lthread_sched_8c-example.htmlexamples_2performance-thread_2common_2lthread_tls_8c-example.htmlexamples_2performance-thread_2l3fwd-thread_2main_8c-example.htmlexamples_2performance-thread_2pthread_shim_2main_8c-example.htmlexamples_2performance-thread_2pthread_shim_2pthread_shim_8c-example.htmlexamples_2ptpclient_2ptpclient_8c-example.htmlexamples_2qos_meter_2main_8c-example.htmlexamples_2qos_meter_2rte_policer_8c-example.htmlexamples_2qos_sched_2app_thread_8c-example.htmlexamples_2qos_sched_2args_8c-example.htmlexamples_2qos_sched_2cfg_file_8c-example.htmlexamples_2qos_sched_2cmdline_8c-example.htmlexamples_2qos_sched_2init_8c-example.htmlexamples_2qos_sched_2main_8c-example.htmlexamples_2qos_sched_2stats_8c-example.htmlexamples_2rxtx_callbacks_2main_8c-example.htmlexamples_2server_node_efd_2node_2node_8c-example.htmlexamples_2server_node_efd_2server_2args_8c-example.htmlexamples_2server_node_efd_2server_2init_8c-example.htmlexamples_2server_node_efd_2server_2main_8c-example.htmlexamples_2service_cores_2main_8c-example.htmlexamples_2skeleton_2basicfwd_8c-example.htmlexamples_2tep_termination_2main_8c-example.htmlexamples_2tep_termination_2vxlan_8c-example.htmlexamples_2tep_termination_2vxlan_setup_8c-example.htmlexamples_2timer_2main_8c-example.htmlexamples_2vdpa_2main_8c-example.htmlexamples_2vhost_2main_8c-example.htmlexamples_2vhost_2virtio_net_8c-example.htmlexamples_2vhost_blk_2blk_8c-example.htmlexamples_2vhost_blk_2vhost_blk_8c-example.htmlexamples_2vhost_blk_2vhost_blk_compat_8c-example.htmlexamples_2vhost_crypto_2main_8c-example.htmlexamples_2vm_power_manager_2channel_manager_8c-example.htmlexamples_2vm_power_manager_2channel_monitor_8c-example.htmlexamples_2vm_power_manager_2guest_cli_2main_8c-example.htmlexamples_2vm_power_manager_2guest_cli_2parse_8c-example.htmlexamples_2vm_power_manager_2guest_cli_2vm_power_cli_guest_8c-example.htmlexamples_2vm_power_manager_2main_8c-example.htmlexamples_2vm_power_manager_2oob_monitor_nop_8c-example.htmlexamples_2vm_power_manager_2oob_monitor_x86_8c-example.htmlexamples_2vm_power_manager_2parse_8c-example.htmlexamples_2vm_power_manager_2power_manager_8c-example.htmlexamples_2vm_power_manager_2vm_power_cli_8c-example.htmlexamples_2vmdq_2main_8c-example.htmlexamples_2vmdq_dcb_2main_8c-example.htmlfiles.htmlfolderclosed.pngfolderopen.pngfunctions.htmlfunctions_a.htmlfunctions_b.htmlfunctions_c.htmlfunctions_d.htmlfunctions_e.htmlfunctions_f.htmlfunctions_func.htmlfunctions_g.htmlfunctions_h.htmlfunctions_i.htmlfunctions_k.htmlfunctions_l.htmlfunctions_m.htmlfunctions_n.htmlfunctions_o.htmlfunctions_p.htmlfunctions_q.htmlfunctions_r.htmlfunctions_s.htmlfunctions_t.htmlfunctions_u.htmlfunctions_v.htmlfunctions_vars.htmlfunctions_vars_a.htmlfunctions_vars_b.htmlfunctions_vars_c.htmlfunctions_vars_d.htmlfunctions_vars_e.htmlfunctions_vars_f.htmlfunctions_vars_g.htmlfunctions_vars_h.htmlfunctions_vars_i.htmlfunctions_vars_k.htmlfunctions_vars_l.htmlfunctions_vars_m.htmlfunctions_vars_n.htmlfunctions_vars_o.htmlfunctions_vars_p.htmlfunctions_vars_q.htmlfunctions_vars_r.htmlfunctions_vars_s.htmlfunctions_vars_t.htmlfunctions_vars_u.htmlfunctions_vars_v.htmlfunctions_vars_w.htmlfunctions_vars_x.htmlfunctions_vars_y.htmlfunctions_vars_z.htmlfunctions_w.htmlfunctions_x.htmlfunctions_y.htmlfunctions_z.htmlglobals.htmlglobals_a.htmlglobals_b.htmlglobals_c.htmlglobals_d.htmlglobals_defs.htmlglobals_defs_b.htmlglobals_defs_c.htmlglobals_defs_d.htmlglobals_defs_e.htmlglobals_defs_i.htmlglobals_defs_l.htmlglobals_defs_m.htmlglobals_defs_o.htmlglobals_defs_p.htmlglobals_defs_r.htmlglobals_defs_s.htmlglobals_defs_t.htmlglobals_defs_u.htmlglobals_defs_v.htmlglobals_e.htmlglobals_enum.htmlglobals_eval.htmlglobals_eval_e.htmlglobals_eval_f.htmlglobals_eval_i.htmlglobals_eval_m.htmlglobals_eval_r.htmlglobals_eval_s.htmlglobals_eval_w.htmlglobals_f.htmlglobals_func.htmlglobals_func_c.htmlglobals_func_g.htmlglobals_func_p.htmlglobals_func_r.htmlglobals_func_s.htmlglobals_func_t.htmlglobals_g.htmlglobals_h.htmlglobals_i.htmlglobals_l.htmlglobals_m.htmlglobals_o.htmlglobals_p.htmlglobals_r.htmlglobals_s.htmlglobals_t.htmlglobals_type.htmlglobals_type_c.htmlglobals_type_d.htmlglobals_type_e.htmlglobals_type_h.htmlglobals_type_l.htmlglobals_type_m.htmlglobals_type_p.htmlglobals_type_r.htmlglobals_type_s.htmlglobals_type_u.htmlglobals_u.htmlglobals_v.htmlglobals_vars.htmlglobals_w.htmlindex.htmljquery.jsmenu.jsmenudata.jsnav_f.pngnav_g.pngnav_h.pngopen.pngpages.htmlrte__acl_8h.htmlrte__acl_8h_source.htmlrte__acl__osdep_8h.htmlrte__acl__osdep_8h_source.htmlrte__alarm_8h.htmlrte__alarm_8h_source.htmlrte__approx_8h.htmlrte__approx_8h_source.htmlrte__arp_8h.htmlrte__arp_8h_source.htmlrte__atomic_8h.htmlrte__atomic_8h_source.htmlrte__bbdev_8h.htmlrte__bbdev_8h_source.htmlrte__bbdev__op_8h.htmlrte__bbdev__op_8h_source.htmlrte__bbdev__pmd_8h.htmlrte__bbdev__pmd_8h_source.htmlrte__bitmap_8h.htmlrte__bitmap_8h_source.htmlrte__bitrate_8h_source.htmlrte__bpf_8h.htmlrte__bpf_8h_source.htmlrte__bpf__ethdev_8h.htmlrte__bpf__ethdev_8h_source.htmlrte__branch__prediction_8h.htmlrte__branch__prediction_8h_source.htmlrte__bus_8h.htmlrte__bus_8h_source.htmlrte__bus__vdev_8h.htmlrte__bus__vdev_8h_source.htmlrte__byteorder_8h.htmlrte__byteorder_8h_source.htmlrte__cfgfile_8h.htmlrte__cfgfile_8h_source.htmlrte__class_8h.htmlrte__class_8h_source.htmlrte__cmp__arm64_8h_source.htmlrte__cmp__x86_8h_source.htmlrte__common_8h.htmlrte__common_8h_source.htmlrte__comp_8h.htmlrte__comp_8h_source.htmlrte__compat_8h_source.htmlrte__compressdev_8h.htmlrte__compressdev_8h_source.htmlrte__compressdev__internal_8h_source.htmlrte__compressdev__pmd_8h.htmlrte__compressdev__pmd_8h_source.htmlrte__cpuflags_8h.htmlrte__cpuflags_8h_source.htmlrte__crc__arm64_8h.htmlrte__crc__arm64_8h_source.htmlrte__crypto_8h.htmlrte__crypto_8h_source.htmlrte__crypto__asym_8h.htmlrte__crypto__asym_8h_source.htmlrte__crypto__sym_8h.htmlrte__crypto__sym_8h_source.htmlrte__cryptodev_8h.htmlrte__cryptodev_8h_source.htmlrte__cryptodev__pmd_8h.htmlrte__cryptodev__pmd_8h_source.htmlrte__cryptodev__scheduler_8h.htmlrte__cryptodev__scheduler_8h_source.htmlrte__cryptodev__scheduler__operations_8h_source.htmlrte__cuckoo__hash_8h_source.htmlrte__cycles_8h.htmlrte__cycles_8h_source.htmlrte__debug_8h.htmlrte__debug_8h_source.htmlrte__dev_8h.htmlrte__dev_8h_source.htmlrte__dev__info_8h_source.htmlrte__devargs_8h.htmlrte__devargs_8h_source.htmlrte__distributor_8h.htmlrte__distributor_8h_source.htmlrte__distributor__single_8h.htmlrte__distributor__single_8h_source.htmlrte__dpaa2__mempool_8h.htmlrte__dpaa2__mempool_8h_source.htmlrte__eal_8h.htmlrte__eal_8h_source.htmlrte__eal__interrupts_8h.htmlrte__eal__interrupts_8h_source.htmlrte__eal__memconfig_8h.htmlrte__eal__memconfig_8h_source.htmlrte__efd_8h.htmlrte__efd_8h_source.htmlrte__efd__arm64_8h_source.htmlrte__efd__x86_8h_source.htmlrte__errno_8h.htmlrte__errno_8h_source.htmlrte__esp_8h.htmlrte__esp_8h_source.htmlrte__eth__bond_8h.htmlrte__eth__bond_8h_source.htmlrte__eth__bond__8023ad_8h_source.htmlrte__eth__bond__alb_8h_source.htmlrte__eth__ctrl_8h.htmlrte__eth__ctrl_8h_source.htmlrte__eth__softnic_8h_source.htmlrte__eth__softnic__internals_8h_source.htmlrte__ethdev_8h.htmlrte__ethdev_8h_source.htmlrte__ethdev__core_8h.htmlrte__ethdev__core_8h_source.htmlrte__ethdev__driver_8h.htmlrte__ethdev__driver_8h_source.htmlrte__ethdev__pci_8h_source.htmlrte__ethdev__vdev_8h_source.htmlrte__ether_8h.htmlrte__ether_8h_source.htmlrte__event__crypto__adapter_8h.htmlrte__event__crypto__adapter_8h_source.htmlrte__event__eth__rx__adapter_8h.htmlrte__event__eth__rx__adapter_8h_source.htmlrte__event__eth__tx__adapter_8h.htmlrte__event__eth__tx__adapter_8h_source.htmlrte__event__ring_8h.htmlrte__event__ring_8h_source.htmlrte__event__timer__adapter_8h.htmlrte__event__timer__adapter_8h_source.htmlrte__event__timer__adapter__pmd_8h.htmlrte__event__timer__adapter__pmd_8h_source.htmlrte__eventdev_8h.htmlrte__eventdev_8h_source.htmlrte__eventdev__pmd_8h.htmlrte__eventdev__pmd_8h_source.htmlrte__eventdev__pmd__pci_8h.htmlrte__eventdev__pmd__pci_8h_source.htmlrte__eventdev__pmd__vdev_8h.htmlrte__eventdev__pmd__vdev_8h_source.htmlrte__fbarray_8h.htmlrte__fbarray_8h_source.htmlrte__fbk__hash_8h.htmlrte__fbk__hash_8h_source.htmlrte__fib6_8h.htmlrte__fib6_8h_source.htmlrte__fib_8h.htmlrte__fib_8h_source.htmlrte__flow_8h.htmlrte__flow_8h_source.htmlrte__flow__classify_8h.htmlrte__flow__classify_8h_source.htmlrte__flow__classify__parse_8h_source.htmlrte__flow__driver_8h.htmlrte__flow__driver_8h_source.htmlrte__function__versioning_8h_source.htmlrte__gre_8h_source.htmlrte__gro_8h.htmlrte__gro_8h_source.htmlrte__gso_8h.htmlrte__gso_8h_source.htmlrte__gtp_8h.htmlrte__gtp_8h_source.htmlrte__hash_8h.htmlrte__hash_8h_source.htmlrte__hash__crc_8h.htmlrte__hash__crc_8h_source.htmlrte__hexdump_8h.htmlrte__hexdump_8h_source.htmlrte__higig_8h_source.htmlrte__hypervisor_8h.htmlrte__hypervisor_8h_source.htmlrte__icmp_8h.htmlrte__icmp_8h_source.htmlrte__interrupts_8h.htmlrte__interrupts_8h_source.htmlrte__io_8h.htmlrte__io_8h_source.htmlrte__ip_8h.htmlrte__ip_8h_source.htmlrte__ip__frag_8h.htmlrte__ip__frag_8h_source.htmlrte__ipsec_8h.htmlrte__ipsec_8h_source.htmlrte__ipsec__group_8h.htmlrte__ipsec__group_8h_source.htmlrte__ipsec__sa_8h.htmlrte__ipsec__sa_8h_source.htmlrte__ipsec__sad_8h.htmlrte__ipsec__sad_8h_source.htmlrte__jhash_8h.htmlrte__jhash_8h_source.htmlrte__jobstats_8h_source.htmlrte__keepalive_8h.htmlrte__keepalive_8h_source.htmlrte__kni_8h.htmlrte__kni_8h_source.htmlrte__kni__fifo_8h_source.htmlrte__kvargs_8h.htmlrte__kvargs_8h_source.htmlrte__latencystats_8h.htmlrte__latencystats_8h_source.htmlrte__launch_8h.htmlrte__launch_8h_source.htmlrte__lcore_8h.htmlrte__lcore_8h_source.htmlrte__log_8h.htmlrte__log_8h_source.htmlrte__lpm6_8h.htmlrte__lpm6_8h_source.htmlrte__lpm_8h.htmlrte__lpm_8h_source.htmlrte__lpm__altivec_8h_source.htmlrte__lpm__neon_8h_source.htmlrte__lpm__sse_8h_source.htmlrte__lru_8h_source.htmlrte__lru__arm64_8h_source.htmlrte__lru__x86_8h_source.htmlrte__malloc_8h.htmlrte__malloc_8h_source.htmlrte__mbuf_8h.htmlrte__mbuf_8h_source.htmlrte__mbuf__core_8h.htmlrte__mbuf__core_8h_source.htmlrte__mbuf__dyn_8h.htmlrte__mbuf__dyn_8h_source.htmlrte__mbuf__pool__ops_8h.htmlrte__mbuf__pool__ops_8h_source.htmlrte__mbuf__ptype_8h.htmlrte__mbuf__ptype_8h_source.htmlrte__mcslock_8h.htmlrte__mcslock_8h_source.htmlrte__member_8h.htmlrte__member_8h_source.htmlrte__member__ht_8h_source.htmlrte__member__vbf_8h_source.htmlrte__member__x86_8h_source.htmlrte__memcpy_8h.htmlrte__memcpy_8h_source.htmlrte__memory_8h.htmlrte__memory_8h_source.htmlrte__mempool_8h.htmlrte__mempool_8h_source.htmlrte__memzone_8h.htmlrte__memzone_8h_source.htmlrte__meter_8h.htmlrte__meter_8h_source.htmlrte__metrics_8h.htmlrte__metrics_8h_source.htmlrte__mpls_8h.htmlrte__mpls_8h_source.htmlrte__mtr_8h.htmlrte__mtr_8h_source.htmlrte__mtr__driver_8h.htmlrte__mtr__driver_8h_source.htmlrte__net_8h_source.htmlrte__net__crc_8h_source.htmlrte__option_8h.htmlrte__option_8h_source.htmlrte__pause_8h.htmlrte__pause_8h_source.htmlrte__pci_8h.htmlrte__pci_8h_source.htmlrte__pci__dev__feature__defs_8h_source.htmlrte__pci__dev__features_8h_source.htmlrte__pdump_8h.htmlrte__pdump_8h_source.htmlrte__per__lcore_8h.htmlrte__per__lcore_8h_source.htmlrte__pipeline_8h.htmlrte__pipeline_8h_source.htmlrte__pmd__bnxt_8h_source.htmlrte__pmd__dpaa2_8h.htmlrte__pmd__dpaa2_8h_source.htmlrte__pmd__dpaa2__cmdif_8h.htmlrte__pmd__dpaa2__cmdif_8h_source.htmlrte__pmd__dpaa2__qdma_8h.htmlrte__pmd__dpaa2__qdma_8h_source.htmlrte__pmd__dpaa_8h.htmlrte__pmd__dpaa_8h_source.htmlrte__pmd__i40e_8h.htmlrte__pmd__i40e_8h_source.htmlrte__pmd__ice_8h.htmlrte__pmd__ice_8h_source.htmlrte__pmd__ixgbe_8h.htmlrte__pmd__ixgbe_8h_source.htmlrte__port_8h.htmlrte__port_8h_source.htmlrte__port__ethdev_8h.htmlrte__port__ethdev_8h_source.htmlrte__port__eventdev_8h.htmlrte__port__eventdev_8h_source.htmlrte__port__fd_8h.htmlrte__port__fd_8h_source.htmlrte__port__frag_8h.htmlrte__port__frag_8h_source.htmlrte__port__in__action_8h.htmlrte__port__in__action_8h_source.htmlrte__port__kni_8h.htmlrte__port__kni_8h_source.htmlrte__port__ras_8h.htmlrte__port__ras_8h_source.htmlrte__port__ring_8h.htmlrte__port__ring_8h_source.htmlrte__port__sched_8h.htmlrte__port__sched_8h_source.htmlrte__port__source__sink_8h.htmlrte__port__source__sink_8h_source.htmlrte__port__sym__crypto_8h.htmlrte__port__sym__crypto_8h_source.htmlrte__power_8h.htmlrte__power_8h_source.htmlrte__power__empty__poll_8h.htmlrte__power__empty__poll_8h_source.htmlrte__prefetch_8h.htmlrte__prefetch_8h_source.htmlrte__random_8h.htmlrte__random_8h_source.htmlrte__rawdev_8h.htmlrte__rawdev_8h_source.htmlrte__rawdev__pmd_8h.htmlrte__rawdev__pmd_8h_source.htmlrte__rcu__qsbr_8h.htmlrte__rcu__qsbr_8h_source.htmlrte__reciprocal_8h_source.htmlrte__red_8h.htmlrte__red_8h_source.htmlrte__reorder_8h.htmlrte__reorder_8h_source.htmlrte__rib6_8h.htmlrte__rib6_8h_source.htmlrte__rib_8h.htmlrte__rib_8h_source.htmlrte__ring_8h.htmlrte__ring_8h_source.htmlrte__ring__c11__mem_8h_source.htmlrte__ring__generic_8h_source.htmlrte__rwlock_8h.htmlrte__rwlock_8h_source.htmlrte__sched_8h.htmlrte__sched_8h_source.htmlrte__sched__common_8h_source.htmlrte__sctp_8h.htmlrte__sctp_8h_source.htmlrte__security_8h.htmlrte__security_8h_source.htmlrte__security__driver_8h.htmlrte__security__driver_8h_source.htmlrte__service_8h.htmlrte__service_8h_source.htmlrte__service__component_8h_source.htmlrte__spinlock_8h.htmlrte__spinlock_8h_source.htmlrte__stack_8h.htmlrte__stack_8h_source.htmlrte__stack__lf_8h_source.htmlrte__stack__lf__c11_8h_source.htmlrte__stack__lf__generic_8h_source.htmlrte__stack__lf__stubs_8h_source.htmlrte__stack__std_8h_source.htmlrte__string__fns_8h.htmlrte__string__fns_8h_source.htmlrte__table_8h.htmlrte__table_8h_source.htmlrte__table__acl_8h.htmlrte__table__acl_8h_source.htmlrte__table__action_8h.htmlrte__table__action_8h_source.htmlrte__table__array_8h.htmlrte__table__array_8h_source.htmlrte__table__hash_8h.htmlrte__table__hash_8h_source.htmlrte__table__hash__cuckoo_8h.htmlrte__table__hash__cuckoo_8h_source.htmlrte__table__hash__func_8h_source.htmlrte__table__hash__func__arm64_8h_source.htmlrte__table__lpm_8h.htmlrte__table__lpm_8h_source.htmlrte__table__lpm__ipv6_8h.htmlrte__table__lpm__ipv6_8h_source.htmlrte__table__stub_8h.htmlrte__table__stub_8h_source.htmlrte__tailq_8h.htmlrte__tailq_8h_source.htmlrte__tcp_8h.htmlrte__tcp_8h_source.htmlrte__telemetry_8h.htmlrte__telemetry_8h_source.htmlrte__telemetry__internal_8h_source.htmlrte__telemetry__parser_8h_source.htmlrte__telemetry__socket__tests_8h_source.htmlrte__test_8h_source.htmlrte__thash_8h.htmlrte__thash_8h_source.htmlrte__ticketlock_8h.htmlrte__ticketlock_8h_source.htmlrte__time_8h_source.htmlrte__timer_8h.htmlrte__timer_8h_source.htmlrte__tm_8h.htmlrte__tm_8h_source.htmlrte__tm__driver_8h.htmlrte__tm__driver_8h_source.htmlrte__udp_8h.htmlrte__udp_8h_source.htmlrte__uuid_8h.htmlrte__uuid_8h_source.htmlrte__vdpa_8h.htmlrte__vdpa_8h_source.htmlrte__vect_8h.htmlrte__vect_8h_source.htmlrte__version_8h.htmlrte__version_8h_source.htmlrte__vfio_8h.htmlrte__vfio_8h_source.htmlrte__vhost_8h.htmlrte__vhost_8h_source.htmlrte__vhost__crypto_8h_source.htmlrte__vxlan_8h.htmlrte__vxlan_8h_source.htmlsearchall_0.htmlall_0.jsall_1.htmlall_1.jsall_10.htmlall_10.jsall_11.htmlall_11.jsall_12.htmlall_12.jsall_13.htmlall_13.jsall_14.htmlall_14.jsall_15.htmlall_15.jsall_16.htmlall_16.jsall_17.htmlall_17.jsall_18.htmlall_18.jsall_19.htmlall_19.jsall_2.htmlall_2.jsall_3.htmlall_3.jsall_4.htmlall_4.jsall_5.htmlall_5.jsall_6.htmlall_6.jsall_7.htmlall_7.jsall_8.htmlall_8.jsall_9.htmlall_9.jsall_a.htmlall_a.jsall_b.htmlall_b.jsall_c.htmlall_c.jsall_d.htmlall_d.jsall_e.htmlall_e.jsall_f.htmlall_f.jsclasses_0.htmlclasses_0.jsclasses_1.htmlclasses_1.jsclasses_2.htmlclasses_2.jsclasses_3.htmlclasses_3.jsclasses_4.htmlclasses_4.jsclasses_5.htmlclasses_5.jsclasses_6.htmlclasses_6.jsclasses_7.htmlclasses_7.jsclose.pngdefines_0.htmldefines_0.jsdefines_1.htmldefines_1.jsdefines_2.htmldefines_2.jsdefines_3.htmldefines_3.jsdefines_4.htmldefines_4.jsdefines_5.htmldefines_5.jsdefines_6.htmldefines_6.jsdefines_7.htmldefines_7.jsdefines_8.htmldefines_8.jsdefines_9.htmldefines_9.jsdefines_a.htmldefines_a.jsdefines_b.htmldefines_b.jsdefines_c.htmldefines_c.jsdefines_d.htmldefines_d.jsdefines_e.htmldefines_e.jsenums_0.htmlenums_0.jsenumvalues_0.htmlenumvalues_0.jsenumvalues_1.htmlenumvalues_1.jsenumvalues_2.htmlenumvalues_2.jsenumvalues_3.htmlenumvalues_3.jsenumvalues_4.htmlenumvalues_4.jsenumvalues_5.htmlenumvalues_5.jsenumvalues_6.htmlenumvalues_6.jsenumvalues_7.htmlenumvalues_7.jsfiles_0.htmlfiles_0.jsfiles_1.htmlfiles_1.jsfunctions_0.htmlfunctions_0.jsfunctions_1.htmlfunctions_1.jsfunctions_2.htmlfunctions_2.jsfunctions_3.htmlfunctions_3.jsfunctions_4.htmlfunctions_4.jsfunctions_5.htmlfunctions_5.jsfunctions_6.htmlfunctions_6.jsmag_sel.pngnomatches.htmlpages_0.htmlpages_0.jspages_1.htmlpages_1.jssearch.csssearch.jssearch_l.pngsearch_m.pngsearch_r.pngsearchdata.jstypedefs_0.htmltypedefs_0.jstypedefs_1.htmltypedefs_1.jstypedefs_2.htmltypedefs_2.jstypedefs_3.htmltypedefs_3.jstypedefs_4.htmltypedefs_4.jstypedefs_5.htmltypedefs_5.jstypedefs_6.htmltypedefs_6.jstypedefs_7.htmltypedefs_7.jstypedefs_8.htmltypedefs_8.jstypedefs_9.htmltypedefs_9.jstypedefs_a.htmltypedefs_a.jsvariables_0.htmlvariables_0.jsvariables_1.htmlvariables_1.jsvariables_10.htmlvariables_10.jsvariables_11.htmlvariables_11.jsvariables_12.htmlvariables_12.jsvariables_13.htmlvariables_13.jsvariables_14.htmlvariables_14.jsvariables_15.htmlvariables_15.jsvariables_16.htmlvariables_16.jsvariables_17.htmlvariables_17.jsvariables_18.htmlvariables_18.jsvariables_19.htmlvariables_19.jsvariables_2.htmlvariables_2.jsvariables_3.htmlvariables_3.jsvariables_4.htmlvariables_4.jsvariables_5.htmlvariables_5.jsvariables_6.htmlvariables_6.jsvariables_7.htmlvariables_7.jsvariables_8.htmlvariables_8.jsvariables_9.htmlvariables_9.jsvariables_a.htmlvariables_a.jsvariables_b.htmlvariables_b.jsvariables_c.htmlvariables_c.jsvariables_d.htmlvariables_d.jsvariables_e.htmlvariables_e.jsvariables_f.htmlvariables_f.jssplitbar.pngstruct____rte__aligned.htmlstructip__frag__tbl__stat.htmlstructlacpdu.htmlstructlacpdu__header.htmlstructmapped__pci__resource.htmlstructpci__map.htmlstructpipeline__params.htmlstructpmd__internals.htmlstructpmd__params.htmlstructrte__acl__config.htmlstructrte__acl__field.htmlstructrte__acl__field__def.htmlstructrte__acl__param.htmlstructrte__acl__rule__data.htmlstructrte__arp__hdr.htmlstructrte__arp__ipv4.htmlstructrte__atomic16__t.htmlstructrte__atomic32__t.htmlstructrte__atomic64__t.htmlstructrte__bbdev__dec__op.htmlstructrte__bbdev__driver__info.htmlstructrte__bbdev__enc__op.htmlstructrte__bbdev__info.htmlstructrte__bbdev__op__cap.htmlstructrte__bbdev__op__cap__ldpc__dec.htmlstructrte__bbdev__op__cap__ldpc__enc.htmlstructrte__bbdev__op__cap__turbo__dec.htmlstructrte__bbdev__op__cap__turbo__enc.htmlstructrte__bbdev__op__data.htmlstructrte__bbdev__op__dec__ldpc__cb__params.htmlstructrte__bbdev__op__dec__ldpc__tb__params.htmlstructrte__bbdev__op__dec__turbo__cb__params.htmlstructrte__bbdev__op__dec__turbo__tb__params.htmlstructrte__bbdev__op__enc__ldpc__cb__params.htmlstructrte__bbdev__op__enc__ldpc__tb__params.htmlstructrte__bbdev__op__enc__turbo__cb__params.htmlstructrte__bbdev__op__enc__turbo__tb__params.htmlstructrte__bbdev__op__ldpc__dec.htmlstructrte__bbdev__op__ldpc__enc.htmlstructrte__bbdev__op__turbo__dec.htmlstructrte__bbdev__op__turbo__enc.htmlstructrte__bbdev__ops.htmlstructrte__bbdev__queue__conf.htmlstructrte__bbdev__queue__info.htmlstructrte__bbdev__stats.htmlstructrte__bitmap.htmlstructrte__bpf__arg.htmlstructrte__bpf__jit.htmlstructrte__bpf__prm.htmlstructrte__bpf__xsym.htmlstructrte__bus.htmlstructrte__bus__conf.htmlstructrte__cfgfile__entry.htmlstructrte__cfgfile__parameters.htmlstructrte__class.htmlstructrte__comp__compress__xform.htmlstructrte__comp__decompress__xform.htmlstructrte__comp__deflate__params.htmlstructrte__comp__op.htmlstructrte__comp__xform.htmlstructrte__compressdev.htmlstructrte__compressdev__capabilities.htmlstructrte__compressdev__config.htmlstructrte__compressdev__data.htmlstructrte__compressdev__global.htmlstructrte__compressdev__info.htmlstructrte__compressdev__ops.htmlstructrte__compressdev__stats.htmlstructrte__crypto__asym__op.htmlstructrte__crypto__asym__xform.htmlstructrte__crypto__auth__xform.htmlstructrte__crypto__cipher__xform.htmlstructrte__crypto__dh__op__param.htmlstructrte__crypto__dh__xform.htmlstructrte__crypto__dsa__op__param.htmlstructrte__crypto__dsa__xform.htmlstructrte__crypto__mod__op__param.htmlstructrte__crypto__modex__xform.htmlstructrte__crypto__modinv__xform.htmlstructrte__crypto__op.htmlstructrte__crypto__op__pool__private.htmlstructrte__crypto__param__range.htmlstructrte__crypto__rsa__op__param.htmlstructrte__crypto__rsa__priv__key__qt.htmlstructrte__crypto__rsa__xform.htmlstructrte__crypto__sym__op.htmlstructrte__crypto__sym__xform.htmlstructrte__cryptodev.htmlstructrte__cryptodev__asym__capability__idx.htmlstructrte__cryptodev__asym__session.htmlstructrte__cryptodev__asymmetric__capability.htmlstructrte__cryptodev__asymmetric__xform__capability.htmlstructrte__cryptodev__capabilities.htmlstructrte__cryptodev__config.htmlstructrte__cryptodev__data.htmlstructrte__cryptodev__global.htmlstructrte__cryptodev__info.htmlstructrte__cryptodev__ops.htmlstructrte__cryptodev__qp__conf.htmlstructrte__cryptodev__scheduler.htmlstructrte__cryptodev__stats.htmlstructrte__cryptodev__sym__capability__idx.htmlstructrte__cryptodev__sym__session.htmlstructrte__cryptodev__symmetric__capability.htmlstructrte__dev__iterator.htmlstructrte__devargs.htmlstructrte__device.htmlstructrte__dpaa2__cmdif__context.htmlstructrte__driver.htmlstructrte__epoll__event.htmlstructrte__esp__hdr.htmlstructrte__esp__tail.htmlstructrte__eth__burst__mode.htmlstructrte__eth__conf.htmlstructrte__eth__dcb__info.htmlstructrte__eth__dcb__tc__queue__mapping.htmlstructrte__eth__desc__lim.htmlstructrte__eth__dev__info.htmlstructrte__eth__dev__module__info.htmlstructrte__eth__dev__portconf.htmlstructrte__eth__dev__tx__buffer.htmlstructrte__eth__devargs.htmlstructrte__eth__ethertype__filter.htmlstructrte__eth__event__ipsec__desc.htmlstructrte__eth__fc__conf.htmlstructrte__eth__fdir__action.htmlstructrte__eth__fdir__filter.htmlstructrte__eth__fdir__filter__info.htmlstructrte__eth__fdir__flex__conf.htmlstructrte__eth__fdir__flex__mask.htmlstructrte__eth__fdir__flow__ext.htmlstructrte__eth__fdir__info.htmlstructrte__eth__fdir__input.htmlstructrte__eth__fdir__masks.htmlstructrte__eth__fdir__stats.htmlstructrte__eth__flex__filter.htmlstructrte__eth__flex__payload__cfg.htmlstructrte__eth__global__cfg.htmlstructrte__eth__hairpin__cap.htmlstructrte__eth__hairpin__conf.htmlstructrte__eth__hairpin__peer.htmlstructrte__eth__hash__filter__info.htmlstructrte__eth__hash__global__conf.htmlstructrte__eth__input__set__conf.htmlstructrte__eth__ipv4__flow.htmlstructrte__eth__ipv6__flow.htmlstructrte__eth__l2__flow.htmlstructrte__eth__l2__tunnel__conf.htmlstructrte__eth__link.htmlstructrte__eth__mac__filter.htmlstructrte__eth__mac__vlan__flow.htmlstructrte__eth__mirror__conf.htmlstructrte__eth__ntuple__filter.htmlstructrte__eth__pfc__conf.htmlstructrte__eth__rss__conf.htmlstructrte__eth__rss__reta__entry64.htmlstructrte__eth__rxconf.htmlstructrte__eth__rxmode.htmlstructrte__eth__rxq__info.htmlstructrte__eth__sctpv4__flow.htmlstructrte__eth__sctpv6__flow.htmlstructrte__eth__stats.htmlstructrte__eth__switch__info.htmlstructrte__eth__syn__filter.htmlstructrte__eth__tcpv4__flow.htmlstructrte__eth__tcpv6__flow.htmlstructrte__eth__thresh.htmlstructrte__eth__tunnel__filter__conf.htmlstructrte__eth__tunnel__flow.htmlstructrte__eth__txconf.htmlstructrte__eth__txmode.htmlstructrte__eth__txq__info.htmlstructrte__eth__udp__tunnel.htmlstructrte__eth__udpv4__flow.htmlstructrte__eth__udpv6__flow.htmlstructrte__eth__vlan__mirror.htmlstructrte__eth__vmdq__dcb__conf.htmlstructrte__eth__vmdq__rx__conf.htmlstructrte__eth__xstat.htmlstructrte__eth__xstat__name.htmlstructrte__ether__addr.htmlstructrte__ether__hdr.htmlstructrte__event.htmlstructrte__event__crypto__adapter__conf.htmlstructrte__event__crypto__adapter__stats.htmlstructrte__event__crypto__request.htmlstructrte__event__dev__config.htmlstructrte__event__dev__info.htmlstructrte__event__dev__xstats__name.htmlstructrte__event__eth__rx__adapter__conf.htmlstructrte__event__eth__rx__adapter__queue__conf.htmlstructrte__event__eth__rx__adapter__stats.htmlstructrte__event__eth__tx__adapter__conf.htmlstructrte__event__eth__tx__adapter__stats.htmlstructrte__event__port__conf.htmlstructrte__event__queue__conf.htmlstructrte__event__ring.htmlstructrte__event__timer.htmlstructrte__event__timer__adapter__conf.htmlstructrte__event__timer__adapter__info.htmlstructrte__event__timer__adapter__stats.htmlstructrte__eventdev__global.htmlstructrte__eventdev__ops.htmlstructrte__fbk__hash__params.htmlstructrte__fbk__hash__table.htmlstructrte__fdir__conf.htmlstructrte__fib6__conf.htmlstructrte__fib__conf.htmlstructrte__flow__action__count.htmlstructrte__flow__action__jump.htmlstructrte__flow__action__mark.htmlstructrte__flow__action__meter.htmlstructrte__flow__action__nvgre__encap.htmlstructrte__flow__action__of__pop__mpls.htmlstructrte__flow__action__of__push__mpls.htmlstructrte__flow__action__of__push__vlan.htmlstructrte__flow__action__of__set__mpls__ttl.htmlstructrte__flow__action__of__set__nw__ttl.htmlstructrte__flow__action__of__set__vlan__pcp.htmlstructrte__flow__action__of__set__vlan__vid.htmlstructrte__flow__action__phy__port.htmlstructrte__flow__action__port__id.htmlstructrte__flow__action__queue.htmlstructrte__flow__action__raw__decap.htmlstructrte__flow__action__raw__encap.htmlstructrte__flow__action__rss.htmlstructrte__flow__action__security.htmlstructrte__flow__action__set__ipv4.htmlstructrte__flow__action__set__ipv6.htmlstructrte__flow__action__set__mac.htmlstructrte__flow__action__set__meta.htmlstructrte__flow__action__set__tag.htmlstructrte__flow__action__set__tp.htmlstructrte__flow__action__set__ttl.htmlstructrte__flow__action__vf.htmlstructrte__flow__action__vxlan__encap.htmlstructrte__flow__attr.htmlstructrte__flow__classifier__params.htmlstructrte__flow__classify__ipv4__5tuple.htmlstructrte__flow__classify__stats.htmlstructrte__flow__classify__table__params.htmlstructrte__flow__conv__rule.htmlstructrte__flow__desc.htmlstructrte__flow__error.htmlstructrte__flow__expand__node.htmlstructrte__flow__expand__rss.htmlstructrte__flow__item.htmlstructrte__flow__item__ah.htmlstructrte__flow__item__any.htmlstructrte__flow__item__arp__eth__ipv4.htmlstructrte__flow__item__e__tag.htmlstructrte__flow__item__esp.htmlstructrte__flow__item__eth.htmlstructrte__flow__item__fuzzy.htmlstructrte__flow__item__geneve.htmlstructrte__flow__item__gre.htmlstructrte__flow__item__gtp.htmlstructrte__flow__item__gtp__psc.htmlstructrte__flow__item__higig2__hdr.htmlstructrte__flow__item__icmp.htmlstructrte__flow__item__icmp6.htmlstructrte__flow__item__icmp6__nd__na.htmlstructrte__flow__item__icmp6__nd__ns.htmlstructrte__flow__item__icmp6__nd__opt.htmlstructrte__flow__item__icmp6__nd__opt__sla__eth.htmlstructrte__flow__item__icmp6__nd__opt__tla__eth.htmlstructrte__flow__item__igmp.htmlstructrte__flow__item__ipv4.htmlstructrte__flow__item__ipv6.htmlstructrte__flow__item__ipv6__ext.htmlstructrte__flow__item__mark.htmlstructrte__flow__item__meta.htmlstructrte__flow__item__mpls.htmlstructrte__flow__item__nsh.htmlstructrte__flow__item__nvgre.htmlstructrte__flow__item__phy__port.htmlstructrte__flow__item__port__id.htmlstructrte__flow__item__pppoe.htmlstructrte__flow__item__pppoe__proto__id.htmlstructrte__flow__item__raw.htmlstructrte__flow__item__sctp.htmlstructrte__flow__item__tag.htmlstructrte__flow__item__tcp.htmlstructrte__flow__item__udp.htmlstructrte__flow__item__vf.htmlstructrte__flow__item__vlan.htmlstructrte__flow__item__vxlan.htmlstructrte__flow__item__vxlan__gpe.htmlstructrte__flow__ops.htmlstructrte__flow__query__count.htmlstructrte__gre__hdr.htmlstructrte__gro__param.htmlstructrte__gso__ctx.htmlstructrte__gtp__hdr.htmlstructrte__hash.htmlstructrte__hash__bucket.htmlstructrte__hash__parameters.htmlstructrte__higig2__frc.htmlstructrte__higig2__hdr.htmlstructrte__higig2__ppt__type0.htmlstructrte__higig2__ppt__type1.htmlstructrte__icmp__hdr.htmlstructrte__intr__conf.htmlstructrte__intr__handle.htmlstructrte__ip__frag__death__row.htmlstructrte__ip__frag__tbl.htmlstructrte__ipsec__group.htmlstructrte__ipsec__sa__pkt__func.htmlstructrte__ipsec__sa__prm.htmlstructrte__ipsec__sad__conf.htmlstructrte__ipsec__session.htmlstructrte__ipv4__hdr.htmlstructrte__ipv4__tuple.htmlstructrte__ipv6__hdr.htmlstructrte__ipv6__tuple.htmlstructrte__kni__conf.htmlstructrte__kni__ops.htmlstructrte__kvargs.htmlstructrte__kvargs__pair.htmlstructrte__logs.htmlstructrte__lpm6__config.htmlstructrte__lpm__config.htmlstructrte__malloc__socket__stats.htmlstructrte__mbuf.htmlstructrte__mbuf__dynfield.htmlstructrte__mbuf__dynflag.htmlstructrte__mbuf__ext__shared__info.htmlstructrte__mbuf__sched.htmlstructrte__mcslock.htmlstructrte__mem__resource.htmlstructrte__member__parameters.htmlstructrte__mempool.htmlstructrte__mempool__cache.htmlstructrte__mempool__info.htmlstructrte__mempool__memhdr.htmlstructrte__mempool__objhdr.htmlstructrte__mempool__objsz.htmlstructrte__mempool__ops.htmlstructrte__mempool__ops__table.htmlstructrte__memseg__list.htmlstructrte__memzone.htmlstructrte__meter__srtcm__params.htmlstructrte__meter__trtcm.htmlstructrte__meter__trtcm__params.htmlstructrte__meter__trtcm__rfc4115.htmlstructrte__meter__trtcm__rfc4115__params.htmlstructrte__metric__name.htmlstructrte__metric__value.htmlstructrte__mpls__hdr.htmlstructrte__mtr__capabilities.htmlstructrte__mtr__error.htmlstructrte__mtr__meter__profile.htmlstructrte__mtr__params.htmlstructrte__mtr__stats.htmlstructrte__net__hdr__lens.htmlstructrte__option.htmlstructrte__param__log2__range.htmlstructrte__pci__addr.htmlstructrte__pci__id.htmlstructrte__pipeline__params.htmlstructrte__pipeline__port__in__params.htmlstructrte__pipeline__port__in__stats.htmlstructrte__pipeline__port__out__params.htmlstructrte__pipeline__port__out__stats.htmlstructrte__pipeline__table__entry.htmlstructrte__pipeline__table__params.htmlstructrte__pipeline__table__stats.htmlstructrte__pktmbuf__pool__private.htmlstructrte__pmd__i40e__ddp__device__id.htmlstructrte__pmd__i40e__ddp__version.htmlstructrte__pmd__i40e__mb__event__param.htmlstructrte__pmd__i40e__pkt__template__action.htmlstructrte__pmd__i40e__pkt__template__conf.htmlstructrte__pmd__i40e__pkt__template__input.htmlstructrte__pmd__i40e__profile__info.htmlstructrte__pmd__i40e__profile__list.htmlstructrte__pmd__i40e__proto__info.htmlstructrte__pmd__i40e__ptype__info.htmlstructrte__pmd__i40e__queue__region__conf.htmlstructrte__pmd__ixgbe__mb__event__param.htmlstructrte__port__ethdev__reader__params.htmlstructrte__port__ethdev__writer__nodrop__params.htmlstructrte__port__ethdev__writer__params.htmlstructrte__port__eventdev__reader__params.htmlstructrte__port__eventdev__writer__nodrop__params.htmlstructrte__port__eventdev__writer__params.htmlstructrte__port__fd__reader__params.htmlstructrte__port__fd__writer__nodrop__params.htmlstructrte__port__fd__writer__params.htmlstructrte__port__in__action__fltr__config.htmlstructrte__port__in__action__fltr__params.htmlstructrte__port__in__action__lb__config.htmlstructrte__port__in__action__lb__params.htmlstructrte__port__in__ops.htmlstructrte__port__in__stats.htmlstructrte__port__kni__reader__params.htmlstructrte__port__kni__writer__nodrop__params.htmlstructrte__port__kni__writer__params.htmlstructrte__port__out__ops.htmlstructrte__port__out__stats.htmlstructrte__port__ring__reader__frag__params.htmlstructrte__port__ring__reader__params.htmlstructrte__port__ring__writer__nodrop__params.htmlstructrte__port__ring__writer__params.htmlstructrte__port__ring__writer__ras__params.htmlstructrte__port__sched__reader__params.htmlstructrte__port__sched__writer__params.htmlstructrte__port__sink__params.htmlstructrte__port__source__params.htmlstructrte__port__sym__crypto__reader__params.htmlstructrte__port__sym__crypto__writer__nodrop__params.htmlstructrte__port__sym__crypto__writer__params.htmlstructrte__power__core__capabilities.htmlstructrte__qdma__attr.htmlstructrte__qdma__config.htmlstructrte__qdma__job.htmlstructrte__qdma__vq__stats.htmlstructrte__rawdev__ops.htmlstructrte__rawdev__xstats__name.htmlstructrte__red.htmlstructrte__red__config.htmlstructrte__red__params.htmlstructrte__rib6__conf.htmlstructrte__rib__conf.htmlstructrte__ring.htmlstructrte__rwlock__t.htmlstructrte__sched__port__params.htmlstructrte__sched__queue__stats.htmlstructrte__sched__subport__stats.htmlstructrte__sctp__hdr.htmlstructrte__security__capability.htmlstructrte__security__capability__idx.htmlstructrte__security__ctx.htmlstructrte__security__ipsec__sa__options.htmlstructrte__security__ipsec__tunnel__param.htmlstructrte__security__ipsec__xform.htmlstructrte__security__macsec__xform.htmlstructrte__security__ops.htmlstructrte__security__pdcp__xform.htmlstructrte__security__session__conf.htmlstructrte__service__spec.htmlstructrte__spinlock__recursive__t.htmlstructrte__spinlock__t.htmlstructrte__table__acl__params.htmlstructrte__table__acl__rule__add__params.htmlstructrte__table__acl__rule__delete__params.htmlstructrte__table__action__common__config.htmlstructrte__table__action__decap__params.htmlstructrte__table__action__dscp__table.htmlstructrte__table__action__dscp__table__entry.htmlstructrte__table__action__encap__config.htmlstructrte__table__action__encap__ether__params.htmlstructrte__table__action__encap__mpls__params.htmlstructrte__table__action__encap__params.htmlstructrte__table__action__encap__pppoe__params.htmlstructrte__table__action__encap__qinq__params.htmlstructrte__table__action__encap__vlan__params.htmlstructrte__table__action__encap__vxlan__params.htmlstructrte__table__action__ether__hdr.htmlstructrte__table__action__fwd__params.htmlstructrte__table__action__ipv4__header.htmlstructrte__table__action__ipv6__header.htmlstructrte__table__action__lb__config.htmlstructrte__table__action__lb__params.htmlstructrte__table__action__meter__profile.htmlstructrte__table__action__mpls__hdr.htmlstructrte__table__action__mtr__config.htmlstructrte__table__action__mtr__counters.htmlstructrte__table__action__mtr__counters__tc.htmlstructrte__table__action__mtr__params.htmlstructrte__table__action__mtr__tc__params.htmlstructrte__table__action__nat__config.htmlstructrte__table__action__nat__params.htmlstructrte__table__action__pppoe__hdr.htmlstructrte__table__action__stats__config.htmlstructrte__table__action__stats__counters.htmlstructrte__table__action__stats__params.htmlstructrte__table__action__sym__crypto__config.htmlstructrte__table__action__sym__crypto__params.htmlstructrte__table__action__tag__params.htmlstructrte__table__action__time__params.htmlstructrte__table__action__tm__config.htmlstructrte__table__action__tm__params.htmlstructrte__table__action__ttl__config.htmlstructrte__table__action__ttl__counters.htmlstructrte__table__action__ttl__params.htmlstructrte__table__action__udp__header.htmlstructrte__table__action__vlan__hdr.htmlstructrte__table__action__vlo.htmlstructrte__table__action__vxlan__hdr.htmlstructrte__table__array__key.htmlstructrte__table__array__params.htmlstructrte__table__encap__ether__qinq__pppoe.htmlstructrte__table__hash__cuckoo__params.htmlstructrte__table__hash__params.htmlstructrte__table__lpm__ipv6__key.htmlstructrte__table__lpm__ipv6__params.htmlstructrte__table__lpm__key.htmlstructrte__table__lpm__params.htmlstructrte__table__ops.htmlstructrte__table__stats.htmlstructrte__tailq__entry.htmlstructrte__tailq__head.htmlstructrte__tcp__hdr.htmlstructrte__timecounter.htmlstructrte__timer.htmlstructrte__tm__capabilities.htmlstructrte__tm__error.htmlstructrte__tm__level__capabilities.htmlstructrte__tm__node__capabilities.htmlstructrte__tm__node__params.htmlstructrte__tm__node__stats.htmlstructrte__tm__red__params.htmlstructrte__tm__shaper__params.htmlstructrte__tm__token__bucket.htmlstructrte__tm__wred__params.htmlstructrte__udp__hdr.htmlstructrte__vdev__driver.htmlstructrte__vdpa__dev__addr.htmlstructrte__vdpa__dev__ops.htmlstructrte__vdpa__device.htmlstructrte__vhost__mem__region.htmlstructrte__vhost__memory.htmlstructrte__vhost__user__extern__ops.htmlstructrte__vlan__filter__conf.htmlstructrte__vlan__hdr.htmlstructrte__vxlan__gpe__hdr.htmlstructrte__vxlan__hdr.htmlstructslow__protocol.htmlstructslow__protocol__frame.htmlstructsoftnic__cryptodev__params.htmlstructsoftnic__link__params.htmlstructsoftnic__mempool__params.htmlstructsoftnic__mtr__meter__profile.htmlstructsoftnic__port__in__action__profile__params.htmlstructsoftnic__swq__params.htmlstructsoftnic__table__action__profile__params.htmlstructsoftnic__tap.htmlstructsoftnic__thread.htmlstructvhost__device__ops.htmlsync_off.pngsync_on.pngtab_a.pngtab_b.pngtab_h.pngtab_s.pngtabs.cssunionrte__eth__fdir__flow.htmlunionrte__event__crypto__metadata.htmlunionrte__fbk__hash__entry.htmlunionrte__net__ice__proto__xtr__metadata.htmlunionrte__ticketlock__t.htmlunionrte__timer__status.htmlexamples.dox/usr/share/doc/packages//usr/share/doc/packages/dpdk-thunderx-doc//usr/share/doc/packages/dpdk//usr/share/doc/packages/dpdk/api//usr/share/doc/packages/dpdk/api/search/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:25950/SUSE_SLE-15-SP3_Update/06e7d1a1371fa731af18a74b9731d929-dpdk.SUSE_SLE-15-SP3_Update:thunderxdrpmxz5aarch64-suse-linux          directoryASCII textHTML document, ASCII text, with very long linesPNG image data, 8 x 30, 8-bit/color RGBA, non-interlacedPNG image data, 7 x 8, 8-bit/color RGBA, non-interlacedPNG image data, 9 x 9, 8-bit/color RGBA, non-interlacedHTML document, ASCII textPNG image data, 24 x 22, 8-bit/color RGBA, non-interlacedPNG image data, 104 x 31, 8-bit/color RGBA, non-interlacedUTF-8 Unicode text, with very long linesPNG image data, 1 x 56, 8-bit/color RGB, non-interlacedPNG image data, 1 x 6, 8-bit/color RGBA, non-interlacedPNG image data, 1 x 12, 8-bit/color RGB, non-interlacedHTML document, UTF-8 Unicode text, with very long linesASCII text, with very long linesPNG image data, 11 x 11, 8-bit/color RGBA, non-interlacedPNG image data, 20 x 19, 8-bit/color RGBA, non-interlacedPNG image data, 2 x 19, 8-bit/color RGB, non-interlacedPNG image data, 18 x 19, 8-bit/color RGBA, non-interlacedPNG image data, 6 x 1024, 8-bit/color RGB, non-interlacedHTML document, UTF-8 Unicode textPNG image data, 24 x 24, 8-bit/color RGBA, non-interlacedPNG image data, 1 x 36, 8-bit/color RGB, non-interlacedASCII text, with very long lines, with no line terminatorsutf-85000fa53387aeb31d253423e06e7a97446aa2484ce52c98818756dc9e4b9216f?@7zXZ !t/5#t]"k%=,sYepohrl|QsboMo-jGt~3p3|vlJ PQ(b͡$|N>jVB}"m#6Ԯ^>o~44﫡  w?!xb>gR1R }8tcK0\̨' Xav#OvnyE9s1!APrknbiGJmξf093p=wv^i{23py;_lq)S@у{֋^e=eza0Nctei;"x=2 b{4b$j=9}e5 >V.>d7;3*z>JzKlo++FUaʶĞ 5Ux?3PR7EU9!; %3O>@v~\ѐx?ӟ2I2HsJ|='?S֜Q:Z'#HQ!ss qL'9/3bgu-NA9_>uv(c$A/s_ /p hX10T}8]{P;XgǰOmd ‰#kްtYcj_<s?2)#^׶ 6 :p/*%e"sQIRMY@ީ+೦S $DC[ .򿉜Md j9X ؄!|6dňa0"%~^R0Ҭboo TY1r8L+W';9ݜ+d-y;5.:?4vUB%_G _+yQe>!֘΂;(1 s"͵E$ʨXUIG&y+oRHjvv.1ۆ"#of+Q98"4Jeoq7$cKLdY"u}GFqM { UwR^i;Y41c? Op !! -DQ!B]eØ}}`6Pz/&I +ls˵xM{Hf'_0Y7CDo* /2CUYSz#*y[nڋ(Qa yPLɪY2vfs6"SйK‘HmWRŪ#)yrcf/$i_ZW8U M'Y!Q5D0:18)o7U}K@#~֬Uٿe 1-X$rI=#A9P4njnM8*$yq|nx ꑾ8%W&`͠9Uϲ6t]V&%k1^J;QT̙Ԋ?䇒?v\luh*w "п9}7HbmR̎ąAis1DF!όZB ]Hם,\jg_7ȣ /8o|9׎2Ip7 +KvY fiZ)ԁ)1u\zRFRMACѸSs$ %U{W4EoZrsst?gadU "1k$EHV9?tw#7͏*-F?AST.@N\ySIW eGXrgZUAtRgTIQp{_ g+,-^ _ď Ҧ41`Wf9, ܌2ĖTeɊWo6hF nI>F+ex=y'\l_}>>8H,cr{o|D7%s|)eEjÛ*uj~LBl6kS"ňѮȐp|[dFEd/7\=&pA"Yƚ z RoRano[=^O 3T*AaEzdJpŨ֖iizr^8Ù> !~cR`?oI^Mim9vcFC`$ qR\U&GԻuG1ZCGq>(<||e:х€ѝ2m@_sbϵ񏆣"%AnvcP*͔T89J6֦*ۺef~%h`}96T:fu5۔ ^cs:b u7s1Gm2Ӝv SdU|2݌Z LOM<߽J&|RĆ693]@CF͸NbQ~[PN͎/9cEi߶uIܦy1@ .\6j wv!MbJ |ٙFoI?xBp'ՆhJd2vJFz X0(qV:@UqSX^3{B3i]`nkW4lYc^RP=-p2`k*Q pě #omjKA5f0JkN_ymw|2yk |5Y1-cgLXsO%ړ%!v$ZOQ ߳{ɾJgk7=:$crM~[bvꚚm~ {oUɃ>&d'*4T 7AG:TmNY7ȇHR&:p+MU~^-.T &Uy*R0dKQXFß%L/H$Tkg+M}<Ŋj[;#JwjBo"Fm/Nq*2u$yݚĆ9D8z=EMg+iZ&,)Z2R S P6%u˸ޮoyhONd^&HaDŽnq?Xz>YiWQ^}J|K%GTy Ze 9$5Sqq  }5e&uЈ96""k)mC7jD0-s1*_i%T;glsdjJji[<({Y9yoEY FG,(%!%=r'=X!+ǴsbK/! Z0qReøayyflz B/J:I r%vEqJhRBUh1+}i֤ǔ+!~-In1E;XG8`sCʹe=U,j>_E' G3|r<{M!Ucτ<3o& ֲ%- @R!1]7@ٞ#HG0;u54ȗcڎZ&Dʍ`FDr9( EN3ixq!@:$Q/t]UxnuTF:jX^}L+}>|c3m6 TM,71 |\řҼ1+ܟ!1[tH^@XUgRjU(7p"KUYӶH2naƩX 8ո V䠲0poB%^'4 FBD J@ɋ7Cwu@ `1"Ǿ / ]ݟ-Fn3 簴Cz>x \3B([]Ce1xhL-Nt )sMN^TV/:{:Exu)-y)?y^Q6K8hfɐ1.x8eyE+_aw)kMóvLY_Mm?1J#:Ƒ+"BV# No8[fd ;[32 ]> mքrL H9ւ"Z\ww!CЈ. d<2cע-HIY4ݵ _v!fJ2Ycд~6W Y1EߎeOpJ”`+!`q01#1%M$%t8Y Y㶴t !۹A6# Ã&P߿ ZZWrtIRS:#imUZѹzzzUcq:rլժ]%n ,6enޣJno ņ`