ELF>8@@! GNUx LinuxLH=uU LH]1ff.UHAWIAVAUATSHeH%(HE1HILeH <@ <@HELMHEeHL1H <@H eHLHCfSCCL9uIdž1MwAGHUeH3%(uH[A\A]A^A_]øfUHATISHHA@ HH8߃fDH @ *bÈPHPA@2HB fDBBH9uރa1Hǀ@HfƀAD$ADŽ$4(ID$1[A\]øfUH]U1H]UHSHHt;H¹JHfrBBuCHC1[]øUHSH~Ht;HHBHfrBBH9uCHC1[]øUHSHHt;HHBHfrBBH9uCHC1[]øUHSHHtZHHPHH0BHfrBBH9uHHCHC1[]øUHSH>HtFHH BHfrBB0H9uHǀCHC1[]øff.UHSHHtmHH BHfrBB$H9uH $HǀHHǀHǀCHC1[]øDUHSH>HtTHHPH0J%HfrBBuHǀCHC1[]øff.UHSHHtlHHHPHHpH@1HBfrBH9uHǀHCHC1[]øfDUHSH.HH¹fJHBBBfuHfJHBB B fuHHǀ?HHǀCHC1[]øUHAVAAUIATISHrHI1҉DA1D9v3AFDNEtD)HcI> 1 = 1ALU64_RSH_X: 2 >> 1 = 1ALU_RSH_K: 2 >> 1 = 1ALU64_RSH_K: 2 >> 1 = 1ALU_NEG: -(3) = -3ALU_NEG: -(-3) = 3ALU64_NEG: -(3) = -3ALU64_NEG: -(-3) = 3JMP_EXITJMP_JGE_X: ldimm64 test 1JMP_JGE_X: ldimm64 test 2JMP_JGE_X: ldimm64 test 3JMP_JLE_X: ldimm64 test 1JMP_JLE_X: ldimm64 test 2JMP_JLE_X: ldimm64 test 3JMP_JA: Jump, gap, jump, ...BPF_MAXINSNS: Single literalBPF_MAXINSNS: Very long jumpBPF_MAXINSNS: Jump heavy testBPF_MAXINSNS: jump over MSHBPF_MAXINSNS: exec all MSHLD_IND byte fragLD_IND halfword fragLD_IND word fragLD_IND word mixed head/fragLD_ABS byte fragLD_ABS halfword fragLD_ABS word fragLD_ABS word mixed head/fragLD_IND byte default XLD_IND byte positive offsetLD_IND byte negative offsetLD_IND halfword unalignedLD_IND word positive offsetLD_IND word negative offsetLD_ABS byteLD_ABS halfwordLD_ABS halfword unalignedLD_ABS wordADD default XADD default ASUB default XSUB default AMUL default XMUL default ADIV default XDIV default AMOD default XMOD default AJMP EQ default AJMP EQ default XJNE signed compare, test 1JNE signed compare, test 2JNE signed compare, test 3JNE signed compare, test 4JNE signed compare, test 5JNE signed compare, test 6JNE signed compare, test 7cFAIL to prog_create err=%d len=%d cUNEXPECTED_FAIL no memory left cFAIL to select_runtime err=%d 6test_bpf: Summary: %d PASSED, %d FAILED, [%d/%d JIT'ed] 3test_bpf: test_bpf: invalid test_id specified. 3test_bpf: test_bpf: test_range is out of bound. 3test_bpf: test_bpf: test_range is ending before it starts. 6test_bpf: %s: failed to build_test_skb6test_bpf: %s: success in skb_segment!6test_bpf: %s: failed in skb_segment!3test_bpf: test_bpf: no test named '%s' found. check: out of range spill/fillALU_MOV_K: 0x0000ffffffff0000 = 0x00000000ffffffffALU_ADD_X: 1 + 4294967294 = 4294967295ALU64_ADD_X: 1 + 4294967294 = 4294967295ALU64_ADD_X: 2 + 4294967294 = 4294967296ALU_ADD_K: 1 + 4294967294 = 4294967295ALU_ADD_K: 0 + (-1) = 0x00000000ffffffffALU_ADD_K: 0 + 0xffff = 0xffffALU_ADD_K: 0 + 0x7fffffff = 0x7fffffffALU_ADD_K: 0 + 0x80000000 = 0x80000000ALU_ADD_K: 0 + 0x80008000 = 0x80008000ALU64_ADD_K: 1 + 2147483646 = 2147483647ALU64_ADD_K: 4294967294 + 2 = 4294967296ALU64_ADD_K: 2147483646 + -2147483647 = -1ALU64_ADD_K: 0 + (-1) = 0xffffffffffffffffALU64_ADD_K: 0 + 0xffff = 0xffffALU64_ADD_K: 0 + 0x7fffffff = 0x7fffffffALU64_ADD_K: 0 + 0x80000000 = 0xffffffff80000000ALU_ADD_K: 0 + 0x80008000 = 0xffffffff80008000ALU_SUB_X: 4294967295 - 4294967294 = 1ALU64_SUB_X: 4294967295 - 4294967294 = 1ALU_SUB_K: 4294967295 - 4294967294 = 1ALU64_SUB_K: 4294967294 - 4294967295 = -1ALU64_ADD_K: 2147483646 - 2147483647 = -1ALU_MUL_X: 2 * 0x7FFFFFF8 = 0xFFFFFFF0ALU64_MUL_X: 1 * 2147483647 = 2147483647ALU_MUL_K: 2 * 0x7FFFFFF8 = 0xFFFFFFF0ALU_MUL_K: 1 * (-1) = 0x00000000ffffffffALU64_MUL_K: 1 * 2147483647 = 2147483647ALU64_MUL_K: 1 * -2147483647 = -2147483647ALU64_MUL_K: 1 * (-1) = 0xffffffffffffffffALU_DIV_X: 4294967295 / 4294967295 = 1ALU64_DIV_X: 2147483647 / 2147483647 = 1ALU64_DIV_X: 0xffffffffffffffff / (-1) = 0x0000000000000001ALU_DIV_K: 4294967295 / 4294967295 = 1ALU_DIV_K: 0xffffffffffffffff / (-1) = 0x1ALU64_DIV_K: 2147483647 / 2147483647 = 1ALU64_DIV_K: 0xffffffffffffffff / (-1) = 0x0000000000000001ALU_MOD_X: 4294967295 % 4294967293 = 2ALU64_MOD_X: 2147483647 % 2147483645 = 2ALU_MOD_K: 4294967295 % 4294967293 = 2ALU64_MOD_K: 2147483647 % 2147483645 = 2ALU_AND_X: 0xffffffff & 0xffffffff = 0xffffffffALU64_AND_X: 0xffffffff & 0xffffffff = 0xffffffffALU_AND_K: 0xffffffff & 0xffffffff = 0xffffffffALU64_AND_K: 0xffffffff & 0xffffffff = 0xffffffffALU64_AND_K: 0x0000ffffffff0000 & 0x0 = 0x0000ffff00000000ALU64_AND_K: 0x0000ffffffff0000 & -1 = 0x0000ffffffffffffALU64_AND_K: 0xffffffffffffffff & -1 = 0xffffffffffffffffALU_OR_X: 0x0 | 0xffffffff = 0xffffffffALU64_OR_X: 0 | 0xffffffff = 0xffffffffALU_OR_K: 0 & 0xffffffff = 0xffffffffALU64_OR_K: 0 & 0xffffffff = 0xffffffffALU64_OR_K: 0x0000ffffffff0000 | 0x0 = 0x0000ffff00000000ALU64_OR_K: 0x0000ffffffff0000 | -1 = 0xffffffffffffffffALU64_OR_K: 0x000000000000000 | -1 = 0xffffffffffffffffALU_XOR_X: 0x1 ^ 0xffffffff = 0xfffffffeALU64_XOR_X: 1 ^ 0xffffffff = 0xfffffffeALU_XOR_K: 1 ^ 0xffffffff = 0xfffffffeALU64_XOR_K: 1 & 0xffffffff = 0xfffffffeALU64_XOR_K: 0x0000ffffffff0000 ^ 0x0 = 0x0000ffffffff0000ALU64_XOR_K: 0x0000ffffffff0000 ^ -1 = 0xffff00000000ffffALU64_XOR_K: 0x000000000000000 ^ -1 = 0xffffffffffffffffALU_LSH_X: 1 << 31 = 0x80000000ALU64_LSH_X: 1 << 31 = 0x80000000ALU_LSH_K: 1 << 31 = 0x80000000ALU64_LSH_K: 1 << 31 = 0x80000000ALU_RSH_X: 0x80000000 >> 31 = 1ALU64_RSH_X: 0x80000000 >> 31 = 1ALU_RSH_K: 0x80000000 >> 31 = 1ALU64_RSH_K: 0x80000000 >> 31 = 1ALU_ARSH_X: 0xff00ff0000000000 >> 40 = 0xffffffffffff00ffALU_ARSH_K: 0xff00ff0000000000 >> 40 = 0xffffffffffff00ffALU_END_FROM_BE 16: 0x0123456789abcdef -> 0xcdefALU_END_FROM_BE 32: 0x0123456789abcdef -> 0x89abcdefALU_END_FROM_BE 64: 0x0123456789abcdef -> 0x89abcdefALU_END_FROM_LE 16: 0x0123456789abcdef -> 0xefcdALU_END_FROM_LE 32: 0x0123456789abcdef -> 0xefcdab89ALU_END_FROM_LE 64: 0x0123456789abcdef -> 0x67452301ST_MEM_B: Store/Load byte: max negativeST_MEM_B: Store/Load byte: max positiveSTX_MEM_B: Store/Load byte: max negativeST_MEM_H: Store/Load half word: max negativeST_MEM_H: Store/Load half word: max positiveSTX_MEM_H: Store/Load half word: max negativeST_MEM_W: Store/Load word: max negativeST_MEM_W: Store/Load word: max positiveSTX_MEM_W: Store/Load word: max negativeST_MEM_DW: Store/Load double word: max negativeST_MEM_DW: Store/Load double word: max negative 2ST_MEM_DW: Store/Load double word: max positiveSTX_MEM_DW: Store/Load double word: max negativeSTX_XADD_W: Test: 0x12 + 0x10 = 0x22STX_XADD_W: Test side-effects, r10: 0x12 + 0x10 = 0x22STX_XADD_W: Test side-effects, r0: 0x12 + 0x10 = 0x22STX_XADD_W: X + 1 + 1 + 1 + ...STX_XADD_DW: Test: 0x12 + 0x10 = 0x22STX_XADD_DW: Test side-effects, r10: 0x12 + 0x10 = 0x22STX_XADD_DW: Test side-effects, r0: 0x12 + 0x10 = 0x22STX_XADD_DW: X + 1 + 1 + 1 + ...JMP_JA: Unconditional jump: if (true) return 1JMP_JSLT_K: Signed jump: if (-2 < -1) return 1JMP_JSLT_K: Signed jump: if (-1 < -1) return 0JMP_JSGT_K: Signed jump: if (-1 > -2) return 1JMP_JSGT_K: Signed jump: if (-1 > -1) return 0JMP_JSLE_K: Signed jump: if (-2 <= -1) return 1JMP_JSLE_K: Signed jump: if (-1 <= -1) return 1JMP_JSLE_K: Signed jump: value walk 1JMP_JSLE_K: Signed jump: value walk 2JMP_JSGE_K: Signed jump: if (-1 >= -2) return 1JMP_JSGE_K: Signed jump: if (-1 >= -1) return 1JMP_JSGE_K: Signed jump: value walk 1JMP_JSGE_K: Signed jump: value walk 2JMP_JGT_K: if (3 > 2) return 1JMP_JGT_K: Unsigned jump: if (-1 > 1) return 1JMP_JLT_K: if (2 < 3) return 1JMP_JGT_K: Unsigned jump: if (1 < -1) return 1JMP_JGE_K: if (3 >= 2) return 1JMP_JLE_K: if (2 <= 3) return 1JMP_JGT_K: if (3 > 2) return 1 (jump backwards)JMP_JGE_K: if (3 >= 3) return 1JMP_JGT_K: if (2 < 3) return 1 (jump backwards)JMP_JLE_K: if (3 <= 3) return 1JMP_JNE_K: if (3 != 2) return 1JMP_JEQ_K: if (3 == 3) return 1JMP_JSET_K: if (0x3 & 0x2) return 1JMP_JSET_K: if (0x3 & 0xffffffff) return 1JMP_JSGT_X: Signed jump: if (-1 > -2) return 1JMP_JSGT_X: Signed jump: if (-1 > -1) return 0JMP_JSLT_X: Signed jump: if (-2 < -1) return 1JMP_JSLT_X: Signed jump: if (-1 < -1) return 0JMP_JSGE_X: Signed jump: if (-1 >= -2) return 1JMP_JSGE_X: Signed jump: if (-1 >= -1) return 1JMP_JSLE_X: Signed jump: if (-2 <= -1) return 1JMP_JSLE_X: Signed jump: if (-1 <= -1) return 1JMP_JGT_X: if (3 > 2) return 1JMP_JGT_X: Unsigned jump: if (-1 > 1) return 1JMP_JLT_X: if (2 < 3) return 1JMP_JLT_X: Unsigned jump: if (1 < -1) return 1JMP_JGE_X: if (3 >= 2) return 1JMP_JGE_X: if (3 >= 3) return 1JMP_JLE_X: if (2 <= 3) return 1JMP_JLE_X: if (3 <= 3) return 1JMP_JNE_X: if (3 != 2) return 1JMP_JEQ_X: if (3 == 3) return 1JMP_JSET_X: if (0x3 & 0x2) return 1JMP_JSET_X: if (0x3 & 0xffffffff) return 1BPF_MAXINSNS: Maximum possible literalsBPF_MAXINSNS: Run/add until endBPF_MAXINSNS: Too many instructionsBPF_MAXINSNS: Ctx heavy transformationsBPF_MAXINSNS: Call heavy transformationsBPF_MAXINSNS: Very long jump backwardsBPF_MAXINSNS: Edge hopping nuthouseBPF_MAXINSNS: Jump, gap, jump, ...BPF_MAXINSNS: ld_abs+get_processor_idLD_IND halfword mixed head/fragLD_ABS halfword mixed head/fragLD_IND byte positive offset, all ffLD_IND byte positive offset, out of boundsLD_IND byte negative offset, out of boundsLD_IND byte negative offset, multiple callsLD_IND halfword positive offsetLD_IND halfword negative offsetLD_IND halfword positive offset, all ffLD_IND halfword positive offset, out of boundsLD_IND halfword negative offset, out of boundsLD_IND word unaligned (addr & 3 == 2)LD_IND word unaligned (addr & 3 == 1)LD_IND word unaligned (addr & 3 == 3)LD_IND word positive offset, all ffLD_IND word positive offset, out of boundsLD_IND word negative offset, out of boundsLD_ABS byte positive offset, all ffLD_ABS byte positive offset, out of boundsLD_ABS byte negative offset, out of bounds loadLD_ABS byte negative offset, in boundsLD_ABS byte negative offset, out of boundsLD_ABS byte negative offset, multiple callsLD_ABS halfword positive offset, all ffLD_ABS halfword positive offset, out of boundsLD_ABS halfword negative offset, out of bounds loadLD_ABS halfword negative offset, in boundsLD_ABS halfword negative offset, out of boundsLD_ABS word unaligned (addr & 3 == 2)LD_ABS word unaligned (addr & 3 == 1)LD_ABS word unaligned (addr & 3 == 3)LD_ABS word positive offset, all ffLD_ABS word positive offset, out of boundsLD_ABS word negative offset, out of bounds loadLD_ABS word negative offset, in boundsLD_ABS word negative offset, out of boundsLDX_MSH standalone, preserved ALDX_MSH standalone, preserved A 2LDX_MSH standalone, test result 1LDX_MSH standalone, test result 2LDX_MSH standalone, negative offsetLDX_MSH standalone, negative offset 2LDX_MSH standalone, out of boundstest_skb_segmenttest_rangetest_idtest_name@license=GPLparmtype=test_range:array of intparmtype=test_id:intparmtype=test_name:stringsrcversion=DE59CD1712BDD3CAC1BBD1Ddepends=retpoline=Yintree=Yname=test_bpfvermagic=5.4.0-205-generic SMP mod_unload modversions ^nmodule_layoutrparam_ops_string6:param_ops_int՘param_array_opsZ=kfree_skb_listǸskb_segment~,skb_putކ'__netdev_alloc_skb zkfreeZ%strcmpbpf_prog_destroyp"bpf_prog_freebpf_prog_select_runtime{hbpf_prog_alloc6*bpf_prog_createVSthis_cpu_off&:sched_clock\ɢ.__x86_indirect_thunk_raxKbpf_stats_enabled_keye?ktime_getkfree_skb4skb_add_rx_frag$>g__free_pages^|page_offset_baselevmemmap_base nǡ_cond_resched0alloc_pages_currentNQinit_net /K__alloc_skbprintky  P@ (2  @ (2$A4<4pp A TdD A@H@ < @ <00 @ P@00 @ P@   @  @4 4 @4 4 @{ {0 0@  d ,@ 0@  @A A @L L $ $@  @        @  4 4 4 4 4@ET@@d* , (@&&ta`a@<<0@0-@0=@0=@P5 555(@(@E EEEEEE@U ( ݆0(6(8  0(EHH@HC<TCvEdu@@.   $ d( ݆0(EHH(0Td`PTt `%s5#@HC<TCvEdu@@.   $ d@!'/!/!w,!w             0@P`p!1AQaq"2BRbrN#3CScs$4DTdt/%5EUeu&6FVfv'7GWgw(8HXhx  )9IYiyD -           0 @ P ` p    ! 1 A Q a q    " 2 B R b r N   # 3 C S c s    $ 4 D T d t /   % 5 E U e u    & 6 F V f v    ' 7 G W g w    ( 8 H X h x    ) 9 I Y i y D -  0@P`p !1AQaq 2BRbr #CScs $4Tdt %5Eeu &6FVv '7GWg (8HXhx  )9IYiy   0@P`p  "!"3 23DCDUEUfefwgw    /// /0/@/P/`/p//' +//!/1/A/Q/a/q//' w $g  ///2/B/R/b/r//' w ~5#4EVgx  0@P`p#4EVgx  0@P`p#4EVgx  0@P`p ?  .|o .@W?o@/0o$\oD@lDC4C!BC(5 (((((((((((((M(M(55 (((((((((((((I*I*(55 (((((((((((((AҐAҐ(@!< VE( @33XC*Cdaaaaaaaaa a  a  a  a  a aaAtߺ̯ܻ˫ޮ޺ݼ   Ϭ ̽ aa a a a a a a a a a a a a a a A奥 @C @4xV#w g w xV4w 222    22222222222,,,//$$$$2'''''2<<???B24444277772\\__TTWWW2W2W2LLOODDGGG2G2G2222llooddgg||ttww((ͫgE#ͫgE# w ͫgE#@#EgͫgE#ͫgE# w ͫͫgE#@ͫr q(j i(sq(j i(j i(ki(b a(b a(ca(z y(z y2(z y({y(b  a"(b  (b  (&z  y"(z  (z  (&GGGeeuuuuuuuuu%%5%5UEEm!m!!}!}!!-!-!=!=!!=!=!=!]!!M!M!A˫AAAh{CA@ A AC˫B@@ @PD@BBCD!@HD@DCBCD!@@D@!BCD!@HD%@@@D%@%0@D@BBCD!(DD@DCBCD! HD@!BCD!(?D%@ >D%@%P@B@B>P@%@>P@%@>P@@>P@%?>P@%?;PPPP@%@ H@Ufw݈@ H@Ufw݈@f H@Ufw݈@f=H@@>H@%?>H@%? @@Ufw݈@ @@Ufw݈@fU @@Ufw݈@wf @@Ufw݈@fU @@Ufw݈@wf;@@@>@@%?>@@%?0 @Ufw݈@0?@@0?@%?0B0?@%@0?@%?0<0=0>0?@%@("@Ufw݈@(%@Ufw݈@(>@@(?@%?(B(>@%@(>@%? @Ufw݈@fU "@Ufw݈@ !@Ufw݈@w #@Ufw݈@ <@@ ?@%? B <@%@% <@%?<@%@c^<=>?@%@c^<@%@>@%@$@%@>@%@$@@%@B ABBABfAfAfB,A$fAB<BA4ABBAABfABBfAB_2U_2U_2]BUU~U~\Atest_bpfGCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0test_bpf.koY-   \# 0= U j}7@ l$0 YpY)Y<0xOdb ur0p0Ppx p-a@; J X o !(   @ -(( ` B*P(< h R k  px /;HVg},6DT^__UNIQUE_ID_srcversion43__UNIQUE_ID_depends42____versions__UNIQUE_ID_retpoline41__UNIQUE_ID_intree40__UNIQUE_ID_name39__UNIQUE_ID_vermagic38_note_6run_onedevtest_bpftestskmalloc_array.constprop.0bpf_fill_maxinsns3__bpf_fill_stxdwbpf_fill_stxwbpf_fill_maxinsns1bpf_fill_maxinsns2bpf_fill_maxinsns4bpf_fill_maxinsns5bpf_fill_maxinsns6bpf_fill_maxinsns7bpf_fill_maxinsns8bpf_fill_maxinsns9bpf_fill_maxinsns10__bpf_fill_ja.isra.0bpf_fill_maxinsns11bpf_fill_jabpf_fill_maxinsns12bpf_fill_maxinsns13bpf_fill_ld_abs_get_processor_idtest_bpf_init__func__.63340test_bpf_exit__UNIQUE_ID_license237__UNIQUE_ID_test_rangetype234__param_test_range__param_str_test_range__param_arr_test_range__UNIQUE_ID_test_idtype233__param_test_id__param_str_test_id__UNIQUE_ID_test_nametype232__param_test_name__param_str_test_name__param_string_test_name.LC1skb_put__this_moduleskb_segmentthis_cpu_offcleanup_modulenet_rand_noiseskb_add_rx_fragparam_array_opskfreeinit_modulesched_clock__x86_indirect_thunk_raxkfree_skb__stack_chk_fail__alloc_skb__free_pagesbpf_prog_freepage_offset_basebpf_stats_enabled_keyinit_netbpf_prog_select_runtimebpf_prog_alloc_cond_reschedprandom_u32_stateprintk__netdev_alloc_skbparam_ops_stringstrcmpkfree_skb_listvmemmap_basebpf_prog_destroyktime_getparam_ops_intbpf_prog_create__kmallocalloc_pages_currentjMM_ UJ O`kV  [ @!@sk^eYWNTgS"R6SLKXRngT 1` 9`  ;^BO_ Ig`i ]` e` `9]P (U`\ P` x`&X0f> F`O ]W` x`U  `!  ,@ G  Lcg n y` ` (` lS% / (4PMkxaWHNTW  h`Jd   ` ! *`2T;B[UPhXIO @(`0I8hHPhXI`bp!Z X"3E8VpgxP0h#,$86DHGXXcimzt(~`п@x 'X8IZ l8} p+7DTPdmv0h):K]Hn (`%8Q@ cxu+< NX_pȁ@8p1Oe{Px -0?hParH(Xx(` $  @0PxA;Rc uX@ȨRp8gp~P!2CT 0fhwPؙxH.(C`Z#40F`@Wqxhy X(P8p  % 7 PH Y  j  { !0 6h H K b p H y     (( `9  J [ 8 m p @~  x   0 X X    8  p*  ;  L P ^ %Po  :  Q0  h f  @   H   }, = (O  `` q HЂ  h@ x     X    /  8@ `pQ 5 b H s [  p P    H0 h   @H1pBSd(v(`PЩ@xPx !X"30DhVf8g px(XP0@hh$5GHXi8zh(`(H@xx& 8XI0Z`k}8p PP P0)ph:K\ n H    (`8 * P@h*x+G <p<XM0M^ _d o0Xp8 Ȓ p008Xp0 Pp  pP   - >0P ha) r: ؃O H` |   (`8 h0@AxR ct0 `X  ȹ8p 0 ` ! P2 C T e!0w@!hp!( ت8 !H!!0"`"(R `#"4"E"W#@h0#xy`### #X$0$X$$8$p$%^ 6l Hz PY j {  0 h    H ' B '] (9x `J [ :xQ0L.symtab.strtab.shstrtab.note.gnu.build-id.note.Linux.rela.text.rela.text.unlikely.rela.init.text.exit.text.rodata.str1.1.rodata.str1.8.rela.rodata.modinfo.rela__param__versions.rela__jump_table.rela.data.rela__bug_table.rela.gnu.linkonce.this_module.bss.comment.note.GNU-stack.gnu_debuglink@$.d?:@xJr E@8p^r qY@8it2 2 $E @H PF8Gx@( G @P@HH`Pl @%0 @0@@@0  @0X+( H Hr:0 *H 01 0  `He0  *H 1o0k0F0.1,0*U #Build time autogenerated kernel key~[- y{N?G0  `He0  *H V^_8`&n#ݾTutD)B& Tʳ'5 Y6q1i%3TgӬ@]+{)>7 M Nr3I$0؎ЭNY '~/Ja#Xɷ)Ib$<"mZ])}\"/A0P ,W%8b//i}ٗ!tIiR0Ntn_MqG"8ٟ[ *b^eTP+2tN떥]K/] F\2q7ʻBtLs&{/d} s' NEZ?B0uVrQF]S9I+B:W?3;j\y;ܿxĎt:x80FH|ySuld ھZ™PG[Ut<N5U3hIa޽)6YeD?Ez5t.0~Module signature appended~